/*<!----------------------------------------------------------------------------------Created by: Duc Vo---------
 *File Name      : validateForm.js
 *Purpose        : Used to validate form fields for required fields.
 *
 *Company Name   : DVo!nvesCo LLC - Copyright 2003 - All Rights Reserved
 *Compnay Website: www.dvoinvesco.com 
 *Contact Info   : sales@dvoinvesco.com, support@dvoinvesco.com
 *
 *---------------------------------------------------------------------------------Created on: 8/03--------->*/
<!---------------------//Hide from Old Broswer
//Include in HTML file: <SCRIPT LANGUAGE="JAVASCRIPT" SRC="share/js/imgFlips.js"></SCRIPT>

/****************************************************************************************************
//		Init methods....
*****************************************************************************************************/

var ignoredFields  = new Array();
var moneyFields    = new Array();
var errCSS         = new Array();


function validateForm(form){
    gatherErrClasses();
    gatherIgnoredFields(form.name);
    
    var formElem = form.elements;
    var hasErr   = false;
    var submit   = true;  //Assumes we can submit, but when there is an error then do not submit
    var firstErr = false;
    
    for(var i = 0; i < formElem.length; i++){
        hasErr = false; //reset error flag.
        if(!isIgnoredField(formElem[i])){
            if(isEmpty(formElem[i])){
                hasErr = true;
                //alert("Field is Empty - " + formElem[i].name)
            }
            if(!hasErr && formElem[i].name == "Email" && !isValidEmail(formElem[i])){
                hasErr = true;
                //alert("Invalid Email - " + formElem[i].name)
            }
            else if(!hasErr && (formElem[i].name == "Phone" || formElem[i].name == "homePhone") && !isValidPhone(formElem[i])){
                hasErr = true;
                //alert("Invalid Phone Format - " + formElem[i].name)
            }
            
            if(!hasErr && isMoneyField(formElem[i])){
            	if(!isValidDollarAmount(formElem[i])){
            		hasErr = true;
            		//alert("Invalid Dollar Amount - " + formElem[i].name)
            	}
            }
            
            //alert(hasErr + "--" + submit)
            if(hasErr && submit) {submit = false; firstErr	= true;} //If an error occur, do not submit
            
            //alert(hasErr)
            indicateError(formElem[i], hasErr);
            if(firstErr) {
            	//alert(formElem[i].name)
            	firstErr=false; 
            	formElem[i].focus(); //Focus cursor to the 1st encounter error.
            }
        }
    }
    
    if(!submit) alert("Please double check that all (*) required fields are filled in before submitting. \nThank you");
    return submit;
}


function gatherIgnoredFields(formName){
	//shared fields to ignor
    ignoredFields[ignoredFields.length] = "VTI-GROUP"; //FrontPage Extension hidden variable
    ignoredFields[ignoredFields.length] = "submitBtn";
    ignoredFields[ignoredFields.length] = "resetBtn";

    switch(formName){
        case "Contact":
        break;
        
        case "sellYourHouse":
        case "syh_ownerInfo":
        
            ignoredFields[ignoredFields.length] = "workPhone";
            ignoredFields[ignoredFields.length] = "cellPhone";
        break;
        
        case "syh_propertyInfo":
        	ignoredFields[ignoredFields.length] = "listingExpire";
        	ignoredFields[ignoredFields.length] = "MLS";
        	ignoredFields[ignoredFields.length] = "hmStyle";
        	ignoredFields[ignoredFields.length] = "repairsNeeded";
        	
        	moneyFields[moneyFields.length] 	= "repairCost";
        break;
        
        case "syh_priceTerms":
        	ignoredFields[ignoredFields.length] = "ballance2";
        	ignoredFields[ignoredFields.length] = "payments2";
        	ignoredFields[ignoredFields.length] = "interest2";
        	ignoredFields[ignoredFields.length] = "interestType2";
        	ignoredFields[ignoredFields.length] = "pmntBehind2";
        	ignoredFields[ignoredFields.length] = "ballance3";
        	ignoredFields[ignoredFields.length] = "payments3";
        	ignoredFields[ignoredFields.length] = "interest3";
        	ignoredFields[ignoredFields.length] = "interestType3";
        	ignoredFields[ignoredFields.length] = "pmntBehind3";
        	ignoredFields[ignoredFields.length] = "comments";
        
            moneyFields[moneyFields.length] = "asking";
        	moneyFields[moneyFields.length] = "valueIfAppraised";
        	moneyFields[moneyFields.length] = "balance1";
        	moneyFields[moneyFields.length] = "payments1";
        	moneyFields[moneyFields.length] = "pmntBehind1";
        	moneyFields[moneyFields.length] = "cashOffer";
        	moneyFields[moneyFields.length] = "semiAnnualTax";
        break;
    
    }
}

