function checkInput( cell, fieldname, bValidateWhiteSpace )
{

	if (cell == null)
		return false;
		
	var value;
	
	if ( cell.value == null || typeof(cell.value) == "undefined")
	{
		for (i=0; i < cell.options.length; i++)
		{
			if (cell.options[i].selected )
				value = cell.options[i].value;
		}
	}
	else
	{
		value = cell.value;
	}
			
	// not empty
	if ( value.length == 0 )
	{
		alert( fieldname + " cannot be empty.");
		cell.focus();
		return false;
	}

	var re = /['"<>&]+/;
	var isMatched = value.match(re);
	if (isMatched != null)
	{
		alert(fieldname + " has an invalid character ( \' \" \< \> & ).");
		cell.focus();
		return false;
	}
	
	if ( bValidateWhiteSpace )
	{
		var re = /\s/;
		var isMatched = value.match(re);
		if (isMatched != null)
		{
			alert(fieldname + " cannot contain whitespace.");
			cell.focus();
			return false;
		}
	}
	else
	{
		var re = /\S+/;
		var isMatched = value.match(re);
		if (isMatched == null)
		{
			alert(fieldname + " must contain non-whitespace characters.");
			cell.focus();
			return false;
		}
	}

	return true;
}

function validateFieldLength( cell, strFieldName )
{
	var value = cell.value;
	if ( value.length < 6 )
	{
		alert( strFieldName + " must be at least 6 characters.");
		cell.focus();
		return false;
	}
	return true;
}

function validateEMail( cell )
{
	var value = cell.value;
	var re = "^.+@.+\..+$";
	var isMatched = value.match(re);
	if (isMatched == null)
	{ 
		alert( "Invalid e-mail: "+value+"\nMust be in the format: name@site.ext" );
		cell.focus();
		return false;
	}
	return true;
}

function validateZipCode( zipcell, countrycell )
{
	var strValue = zipcell.value;
	if (countrycell.value == "US")
	{
		
		var re = new RegExp("^\\d{5}?$");
		var isMatched = strValue.match(re);
		if (isMatched == null)
		{ 
			alert( "Invalid zipcode: "+strValue+"\nUS zip codes must be entered in a 5 digit format " );
			zipcell.focus();
			return false;
		}
	}//HS - Added : 11-May-2006 - Sec.2.5 Canadian Postal Code Validation
	else if (countrycell.value == "Canada")//client side validation for Canadian Postal code
	{		
		var re = new RegExp("^[a-zA-Z]\\d[a-zA-Z]\\d[a-zA-Z]\\d$");
		var isMatched = strValue.match(re);
		if (isMatched == null)
		{ 
			alert( "Invalid Postal Code" );
			zipcell.focus();
			return false;
		}		
	}
	//HS - Added : 11-May-2006 - Sec.2.5 Canadian Postal Code Validation
	
	
	return true;	

}

function compareCellValues(cell1, cell2, fieldName)
{
	if (cell1.value != cell2.value)
	{
		alert("Confirmation " +  fieldName + " does not match original. Please try again.");
		cell1.focus();
		return false;
	}
	return true;

}

function getObj(form, name)
{
	if (form == null)
		return null;
		
	for (var i = 0; i < form.length; i++)
	{
		if (form[i].name  && form[i].name == name)
		{
			return form[i];
		}
	}
	return null;
}


function focusObj(form, name)
{
	if (form == null)
		return null;
		
	var obj = getObj(form, name);
	if(!obj.disabled)
		obj.focus();
}



function getRadio(form, name)
{
	for (var i = 0; i < form.length; i++)
	{
		if ((form[i].name == name) && form[i].checked)
		{
			return form[i];
		}
	}
	return null;
}

function checkRadio(form, id)
{
	for (var i = 0; i < form.length; i++)
	{
		if (form[i].id != null && (form[i].id == id))
		{
			form[i].checked = true;
		}
	}
	return null;
}

//HS - Added : 19-May-2006 - Sec.2.3 Canadian Province Display
//This function populates the state dropdown based upon the country selected in the country dropdown.
function PopulateStateProvince(form)
{
	if(form == document.CUSTOMER_INFO)
	{
		//POPULATE THE STATE BASED ON THE COUNTRY
		var country = form.cust_country.options[form.cust_country.selectedIndex].value;
		//HS - Modified : 14-Jun-2006 - Sec.2.15 - State And Zip Code Auto Population For ‘Other’ Country In Customer Information Page.	
		//Added the province list for 'Other' and in case the country is selected as 'Other' then disabling both the province listbox and 
		//zip code textbox with default value as 'NA'.
		
		if(country == 'Canada')
		{
			sStateArray = new Array("AB", "BC", "MB", "NB", "NL", "NS", "NT","NU", "ON", "PE", "QC", "SK", "YT");			
		}
		if(country == 'Other')
		{
			sStateArray = new Array("NA");
		}
		if(country == 'US')
		{
			//HS - Modified : 23-Jun-2006 - Sec 2.16.Populate Only US States And Territories In State/Province Dropdown For ‘US’ Country.
			//Modified the list of provinces for US. 
			sStateArray = Array("AA", "AE", "AK", "AL", "AP", "AR", "AS", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "FM", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MH", "MI", "MN", "MO", "MP", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "PW", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VI", "VT", "WA", "WI", "WV", "WY");
			//HS - End : 23-Jun-2006 - Sec 2.16.Populate Only US States And Territories In State/Province Dropdown For ‘US’ Country.
		}
		
		var listbox = form.cust_state
		if (country =='Other')
		{
		listbox.disabled = true;
		form.cust_zip.value = "NA";
		form.cust_zip.disabled = true ;
		}
		else 
		{
		listbox.disabled = false;
		if(form.cust_zip.value == "NA")
		{
			form.cust_zip.value = "";
		}
		form.cust_zip.disabled = false ;
		}
		form.netscape_country.value = country;
		//HS - End : 14-Jun-2006 - Sec.2.15 - State And Zip Code Auto Population For ‘Other’ Country In Customer Information Page.	
	
	}
	if(form == document.PAYMENT_INFO)
	{
		//POPULATE THE STATE BASED ON THE COUNTRY
		var country = form.billing_country.options[form.billing_country.selectedIndex].value;
		if(country == 'Canada')
		{
			sStateArray = new Array("AB", "BC", "MB", "NB", "NL", "NS", "NT","NU", "ON", "PE", "QC", "SK", "YT");			
		}
		else		
		{
			//HS - Modified : 23-Jun-2006 - Sec 2.16.Populate Only US States And Territories In State/Province Dropdown For ‘US’ Country.
			//Modified the list of provinces for US.
			sStateArray = new Array("AA", "AE", "AK", "AL", "AP", "AR", "AS", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "FM", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MH", "MI", "MN", "MO", "MP", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "PW", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VI", "VT", "WA", "WI", "WV", "WY")
			//HS - End : 23-Jun-2006 - Sec 2.16.Populate Only US States And Territories In State/Province Dropdown For ‘US’ Country.
		}
		var listbox = form.billing_state
		form.netscape_country.value = country;
		
	}
	//POPULATE THE STATE DROPDOWN BASED ON THE COUNTRY
	for ( var x = 0 ; x < sStateArray.length ; x++ )
	{		
	listbox.options[x] = new Option(sStateArray[x],sStateArray[x]) ;
	}
	listbox.options.length =  sStateArray.length ;
	//HS - Modified : 23-Jun-2006 - Sec 2.16.Populate Only US States And Territories In State/Province Dropdown For ‘US’ Country.
	//Included the logic to select 'AK' as the default state when the country selected is 'US'.
	if 	( country == "US" )
	{
		listbox.selectedIndex = 2 ;
	}
	//HS - End : 23-Jun-2006 - Sec 2.16.Populate Only US States And Territories In State/Province Dropdown For ‘US’ Country.
}
//HS - End : 19-May-2006 - Sec.2.3 Canadian Province Display
 
//HS - Added : 22-June-2006 - Sec.2.3 Canadian Province Display
//On dropdown change of country using keyboard, onchange event is not triggere
function ChangeStateProvinceNetscape(form)
{
	if(navigator.appName=="Netscape")
	{
		var country,selCountry
		if(form == document.CUSTOMER_INFO)
		{
			country = form.cust_country.options[form.cust_country.selectedIndex].value;	
		}
		if(form == document.PAYMENT_INFO)
		{
			country = form.billing_country.options[form.billing_country.selectedIndex].value;
		}
		selCountry = form.netscape_country.value;
		if(country != selCountry)
		{
			PopulateStateProvince(form)
		}
	}
}
//HS - End : 22-June-2006 - Sec.2.3 Canadian Province Display 