if (!ElephantRacer){var ElephantRacer = {};}
if (!ElephantRacer.Forms){ElephantRacer.Forms = {};} 
if (!ElephantRacer.Forms.Checkout){ElephantRacer.Forms.Checkout = {};} 
if (!ElephantRacer.Forms.CheckCheckout){ElephantRacer.Forms.CheckCheckout = {};} 
if (!ElephantRacer.Forms.PickupCheckout){ElephantRacer.Forms.PickupCheckout = {};}
if (!ElephantRacer.Forms.Admin){ ElephantRacer.Forms.Admin = {}};
if (!ElephantRacer.Forms.Register){ ElephantRacer.Forms.Register = {}};

ElephantRacer.Forms.PickupCheckout.controller = function(){
	gel("checkout_create_account").style.display = (gel("create_account").checked)?"block":"none";
}

ElephantRacer.Forms.PickupCheckout.validate = function(){
	var formValid = true;
	var message = "You must complete the following before you continue:\n\n";
	
	if (gel("billing_first_name").value.length < 1){
		gel("billing_first_name").style.borderColor = "#DD0000";
		message = message+"\tFirst Name - Required\n";
		formValid = false;
	} else {
		gel("billing_first_name").style.borderColor = "#666666";
	}
	
	if (gel("billing_last_name").value.length < 1){
		gel("billing_last_name").style.borderColor = "#DD0000";
		message = message+"\tLast Name - Required\n";
		formValid = false;
	} else {
		gel("billing_last_name").style.borderColor = "#666666";
	}	
	
	if (gel("billing_street1").value.length < 1){
		gel("billing_street1").style.borderColor = "#DD0000";
		message = message+"\tBilling Street Address - Required\n";
		formValid = false;
	} else {
		gel("billing_street1").style.borderColor = "#666666";
	}
	
	if (gel("billing_city").value.length < 1){
		gel("billing_city").style.borderColor = "#DD0000";
		message = message+"\tBilling City - Required\n";
		formValid = false;
	} else {
		gel("billing_city").style.borderColor = "#666666";
	}
	
	if (gel("billing_state").value.length < 2){
		gel("billing_state").style.borderColor = "#DD0000";
		message = message+"\tBilling State - Required\n";
		formValid = false;
	} else {
		gel("billing_state").style.borderColor = "#666666";
	}
	
	if (gel("billing_postal_code").value.length < 1){
		gel("billing_postal_code").style.borderColor = "#DD0000";
		message = message+"\tBilling Postal Code - Required\n";
		formValid = false;
	} else {
		gel("billing_postal_code").style.borderColor = "#666666";
	}
	
	if (gel("billing_phone_number").value.length < 1){
		gel("billing_phone_number").style.borderColor = "#DD0000";
		message = message+"\tBilling Phone - Required\n";
		formValid = false;
	} else {
		gel("billing_phone_number").style.borderColor = "#666666";
	}
	
	if (gel("email").value.length < 5){
		gel("email").style.borderColor = "#DD0000";
		message = message+"\tEmail - Required\n";
		formValid = false;
	} else {
		gel("email").style.borderColor = "#666666";
	}
	
	if (gel("create_account").checked){
		if (gel("password_0").value.length < 1){
			gel("password_0").style.borderColor = "#DD0000";
			message = message+"\tPassword - Required\n";
			formValid = false;
		} else {
			gel("password_0").style.borderColor = "#666666";
		}
		
		if (gel("password_1").value.length < 1){
			gel("password_1").style.borderColor = "#DD0000";
			message = message+"\tConfirm Password - Required\n";
			formValid = false;
		} else if(gel("password_1").value != gel("password_0").value){
			gel("password_1").style.borderColor = "#DD0000";
			message = message+"\tConfirm Password does not match Password - Required\n";
			formValid = false;
		} else {
			gel("password_1").style.borderColor = "#666666";
		}
	}
	
	message = message+"\n\r* All fields requiring your attention are marked with red.";
	if (formValid == false){
		alert(message);
		return false;
	}	
}

ElephantRacer.Forms.CheckCheckout.controller = function(){
	gel("checkout_shipping_address").style.display = (gel("use_shipping_address").checked)?"block":"none";
	gel("checkout_create_account").style.display = (gel("create_account").checked)?"block":"none";
}

