//FORMCHECKER
var alertMsg;
function formCheckInit() {
    alertMsg = '' ;
}
function formCheckReport(texte){
    alertMsg += '\t- ' + texte + '\n';
}
function formCheckValid(){
    return (alertMsg.length>0);
}
function formCheckAlert(texte) {
    window.alert(texte+ "\n" + alertMsg);
}
//EMAIL
function checkEmail(email){
    var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/
    if(RegExp.test(email)){
        return true;
    }else{
        return false;
    }
}
function isNumeric(str,flag) {
    if(flag!="N" && flag!="Z" && flag!="R") flag = "N";
    if (flag=="N")
        pattern = /^\d+$/ ;
    else if (flag=="Z")
        pattern = /^[-]?\d+$/;
    else if (flag=="R")
        pattern = /^[-]?[0-9]+[\.,]?[0-9]+$/;
    return pattern.test(str);
}
function isPhoneNumber(str) {
    return /^(0[1-9][-.\s]?(\d{2}[-.\s]?){3}\d{2})$/.test(str);
}
//FOLDING
function foldExpand(id) {
    var vForm = document.formNav;
    vForm.expanded.value = id;
    vForm.submit();
}
function foldCollapse(id) {
    var vForm = document.formNav;
    vForm.expanded.value="";
    vForm.submit();
}

//DATE

function checkDate(input){
    var matches = checkDateFormat(input);
    if (matches!=null && matches.length==4){
        return isDateValid(matches[1],matches[2],matches[3]);
    } 
    return false;
}

function checkDateFormat(chain){
    var date_pattern = /^(\d{1,2})[\/\.\\-](\d{1,2})[\/\.\\-](\d{1,4})$/;
    return chain.match(date_pattern);
}

function isDateValid(aDay,aMonth,aYear,aYearMax,aYearMin) {
    if (isNaN(aYearMax)) aYearMax = 3000;
    if (isNaN(aYearMin)) aYearMin = 100;
    if (aYear<100) aYear= parseFloat(aYear) + 2000;
    if ( isNaN(aDay) || isNaN(aMonth) || isNaN(aYear) ) return false;
    if ((aDay > 31) || (aDay <= 0))  return false;
    if ( (aMonth==2 || aMonth==4 || aMonth==6 || aMonth==9 || aMonth==11) && (aDay == 31)) return false;
    if ((aMonth == 2) && (aDay >= 30))  return false;
    if ((aMonth > 12) || (aMonth <= 0))   return false;
    if ((aYear<aYearMin)||(aYear>aYearMax)) return false;
    if ( !((((aYear%4 == 0) && !(aYear%100 == 0)) || (aYear%400 == 0)) && aYear>1582)   && (aDay == 29) && (aMonth == 2) ) return false;
    return true;
}
