// 18 Feb 97 created Eric Krock
//
// (c) 1997 Netscape Communications Corporation

// VARIABLE DECLARATIONS
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r";
var decimalPointDelimiter = "."
var phoneNumberDelimiters = "()- ";
var validUSPhoneChars = digits + phoneNumberDelimiters;
var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";
var SSNDelimiters = "- ";
var validSSNChars = digits + SSNDelimiters; 
var digitsInSocialSecurityNumber = 9;
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var ZIPCodeDelimeter = "-";
var validZIPCodeChars = digits + ZIPCodeDelimiters;
var digitsInZIPCode1 = 5;
var digitsInZIPCode2 = 9;
var creditCardDelimiters = " ";

var mPrefix = "You did not enter a value into the ";
var mSuffix = " field. This is a required field. Please enter it now.";

var sUSLastName = "Last Name";
var sUSFirstName = "First Name";
var sWorldLastName = "Family Name";
var sWorldFirstName = "Given Name";
var sTitle = "Title";
var sCompanyName = "Company Name";
var sUSAddress = "Street Address";
var sWorldAddress = "Address";
var sCity = "City";
var sStateCode = "State Code";
var sWorldState = "State, Province, or Prefecture";
var sCountry = "Country";
var sZIPCode = "ZIP Code";
var sWorldPostalCode = "Postal Code";
var sPhone = "Phone Number";
var sFax = "Fax Number";
var sDateOfBirth = "Date of Birth";
var sExpirationDate = "Expiration Date";
var sEmail = "Email";
var sSSN = "Social Security Number";
var sCreditCardNumber = "Credit Card Number";
var sOtherInfo = "Other Information";

// i is an abbreviation for "invalid"
var iStateCode = "This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now."
var iZIPCode = "This field must be a 5 or 9 digit U.S. ZIP Code (like 94043). Please reenter it now."
var iUSPhone = "This field must be a 10 digit U.S. phone number, [like (xxx) xxx-xxxx]. Please reenter it now."
var iWorldPhone = "This field must be a valid international phone number. Please reenter it now."
var iSSN = "This field must be a 9 digit U.S. social security number (like 123 45 6789). Please reenter it now."
var iEmail = "This field must be a valid email address (like foo@bar.com). Please reenter it now."
var iCreditCardPrefix = "This is not a valid "
var iCreditCardSuffix = " credit card number. (Click the link on this form to see a list of sample numbers.) Please reenter it now."
var iDay = "This field must be a day number between 1 and 31.  Please reenter it now."
var iMonth = "This field must be a month number between 1 and 12.  Please reenter it now."
var iYear = "This field must be a 2 or 4 digit year number.  Please reenter it now."
var iDatePrefix = "The Day, Month, and Year for "
var iDateSuffix = " do not form a valid date.  Please reenter them now."

// p is an abbreviation for "prompt"
var pEntryPrompt = "Please enter a "
var pStateCode = "2 character code (like CA)."
var pZIPCode = "5 or 9 digit U.S. ZIP Code (like 94043)."
var pUSPhone = "10 digit U.S. phone number (like 415 555 1212)."
var pWorldPhone = "international phone number."
var pSSN = "9 digit U.S. social security number (like 123 45 6789)."
var pEmail = "valid email address (like foo@bar.com)."
var pCreditCard = "valid credit card number."
var pDay = "day number between 1 and 31."
var pMonth = "month number between 1 and 12."
var pYear = "2 or 4 digit year number."
var defaultEmptyOK = false;

var daysInMonth = makeArray(12);
daysInMonth[1] = 31;
daysInMonth[2] = 29;
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

var USStateCodeDelimiter = "|";
var USStateCodes = "AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AE|AE|AP"

function isBlank(str)  { 
	for(var i = 0; i < str.length; i++)  {
		var c = str.charAt(i); 
		if ((c != ' ') && (c != '\n') && (c != '\t')) 
			return false; 
	} 
	return true; 
}

function isEmpty(s){ return ((s == null) || (s.length == 0)) }

function isWhitespace (s)