ElephantRacer.Forms.CheckCheckout.validate = function(){
	var formValid = true;
	var message = "You must complete the following before you continue:\n\n";
	
	if (gel("billing_first_name").value.length < 1){
		gel("billing_first_name").style.borderColor = "#DD0000";
		message = message+"\tFirst Name - Required\n";
		formValid = false;
	} else {
		gel("billing_first_name").style.borderColor = "#666666";
	}
	
	if (gel("billing_last_name").value.length < 1){
		gel("billing_last_name").style.borderColor = "#DD0000";
		message = message+"\tLast Name - Required\n";
		formValid = false;
	} else {
		gel("billing_last_name").style.borderColor = "#666666";
	}	
	
	if (gel("billing_street1").value.length < 1){
		gel("billing_street1").style.borderColor = "#DD0000";
		message = message+"\tBilling Street Address - Required\n";
		formValid = false;
	} else {
		gel("billing_street1").style.borderColor = "#666666";
	}
	
	if (gel("billing_city").value.length < 1){
		gel("billing_city").style.borderColor = "#DD0000";
		message = message+"\tBilling City - Required\n";
		formValid = false;
	} else {
		gel("billing_city").style.borderColor = "#666666";
	}
	
	if (gel("billing_state").value.length < 2){
		gel("billing_state").style.borderColor = "#DD0000";
		message = message+"\tBilling State - Required\n";
		formValid = false;
	} else {
		gel("billing_state").style.borderColor = "#666666";
	}
	
	if (gel("billing_postal_code").value.length < 1){
		gel("billing_postal_code").style.borderColor = "#DD0000";
		message = message+"\tBilling Postal Code - Required\n";
		formValid = false;
	} else {
		gel("billing_postal_code").style.borderColor = "#666666";
	}
	
	if (gel("billing_phone_number").value.length < 1){
		gel("billing_phone_number").style.borderColor = "#DD0000";
		message = message+"\tBilling Phone - Required\n";
		formValid = false;
	} else {
		gel("billing_phone_number").style.borderColor = "#666666";
	}
	
	if (gel("use_shipping_address").checked){
		if (gel("shipping_name").value.length < 1){
			gel("shipping_name").style.borderColor = "#DD0000";
			message = message+"\tShip To - Required\n";
			formValid = false;
		} else {
			gel("shipping_name").style.borderColor = "#666666";
		}
		
		if (gel("shipping_street1").value.length < 1){
			gel("shipping_street1").style.borderColor = "#DD0000";
			message = message+"\tShipping Street Address - Required\n";
			formValid = false;
		} else {
			gel("shipping_street1").style.borderColor = "#666666";
		}
		
		if (gel("shipping_city").value.length < 1){
			gel("shipping_city").style.borderColor = "#DD0000";
			message = message+"\tShipping City - Required\n";
			formValid = false;
		} else {
			gel("shipping_city").style.borderColor = "#666666";
		}
		
		if (gel("shipping_state").value.length < 2){
			gel("shipping_state").style.borderColor = "#DD0000";
			message = message+"\tShipping State - Required\n";
			formValid = false;
		} else {
			gel("shipping_state").style.borderColor = "#666666";
		}
		
		if (gel("shipping_postal_code").value.length < 1){
			gel("shipping_postal_code").style.borderColor = "#DD0000";
			message = message+"\tShipping Postal Code - Required\n";
			formValid = false;
		} else {
			gel("shipping_postal_code").style.borderColor = "#666666";
		}
		
		if (gel("shipping_phone_number").value.length < 1){
			gel("shipping_phone_number").style.borderColor = "#DD0000";
			message = message+"\tShipping Phone - Required\n";
			formValid = false;
		} else {
			gel("shipping_phone_number").style.borderColor = "#666666";
		}
	}
	
	if (gel("email").value.length < 5){
		gel("email").style.borderColor = "#DD0000";
		message = message+"\tEmail - Required\n";
		formValid = false;
	} else {
		gel("email").style.borderColor = "#666666";
	}
	
	if (gel("create_account").checked){
		if (gel("password_0").value.length < 1){
			gel("password_0").style.borderColor = "#DD0000";
			message = message+"\tPassword - Required\n";
			formValid = false;
		} else {
			gel("password_0").style.borderColor = "#666666";
		}
		
		if (gel("password_1").value.length < 1){
			gel("password_1").style.borderColor = "#DD0000";
			message = message+"\tConfirm Password - Required\n";
			formValid = false;
		} else if(gel("password_1").value != gel("password_0").value){
			gel("password_1").style.borderColor = "#DD0000";
			message = message+"\tConfirm Password does not match Password - Required\n";
			formValid = false;
		} else {
			gel("password_1").style.borderColor = "#666666";
		}
	}
	
	message = message+"\n\r* All fields requiring your attention are marked with red.";
	if (formValid == false){
		alert(message);
		return false;
	}
}