function gatherErrClasses(){
    errCSS["con_fields"] = "errFields";
    errCSS["con_msg"]    = "errMsg";
    errCSS["yh_fields1"] = "errFields1";
    errCSS["yh_fields2"] = "errFields2";
    errCSS["yh_fields3"] = "errFields3";
    errCSS["yh_msg1"]    = "errMsg1";
    errCSS["yh_select"]  = "errSelect";
    errCSS["yh_select2"] = "errSelect2";
    errCSS["yh_select3"] = "errSelect3";
    
    //Reverse lookup
    errCSS["errFields"]  = "con_fields";
    errCSS["errMsg"]     = "con_msg";
    errCSS["errFields1"] = "yh_fields1";
    errCSS["errFields2"] = "yh_fields2";
    errCSS["errFields3"] = "yh_fields3";
    errCSS["errMsg1"]    = "yh_msg1";
    errCSS["errSelect"]  = "yh_select";
    errCSS["errSelect2"] = "yh_select2";
    errCSS["errSelect3"] = "yh_select3";
}

function indicateError(fieldObj, hasErr){
    //alert(hasErr + ": " + fieldObj.name +"=" + fieldObj.className + "==>" + errCSS[fieldObj.className]);
    
    if(hasErr){
        if(fieldObj.className.indexOf("err") < 0) fieldObj.className = errCSS[fieldObj.className];
    }
    else{
        if(fieldObj.className.indexOf("err") >= 0) fieldObj.className = errCSS[fieldObj.className];
    }
}

/****************************************************************************************************
//		Library methods to check various fields and their requirements.
*****************************************************************************************************/

function isIgnoredField(fieldObj){
    var fieldName = fieldObj.name;
    
    //alert(fieldName + "==" + fieldObj.value);
    
    for(var i = 0; i < ignoredFields.length; i++){
        if(ignoredFields[i] == fieldName) return true; //fieldName is ignored.
    }
    
    return false; //fieldName is required.
}

function isMoneyField(fieldObj){
    var fieldName = fieldObj.name;
    
    //alert(fieldName + "==" + fieldObj.value);
    
    for(var i = 0; i < moneyFields.length; i++){
        if(moneyFields[i] == fieldName) return true; //fieldName is ignored.
    }
    
    return false; //fieldName is required.
}


function isEmpty(fieldObj){
    var fieldValue = fieldObj.value;
    
    if(fieldValue == "" || fieldValue == " ") return true
    
    return false;
}

//Email format: as long as there is an '@' sign and a '.' after it then it is a valid email.
//
function isValidEmail(fieldObj){
    var fieldValue = fieldObj.value;
    if (window.RegExp) {
		var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
		var reg1 = new RegExp(reg1str);
		var reg2 = new RegExp(reg2str);
		if (!reg1.test(fieldValue) && reg2.test(fieldValue))
		    return true;
		fieldObj.focus();
		fieldObj.select();
		return false;
	} else {                //For older browsers that does not support Regular Expression...
		if(str.indexOf("@") >= 0)
		    return true;
		fieldObj.focus();
		fieldObj.select();
		return false;
	}

}

//Phone number format: 2539410644 or (253)941-0466  <-- minimum length == 10
//                     1 (800) 386-0942 ext. #1112  <-- maximum length == 27
//
function isValidPhone(fieldObj){
    var fieldValue = fieldObj.value;
    
    if(fieldValue.length < 10 || fieldValue.length > 27) {
        fieldObj.focus();
        fieldObj.select();
        return false;
    }
    
    return true;
}

//Check if the field has a valid a dollar amount
//Acceptable format: $###, ###, 
//
function isValidDollarAmount(fieldObj){
	var fieldValue = fieldObj.value;
	//alert(fieldObj.name +"=="+fieldValue)
	if(fieldValue.length > 1){
		if(fieldValue.indexOf("$") < 0) {
			fieldValue = "$" + fieldValue; //Add the '$' sign back in
		}
		
		return true;
	}
	
	return false;
}

//End hiding script
//------------------->


