    // 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 >= 0) && (year <= 2100))) return false;
        return true;
    }


    function validate__alphanum(str, allow_lowercase, allow_uppercase, allow_numbers, allow_underscore){
        allow_lowercase = (allow_lowercase == null ? true : allow_lowercase);
        allow_uppercase = (allow_uppercase == null ? true : allow_uppercase);
        allow_numbers = (allow_numbers == null ? true : allow_numbers);
        allow_underscore = (allow_underscore == null ? true : allow_underscore);
        var reg = '';
        if(allow_lowercase) reg += 'a-z';
        if(allow_uppercase) reg += 'A-Z';
        if(allow_numbers) reg += '0-9';
        if(allow_underscore) reg += '_';
        reg = '^[' + reg + ']+$';
        var regexp = RegExp(reg);
        return regexp.test(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,\s,\+]{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;
    }

                                                