    // JavaScript Document

    //validate a date
    function validate__date(variable, separator){
        //Autodetecting yearlength
        yearlength = 0;
        if (variable.length == 8) yearlength = 2;
        if (variable.length == 10) yearlength = 4;
        if (yearlength == 0) return false;
        if(!((variable.charAt(2) == separator) && (variable.charAt(5) == separator))) return false;
        day = variable.substr(0,2);
        month = variable.substr(3,2);
        year = variable.substr(6,yearlength);
        if (yearlength == 2) year = "20" + year;
        switch(month){
            case '01':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '02':
                    if (!(
                    ((day >= 1) && (day <= 28) && (year % 4 != 0)) ||
                    ((day >= 1) && (day <= 29) && (year % 4 == 0))
                    )) return false;
                    break;
            case '03':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '04':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '05':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '06':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '07':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '08':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '09':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '10':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            case '11':
                    if (!((day >= 1) && (day <= 30))) return false;
                    break;
            case '12':
                    if (!((day >= 1) && (day <= 31))) return false;
                    break;
            default:
                return false;
        }
        if (!((year >= 1900) && (year <= 2100))) return false;
        return true;
    }


    function validate__alphanum(str){
        var filter=/^\w+$/i
	    if (filter.test(str))
		    return true;
	    else
		    return false;
    }
    
    //deprecated
    function validate_email(email){
	    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	    if (filter.test(email))
		    return true;
	    else
		    return false;
    }


    function validate__email(email){
	    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	    if (filter.test(email))
		    return true;
	    else
		    return false;
    }

    function validate__vatn_IT(vatn){
	    var filter=/^([0-9]{11,11}?)$/i
	    if (filter.test(vatn))
		    return true;
	    else
		    return false;
    }

    function validate__zip_IT(zip){
	    var filter=/^([0-9]{5,5}?)$/i
	    if (filter.test(zip))
		    return true;
	    else
		    return false;
    }

    function validate__phone(phone){
	    var filter=/^([0-9]{2,30}?)$/i
	    if (filter.test(phone))
		    return true;
	    else
		    return false;
    }

    function validate__integer(value){
        return get_var_type(value) == 'integer';
    }

    function validate__float(value){
        return get_var_type(value) == 'float';
    }

    function validate__number(value){
        return validate__integer(value) || validate__float(value);
    }
    
    function validate__boolean(value){
        return get_var_type(value) == 'boolean';
    }

    function validate__fiscal_code_IT(fiscal_code){
        if(!validate__alphanum(fiscal_code)) return false;
        if(fiscal_code.length != 16) return false;
        return true;
    }

                                                