var arCompanyStateAllOpts;
	var state_fd;
	var bStateInit = false;

	arNotApply = Array(	new Option("Not Required", 'N/A'));
			
	
	arCanada = Array(	new Option("-- Select One --", '')
	
						, new Option("Alberta", "AB")
	
						, new Option("British Columbia", "BC")
	
						, new Option("Manitoba", "MB")
	
						, new Option("New Brunswick", "NB")
	
						, new Option("Newfoundland", "NL")
	
						, new Option("Northwest Territories", "NT")
	
						, new Option("Nova Scotia", "NS")
	
						, new Option("Nunavut", "NU")
	
						, new Option("Ontario", "ON")
	
						, new Option("Prince Edward Island", "PE")
	
						, new Option("Quebec", "QC")
	
						, new Option("Saskatchewan", "SK")
	
						, new Option("Yukon", "YT")
	
	);
	
	arIndia = Array(	new Option("-- Select One --", '')
	
						, new Option("Andrapradesh ", "Andrapradesh")
	
						, new Option("Arunachal Pradesh ", "Arunachal_Pradesh")
	
						, new Option("Assam ", "Assam")
	
						, new Option("Bihar ", "Bihar")
	
						, new Option("Chattisgargh ", "Chattisgargh")
	
						, new Option("Delhi ", "Delhi")
	
						, new Option("Goa ", "Goa")
	
						, new Option("Gujarat ", "Gujarat")
	
						, new Option("Haryana ", "Haryana")
	
						, new Option("Himachal Pardesh ", "Himachal_Pardesh")
	
						, new Option("Jammu & Kashmir ", "Jammu_&amp;_Kashmir")
	
						, new Option("Jharkhand ", "Jharkhand")
	
						, new Option("Karnataka ", "Karnataka")
	
						, new Option("Kerala ", "Kerala")
	
						, new Option("Madhya Pardesh ", "Madhya_Pardesh")
	
						, new Option("Maharashtra ", "Maharashtra")
	
						, new Option("Manipur ", "Manipur")
	
						, new Option("Meghalaya ", "Meghalaya")
	
						, new Option("Mizoram ", "Mizoram")
	
						, new Option("Nagaland ", "Nagaland")
	
						, new Option("Orrisa ", "Orrisa")
	
						, new Option("Punjab ", "Punjab")
	
						, new Option("Rajasthan ", "Rajasthan")
	
						, new Option("Tamil Nadu ", "Tamil_Nadu")
	
						, new Option("Tripura ", "Tripura")
	
						, new Option("Uttar Pardesh ", "Uttar_Pardesh")
	
						, new Option("Uttrakhand ", "Uttrakhand")
	
						, new Option("West Bangal ", "West_Bangal")
	
	);
	
	arUSA = Array(		new Option("-- Select One --", '')
	
						, new Option("Alabama", "AL")
	
						, new Option("Alaska", "AK")
	
						, new Option("Arizona", "AZ")
	
						, new Option("Arkansas", "AR")
	
						, new Option("California", "CA")
	
						, new Option("Colorado", "CO")
	
						, new Option("Connecticut", "CT")
	
						, new Option("Delaware", "DE")
	
						, new Option("District of Columbia", "DC")
	
						, new Option("Florida", "FL")
	
						, new Option("Georgia", "GA")
	
						, new Option("Hawaii", "HI")
	
						, new Option("Idaho", "ID")
	
						, new Option("Illinois", "IL")
	
						, new Option("Indiana", "IN")
	
						, new Option("Iowa", "IA")
	
						, new Option("Kansas", "KS")
	
						, new Option("Kentucky", "KY")
	
						, new Option("Louisiana", "LA")
	
						, new Option("Maine", "ME")
	
						, new Option("Maryland", "MD")
	
						, new Option("Massachusetts", "MA")
	
						, new Option("Michigan", "MI")
	
						, new Option("Minnesota", "MN")
	
						, new Option("Mississippi", "MS")
	
						, new Option("Missouri", "MO")
	
						, new Option("Montana", "MT")
	
						, new Option("Nebraska", "NE")
	
						, new Option("Nevada", "NV")
	
						, new Option("New Hampshire", "NH")
	
						, new Option("New Jersey", "NJ")
	
						, new Option("New Mexico", "NM")
	
						, new Option("New York", "NY")
	
						, new Option("North Carolina", "NC")
	
						, new Option("North Dakota", "ND")
	
						, new Option("Ohio", "OH")
	
						, new Option("Oklahoma", "OK")
	
						, new Option("Oregon", "OR")
	
						, new Option("Pennsylvania", "PA")
	
						, new Option("Rhode Island", "RI")
	
						, new Option("South Carolina", "SC")
	
						, new Option("South Dakota", "SD")
	
						, new Option("Tennessee", "TN")
	
						, new Option("Texas", "TX")
	
						, new Option("Utah", "UT")
	
						, new Option("Vermont", "VT")
	
						, new Option("Virginia", "VA")
	
						, new Option("Washington", "WA")
	
						, new Option("West Virginia", "WV")
	
						, new Option("Wisconsin", "WI")
	
						, new Option("Wyoming", "WY")
	
	);
	
	arAustralia = Array(		new Option("-- Select One --", '')
	
						, new Option("Australian Capital Territory", "ACT")
	
						, new Option("New South Wales", "NSW")
	
						, new Option("Northern Territory", "NT")
	
						, new Option("Queensland", "QLD")
	
						, new Option("South Australia", "SA")
	
						, new Option("Tasmania", "TAS")
	
						, new Option("Victoria", "VIC")
	
						, new Option("Western Australia", "WA")
	
	);
	
	arChina = Array(		new Option("-- Select One --", '')
	
						, new Option("Anhui", "Anhui")
	
						, new Option("Beijing", "Beijing")
	
						, new Option("Chongqing", "Chongqing")
	
						, new Option("Fujian", "Fujian")
	
						, new Option("Gansu", "Gansu")
	
						, new Option("Guangdong", "Guangdong")
	
						, new Option("Guangxi", "Guangxi")
	
						, new Option("Guizhou", "Guizhou")
	
						, new Option("Hainan", "Hainan")
	
						, new Option("Hebei", "Hebei")
	
						, new Option("Helongjiang", "Helongjiang")
	
						, new Option("Henan", "Henan")
	
						, new Option("Hubei", "Hubei")
	
						, new Option("Hunan", "Hunan")
	
						, new Option("Inner Mongolia", "Inner_Mongolia")
	
						, new Option("Jiangsu", "Jiangsu")
	
						, new Option("Jiangxi", "Jiangxi")
	
						, new Option("Jilin", "Jilin")
	
						, new Option("Liaoning", "Liaoning")
	
						, new Option("Ningxia", "Ningxia")
	
						, new Option("Qinghai", "Qinghai")
	
						, new Option("Shaanxi", "Shaanxi")
	
						, new Option("Shandong", "Shandong")
	
						, new Option("Shanghai", "Shanghai")
	
						, new Option("Shanxi", "Shanxi")
	
						, new Option("Sichuan", "Sichuan")
	
						, new Option("Tianjin", "Tianjin")
	
						, new Option("Tibet", "Tibet")
	
						, new Option("Xinjiang", "Xinjiang")
	
						, new Option("Yunnan", "Yunnan")
	
						, new Option("Zhejiang", "Zhejiang")
	
	);
	
	arHongKong = Array(		new Option("-- Select One --", '')
	
						, new Option("Hong Kong Island", "Hong_Kong_Island")
	
						, new Option("Kowloon", "Kowloon")
	
						, new Option("Lantau Island", "Lantau_Island")
	
						, new Option("New Territories", "New_Territories")
	
	);
	
	arSingapore = Array(		new Option("-- Select One --", '')
	
						, new Option("Singapore", "Singapore")
	
	);
	
	
	arCompanyStateAllOpts = Array(	new Option("-- Select One --", "")
	
						, new Option("Alabama", "AL")
	
						, new Option("Alaska", "AK")
	
						, new Option("Arizona", "AZ")
	
						, new Option("Arkansas", "AR")
	
						, new Option("California", "CA")
	
						, new Option("Colorado", "CO")
	
						, new Option("Connecticut", "CT")
	
						, new Option("Delaware", "DE")
	
						, new Option("District of Columbia", "DC")
	
						, new Option("Florida", "FL")
	
						, new Option("Georgia", "GA")
	
						, new Option("Hawaii", "HI")
	
						, new Option("Idaho", "ID")
	
						, new Option("Illinois", "IL")
	
						, new Option("Indiana", "IN")
	
						, new Option("Iowa", "IA")
	
						, new Option("Kansas", "KS")
	
						, new Option("Kentucky", "KY")
	
						, new Option("Louisiana", "LA")
	
						, new Option("Maine", "ME")
	
						, new Option("Maryland", "MD")
	
						, new Option("Massachusetts", "MA")
	
						, new Option("Michigan", "MI")
	
						, new Option("Minnesota", "MN")
	
						, new Option("Mississippi", "MS")
	
						, new Option("Missouri", "MO")
	
						, new Option("Montana", "MT")
	
						, new Option("Nebraska", "NE")
	
						, new Option("Nevada", "NV")
	
						, new Option("New Hampshire", "NH")
	
						, new Option("New Jersey", "NJ")
	
						, new Option("New Mexico", "NM")
	
						, new Option("New York", "NY")
	
						, new Option("North Carolina", "NC")
	
						, new Option("North Dakota", "ND")
	
						, new Option("Ohio", "OH")
	
						, new Option("Oklahoma", "OK")
	
						, new Option("Oregon", "OR")
	
						, new Option("Pennsylvania", "PA")
	
						, new Option("Rhode Island", "RI")
	
						, new Option("South Carolina", "SC")
	
						, new Option("South Dakota", "SD")
	
						, new Option("Tennessee", "TN")
	
						, new Option("Texas", "TX")
	
						, new Option("Utah", "UT")
	
						, new Option("Vermont", "VT")
	
						, new Option("Virginia", "VA")
	
						, new Option("Washington", "WA")
	
						, new Option("West Virginia", "WV")
	
						, new Option("Wisconsin", "WI")
	
						, new Option("Wyoming", "WY")
	
	
	
						, new Option("Alberta", "AB")
	
						, new Option("British Columbia", "BC")
	
						, new Option("Manitoba", "MB")
	
						, new Option("New Brunswick", "NB")
	
						, new Option("Newfoundland", "NL")
	
						, new Option("Northwest Territories", "NT")
	
						, new Option("Nova Scotia", "NS")
	
						, new Option("Nunavut", "NU")
	
						, new Option("Ontario", "ON")
	
						, new Option("Prince Edward Island", "PE")
	
						, new Option("Quebec", "QC")
	
						, new Option("Saskatchewan", "SK")
	
						, new Option("Yukon", "YT")
		
	
	
						, new Option("Andrapradesh ", "Andrapradesh")
	
						, new Option("Arunachal Pradesh ", "Arunachal_Pradesh")
	
						, new Option("Assam ", "Assam")
	
						, new Option("Bihar ", "Bihar")
	
						, new Option("Chattisgargh ", "Chattisgargh")
	
						, new Option("Delhi ", "Delhi")
	
						, new Option("Goa ", "Goa")
	
						, new Option("Gujarat ", "Gujarat")
	
						, new Option("Haryana ", "Haryana")
	
						, new Option("Himachal Pardesh ", "Himachal_Pardesh")
	
						, new Option("Jammu & Kashmir ", "Jammu_&amp;_Kashmir")
	
						, new Option("Jharkhand ", "Jharkhand")
	
						, new Option("Karnataka ", "Karnataka")
	
						, new Option("Kerala ", "Kerala")
	
						, new Option("Madhya Pardesh ", "Madhya_Pardesh")
	
						, new Option("Maharashtra ", "Maharashtra")
	
						, new Option("Manipur ", "Manipur")
	
						, new Option("Meghalaya ", "Meghalaya")
	
						, new Option("Mizoram ", "Mizoram")
	
						, new Option("Nagaland ", "Nagaland")
	
						, new Option("Orrisa ", "Orrisa")
	
						, new Option("Punjab ", "Punjab")
	
						, new Option("Rajasthan ", "Rajasthan")
	
						, new Option("Tamil Nadu ", "Tamil_Nadu")
	
						, new Option("Tripura ", "Tripura")
	
						, new Option("Uttar Pardesh ", "Uttar_Pardesh")
	
						, new Option("Uttrakhand ", "Uttrakhand")
	
						, new Option("West Bangal ", "West_Bangal")
	
	
	
						, new Option("Australian Capital Territory", "ACT")
	
						, new Option("New South Wales", "NSW")
	
						, new Option("Northern Territory", "NT")
	
						, new Option("Queensland", "QLD")
	
						, new Option("South Australia", "SA")
	
						, new Option("Tasmania", "TAS")
	
						, new Option("Victoria", "VIC")
	
						, new Option("Western Australia", "WA")
	
	
	
						, new Option("Anhui", "Anhui")
	
						, new Option("Beijing", "Beijing")
	
						, new Option("Chongqing", "Chongqing")
	
						, new Option("Fujian", "Fujian")
	
						, new Option("Gansu", "Gansu")
	
						, new Option("Guangdong", "Guangdong")
	
						, new Option("Guangxi", "Guangxi")
	
						, new Option("Guizhou", "Guizhou")
	
						, new Option("Hainan", "Hainan")
	
						, new Option("Hebei", "Hebei")
	
						, new Option("Helongjiang", "Helongjiang")
	
						, new Option("Henan", "Henan")
	
						, new Option("Hubei", "Hubei")
	
						, new Option("Hunan", "Hunan")
	
						, new Option("Inner Mongolia", "Inner_Mongolia")
	
						, new Option("Jiangsu", "Jiangsu")
	
						, new Option("Jiangxi", "Jiangxi")
	
						, new Option("Jilin", "Jilin")
	
						, new Option("Liaoning", "Liaoning")
	
						, new Option("Ningxia", "Ningxia")
	
						, new Option("Qinghai", "Qinghai")
	
						, new Option("Shaanxi", "Shaanxi")
	
						, new Option("Shandong", "Shandong")
	
						, new Option("Shanghai", "Shanghai")
	
						, new Option("Shanxi", "Shanxi")
	
						, new Option("Sichuan", "Sichuan")
	
						, new Option("Tianjin", "Tianjin")
	
						, new Option("Tibet", "Tibet")
	
						, new Option("Xinjiang", "Xinjiang")
	
						, new Option("Yunnan", "Yunnan")
	
						, new Option("Zhejiang", "Zhejiang")
	
	
	
						, new Option("Hong Kong Island", "Hong_Kong_Island")
	
						, new Option("Kowloon", "Kowloon")
	
						, new Option("Lantau Island", "Lantau_Island")
	
						, new Option("New Territories", "New_Territories")
	
	
	
						, new Option("Singapore", "Singapore")
	
	);
		
	function InitStateOpts(){
		try {
			state_fd = SFDC_state_pl.getForm().elements['req_state'];
			mapCountries = {"CA":arCanada, "IN":arIndia, "US":arUSA, "AU":arAustralia, "CN":arChina, "HK":arHongKong, "SG":arSingapore};
			bStateInit = true;
		} catch(e) {
			
		}
	}

	
	function swapCountryStates(arCountry){

		new_ubound = arCountry.length;
		old_ubound = state_fd.options.length;
		z_ubound = old_ubound;
		if(new_ubound > old_ubound){z_ubound=new_ubound;}
		for(oi=0; oi < new_ubound; oi++){state_fd.options[oi] = arCountry[oi];}
		for(zi = state_fd.options.length-1;zi>=oi;zi--){state_fd.options[zi]= null;}
	}

	function checkStates(c){
		try{
			if(!bStateInit){InitStateOpts();}
			if(c == ''){
				arCountry = arCompanyStateAllOpts;
			}else{
				arCountry = mapCountries[c];
				if(typeof(arCountry) == 'undefined'){arCountry = arNotApply;}
				if(arCountry){swapCountryStates(arCountry);}
				var st_span = document.getElementById('state_req_span');
				if(st_span){st_span.style.display = ((c == 'US')||(c == 'CA')||(c == 'IN')||(c == 'AU')||(c == 'CN')||(c == 'HK')||(c == 'SG'))?'inline':'none';}
			}
			
			//6/17/09 -- Added to change State label colors depending on if they're required or not determined by country
			if(c !='US' && c != 'CA' && c != 'IN' && c != 'AU' && c != 'CN' && c != 'HK' && c != 'SG'){
				document.getElementById("State_lbl").style.color='black';
			}
			else
			{
				document.getElementById("State_lbl").style.color='red';
			}
			
		}catch(e){
				
		}finally{}
	}
	
	var SFDC_state_pl = {
		supportedCountries: 'CA,IN,US,AU,CN,HK,SG',
		
		validateState: function( countryElement, stateElement, errObject ) {
			var c_val = countryElement[countryElement.selectedIndex].value;
			
			if(this.supportedCountries.indexOf(c_val) != -1){
				if(stateElement.selectedIndex < 1) {
					errObject[stateElement.id]="Enter your State/Province";
				}
			}
		},
		
		getForm: function() {
			for( var iform = 0; iform < document.forms.length; iform++) {
				var currentForm = document.forms[iform];
				
				if (currentForm["req_state"]) {
					return currentForm;
				}
			}
			
			return;
		}
	}
	