{   var i;

	if (isEmpty(s)) return true;
	for (i = 0; i < s.length; i++)
	{   		
		var c = s.charAt(i);

		if (whitespace.indexOf(c) == -1) return false;
	}

	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 stripCharsNotInBag (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 stripWhitespace (s){  return stripCharsInBag (s, whitespace) }

function stripInitialWhitespace (s){
	var i = 0;

	while ((i < s.length) && charInString (s.charAt(i), whitespace))
		i++;

	return s.substring (i, s.length);
}

function isLetter (c){   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )}

function isDigit (c){return ((c >= "0") && (c <= "9"))}

function isLetterOrDigit (c){return (isLetter(c) || isDigit(c))}

function isInteger (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 isSignedInteger (s){   
	if (isEmpty(s)) 
		if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
		else return (isSignedInteger.arguments[1] == true);

	else {
		var startPos = 0;
		var secondArg = defaultEmptyOK;

		if (isSignedInteger.arguments.length > 1)
			secondArg = isSignedInteger.arguments[1];
		if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
			startPos = 1;	
		return (isInteger(s.substring(startPos, s.length), secondArg))
	}
}

function isPositiveInteger (s){
	var secondArg = defaultEmptyOK;
	if (isPositiveInteger.arguments.length > 1)
		secondArg = isPositiveInteger.arguments[1];
	return (isSignedInteger(s, secondArg)
	&& ( (isEmpty(s) && secondArg)  || (parseInt (s) > 0) ) );
}

function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
		secondArg = isNonnegativeInteger.arguments[1];
	return (isSignedInteger(s, secondArg)
		&& ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}

function isNegativeInteger (s)
{   var secondArg = defaultEmptyOK;

	if (isNegativeInteger.arguments.length > 1)
		secondArg = isNegativeInteger.arguments[1];
	return (isSignedInteger(s, secondArg)
		&& ( (isEmpty(s) && secondArg)  || (parseInt (s) < 0) ) );
}

function isNonpositiveInteger (s)
{   var secondArg = defaultEmptyOK;

	if (isNonpositiveInteger.arguments.length > 1)
		secondArg = isNonpositiveInteger.arguments[1];
	return (isSignedInteger(s, secondArg)
		&& ( (isEmpty(s) && secondArg)  || (parseInt (s) <= 0) ) );
}

function isFloat (s)
{   var i;
	var seenDecimalPoint = false;

	if (isEmpty(s)) 
	   if (isFloat.arguments.length == 1) return defaultEmptyOK;
	   else return (isFloat.arguments[1] == true);

	if (s == decimalPointDelimiter) return false;

	for (i = 0; i < s.length; i++)
	{   		
		var c = s.charAt(i);

		if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
		else if (!isDigit(c)) return false;
	}
	
	return true;
}

function isSignedFloat (s)

{   if (isEmpty(s)) 
	   if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
	   else return (isSignedFloat.arguments[1] == true);

	else {
		var startPos = 0;
		var secondArg = defaultEmptyOK;

		if (isSignedFloat.arguments.length > 1)
		   secondArg = isSignedFloat.arguments[1];
		
		if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
		  startPos = 1;	
		return (isFloat(s.substring(startPos, s.length), secondArg))
	}
}

function isAlphabetic (s)

{   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))
		return false;
	}
	
	return true;
}


function isAlphanumeric (s)

