String.prototype.trim = function() {
    return this.toString().replace(/(^\s*)|(\s*$)/g,'');
}

function hideAllErrorMessages() {
    $("#js_validation_errors>p>*").hide();
}

function validate(value, fieldName) {
    if(value.trim().length>0) {
        $("#validation_"+fieldName).hide();
        return true;
    }
    $("#validation_"+fieldName).show();
    return false;
}


function validateFileField(fieldName) {
    var value = $("#"+fieldName+">input").attr("value");
    if( value != "" && value != "undefined"){
        $("#validation_"+fieldName).hide();
        return true;
    }
    else{
        $("#validation_"+fieldName).show();
        return false;
    }
}

function validateInputField(fieldName) {
    var value = $("#"+fieldName+">input").attr("value");
    return validate(value, fieldName);
}

function validateTextareaField(fieldName) {
    var value = $("#"+fieldName+">textarea").attr("value");
    return validate(value, fieldName);
}

function validateSelectField(fieldName, nullValue) {
    var value = $("#"+fieldName+">select").children("option:selected").attr("value");
    if( nullValue == value ) { var value = ''; }
    return validate(value, fieldName);
}

function validateMultipleSelectFieldBis(fieldName){
	var options = $("#"+fieldName+">select").children("option");
    jQuery.each(options, function() {
        if (this.selected == true) {
            $("#validation_"+fieldName).hide();
            return true;
        }
    });
    $("#validation_"+fieldName).show();
	return false;
}

function validateMultipleSelectField(fieldName) {
    var retour = true;
    var value = $("#"+fieldName+">select").children("option:selected").attr("value");
    if(value == null || value == "undefined"){
        retour = false;
        $("#validation_"+fieldName).show();
    }
    else{
        $("#validation_"+fieldName).hide();
    }
    return retour;
}

function validateCustomOR(fieldName1, fieldName2, validationmessage) {
    var value1 = $("#"+fieldName1+">input").attr("value");
    var value2 = $("#"+fieldName2+">input").attr("value");
    if( value1.trim().length==0 && value2.trim().length==0 ) {
        $("#validation_"+validationmessage).show();
        return false;
    }
    $("#validation_"+validationmessage).hide();
    return true;
}

function validateAtLeastOne(fieldName1, fieldName2, fieldName3, fieldName4, validationmessage) {
    var value1 = $("#"+fieldName1+">input").attr("checked");
    var value2 = $("#"+fieldName2+">input").attr("checked");
    var value3 = $("#"+fieldName3+">input").attr("checked");
    var value4 = $("#"+fieldName4+">input").attr("checked");
    if(value1==true || value2==true || value3==true || value4==true) {
        $("#validation_"+validationmessage).hide();
    } else {
        $("#validation_"+validationmessage).show();
        return false;
    }
    return true;
}

function isValidateCheckboxField(fieldName) {
    var value = $("#"+fieldName+">input").attr("checked");
    return value;
}

function validateCheckboxField(fieldName) {
    var value = $("#"+fieldName+">input").attr("checked");
    if(value==true) {
        $("#validation_"+fieldName).hide();
        return true;
    }
    $("#validation_"+fieldName).show();
    return false;
}
function validateRadioField(fieldName) {
    var value = $("input[@type=radio][@checked][@class=radio_"+fieldName+"]").attr("value");
    if(value != undefined) {
        $("#validation_"+fieldName).hide();
        return true;
    }
    $("#validation_"+fieldName).show();
    return false;
}

function validateDateFields(fieldName) {
    var passed = true;
    // check all input fields
    $("#"+fieldName+">div>input").each(function(index, obj){
        passed &= obj.value.trim().length>0;
    });

    if(passed) {
        $("#validation_"+fieldName).hide();
        return true;
    }
    $("#validation_"+fieldName).show();
    return false;
}

function validateEmail(fieldName) {
    var value = $("#"+fieldName+">input").attr("value");
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if (filter.test(value)){
         $("#validation_"+fieldName+"_incorrect").hide();
        return true;
    }
    $("#validation_"+fieldName+"_incorrect").show();
    return false;
}

function validateMathingFields(fieldName1, fieldName2) {
    var value1 = $("#"+fieldName1+">input").attr("value");
    var value2 = $("#"+fieldName2+">input").attr("value");
       
    if (value1 == value2){
         $("#validation_"+fieldName1+"_match").hide();
        return true;
    }
    $("#validation_"+fieldName1+"_match").show();
    return false;
}
