<!--//
////////////////////////////////////////////////////////////////////////////////
//
// JS Auto Form Validator version 1.0.4 (3.01.2008)
// Author: Leumas Naypoka <leumas.a@gmail.com>
// Lisence: GNU GPL
// Site: http://phpbuilder.blogspot.com
//
////////////////////////////////////////////////////////////////////////////////
//
// Usage:
// -----
// //*** copy & paste this line between <head> and </head> tags
// <script type="text/JavaScript" src="form.scripts.js"></script>
//
// //*** copy & paste these lines between before your </form> tag
// <!--
//  first parameter  - (required) form name
//  second parameter - (optional, default - false) handle all fields or handle each field separately
//  third parameter  - (optional, default - false) handle hidden fields or not
// -->
// <input type="submit" name="button" value="Submit"
//        onClick="return onSubmitCheck(document.forms['form_name'], false,false);">
//
////////////////////////////////////////////////////////////////////////////////

// - new type checked for checkboxes |radiobuttons (> 0 or ????)
// - mistake renter instead of re-enter
// - u url
// wiki: - if element in non-displayed area -. error (must be non-dosplaed too)
//       - w - web site address (or d - domain?) shared simbol

// =============================================================================
// TODO
// - end third letter for all types - strings
// - new type domain
// - template type - x - fields (xxx-xx-xx) with js template
// - getting started full + wiki
// - isSet - Parse (' "" ...)  - pass dig + lett -> current not works */
// - level of difficulty for passwords - letters, l+digits etc.
// =============================================================================


var digits="0123456789";
var digits1="0123456789.";
var digits2="0123456789,";
var digits3="0123456789.,";
var textchars="/'\"[]{}()ºª*&^%$#@?¡!~¿?<>-_+=|\\ \r\t\n.,:;`";
var lwr="abcdefghijklmnopqrstuvwxyz";
var upr="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var diac_lwr='áàâäåéèëêìíîïòóôõöøùúûüýñæßç';
var diac_upr='ÁÀÂÄÅÉÈËÊÌÍÎÏÒÓÔÕÖØÙÚÛÜÝÑÆßÇ';

// r - required, s - simple
var rtypes="rs";
// n - numeric,     i - integer,    f - float,
// a - alphabetic,  t - text,       e - email,
// p - password,    y - any,        l - login
// z - zipcode,     v - verified	h - alphanumeric,
// d - DNI			k - link		c- checked (for chekboxes)
// u - URL			x - telephone	r - Array
var vtypes="nifatepylzvhdkcuxr";
// for numbers:	s - signed, u - unsigned,   p - positive,   n - negative
// for strings: u - upper,  l - lower,      n - normal,     y - any
// for array:	1,2,3... - numero máximo,	y - sin límite
var svtypes="supnly1234567890";

function makeArray(n){
    for(var i=1; i<=n;i++){
        this[i]=0;
    }
    return this;
};
var dInM=makeArray(12);
dInM[1]=31;
dInM[2]=29;
dInM[3]=31;
dInM[4]=30;
dInM[5]=31;
dInM[6]=30;
dInM[7]=31;
dInM[8]=31;
dInM[9]=30;
dInM[10]=31;
dInM[11]=30;
dInM[12]=31;
var PassLength=6;
var LoginLength=6;

var bgcolor_error = "#ff8822";
var bgcolor_normal_1 = "";
var bgcolor_normal_2 = "";
var MaxInt=13
var MaxString=30;
var MaxAdress=200;
var MaxCP=15;
var espacio=" ";
var whitespace=" \t\n\r";
var decimalPointDelimiter=".";
var phoneNumberDelimiters="()- ";
var validPhoneChars=digits + phoneNumberDelimiters;
var validWorldPhoneChars=digits + phoneNumberDelimiters + "+";
var SSNDelimiters="- ";
var validSSNChars=digits + SSNDelimiters;  // intr-un nr. SSN
var digitsInSocialSecurityNumber=9;
var validDNIChars=digits + upr + lwr;
var digitsInDNI=9;
var digitsInPhoneNumber=9;
var digitsInMinPhoneNumber=5;
var ZIPCodeDelimiters=".";
var validZIPCodeChars=digits;
var digitsInZIPCode1=5;
var digitsInZIPCode2=4;
var creditCardDelimiters=" "
var USStateCodeDelimiter="|";
var DEOK=false;

