var whitespace = " \t\n\r";
var phoneNumberDelimiters = "()- ";
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var digitsInZIPCode1 = 5;
var digitsInZIPCode2 = 9;

function checknumber(x)
{
    var anum=/(^\d+$)|(^\d+\d+$)/
    if (anum.test(x))
        return true;
    else {
        return false;
    }
}

function checkThem(frm){
    if(!checked){
        for(i=0;i<frm.elements.length;i++){
            if(frm.elements[i].type=="checkbox") frm.elements[i].checked=true;
        }
        checked=true;
    }
    else{
        for(i=0;i<frm.elements.length;i++){
            if(frm.elements[i].type=="checkbox") frm.elements[i].checked=false;
        }
        checked=false;
    }
}

var pop_error_message = true;

function checkEmailAddress(field) {
    if(!field)
        return true;

    var goodEmail = field.value.search(/^([-\w][-.\w]*)?[-\w]@([-!#\$%&*+\\\/=?\w^`{|}~]+\.)+[a-zA-Z]{2,6}$/gi);

    if (goodEmail!=-1) {
        if(isDigit(field.value.charAt(0))){
            if(pop_error_message)
                alert("E-mail address is invalid! Please correct");
            //field.focus();
            //field.select();
            return false;
        }
        return true;
    } else {
        if(pop_error_message)
            alert("E-mail address is invalid! Please correct");
        //field.focus();
        //field.select();
        return false;
    }
}

function check_password_field(pwd){
    if(!pwd)
        return true;
    if (pwd.value.length<5 && pwd.value!="") {
        alert("Ensure that you have 5 characters in your password!")
        pwd.focus()
        return false
    }
    else{
        for (i = 0; i < pwd.value.length; i++) {   
            var c = pwd.value.charAt(i);
            if (isWhitespace(c)){
                alert("The required field Password can not contain spaces!");
                pwd.focus();
                return false;
            }  
        }			
    }
    return true		
}

function chkWhitespace(s)
{
    var i = 0;
    var c = s.value.charAt(i);
    if (isWhitespace(c)){
        alert("Whitespace not allowed");
        s.focus();
        return true;
    }  
    return false;
}

function check_zip_code_field(cnt, zip){
    if(!cnt || !zip)
    {
        alert("not zip");
        return true;
    }
    if (cnt.options[cnt.selectedIndex].value=="US") {
        if (zip.value.length!=5 && zip.value!="") {
            alert("Ensure that you have 5 digits in your zip code")
            zip.focus();
            return false;
        }
        else {
            for (i = 0; i < zip.value.length; i++) {
                var c = zip.value.charAt(i);
                if (!isDigit(c)) {
                    alert("The required field Zip allows only Numbers!");
                    zip.focus();
                    return false;
                }
            }		
        }
    }else if (cnt.value=="CA") {
        if (zip.value.length!=6 && zip.value.length!=7 && zip.value!="") {
            alert("Ensure that you have 6 or 7 characters in your postal code")
            zip.focus();
            return false;
        }
    }
    return true;
}

function checkRequired(id) {
    pop_error_message = false;
    var errors = new Array();
    var cnt, x, id_element, true_id;
    if(!requiredFields)
        return true;
    if(requiredFields.length == 0)
        return true;
    if(id != '' && id != undefined) {
        for(x = 0; x < requiredFields.length; x++)
            if(requiredFields[x][0] == id)
                id_element = requiredFields[x];
        true_id = ((id_element[2] && document.getElementById("_"+id))?"_":"")+id;
        if(document.getElementById(true_id))
            if(document.getElementById(true_id).value == '' && (document.getElementById(true_id).type == 'text' || document.getElementById(true_id).type == 'password'))
                errors[0] = id_element;
    } else {
		
        cnt = 0;
        //alert(requiredFields.length);
        for(x = 0; x < requiredFields.length; x++) {
			
            true_id = ((requiredFields[x][2] && document.getElementById("_"+requiredFields[x][0]))?"_":"")+requiredFields[x][0];
			
            if(requiredFields[x][4] != undefined && requiredFields[x][4] == false) {
                if((document.getElementById(true_id).value == ''  || check_space(document.getElementById(true_id))) && (document.getElementById(true_id).type == 'text' || document.getElementById(true_id).type == 'password' || document.getElementById(true_id).type == 'select-one' || document.getElementById(true_id).type == 'textarea')) {
                    othercheck = false;	
                }
                else {
                    othercheck = true;
                }	
                required = false;	
            }
            else {
                required = true;
                othercheck = true;	
            }
            //alert(x);
            //var code = document.getElementsByName('code');
                        
            //alert(code);
			
            if(document.getElementById(true_id))
                if((document.getElementById(true_id).value == ''  || check_space(document.getElementById(true_id))) && (document.getElementById(true_id).type == 'text' || document.getElementById(true_id).type == 'password' || document.getElementById(true_id).type == 'select-one' || document.getElementById(true_id).type == 'textarea') && required == true) {
                    alert("The required field '"+requiredFields[x][1]+"' is empty!");
                    try {
                        document.getElementById(true_id).focus();	
                        document.getElementById(true_id).select();
                    }
                    catch(ex) {
						
                    }
                    return false;
                }	
                else if(requiredFields[x][3] == "numeric" && (isNaN(document.getElementById(true_id).value) || document.getElementById(true_id).value <= 0) && othercheck == true){
                    alert("The field '"+requiredFields[x][1]+"' must be numeric and greater than zero!");
                    try {
                        document.getElementById(true_id).focus();
                        document.getElementById(true_id).select();
                    }
                    catch(ex) {
						
                    }
                    return false;
                }
                else if(requiredFields[x][3] == "allnumeric" && isNaN(document.getElementById(true_id).value) && othercheck == true){
                    alert("The field '"+requiredFields[x][1]+"' must be numeric!");
                    try {
                        document.getElementById(true_id).focus();
                        document.getElementById(true_id).select();
                    }
                    catch(ex) {
						
                    }
                    return false;
                }
                else if(requiredFields[x][3] == "numericwz" && (isNaN(document.getElementById(true_id).value) || document.getElementById(true_id).value < 0) && othercheck == true){
                    alert("The field '"+requiredFields[x][1]+"' must be numeric and greater than or equal to zero.!");
                    try {
                        document.getElementById(true_id).focus();
                        document.getElementById(true_id).select();	
                    }
                    catch(ex) {
						
                    }
                    return false;
                }
                else if(requiredFields[x][3] == "email" && !(checkEmailAddress(document.getElementById(true_id))) && othercheck == true){
                    alert("The field '"+requiredFields[x][1]+"' must be valid email address!");	
                    try {
                        document.getElementById(true_id).focus();
                        document.getElementById(true_id).select();	
                    }
                    catch(ex) {
						
                    }
                    return false;
                }
                else if(requiredFields[x][3] == "zip" && !(checkZIPCode(document.getElementById(true_id),false)) && othercheck == true){
                    alert("The field '"+requiredFields[x][1]+"' must be a 5 or 9 digit U.S. ZIP Code (like 85016).");
                    try {
                        document.getElementById(true_id).focus();
                        document.getElementById(true_id).select();	
                    }
                    catch(ex) {
						
                    }
                    return false;
                }
                else if(requiredFields[x][3] == "phone" && !(checkUSPhone(document.getElementById(true_id),false)) && othercheck == true){
                    alert("The field '"+requiredFields[x][1]+"' must be a 10 digit U.S. phone number (like 602 264 5455).");
                    try {
                        document.getElementById(true_id).focus();
                        document.getElementById(true_id).select();	
                    }
                    catch(ex) {
						
                    }
                    return false;
                }
							
        }
    }
    return true;
	
}

function check_space(flds){
    if(!flds)
        return true;
    var cnt=0;	
    for (i = 0; i < flds.value.length; i++) {
        var c = flds.value.charAt(i);
        if (isWhitespace(c)){
            cnt=cnt+1;
        }  
    }
    if(cnt==flds.value.length){
        return true;
    }	
    else {
        return false;				
    }	
}

function isAlphabetic (s,theField,txt) {
    var i;
    if (isEmpty(s)) {
        if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
        else return (isAlphabetic.arguments[1] == true);
    }  
    for (i = 0; i < s.length; i++) {   
        var c = s.charAt(i);
        if (!isLetter(c)){
            alert("The required field "+txt+" allows only alphabets!");
            theField.focus();
            return false;
        }  
    }
    return true;
}

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

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

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

function isInteger (s,theField,theFieldText) {
    var i;
    if (isEmpty(s)){
        if (isInteger.arguments.length == 1) return defaultEmptyOK;
        else return (isInteger.arguments[1] == true);
    }  
    alert(s);
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        alert(c);
        if (!isDigit(c)) {
            alert("The required field "+theFieldText+" allows only Numbers!");
            theField.focus();
            return false;
        }	
    }
    return true;
}

function isWhitespace (c) {
    if (whitespace.indexOf(c) == -1) return false;
    return true;
}

function checklength(field,length)
{
    var alen = field.value;
    if(alen.length < 9)
    {
        alert("Property ID must be 9 character long");
        field.focus();
        return false;
    }
    else
        return true;
}

function checkZIPCode (theField, emptyOK) {
    if (checkZIPCode.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else {
        var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)
        if (!isZIPCode(normalizedZIP, false)) 
            return false;
        else {
            theField.value = reformatZIPCode(normalizedZIP)
            return true;
        }
    }
}

function checkUSPhone (theField, emptyOK) {
    if (!theField)
        return true;
    if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else {
        var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)
        if (!isUSPhoneNumber(normalizedPhone, false)) 	
        {
            alert("The field 'Phone' must be a 10 digit U.S. phone number (like 603 264-5455).");	
            theField.focus();
            return false;
        }
        else {
            theField.value = reformatUSPhone(normalizedPhone)
            return true;
        }
    }
}



function stripCharsInBag (s, bag) {
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function isZIPCode (s) {
    if (isEmpty(s)) 
        if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
        else return (isZIPCode.arguments[1] == true);
    return (isInteger1(s) && ((s.length == digitsInZIPCode1) || (s.length == digitsInZIPCode2)))
}

function isUSPhoneNumber (s) {
    if (isEmpty(s)) 
        if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
        else return (isUSPhoneNumber.arguments[1] == true);
    return (isInteger1(s) && s.length == digitsInUSPhoneNumber)
}

function reformatZIPCode (ZIPString) {
    if (ZIPString.length == 5) return ZIPString;
    else return (reformat (ZIPString, "", 5, "-", 4));
}

function reformatUSPhone (USPhone) {
    return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))
}

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