ElephantRacer.Forms.Checkout.controller = function(){
	gel("checkout_shipping_address").style.display = (gel("use_shipping_address").checked)?"block":"none";
	gel("checkout_create_account").style.display = (gel("create_account").checked)?"block":"none";
}

ElephantRacer.Forms.Checkout.validate = function(){
	var formValid = true;
	var message = "You must complete the following before you continue:\n\n";
	
	if (gel("billing_first_name").value.length < 1){
		gel("billing_first_name").style.borderColor = "#DD0000";
		message = message+"\tFirst Name - Required\n";
		formValid = false;
	} else {
		gel("billing_first_name").style.borderColor = "#666666";
	}
	
	if (gel("billing_last_name").value.length < 1){
		gel("billing_last_name").style.borderColor = "#DD0000";
		message = message+"\tLast Name - Required\n";
		formValid = false;
	} else {
		gel("billing_last_name").style.borderColor = "#666666";
	}
	
	//need to check if cc number is a valid credit card #
	if (gel("cc_number").value.length < 1){
		gel("cc_number").style.borderColor = "#DD0000";
		message = message+"\tCard Number - Required\n";
		formValid = false;
	} else if(!ElephantRacer.Forms.Checkout.validateCreditCard(gel("cc_number").value, gel("cc_type").options[gel("cc_type").selectedIndex].value)){
		gel("cc_number").style.borderColor = "#DD0000";
		message = message+"\tCard Number - Number not valid, check for errors\n";
		formValid = false;
		
	} else {
		gel("cc_number").style.borderColor = "#666666";
	}
	
	if (gel("cc_sic").value.length < 1){
		gel("cc_sic").style.borderColor = "#DD0000";
		message = message+"\tSecurity Code - Required\n";
		formValid = false;
	} else {
		gel("cc_sic").style.borderColor = "#666666";
	}
	
	if (gel("billing_street1").value.length < 1){
		gel("billing_street1").style.borderColor = "#DD0000";
		message = message+"\tBilling Street Address - Required\n";
		formValid = false;
	} else {
		gel("billing_street1").style.borderColor = "#666666";
	}
	
	if (gel("billing_city").value.length < 1){
		gel("billing_city").style.borderColor = "#DD0000";
		message = message+"\tBilling City - Required\n";
		formValid = false;
	} else {
		gel("billing_city").style.borderColor = "#666666";
	}
	
	if (gel("billing_state").value.length < 2){
		gel("billing_state").style.borderColor = "#DD0000";
		message = message+"\tBilling State - Required\n";
		formValid = false;
	} else {
		gel("billing_state").style.borderColor = "#666666";
	}
	
	if (gel("billing_postal_code").value.length < 1){
		gel("billing_postal_code").style.borderColor = "#DD0000";
		message = message+"\tBilling Postal Code - Required\n";
		formValid = false;
	} else {
		gel("billing_postal_code").style.borderColor = "#666666";
	}
	
	if (gel("billing_phone_number").value.length < 1){
		gel("billing_phone_number").style.borderColor = "#DD0000";
		message = message+"\tBilling Phone - Required\n";
		formValid = false;
	} else {
		gel("billing_phone_number").style.borderColor = "#666666";
	}
	
	if (gel("use_shipping_address").checked){
		if (gel("shipping_name").value.length < 1){
			gel("shipping_name").style.borderColor = "#DD0000";
			message = message+"\tShip To - Required\n";
			formValid = false;
		} else {
			gel("shipping_name").style.borderColor = "#666666";
		}
		
		if (gel("shipping_street1").value.length < 1){
			gel("shipping_street1").style.borderColor = "#DD0000";
			message = message+"\tShipping Street Address - Required\n";
			formValid = false;
		} else {
			gel("shipping_street1").style.borderColor = "#666666";
		}
		
		if (gel("shipping_city").value.length < 1){
			gel("shipping_city").style.borderColor = "#DD0000";
			message = message+"\tShipping City - Required\n";
			formValid = false;
		} else {
			gel("shipping_city").style.borderColor = "#666666";
		}
		
		if (gel("shipping_state").value.length < 2){
			gel("shipping_state").style.borderColor = "#DD0000";
			message = message+"\tShipping State - Required\n";
			formValid = false;
		} else {
			gel("shipping_state").style.borderColor = "#666666";
		}
		
		if (gel("shipping_postal_code").value.length < 1){
			gel("shipping_postal_code").style.borderColor = "#DD0000";
			message = message+"\tShipping Postal Code - Required\n";
			formValid = false;
		} else {
			gel("shipping_postal_code").style.borderColor = "#666666";
		}
		
		if (gel("shipping_phone_number").value.length < 1){
			gel("shipping_phone_number").style.borderColor = "#DD0000";
			message = message+"\tShipping Phone - Required\n";
			formValid = false;
		} else {
			gel("shipping_phone_number").style.borderColor = "#666666";
		}
	}
	
	if (gel("email").value.length < 5){
		gel("email").style.borderColor = "#DD0000";
		message = message+"\tEmail - Required\n";
		formValid = false;
	} else {
		gel("email").style.borderColor = "#666666";
	}
	
	if (gel("create_account").checked){
		if (gel("password_0").value.length < 1){
			gel("password_0").style.borderColor = "#DD0000";
			message = message+"\tPassword - Required\n";
			formValid = false;
		} else {
			gel("password_0").style.borderColor = "#666666";
		}
		
		if (gel("password_1").value.length < 1){
			gel("password_1").style.borderColor = "#DD0000";
			message = message+"\tConfirm Password - Required\n";
			formValid = false;
		} else if(gel("password_1").value != gel("password_0").value){
			gel("password_1").style.borderColor = "#DD0000";
			message = message+"\tConfirm Password does not match Password - Required\n";
			formValid = false;
		} else {
			gel("password_1").style.borderColor = "#666666";
		}
	}
	
	message = message+"\n\r* All fields requiring your attention are marked with red.";
	if (formValid == false){
		alert(message);
		return false;
	}
}