function isEmpty(s){
    return((s==null)||(s.length==0))
}

function isShorter(str_text, str_length){
    s_length=(str_length==null) ? "1" : str_length;
    if(str_text.length < s_length) return true;
    else return false;
}

function isValid(parm,val){
    if(parm=="")return true;
    for(i=0;i<parm.length;i++){
        if(val.indexOf(parm.charAt(i),0)==-1)return false;
    }
    return true;
}

function isSubmitReqType(parm){
    return isLower(parm) && isValid(parm,rtypes);
}

function isSubmitVarType(parm){
    return isLower(parm) && isValid(parm,vtypes);
}

function isSubmitSubVarType(parm){
    return isLower(parm) || isDigit && isValid(parm,svtypes);
}

function isNumeric(parm,type){
    ptype=(type==null)?"0":type;
    pdigits=-1;
    switch(ptype){
        case 0:
            pdigits=digits;
            break;
        case 1:
            pdigits=digits1;
            break;
        case 2:
            pdigits=digits2;
            break;
        case 3:
            pdigits=digits3;
            break;
        default:
            pdigits=digits;
            break;
    }
    return isValid(parm,pdigits);
}

function isLower(parm){
    return isValid(parm,lwr);
}

function isUpper(parm){
    return isValid(parm,upr);
}

function isAlpha(parm){
    return isLower(parm) && isValid(parm,lwr + upr + diac_lwr + diac_upr);
}

function isAlphaLower(parm){
	return isValid(parm,lwr + '_');
}

function isAlphaUpper(parm){
	return isValid(parm,upr + diac_upr);
}

function isAlphaNumeric(parm){
    return isValid(parm,lwr + upr + digits + '_');
}

function isText(parm){
    return isValid(parm,lwr + upr + digits3 + textchars + diac_lwr + diac_upr);
}

function isAny(parm){
    return true;
}

function isWhitespace(s){
    i=0;
    if(isEmpty(s)) return false;
    for(i=0;i<s.length;i++){
        c=s.charAt(i);
        if(whitespace.indexOf(c)==0) return true;
    }
    return false;
}

function isLetter(c){
    return (((c>="a")&&(c<="z"))||((c>="A")&&(c<="Z")))
}

function isDigit(c){
    return ((c>="0")&&(c<="9"))
}

function isLetterOrDigit(c){
    return (isLetter(c)||isDigit(c))
}

// integer checking
function isInteger(s){
    var i=0;
    if(isEmpty(s)){
        if(isInteger.arguments.length==1) return DEOK;
        else return (isInteger.arguments[1]==true);
    }
    for(i=0;i< s.length;i++){
        c=s.charAt(i);
        if(!isDigit(c)) return false;
    }
    return true;
}

function isSignedInteger(s){
    if(isEmpty(s)){
        if(isSignedInteger.arguments.length==1) return DEOK;
        else return (isSignedInteger.arguments[1]==true);
    }else{
        startPos=0;
        secondArg=DEOK;
        if(isSignedInteger.arguments.length>1) secondArg=isSignedInteger.arguments[1];
        if((s.charAt(0)=="-") || (s.charAt(0)=="+")) startPos=1;
        return (isInteger(s.substring(startPos,s.length),secondArg));
    }
}

function isPositiveInteger(s){
    secondArg=DEOK;
    if(isPositiveInteger.arguments.length > 1) secondArg=isPositiveInteger.arguments[1];
    return (isSignedInteger(s,secondArg) && ((isEmpty(s) && secondArg) || (parseInt(s) > 0)));
}

function isNegativeInteger(s){
    secondArg=DEOK;
    if(isNegativeInteger.arguments.length > 1) secondArg=isNegativeInteger.arguments[1];
    return (isSignedInteger(s,secondArg) && ((isEmpty(s) && secondArg) || (parseInt(s) < 0)));
}