{   var i;

	if (isEmpty(s)) 
	   if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
	   else return (isAlphanumeric.arguments[1] == true);
	for (i = 0; i < s.length; i++)
	{   		
		var c = s.charAt(i);

		if (! (isLetter(c) || 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 isSSN (s)
{   if (isEmpty(s)) 
	   if (isSSN.arguments.length == 1) return defaultEmptyOK;
	   else return (isSSN.arguments[1] == true);
	return (isInteger(s) && s.length == digitsInSocialSecurityNumber)
}

function isUSPhoneNumber (s)
{   if (isEmpty(s)) 
	   if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
	   else return (isUSPhoneNumber.arguments[1] == true);
	return (isInteger(s) && s.length == digitsInUSPhoneNumber)
}


function isInternationalPhoneNumber (s)
{   if (isEmpty(s)) 
	   if (isInternationalPhoneNumber.arguments.length == 1) return defaultEmptyOK;
	   else return (isInternationalPhoneNumber.arguments[1] == true);
	return (isPositiveInteger(s))
}

function isZIPCode (s)
{  if (isEmpty(s)) 
	   if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
	   else return (isZIPCode.arguments[1] == true);
   return (isInteger(s) && 
		   ((s.length == digitsInZIPCode1) ||
			(s.length == digitsInZIPCode2)))
}

function isStateCode(s)
{   if (isEmpty(s)) 
	   if (isStateCode.arguments.length == 1) return defaultEmptyOK;
	   else return (isStateCode.arguments[1] == true);
	return ( (USStateCodes.indexOf(s) != -1) &&
			(s.indexOf(USStateCodeDelimiter) == -1) )
}

function isEmail (s)
{   if (isEmpty(s)) 
	   if (isEmail.arguments.length == 1) return defaultEmptyOK;
	   else return (isEmail.arguments[1] == true);
   
	if (isWhitespace(s)) return false;
		
	if ( ! isContiguousString(s) ) { return false; }
		
	var i = 1;
	var sLength = s.length;
	
	while ((i < sLength) && (s.charAt(i) != "@"))
	{ i++
	}

	if ((i >= sLength) || (s.charAt(i) != "@")) return false;
	else i += 2;
	
	var a = s.split('@');
	if (a.length > 2) return false;
		
	while ((i < sLength) && (s.charAt(i) != "."))
	{ i++
	}
	
	if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
	else return true;
}

function isContiguousString( s )
{
	var result = true;		
	var i = 0;		
	
	while ( i < s.length ){
		if( s.charAt( i ) == " " ){
			result = false;
			break;
		}
		i++;		
	}
	return result;		
}	




function isYear (s)
{   if (isEmpty(s)) 
	   if (isYear.arguments.length == 1) return defaultEmptyOK;
	   else return (isYear.arguments[1] == true);
	if (!isNonnegativeInteger(s)) return false;
		
	return (s.length == 4);
}

function isIntegerInRange (s, a, b)
{   if (isEmpty(s)) 
	   if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
	   else return (isIntegerInRange.arguments[1] == true);
	if (!isInteger(s, false)) return false;
	var num = parseInt (s);
	return ((num >= a) && (num <= b));
}

function isMonth (s)
{   if (isEmpty(s)) 
	   if (isMonth.arguments.length == 1) return defaultEmptyOK;
	   else return (isMonth.arguments[1] == true);
	return isIntegerInRange (s, 1, 12);
}

function isDay (s)
{   if (isEmpty(s)) 
	   if (isDay.arguments.length == 1) return defaultEmptyOK;
	   else return (isDay.arguments[1] == true);   
	return isIntegerInRange (s, 1, 31);
}

function daysInFebruary (year){return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );}


function isDate (year, month, day){   
	if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;
	var intYear = parseInt(year);
	var intMonth = parseInt(month);
	var intDay = parseInt(day);
	if (intDay > daysInMonth[intMonth]) return false; 
	if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
	return true;
}

/* FUNCTIONS TO NOTIFY USER OF INPUT REQUIREMENTS OR MISTAKES. */

function promptEx (s){ window.status = s }
function promptEntry (s){ window.status = pEntryPrompt + s;}
function warnEmpty (theField, s){   
	theField.focus()
	alert(mPrefix + s + mSuffix)
	return false
}
function warnInvalid (theField, s)
{   theField.focus()
	theField.select()
	alert(s)
	return false
}
/* FUNCTIONS TO INTERACTIVELY CHECK VARIOUS FIELDS. */

function checkString (theField, s, emptyOK){
	if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	if (isWhitespace(theField.value)) 
	   return warnEmpty (theField, s);
	else return true;
}

function checkStateCode (theField, emptyOK)
{   if (checkStateCode.arguments.length == 1) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	else
	{  theField.value = theField.value.toUpperCase();
	   if (!isStateCode(theField.value, false)) 
		 return warnInvalid (theField, iStateCode);
	   else return true;
	}
}

function reformatZIPCode (ZIPString){
   if (ZIPString.length == 5) return ZIPString;
   else return (reformat (ZIPString, "", 5, "-", 4));
}

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 warnInvalid (theField, iZIPCode);
	  else 
	  {  
		theField.value = reformatZIPCode(normalizedZIP)
		return true;
	  }
	}
}



function reformatUSPhone (USPhone){return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))}

function checkUSPhone (theField, emptyOK)
{   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)) 
		 return warnInvalid (theField, iUSPhone);
	   else 
	   {  
		 theField.value = reformatUSPhone(normalizedPhone)
		 return true;
	   }
	}
}

