/*
Validation script for chelsea's vip/index.asp page. 
*/
/*--Declare my variables--*/
var checked;
var notchecked;
var errmsg;
var radiobtn_checked;
var arrayBannedDomains = new Array();
var arrayBannedStrings = new Array();
var ecolor = "#c64100";
var err = 0;
/*-----------------------*/
function showErrorMessage(){
	eval('document.getElementById("BottomError").style.color="'+ecolor+'";');
	toggle_visibility("BottomError","visible");		
	eval('document.getElementById("TopError").style.color="'+ecolor+'";');
	toggle_visibility("TopError","visible");
	eval("window.scrollTo(0,0)");		
}
/*function hiddenErrorMessage(){
	toggle_visibility("BottomError","hidden");		
	toggle_visibility("TopError","hidden");		
}
*/
function seterror(oField) {    
	if (oField.name.indexOf("_") != -1){
		var fldName = oField.name;
		var errId = fldName.substr((fldName.indexOf("_") + 1), fldName.length);
		eval('document.getElementById("'+ errId+'").style.color="'+ecolor+'";');
		showErrorMessage();
	}
}
function IsFilled(oField) {    
	if (oField.name.indexOf("_") != -1){
		var fldName = oField.name;		
		var errId = fldName.substr((fldName.indexOf("_") + 1), fldName.length);
		//alert(errId);
		eval('document.getElementById("'+ errId+'").style.color="#000000";');		
	
	}
}

/*--Validation starts here and ends here. All other functions are called from this function.--*/
function validate(form) {
    err = 0;
	init();	//initialize variables.
	
	//loop through all fields in the form
	for (var i = 0; i < form.length; i++) {
		var e = form.elements[i];
		if(e.type == "text"){
			v_text(e);
		}
		if(e.type == "select-one"){
			v_sel(e);
		}
		if(e.type == "radio"){
			v_radio(e);
		}
		if(e.type == "checkbox"){
			v_checkbox(e);
		}
		if(e.type == "password"){
			v_password(e);
		}
	}
	
	validStateCountry();
	//check if at least one center is selected 
	 if(checked <= 0){
		eval('document.getElementById("idoutlets").style.color="'+ecolor+'";');
		showErrorMessage();
		err++;
	}else{
		 eval('document.getElementById("idoutlets").style.color="#000000";');
	}	
	 
	//check to see if the gender radio buttons were checked
	if(radiobtn_checked != 1){
		eval('document.getElementById("gender").style.color="'+ecolor+'";');
		showErrorMessage();
        err++;
	}else{
		eval('document.getElementById("gender").style.color="#000000";');
	} 
	
	
	if (err > 0) {
       return false;
   }
	
}

/*-- functions that do the actual validation of the form elements --*/
function validStateCountry(){
	if((document.vipform.sel_state.selectedIndex > 1 && document.vipform.sel_country.selectedIndex == 1) || ((document.vipform.sel_state.selectedIndex == 1) && (document.vipform.sel_country.selectedIndex ==2 || document.vipform.sel_country.selectedIndex > 3))){
		return true;
		eval('document.getElementById("state").style.color="#000000";');
		eval('document.getElementById("country").style.color="#000000";');
	}else{
		eval('document.getElementById("state").style.color="'+ecolor+'";');
		eval('document.getElementById("country").style.color="'+ecolor+'";');
		showErrorMessage();
		err++;
		return false;
	}
}

function v_text(obj) {
    var name = obj.name;
    var val = obj.value;
    var boolSuccess = true;
    switch (name) {
        case "txt_fname":
            if (val == "" || literalFieldsFormat(obj)==false) {
             	seterror(obj);
			    err++;
            } else{IsFilled(obj);}
            break;
        case "txt_lname":
            if (val == "" || literalFieldsFormat(obj) == false) {
                seterror(obj);
		        err++;
            } else{IsFilled(obj);}
            break;
        case "txt_email":
            if (val == "") {
                seterror(obj);
		        err++;
            } else if (!emailFormat(obj)){
                seterror(obj);
			    err++;
            } else {
            	IsFilled(obj);
            }
            break;
        case "txt_emailconfirm":
            if (val == "") {
                seterror(obj);
			    err++;
            } else if (val != document.vipform.email_address.value){
                seterror(obj);
			    err++;
            } else {
               IsFilled(obj);
            }
            break;
        case "txt_zip":
            if (val == "") {
                seterror(obj);
				err++;

            } else if (!zipCodeFormat(obj)) {
                 seterror(obj);
				 err++;
            }
            else
            { IsFilled(obj);}
            break;
    }
}