function isIntegerInRange(s,a,b){
    if(isEmpty(s))
        if(isIntegerInRange.arguments.length==1) return DEOK;
        else return (isIntegerInRange.arguments[1]==true);

    if(!isInteger(s, false)) return false;
    num=parseInt(s);
    return ((num >=a) && (num <=b));
}

// float checking
function isFloat(s){
    i=0;
    seenDecimalPoint=false;
    if(isEmpty(s)){
        if (isFloat.arguments.length==1) return DEOK;
        else return (isFloat.arguments[1]==true);
    }
    if(s==decimalPointDelimiter) return false;
    for(i=0; i < s.length; i++){
        c=s.charAt(i);
        if((c==decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint=true;
        else if(!isDigit(c)) return false;
    }
    return true;
}

function isSignedFloat(s){
    if(isEmpty(s))
        if(isSignedFloat.arguments.length==1) return DEOK;
        else return (isSignedFloat.arguments[1]==true);
    else{
        startPos=0;
        secondArg=!DEOK;
        if(isSignedFloat.arguments.length > 1) secondArg=isSignedFloat.arguments[1];
        if((s.charAt(0)=="-") || (s.charAt(0)=="+")) startPos=1;
        return (isFloat(s.substring(startPos, s.length), secondArg))
    }
}

function isPositiveFloat(s){
    secondArg=DEOK;
    if(isPositiveFloat.arguments.length > 1) secondArg=isPositiveFloat.arguments[1];
    return (isSignedFloat(s,secondArg) && ((isEmpty(s) && secondArg) || (parseInt(s) > 0)));
}

function isNegativeFloat(s){
    secondArg=DEOK;
    if(isNegativeFloat.arguments.length > 1) secondArg=isNegativeFloat.arguments[1];
    return (isSignedFloat(s,secondArg) && ((isEmpty(s) && secondArg) || (parseInt(s) < 0)));
}


//function isAlphabetic(s){
// 	i=0;
// 	if(isEmpty(s))
// 		if(isAlphabetic.arguments.length==1) return DEOK;
// 		else return (isAlphabetic.arguments[1]==true);
// 	for(i=0;i<s.length;i++){
// 		c=s.charAt(i);
// 		if(!isLetter(c)) return false;
// 	}
// 	return true;
//}

//function isAlphanumeric(s){i=0;
// 	if(isEmpty(s))
// 		if(isAlphanumeric.arguments.length==1) return DEOK;
// 		else return (isAlphanumeric.arguments[1]==true);
// 	for(i=0;i<s.length;i++){
// 		c=s.charAt(i);
// 		if(!(isLetter(c) || isDigit(c))) return false;
//	}return true;
//}

function isArray(parm,cant){
    var cont=0;
    for(i=0;i<parm.length;i++) {
        if(parm[i].selected)
            cont++;
    }
    //Sexy.alert(cant);die();
    if(cant!='y' && cont<=cant)
        return true;
    else if(cant=='y')
        return true;
    else
        return false;

}

function isZipCode(s){
    return (isValid(s,validZIPCodeChars) && (s.length==digitsInZIPCode1 || s.length==digitsInZIPCode2));
}

function isDNI(s){
    if (isValid(s,validDNIChars) && s.length==digitsInDNI) {
        for(var i=0; i<(s.length)-1;i++){
            if(isDigit(s.charAt(i))==false) {
                return false;
            }
        }
        if (isLetter(s.charAt(i))){
            // Ahora compruebo si es un DNI correcto, es decir, si es la letra correcta.
            var numero = s.substr(0,s.length-1);
            var letra = s.substr(s.length-1,1);
            numero = numero % 23;
            cadena='TRWAGMYFPDXBNJZSQVHLCKET';
            cadena=cadena.substring(numero,numero+1);
            return (cadena==letra);

        } else return false;
    } else return false;
}
/*
function isNIE(s) {

}

function isCIF(s) {

}
*/
function isLink(s){
    if (s.indexOf("http://")!= -1){
        if (s=="http://") return false;
        return true;
    } else return false;
}

function Trim(fld){
    result="";
    c=0;
    for(i=0;i<fld.length;i++){
        if (fld.charAt(i) !=" " || c > 0){
            result +=fld.charAt(i);
            if (fld.charAt(i) !=" ") c=result.length;
        }
    }
    return result.substr(0,c);
}

function isEmail(s){
    if(isEmpty(s))
        if(isEmail.arguments.length==1) return DEOK;
        else return(isEmail.arguments[1]==true);

    if(isWhitespace(s)) return false;
    i=1;
    sLength=s.length;
    while((i<sLength) && (s.charAt(i) !="@")){
        i++
    };
    if((i >=sLength) || (s.charAt(i) !="@")) return false;
    else i +=2;
    while((i < sLength) && (s.charAt(i) !=".")){
        i++
    };
    if((i >=sLength - 1) || (s.charAt(i) !=".")) return false;
    else return true;
}

function isPassword(s){
    return !isShorter(s,PassLength) && isValid(s,lwr+upr+digits);
};

function isLogin(s){
    return (!isShorter(s,LoginLength) && isValid(s.charAt(0),lwr + upr) && isValid(s,lwr + upr + digits));
};

function validField(fld){
    fld=stripBlanks(fld);
    if(fld=='') return false;
    return true;
}

function isMobPhoneNumber(s){
    if(isEmpty(s))
        if(isMobPhoneNumber.arguments.length==1) return DEOK;
        else return (isMobPhoneNumber.arguments[1]==true);
    return (isInteger(s)  && s.length==digitsInPhoneNumber);
}
function isFixPhoneNumber(s){
    if(isEmpty(s))
        if(isFixPhoneNumber.arguments.length==1) return DEOK;
        else return (isFixPhoneNumber.arguments[1]==true);
    return (isInteger(s) && s.length==digitsInPhoneNumber);
}

function isInternationalPhoneNumber(s){
    if(isEmpty(s))
        if(isInternationalPhoneNumber.arguments.length==1) return DEOK;
        else return (isInternationalPhoneNumber.arguments[1]==true);
    return (isPositiveInteger(s));
}

function isYear(s){
    if(isEmpty(s))
        if(isYear.arguments.length==1)return DEOK;
        else return (isYear.arguments[1]==true);
    if (!isNonnegativeInteger(s)) return false;
    return (s.length==4);
}

function isMonth(s){
    if(isEmpty(s))
        if(isMonth.arguments.length==1)return DEOK;
        else return (isMonth.arguments[1]==true);
    return isIntegerInRange(s,1,12);
}

function isDay(s){
    if(isEmpty(s))
        if(isDay.arguments.length==1)return DEOK;
        else return (isDay.arguments[1]==true);
    return isIntegerInRange(s, 1, 31);
}

function daysInFebruary(year){
    return(((year % 4==0) && ((!(year % 100==0)) || (year % 400==0) ) ) ? 29 : 28 );
}

function isDate(year,month,day){
    if(!(isYear(year,false) && isMonth(month, false) && isDay(day, false))) return false;
    intYear=parseInt(year);
    intMonth=parseInt(month);
    intDay=parseInt(day);
    if (intDay > dInM[intMonth]) return false;
    if ((intMonth==2) && (intDay > daysInFebruary(intYear))) return false;
    return true;
}

function isChecked(frm,ind){
    return frm.elements[ind].checked;
};

function isURL(url){
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }
}
function getProValidateFieldValue(frm,p_ind){
    cur_field_name=frm.elements[p_ind].name.substring(2,frm.elements[p_ind].name.length);
    cur_field_prefics = frm.elements[p_ind].name.substring(0,2);
    found_field_ind=-1;
    for(gvind=0;((gvind<frm.elements.length) && (found_field_ind==-1));gvind++){
        if((frm.elements[gvind].name) && (cur_field_name==frm.elements[gvind].name.substring(2, frm.elements[gvind].name.length)) && (cur_field_prefics != frm.elements[gvind].name.substring(0,2))){
            found_field_ind=gvind;
            break;
        }
    }
    if(found_field_ind !=-1)
        return frm.elements[found_field_ind].value;
    else
        return -1;
}

function getValidateField(frm,p_ind,ret_type){
    cur_field_name=frm.elements[p_ind].name.substring(2,frm.elements[p_ind].name.length);
    found_field_ind=-1;
    for(gvind=0;((gvind<frm.elements.length) && (found_field_ind==-1));gvind++){
        if((frm.elements[gvind].name) && cur_field_name==frm.elements[gvind].name.substring(2, frm.elements[gvind].name.length))
            found_field_ind=gvind;
    }
    if(found_field_ind !=-1){
        if(ret_type=="type")
            return frm.elements[found_field_ind].name.charAt(1);
        else
            return frm.elements[found_field_ind].title;
    }
    else{
        return 0;
    }
}

function isValidateField(frm,p_ind){
    validation_result=false;
    cur_field_name=frm.elements[p_ind].name.substring(2,frm.elements[p_ind].name.length);
    cur_field_type=frm.elements[p_ind].name.charAt(1);
    found_field_ind=-1;
    for(vind=0;((vind<frm.elements.length)&&(found_field_ind==-1));vind++){
        if((frm.elements[vind].name) && (cur_field_type !=frm.elements[vind].name.charAt(1)) && (cur_field_name==frm.elements[vind].name.substring(2, frm.elements[vind].name.length)))
            found_field_ind=vind;
    }
    if(found_field_ind !=-1){
        if(frm.elements[found_field_ind].name.charAt(1)=="e"){
            validation_result=isEmail(frm.elements[p_ind].value);
        }else if(frm.elements[found_field_ind].name.charAt(1)=="p"){
            validation_result=isPassword(frm.elements[p_ind].value);
        }else{
            validation_result=false;
        }
    }else{
        validation_result=false;
    }
    return validation_result;
}

function equalValidateField(frm,p_ind){
    validation_result=false;
    cur_field_name=frm.elements[p_ind].name.substring(2,frm.elements[p_ind].name.length);
    cur_field_type=frm.elements[p_ind].name.charAt(0);
    found_field_ind=-1;
    for(evind=0;((evind<frm.elements.length) && (found_field_ind==-1)); evind++){
        if((frm.elements[evind].name) && (cur_field_type !=frm.elements[evind].name.charAt(1)) && (cur_field_name==frm.elements[evind].name.substring(2, frm.elements[evind].name.length)))
            found_field_ind=evind;
    }
    if(found_field_ind !=-1){
        validation_result=(frm.elements[p_ind].value==frm.elements[found_field_ind].value);
    }else{
        validation_result=false;
    }
    return validation_result;
}

function setNormalBackground(frm, ind){
    if(frm.elements[ind].type.substring(0,6) !="select"){
        frm.elements[ind].style.background = bgcolor_normal_1;
    }else{
        frm.elements[ind].style.background = bgcolor_normal_2;
    }
}
function setErrorBackground(frm, ind){
    frm.elements[ind].style.background = bgcolor_error;
}
function getFieldTitle(frm,ind){
    title_field=frm.elements[ind].title;
    if(title_field=="")title_field=frm.elements[ind].name.substring(3,frm.elements[ind].name.length);
    return title_field;
}
function onSubmit(frm){
    return true;
}

function onReqAlert(frm,ind,all_fields){
    check_all_fields = (all_fields==null) ? false : true;
    is_first_found = (is_found==null) ? false : is_found;
    title_of_field=getFieldTitle(frm,ind);
    setErrorBackground(frm, ind);
    if(!is_first_found) frm.elements[ind].focus();
    if(check_all_fields){
        return FormValudator._MSG['MSG_1'].replace(/_TITLE_OF_FIELD_/g, title_of_field);
    //return "<b>" + title_of_field + "</b> es un campo requerido.<br />";
    }else{
        Sexy.alert('<br/><p>'+FormValudator._MSG['MSG_2'].replace(/_TITLE_OF_FIELD_/g, title_of_field)+'</p>');
        //Sexy.alert("<b>" + title_of_field + "</b> es un campo requerido.\nPor favor, introduzca uno válido " + title_of_field + ".");
        if(frm.elements[ind].type.substring(0,6) !="select"){
            frm.elements[ind].select();
        }
        return false;
    }
}

function onInvalidAlert(frm,ind,ftype,fstype,all_fields){
    check_all_fields = (all_fields==null) ? false : true;
    is_first_found = (is_found==null) ? false : is_found;
    type_of_field="value";
    title_of_field=getFieldTitle(frm,ind);
    switch (fstype){ //supnly
        case 's':
            syb_type_of_field=FormValudator._MSG["SNT_2"];
            break;
        case 'u':
            syb_type_of_field=FormValudator._MSG["SNT_3"];
            syb_type_of_field2=FormValudator._MSG["SNT_4"];
            break;
        case 'p':
            syb_type_of_field=FormValudator._MSG["SNT_5"];
            break;
        case 'n':
            syb_type_of_field=FormValudator._MSG["SNT_6"];
            syb_type_of_field2=FormValudator._MSG["SNT_7"];
            break;
        case 'l':
            syb_type_of_field=FormValudator._MSG["SNT_8"];
            break;
        default:
            syb_type_of_field=FormValudator._MSG["SNT_9"];
            syb_type_of_field2=FormValudator._MSG["SNT_9"];
            break;
    }
    switch (ftype){
        case 'n':
            type_of_field=FormValudator._MSG['SNT_10'].replace("_SYB_TYPE_OF_FIELD_", syb_type_of_field);
            break;
        case 'i':
            type_of_field=FormValudator._MSG['SNT_11'].replace("_SYB_TYPE_OF_FIELD_", syb_type_of_field);
            break;
        case 'f':
            type_of_field=FormValudator._MSG['SNT_12'].replace("_SYB_TYPE_OF_FIELD_", syb_type_of_field);
            break;
        case 'a':
            type_of_field=FormValudator._MSG['SNT_13'].replace("_SYB_TYPE_OF_FIELD_", syb_type_of_field);
            break;

        case 't':
            type_of_field=FormValudator._MSG['SNT_14'].replace("_SYB_TYPE_OF_FIELD_", syb_type_of_field);
            break;

        case 'p':
            type_of_field=FormValudator._MSG['SNT_15'].replace("_PASS_LENGTH_", PassLength);
            break;

        case 'l':
            type_of_field=FormValudator._MSG['SNT_16'].replace("_LOGIN_LENGTH_", LoginLength);
            break;

        case 'z':
            type_of_field=FormValudator._MSG['SNT_17'];
            break;

        case 'e':
            type_of_field=FormValudator._MSG['SNT_18'];
            break;

        case 'v':
            if(getValidateField(frm, ind, "type")=="e")
                type_of_field=FormValudator._MSG['SNT_18'];
            else if(getValidateField(frm, ind, "type")=="p")
                type_of_field=FormValudator._MSG['SNT_19'].replace("_PASS_LENGTH_", PassLength);
            else
                type_of_field=FormValudator._MSG['SNT_20'];
            break;

        case 'c':
            type_of_field="";
            break;

        case 'u':
            type_of_field=FormValudator._MSG['SNT_21'];
            break;

        case 'r':
            type_of_field=FormValudator._MSG['SNT_22'].replace("_FSTYPE_", fstype);1
            break;

        case 'h':
             type_of_field=FormValudator._MSG['SNT_23'].replace("_SYB_TYPE_OF_FIEDL", syb_type_of_field2);
            break;

        case 'd':
                type_of_field=FormValudator._MSG['SNT_24'].replace("_DIGITS_IN_DNI_", digitsInDNI);
             break;

        case 'x':
              type_of_field=FormValudator._MSG['SNT_25'].replace("_DIGITS_IN_PHONE_NUMBER_", digitsInPhoneNumber);
            break;
        case 'k':
              type_of_field=FormValudator._MSG['SNT_26'];
            break;
        default:
            break;
    }
     setErrorBackground(frm, ind);
    if(!is_first_found) frm.elements[ind].focus();
    if(check_all_fields){
        // "You have to sign <" + title_of_field + "> box as checked!\n";
        if(ftype == "c") return FormValudator._MSG['MSG_3'].replace("_TITLE_OF_FIELD_", title_of_field) + "\n";
        // "The <" + title_of_field + "> field must " + type_of_field + "!\n";
        else return FormValudator._MSG['MSG_4'].replace("_TITLE_OF_FIELD_", title_of_field).replace("_TYPE_OF_FIELD_", type_of_field);
    }else{
        // "You have to sign <" + title_of_field + "> box as checked!\n"
        if(ftype == "c") Sexy.alert('<br/><p>'+FormValudator._MSG['MSG_3'].replace("_TITLE_OF_FIELD_", title_of_field)+'</p>');
        // "The <" + title_of_field + "> field must " + type_of_field + "!\n";
        else Sexy.alert('<br/><p>'+FormValudator._MSG['MSG_4'].replace("_TITLE_OF_FIELD_", title_of_field).replace("_TYPE_OF_FIELD_", type_of_field)+'</p>');
        if((frm.elements[ind].type) && (frm.elements[ind].type.substring(0,6) !="select")) frm.elements[ind].select();
        return false;
    }
}
function onNotEqualAlert(frm,ind,all_fields,is_found){
    check_all_fields = (all_fields==null) ? false : true;
    is_first_found = (is_found==null) ? false : is_found;
    type_of_field=getValidateField(frm, ind, "name");
    title_of_field=getFieldTitle(frm,ind);
    if(type_of_field==0) type_of_field="required field";
    setErrorBackground(frm, ind);
    if(!is_first_found) frm.elements[ind].focus();
    if(check_all_fields){
        // "The <" + title_of_field + "> field must be match with " + type_of_field + "!\n";
        return FormValudator._MSG['MSG_5'].replace("_TITLE_OF_FIELD_", title_of_field).replace("_TYPE_OF_FIELD_", type_of_field);
    }else{
        // "The <" + title_of_field + "> field must be match with " + type_of_field + "!\n";
        Sexy.alert('<br/><p>'+FormValudator._MSG['MSG_5'].replace("_TITLE_OF_FIELD_", title_of_field).replace("_TYPE_OF_FIELD_", type_of_field)+'</p>');
        if((frm.elements[ind].type) && (frm.elements[ind].type.substring(0,6) != "select")) frm.elements[ind].select();
        return false;
    }
}



// parametr - check hidden fields+check display.none fileds
function onSubmitCheck(frm, handle_all_fields, handle_hidden_fields){
    check_all_fields = (handle_all_fields == null) ? false : handle_all_fields;
    check_hidden_fields = (handle_hidden_fields == null) ? false : handle_hidden_fields;
    is_required="";
    a_type="";
    b_type="";
    msg = "";
    is_found = false;
    for(ind=0;ind<frm.elements.length;ind++){
        if(frm.elements[ind]!="[object HTMLFieldSetElement]") {
            if((frm.elements[ind].type.substring(0,6) != "submit") && (frm.elements[ind].type.substring(0,6) != "button") && (frm.elements[ind].type.substring(0,5) != "reset")) {
                setNormalBackground(frm,ind);
            }
            if(!check_hidden_fields){
                if(frm.elements[ind].type.substring(0,6) == "hidden") continue;
            }
            is_required=frm.elements[ind].name.charAt(0);
            a_type=frm.elements[ind].name.charAt(1);
            b_type=frm.elements[ind].name.charAt(2);
            if(!isSubmitSubVarType(b_type)) b_type = "";
            true_value=true;

            if(isSubmitReqType(is_required) && isSubmitVarType(a_type) && (frm.elements[ind].style.display !="none")){
                //if(isSubmitReqType(is_required) && isSubmitVarType(a_type)){
                if(a_type=='r'){
                    field_value=frm.elements[ind];
                /*
					var valores=frm.elements[ind];
	            	for(i=0;i<valores.length;i++) {
	            		if(valores[i].selected)
	            			Sexy.alert(valores[i].value);
	            	}
	            	*/
                }else {
                    field_value=frm.elements[ind].value; //trim
                }
                if(is_required=='r'){
                    if(a_type=='r'){
                        if(isEmpty(field_value.value)){
                            if(check_all_fields){
                                msg += onReqAlert(frm,ind,check_all_fields,is_found);
                                is_found = true;
                                continue;
                            }else{
                                return onReqAlert(frm,ind);
                            }
                        }else{
                            setNormalBackground(frm,ind);
                        }
                    }else {
                        if(isEmpty(field_value)){
                            if(check_all_fields){
                                msg += onReqAlert(frm,ind,check_all_fields,is_found);
                                is_found = true;
                                continue;
                            }else{
                                return onReqAlert(frm,ind);
                            }
                        }else{
                            setNormalBackground(frm,ind);
                        }
                    }
                };
                if(((is_required=='r') || ((is_required=='s') && (!isEmpty(field_value)))) ||
	                ((a_type=='v') && (!isEmpty(getProValidateFieldValue(frm,ind)))) 
	              ){
	                switch (a_type){
	                    case 'n': if(!isNumeric(field_value, 3))    { true_value=false; } break;
	                    case 'i':
	                        switch (b_type){                   
	                            case 's': if(!isSignedInteger(field_value))   { true_value=false; } break;
	                            case 'u': if(!isInteger(field_value))         { true_value=false; } break;
	                            case 'p': if(!isPositiveInteger(field_value)) { true_value=false; } break;
	                            case 'n': if(!isNegativeInteger(field_value)) { true_value=false; } break;
	                            default:  if(!isSignedInteger(field_value))   { true_value=false; } break;
	                        }
	                        break;
	                    case 'f':
	                        switch (b_type){                   
	                            case 's': if(!isSignedFloat(field_value))     { true_value=false; } break;
	                            case 'u': if(!isFloat(field_value))           { true_value=false; } break;
	                            case 'p': if(!isPositiveFloat(field_value))   { true_value=false; } break;
	                            case 'n': if(!isNegativeFloat(field_value))   { true_value=false; } break;
	                            default: if(!isSignedFloat(field_value))      { true_value=false; } break;
	                        }
	                        break;
	                    case 'a': //if(!isAlpha(field_value))    			{ true_value=false; } break;
                            switch (b_type){                   
	                            case 'l': if(!isAlphaLower(field_value))     { true_value=false; } break;
	                            case 'u': if(!isAlphaUpper(field_value))     { true_value=false; } break;
	                            case 'n': if(!isAlpha(field_value))     { true_value=false; } break;
	                            default: if(!isAlpha(field_value))      { true_value=false; } break;
	                        }
	                        break;
	                    case 'h': if(!isAlphaNumeric(field_value))    	{ true_value=false; } break;
	                    case 't': if(!isText(field_value))				{ true_value=false; } break;
	                    case 'k': if(!isLink(field_value))         		{ true_value=false; } break;
	                    case 'e': if(!isEmail(field_value))         	{ true_value=false; } break;
	                    case 'p': if(!isPassword(field_value))      	{ true_value=false; } break;
	                    case 'y': if(!isAny(field_value))           	{ true_value=false; } break;
	                    case 'l': if(!isLogin(field_value))         	{ true_value=false; } break;
	                    case 'd': if(!isDNI(field_value))    			{ true_value=false; } break;
	                    case 'x': if(!isMobPhoneNumber(field_value))    { true_value=false; } break;
	                    case 'z': if(!isZipCode(field_value))       	{ true_value=false; } break;
	                    case 'v': if(!isValidateField(frm, ind))    	{ true_value=false; }
	                              else if(!equalValidateField(frm, ind)){
	                                    if(check_all_fields){
	                                        msg += onNotEqualAlert(frm, ind, check_all_fields,is_found);
	                                    }else{
	                                        return onNotEqualAlert(frm, ind);
	                                    }
	                                    is_found = true;
	                                }                              
	                              break;
	                    case 'c': if(!isChecked(frm,ind))           	{ true_value=false; } break;
	                    case 'u': if(!isURL(field_value))           	{ true_value=false; } break;
                        case 'r': if(!isArray(field_value, b_type))     { true_value=false; } break;
	              
	                    default: break; 
	                }
	                if(!true_value){
	                    if(check_all_fields){
	                        msg += onInvalidAlert(frm, ind, a_type, b_type, check_all_fields,is_found);    
	                    }else{
	                        return onInvalidAlert(frm, ind, a_type, b_type);    
	                    }
	                    is_found = true;
	                }
	            } 
            }
        }
    }
    if(check_all_fields){
        if(msg != ""){
            Sexy.alert(msg);
            return false;
        }
    }
    return true;
}
//-->