function checkInternationalPhone (theField, emptyOK)
{   if (checkInternationalPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	else
	{  if (!isInternationalPhoneNumber(theField.value, false)) 
		 return warnInvalid (theField, iWorldPhone);
	   else return true;
	}
}

function checkEmail (theField, emptyOK)
{   if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	else if (!isEmail(theField.value, false)) 
	   return warnInvalid (theField, iEmail);
	else return true;
}

function reformatSSN (SSN){return (reformat (SSN, "", 3, "-", 2, "-", 4))}

function checkSSN (theField, emptyOK)
{   if (checkSSN.arguments.length == 1) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	else
	{  var normalizedSSN = stripCharsInBag(theField.value, SSNDelimiters)
	   if (!isSSN(normalizedSSN, false)) 
		 return warnInvalid (theField, iSSN);
	   else 
	   {  
		 theField.value = reformatSSN(normalizedSSN)
		 return true;
	   }
	}
}

function checkYear (theField, emptyOK)
{   if (checkYear.arguments.length == 1) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	if (!isYear(theField.value, false)) 
	   return warnInvalid (theField, iYear);
	else return true;
}
function checkMonth (theField, emptyOK)
{   if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	if (!isMonth(theField.value, false)) 
	   return warnInvalid (theField, iMonth);
	else return true;
}
function checkDay (theField, emptyOK)
{   if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;
	if (!isDay(theField.value, false)) 
	   return warnInvalid (theField, iDay);
	else return true;
}

function checkDate (yearField, monthField, dayField, labelString, OKtoOmitDay)
{   
	if (checkDate.arguments.length == 4) OKtoOmitDay = false;
	if (!isYear(yearField.value)) return warnInvalid (yearField, iYear);
	if (!isMonth(monthField.value)) return warnInvalid (monthField, iMonth);
	if ( (OKtoOmitDay == true) && isEmpty(dayField.value) ) return true;
	else if (!isDay(dayField.value)) 
	   return warnInvalid (dayField, iDay);
	if (isDate (yearField.value, monthField.value, dayField.value))
	   return true;
	alert (iDatePrefix + labelString + iDateSuffix)
	return false
}

function getRadioButtonValue (radio){   
	for (var i = 0; i < radio.length; i++){
		if (radio[i].checked) { break }
	}
	return radio[i].value
}

function checkCreditCard (radio, theField){   
	var cardType = getRadioButtonValue (radio)
	var normalizedCCN = stripCharsInBag(theField.value, creditCardDelimiters)
	if (!isCardMatch(cardType, normalizedCCN)) 
	   return warnInvalid (theField, iCreditCardPrefix + cardType + iCreditCardSuffix);
	else 
	{  theField.value = normalizedCCN
	   return true
	}
}



function isCreditCard(st) {
  if (st.length > 19)
	return (false);

  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++) {
	digit = st.substring(l-i-1,l-i);
	tproduct = parseInt(digit ,10)*mul;
	if (tproduct >= 10)
	  sum += (tproduct % 10) + 1;
	else
	  sum += tproduct;
	if (mul == 1)
	  mul++;
	else
	  mul--;
  }
  if ((sum % 10) == 0)
	return (true);
  else
	return (false);

} 

function isVisa(cc)
{
  if (((cc.length == 16) || (cc.length == 13)) &&
	  (cc.substring(0,1) == 4))
	return isCreditCard(cc);
  return false;
}

function isMasterCard(cc){
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
	  ((seconddig >= 1) && (seconddig <= 5)))
	return isCreditCard(cc);
  return false;

}

function isAmericanExpress(cc){
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) &&
	  ((seconddig == 4) || (seconddig == 7)))
	return isCreditCard(cc);
  return false;

}

function isDinersClub(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 14) && (firstdig == 3) &&
	  ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
	return isCreditCard(cc);
  return false;
}

function isCarteBlanche(cc){ return isDinersClub(cc);}

function isDiscover(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) && (first4digs == "6011"))
	return isCreditCard(cc);
  return false;

}

function isEnRoute(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 15) &&
	  ((first4digs == "2014") ||
	   (first4digs == "2149")))
	return isCreditCard(cc);
  return false;
}

function isJCB(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) &&
	 ((first4digs == "3088") ||
	 (first4digs == "3096") ||
	 (first4digs == "3112") ||
	 (first4digs == "3158") ||
	 (first4digs == "3337") ||
	 (first4digs == "3528")))
	return isCreditCard(cc);
  return false;

}