function v_sel(obj){
	var ind = obj.selectedIndex;
	var n = obj.name;
	if(n == "sel_state"){
		if(ind==0 ){
			seterror(obj);
		    err++;
		}else{
			IsFilled(obj);
		}		
	}else if(n == "sel_country"){		
		if(ind==0 || ind==3){
		     seterror(obj);
			 err++;
		}else{
			IsFilled(obj);
		}
	}else if(n == "sel_age"){
		if(ind=="0"){
			seterror(obj);
		    err++;
		}else{
			IsFilled(obj);
		}
	}else if(n == "sel_income"){
		if(ind=="0"){
			seterror(obj);
		    err++;
		}else{
			IsFilled(obj);
		}
	}else if(n == "sel_hearabout"){
		if(ind=="0"){
			seterror(obj);
			err++;
		}else{
			IsFilled(obj);
		}
	}
}

function v_radio(obj){
	if(!obj.checked){
		radiobtn_checked++;
	}
}

function v_checkbox(obj){
	var n = obj.name;
	if(n == "all_centers" || n == "outlets"){
		if(obj.checked){
			checked++;
		}else{
			notchecked++;
		}
	}else if(n == "chk_age_verification"){
		if(!obj.checked){
			seterror(obj);
		    err++;
		}else{
			IsFilled(obj);
		}
	}
}

function emailFormat(oField) {
    if (/^([a-zA-Z0-9_.-]){2,}@([a-zA-Z0-9_.-]){2,}\.([a-zA-Z])+([a-zA-Z])$/.test(oField.value)) {
        return true;
    }
    else {
        seterror(oField);
        return false;
    }
}

function literalFieldsFormat(oField) {
    if (/[a-zA-Z]/.test(oField.value)) {
        return true;
    }
    else {
        seterror(oField);
        return false;
    }
}

function zipCodeFormat(oField) {
    if (/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(oField.value)) {
        return true;
    }
    else {
        seterror(oField);
	    return false;
    }
}

function v_password(obj){
	var name = obj.name;
	var val = obj.value;
	if(name == "txt_password"){
		if(val=="" || !passwordcheck(val)){
			seterror(obj);
		    err++;
		}else{IsFilled(obj);}
	}

if(name == "txt_passwordconfirm"){
		if(val==""){
			seterror(obj);
		    err++;
		}else if(val != document.vipform.txt_password.value){
			seterror(obj);
		    err++;
		}else{
			IsFilled(obj);
		}
	}
}

function passwordcheck(v){
	var returnvalue = true;
	for(var i = 0; i < v.length; i++){
	
		for(var q = 0; q < arrayBannedStrings.length; q++){
			if(v.charAt(i) == arrayBannedStrings[q]){
				returnvalue = false;
			}
		}
	}
	if(returnvalue){
		if(v.length > 10 || v.length < 5){ //password has to be a minimum of 5 and a max of 10 characters.
			returnvalue = false;
		}
	}
	if(returnvalue){
		if(v.toLowerCase() == "shopper"){
			returnvalue = false;
		}
	}
	return returnvalue;
}

/*-- initializes all the global variables --*/	
function init(){
	errmsg = "";	//used in an alert function for macs. 
	checked = 0;
	notchecked = 0;
	radiobtn_checked = 0;
	arrayBannedStrings[0] = "\\";
	arrayBannedStrings[1] = "/";
	arrayBannedStrings[2] = " ";
	arrayBannedStrings[3] = "!";
	arrayBannedStrings[4] = "@";
	arrayBannedStrings[5] = "%";
	arrayBannedStrings[6] = "#";
	arrayBannedStrings[7] = "$";
	arrayBannedStrings[8] = "^";
	arrayBannedStrings[9] = "&";
	arrayBannedStrings[10] = "*";
	arrayBannedStrings[11] = "(";
	arrayBannedStrings[12] = ")";
	arrayBannedStrings[13] = "=";
	arrayBannedStrings[14] = "+";
	arrayBannedStrings[15] = "}";
	arrayBannedStrings[16] = "{";
	arrayBannedStrings[17] = "]";
	arrayBannedStrings[18] = "[";
	arrayBannedStrings[19] = "|";
	arrayBannedStrings[20] = "?";
	arrayBannedStrings[21] = ">";
	arrayBannedStrings[22] = "<";
	arrayBannedStrings[23] = ".";
	arrayBannedStrings[24] = ",";
}