//Original Validation
	
function check_req(item) {

var valid=true;
// Pass the form name to the function and set the return code to true.
// Look for form elements whose name begins with 'req_'
if (document.images) {
	for (i=0;i<item.length;i++) {
	var test_it=item.elements[i];

		if (test_it.name.substring(0,4)=="req_") {
		//alert(test_it.value);
		//alert(test_it.type.toString().substring(0,6) + " select_" + test_it.selectedIndex)
// if a text field or text area is empty then return false
// or if the field is selected and the first item is still the choice then return false
// Note the Substring command for the Select is to get both single and multiple select elements

				if (((test_it.type=="text"||test_it.type=="textarea")&& test_it.value=='')||(test_it.type.toString().substring(0,6)=="select" && test_it.selectedIndex==0 && test_it.value != "N/A")) {

// the following is the code if the form select element has no option marked as selected
// if (((test_it.type=="text"||test_it.type=="textarea")&& test_it.value=='')||(test_it.type.toString().substring(0,6)=="select" && test_it.selectedIndex==0)) {

// If it the empty field is  text or textarea then focus on it
			if (test_it.type=="text"||test_it.type=="textarea")	{
			item.elements[i].focus();
			}
		valid=false;
		break;
         }
      }
   }
}
if (!valid) {
form_field=test_it.name.substring(4,30).toUpperCase();
alert("Please enter data in the "+form_field+" field. ");
return false;
}
else
return true;
}
//The following 9 functions work together to check for a valid email address
function checkValidation(formInput) {

    if (typeof(formInput) != "object") {
        alert("Validation not supported on this browser.");
        return(false);
    }

    var message;

    if (stringEmpty(formInput.value)) {
        message = "Error! There is no email address entered.";
        alert(message);
    } else if (noAtSign( formInput.value )) {
        message = "Error! The email address \"" + formInput.value + "\" does not contain an '@' character.";
        alert(message);
    } else if (nothingBeforeAt(formInput.value)) {
        message = "Error! The email address \"" + formInput.value;
        message += "\" must contain at least one character before the '@' character";
        alert(message);
    } else if (noLeftBracket(formInput.value)) {
        message = "Error! The email address \"" + formInput.value;
        message += "\" contains a right square bracket ']',\nbut no corresponding left square bracket '['.";
        alert(message);
    } else if (noRightBracket(formInput.value)) {
        message = "Error! The email address \"" + formInput.value;
        message += "\" contains a left square bracket '[',\nbut no corresponding right square bracket ']'.";
        alert( message);
    } else if (noValidPeriod(formInput.value)) {
        message = "Error! The email address \"" + formInput.value + "\" must contain a period ('.') character.";
        alert(message);
    } else if (noValidSuffix(formInput.value)) {
        message = "Error! The email address \"" + formInput.value;
        message += "\" must contain a two, three or four character suffix.";
        alert(message);
    } else {
        //message = "Success! The email address \"" + formInput.value + "\" validates OK.";
        //alert(message);
	//Else Do Nothing
    }

    var objType = typeof(formInput.focus);
    if (objType == "object" || objType == "function") {
         formInput.focus();
    }

    return (false);
}

function checkValid (formField) {

    if ( checkValidation ( formField ) == true ) {
        //alert ( 'E-Mail Address Validates OK' );
	//Don't alert - do nothing
    }

    return ( false );
}

function stringEmpty (formField) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( formField.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign (formField) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if (formField.indexOf ('@', 0) == -1) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt (formField) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( formField.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if (formField.indexOf ( '.', 0 ) == -1)
        return ( true );

    return ( false );
}

function noValidSuffix(formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
        return ( false );
    }

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = formField.length;
    var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
        return ( true );
    } else {
        return ( false );
    }
}