function isAnyCard(cc)
{
  if (!isCreditCard(cc))
	return false;
  if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
	  !isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
	return false;
  }
  return true;

}
function isCardMatch (cardType, cardNumber){
	cardType = cardType.toUpperCase();
	var doesMatch = true;
	if ((cardType == "VISA") && (!isVisa(cardNumber)))
		doesMatch = false;
	if ((cardType == "MASTERCARD") && (!isMasterCard(cardNumber)))
		doesMatch = false;
	if ( ( (cardType == "AMERICANEXPRESS") || (cardType == "AMEX") )
			   && (!isAmericanExpress(cardNumber))) doesMatch = false;
	if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))
		doesMatch = false;
	if ((cardType == "JCB") && (!isJCB(cardNumber)))
		doesMatch = false;
	if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))
		doesMatch = false;
	if ((cardType == "CARTEBLANCHE") && (!isCarteBlanche(cardNumber)))
		doesMatch = false;
	if ((cardType == "ENROUTE") && (!isEnRoute(cardNumber)))
		doesMatch = false;
	return doesMatch;
}
function makeArray(n) {
	for (var i = 1; i <= n; i++){
		this[i] = 0
	} 
	return this
}

///////////////Contact Us Fucntions///////////////////
 /*function SubmitForm()
				{
					var frm = document.getElementById( "aspnetForm" );
					
					if( Validate() )  //If all form fields are valid 
					{
						frm.postBack.value = 1;
						frm.submit();
					}
				}  
function Validate()
{
  var frm = document.getElementById( "aspnetForm" );

	if( frm.selRegarding.selectedIndex == -1 )
	{ 
		alert( "Please select a topic" );
		frm.selRegarding.focus();
		return false;	
	}
	
 if( frm.selState.selectedIndex < 1 )
	{
		alert( "Please select a state" );
		frm.selState.focus();
		return false;	
	}
  			
	if( isBlank( frm.txtFName.value ) || isEmpty( frm.txtFName.value ) )
	{
		alert( "Please enter your First Name" );
		frm.txtFName.focus();
		return false;	
	}
	
	if( isBlank( frm.txtLName.value ) || isEmpty( frm.txtLName.value ) )
	{
		alert( "Please enter your Last Name" );
		frm.txtLName.focus();
		return false;	
	}
	
	if( isBlank( frm.txtEmail.value ) || isEmpty( frm.txtEmail.value ) || ( !isEmail( frm.txtEmail.value ) ) )
	{
		alert( "Please enter a valid Email Address" );
		frm.txtEmail.focus();
		return false;
	}
	
	if( isBlank( frm.txtRetypeEmail.value ) || isEmpty( frm.txtRetypeEmail.value ) || ( !isEmail( frm.txtRetypeEmail.value ) ) )
	{
		alert( "Please retype the email address" );
		frm.txtRetypeEmail.focus();
		return false;
	}

	if ( frm.txtEmail.value.toLowerCase() != frm.txtRetypeEmail.value.toLowerCase() )
	{
		alert( "Email and Retype Email do not match. Please re-enter.");
		frm.txtEmail.focus();
		return false;
	}
	var tempPhone;
	tempPhone = stripCharsInBag( frm.txtPhone.value, phoneNumberDelimiters );
	if( !isBlank( tempPhone ) && !isEmpty( tempPhone ) && !isUSPhoneNumber( tempPhone ) )
	{
		alert( iUSPhone );
		frm.txtPhone.focus();
		return false;
	}
	else if( !isBlank( tempPhone ) && !isEmpty( tempPhone ) )
	{
		frm.txtPhone.value = reformatUSPhone( tempPhone );
	}
	
	// call functions in CheckZip.js to validate zip code
	
	var errMsg;
	
	errMsg = checkZip(frm.txtZip.value);
	
	if(errMsg.length != 0) 
	{
		alert(errMsg);
		frm.txtZip.focus();
		return false;
	}
	
	//reformats zip if 9 digits
	frm.txtZip.value = reformatZip(frm.txtZip.value)
	
	/*if( !isBlank( frm.txtPricePlusNo.value ) && !isEmpty( frm.txtPricePlusNo.value ) )
	{
	
		if( !ValidPricePlusNo( frm.txtPricePlusNo.value ) )
		{
			frm.txtPricePlusNo.focus();
			return;
		}
		
	}
	
	
	if( isBlank( frm.txtMessage.value ) || isEmpty( frm.txtMessage.value ) )
	{
		alert( "Please enter a Message" );
		frm.txtMessage.focus();
		return false;				
	}
	
}
*/