ElephantRacer.Forms.Checkout.validateCreditCard = function(cardNumber, cardType){
	cardNumber = cardNumber.replace(/-/g, "");
	cardNumber = cardNumber.replace(/ /g, "");
	
    if (cardType == "VISA"){
		if ( ((cardNumber.length == 16) || (cardNumber.length == 13)) && (cardNumber.substring(0,1) == 4) ){
			return ElephantRacer.Forms.Checkout.isCreditCard(cardNumber);
		} else{ return (false); }
	} else if (cardType == "MC"){
		firstdig = cardNumber.substring(0,1);
		seconddig = cardNumber.substring(1,2);
		if ( (cardNumber.length == 16) && (firstdig == 5) && ((seconddig >= 1) && (seconddig <= 5)) ){
			return ElephantRacer.Forms.Checkout.isCreditCard(cardNumber);
		} else { return (false); }
	} else if ( (cardType == "Discover") || (cardType == "AMEX") ){
		/*firstdig = cardNumber.substring(0,1);
		seconddig = cardNumber.substring(1,2);
		if ( (cardNumber.length == 15) && (firstdig == 3) && ((seconddig == 4) || (seconddig == 7)) ){
			return ElephantRacer.Forms.Checkout.isCreditCard(cardNumber);
		} else { return (false); }*/
		//return ElephantRacer.Forms.Checkout.isCreditCard(cardNumber);		
		return (true);
	} else{
		return (true);
	}
}

// Determine if credit card passes Lunh mod-10 test 

ElephantRacer.Forms.Checkout.isCreditCard = function(cardNumber){
  // Encoding only works on cards with less than 19 digits
  if (cardNumber.length > 19){ return false; }

  sum = 0; mul = 1; l = cardNumber.length;
  for (i = 0; i < l; i++) {
    digit = cardNumber.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);
  }
}

ElephantRacer.Forms.Admin.shippingController = function(){
  	gel("div_shippingPercentage").style.display = (gel("shipping_class_Percentage").checked)?"block":"none";
	gel("div_shippingUPS").style.display = (gel("shipping_class_UPS").checked)?"block":"none";
	gel("div_shippingMinimum").style.display = (gel("shipping_class_Percentage").checked || gel("shipping_class_FlatRate").checked)?"block":"none";
}

ElephantRacer.Forms.Register.ShowReseller = function(){
	gel("ResellerDetails").style.display = (gel("ck_reseller").checked)?"block":"none";
}