function reformat (s) {
    var arg;
    var sPos = 0;
    var resultString = "";
    for (var i = 1; i < reformat.arguments.length; i++) {
        arg = reformat.arguments[i];
        if (i % 2 == 1) resultString += arg;
        else {
            resultString += s.substring(sPos, sPos + arg);
            sPos += arg;
        }
    }
    return resultString;
}

function checkForDeleted(frm, mode, msg)
{
    if(deleteBoxChecked > 0) {
        if(msg != "") {
            var flag = confirm(msg);	
        }
        else {
            var flag = confirm("Are you sure you want to delete");
        }
        if(flag) {
            frm.mode.value = mode;
            frm.submit();
        }
        else {
            return false;	
        }
    }
    else {
        alert("Please select any item to delete.");	
        return false;
    }	
}

function incDecDeleteBoxChecked(flag)
{
    if(flag) {
        deleteBoxChecked++;
    }	
    else {
        deleteBoxChecked--;	
    }
}

function is_code_null()
{
    var code = document.getElementById("codeJam").value;
    var hiddenCode = document.getElementById("h_code").value;
    var f = document.getElementById("codeJam");
    
    if(((code == null) || (code.length == 0))) {
        alert('You must enter verification code.');
        f.focus();
        return false; 
    }
    else if (hiddenCode!=code) {
        alert('You have not entered the right code');
        f.focus();
        return false; 
    }
    else {
        return true; 
    }
}