function PopulateStates(whichForm)
{
	var frm = document.getElementById( whichForm );
	var s = USStateCodes.split( USStateCodeDelimiter );
	
	opt = new Option( "--", "--" );
	frm.ctl00_MainContent_selState.options[0] = opt;
		
	for( j = 0; j < s.length; j++ )
	{
		opt = new Option( s[j], s[j] );
		frm.ctl00_MainContent_selState.options[(j+1)] = opt;
		
	}
	
}


function ShowHide()
{
	var d = document.getElementById( "CardBox" );
	
	if( d.style.display == "none" )
		d.style.display = "block";
	else
		d.style.display = "none";
}

function SubmitMealForm()
{

	var frm = document.getElementById( "aspnetForm" );


	/*if( frm.ctl00_MainContent_selLocation.selectedIndex < 1 )
	{
		alert( "Please select a ShopRite location" );
		frm.ctl00_MainContent_selLocation.focus();
		return;	
	}*/

	if( isBlank( frm.ctl00_MainContent_txtFName.value ) || isEmpty( frm.ctl00_MainContent_txtFName.value ) )
	{
		alert( "Please enter your First Name" );
		frm.ctl00_MainContent_txtFName.focus();
		return;	
	}

	if( isBlank( frm.ctl00_MainContent_txtLName.value ) || isEmpty( frm.ctl00_MainContent_txtLName.value ) )
	{
		alert( "Please enter your Last Name" );
		frm.ctl00_MainContent_txtLName.focus();
		return;	
	}

	if( isBlank( frm.ctl00_MainContent_txtPUD.value ) || isEmpty( frm.ctl00_MainContent_txtPUD.value ) )
	{
		alert( "Please enter a Pick Up Date" );
		frm.ctl00_MainContent_txtPUD.focus();
		return;	
	}


	if( isBlank( frm.ctl00_MainContent_txtPUT.value ) || isEmpty( frm.ctl00_MainContent_txtPUT.value ) )
	{
		alert( "Please enter a Pick Up Time" );
		frm.ctl00_MainContent_txtPUT.focus();
		return;	
	}

	if (frm.ctl00_MainContent_txtTurkey.value == "0" && frm.ctl00_MainContent_txtHam.value=="0")
	{
		alert( "Select at least one of the Ham or Turkey" );
		frm.ctl00_MainContent_txtTurkey.focus();
		return;
	}

	if (frm.ctl00_MainContent_txtTurkey.value == "" && frm.ctl00_MainContent_txtHam.value=="")
	{
		alert( "Select at least one of the Ham or Turkey" );
		frm.ctl00_MainContent_txtTurkey.focus();
		return;
	}

	if (frm.ctl00_MainContent_txtTurkey.value == "0" && frm.ctl00_MainContent_txtHam.value=="")
	{
		alert( "Select at least one of the Ham or Turkey" );
		frm.ctl00_MainContent_txtTurkey.focus();
		return;
	}

	if (frm.ctl00_MainContent_txtTurkey.value == "" && frm.ctl00_MainContent_txtHam.value=="0")
	{
		alert( "Select at least one of the Ham or Turkey" );
		frm.ctl00_MainContent_txtTurkey.focus();
		return;
	}

	if( isBlank( frm.ctl00_MainContent_txtEmail.value ) || isEmpty( frm.ctl00_MainContent_txtEmail.value ) || ( !isEmail( frm.ctl00_MainContent_txtEmail.value ) ) )
	{
		alert( "Please enter a valid Email Address" );
		frm.ctl00_MainContent_txtEmail.focus();
		return;
	}

	var tempPhone;
	tempPhone = stripCharsInBag( frm.ctl00_MainContent_txtPhone.value, phoneNumberDelimiters );
	if( !isBlank( tempPhone ) && !isEmpty( tempPhone ) && !isUSPhoneNumber( tempPhone ) )
	{
		alert( iUSPhone );
		frm.ctl00_MainContent_txtPhone.focus();
		return;
	}
	else if( !isBlank( tempPhone ) && !isEmpty( tempPhone ) )
	{
		frm.ctl00_MainContent_txtPhone.value = reformatUSPhone( tempPhone );
}

// call functions in CheckZip.js to validate zip code

var errMsg;

errMsg = checkZip(frm.ctl00_MainContent_txtZip.value);

if(errMsg.length != 0) 
{
	alert(errMsg);
	frm.ctl00_MainContent_txtZip.focus();
}


if (frm.ctl00_MainContent_txtPUD.value == "12/23/2006" || frm.ctl00_MainContent_txtPUD.value == "12/24/2006" || frm.ctl00_MainContent_txtPUD.value == "12/25/2006")
{
	if(!confirm( "Reminder: There is a 48 hour defrost time. Submit anyway?"))
		{return;}				
}


//reformats zip if 9 digits
frm.ctl00_MainContent_txtZip.value = reformatZip(frm.ctl00_MainContent_txtZip.value)

frm.ctl00_MainContent_storeName.value = frm.ctl00_MainContent_selLocation.selectedIndex.value;
frm.ctl00_MainContent_postBack.value = 1;

frm.submit();

}
////////////////////////////////////////////////////////////////

function DZL_SubmitForm()
{
	var frm = document.getElementById( "aspnetForm" );

	// call functions in CheckZip.js to validate zip code
	
	var errMsg;
	
	errMsg = checkZip(frm.ctl00_MainContent_txtZCode.value);
	
	if(errMsg.length != 0) 
	{
		alert(errMsg);
		frm.ctl00_MainContent_txtZCode.focus();
		return;
	}
	
	//reformats zip if 9 digits
	frm.ctl00_MainContent_txtZCode.value = reformatZip(frm.ctl00_MainContent_txtZCode.value)

	frm.ctl00_MainContent_postBack.value = 1;

	frm.submit();

}

/////////////////////////////////////////////////////////////

function redirectOnlineStore()
{
	var el = document.getElementById("ctl00_MainContent_selLocation");
	
	if (el.options[el.selectedIndex].value != "Select")
	{ 
		var href = "http://shop.mywebgrocer.com/shop.aspx?strid=94991514&sc=" + el.options[el.selectedIndex].value;
		window.open(href,"_self");
		
	}	
}

////////////////////////////////////////////////////////////

function checkShopOnlineStore()
{
	//arr holds storeLabel of stores that offers online party platter
	var arr = new Array("613","637","572", "466", "470", "641", "585", "506", "573", "553", "514", "607", "521", "566", "625", "602", "500", "193", "617", "299","524", "533", "552", "630", "623", "522")
	//arrLinks holds the node store source codes associated with stores that offers online party platter
	var arrLinks = new Array("A33F81A30", "C4BD2F232", "021044426", "8E98F8E19","32407EE10", "E6C0B5733","5E8E7CF12", "E52F1C920", "E6312E927","5F9759C25","14515CF22", "FD0344129","82CC3AB7", "0A6985E310","B05DCC8311", "552074B28", "2389ABC9","297677617","D3AD28313", "44DCF8018", "4A8EEC923", "8FA1B5421", "765FA8A24", "6DA745C14", "4161D8131", "F0753E211")
	var el = document.getElementById("ctl00_MainContent_selLocation");
	var s = el.options[el.selectedIndex].value;
	var ct=0;
	while (ct<arr.length)
	{
		if (s==arr[ct])
		{
			sendtoStore(s, "http://shop.mywebgrocer.com/shop.aspx?strid=13B4593&sc="+arrLinks[ct]);						
			return;
		}
		ct++;
	}
	window.location="PreOrderForm.aspx?store="+el.options[el.selectedIndex].text+"&strLabel="+el.options[el.selectedIndex].value;	
}

function sendtoStore (s, l)
{					
	window.location=l;							
}

///////////////////////////////////////////////////////////////

function Launch( url )
{
	var popW = 1024;
	var popH = 768;
	
	var _w = 0;
	var _h = 0;
	
	var _top = 0;
	var _left = 0;
	
	if( window.screen )
	{
	
		_w = Math.floor( screen.availWidth );
		_h = Math.floor( screen.availHeight );

		if( _w <= popW )
		{
			_left = 0;
			popW = ( _w - 10 );
		}
		else
			Left = Math.floor( ( screen.availWidth - popW ) / 4 );

		if( _h <= popH )
		{
			_top = 0;
			popH = ( _h - 50 );
		}
		else
			_top = Math.floor( ( screen.availHeight - popH ) / 4 );
		
	}
	else
	{
		popW = 640;
		popH = 480; 
		_left = 0;
		_top = 0; 
	}
    
    newWindow = window.open( url, '', 'scrollbars,resizable=1,status=1,width=' + popW + ',height=' + popH + ',top=' + _top + ',left=' + _left ); 
    
}

