function SearchFrm(aForm) {
	var nFrm = eval("document." + aForm);
	nFrm.submit();
}
	
function checkRadioControl(strFieldName){
     bolSelected = false;
     for (i=0;i<strFieldName.length;i++){
     if(strFieldName[i].checked){
          bolSelected = true;
     break;
     }
}     
     if(!bolSelected){
          return false;
          }
     return true;
}

function isNumber( strValue ) {
  var objRegExp  = /(^-?\d*.\d*$)/;

  return objRegExp.test(strValue);
}

function specialCase(e, form) {
	if ((e.name == "CardName")||(e.name == "CardNumber")||(e.name == "CardExpiryMonth")||(e.name == "CardExpiryYear")) {
		if (((form.CardName.value.length <= 0)||(form.CardNumber.value.length <= 0)||(form.CardExpiryMonth.value.length <= 0)||(form.CardExpiryYear.value.length <= 0))
		 && ((form.CardName.value.length > 0)||(form.CardNumber.value.length > 0)||(form.CardExpiryMonth.value.length > 0)||(form.CardExpiryYear.value.length > 0))) {
			return "Please enter all Credit Card Information.";
		}
		if ((form.CardName.value.length > 0)&&(form.CardNumber.value.length > 0)&&(form.CardExpiryMonth.value.length > 0)&&(form.CardExpiryYear.value.length > 0)) {
			if (!isCardDateValid(form.CardExpiryYear.value, form.CardExpiryMonth.value)) {
				return "The Credit Card has Expired.";
			}
			if (isCardNumValid(form.CardNumber.value)) {
				return "The Credit Card Number is an invalid format.";
			}
		}
	}
	if ((e.name == "CheckNumber")||(e.name == "BankName")||(e.name == "RoutingNumber")||(e.name == "CheckingAccountNumber")) {
		if (((form.CheckNumber.value.length <= 0)||(form.BankName.value.length <= 0)||(form.RoutingNumber.value.length <= 0)||(form.CheckingAccountNumber.value.length <= 0))
		 && ((form.CheckNumber.value.length > 0)||(form.BankName.value.length > 0)||(form.RoutingNumber.value.length > 0)||(form.CheckingAccountNumber.value.length > 0))) {
			return "Please enter all eCheck Information.";
		}		
	}
	if ((e.name == "POName")||(e.name == "PONumber")) {
		
		if (((form.POName.value.length <= 0)||(form.PONumber.value.length <= 0))
		 && ((form.POName.value.length > 0)||(form.PONumber.value.length > 0))) {
			return "Please enter all Purchase Order Information.";
		}
	}
	if ((form.CardName.value.length <= 0)&&(form.CardNumber.value.length <= 0)&&(form.CardExpiryMonth.value.length <= 0)&&(form.CardExpiryYear.value.length <= 0)
	 && (form.CheckNumber.value.length <= 0)&&(form.BankName.value.length <= 0)&&(form.RoutingNumber.value.length <= 0)&&(form.CheckingAccountNumber.value.length <= 0)
	 && (form.POName.value.length <= 0)&&(form.PONumber.value.length <= 0)) {
		return "Please enter payment method Information.";	
	}
	return "";
}
function stripChar(sValue, sChar) {
	var i, tempChar, buildString;
	buildString = ""
	for (var i=0; i<sValue.length; i++) {
		tempChar = sValue.charAt(i);
		if (tempChar != sChar) {
			buildString = buildString + tempChar;
		}
	}
	return buildString;
}

function isCardDateValid(year, month) {
	var dateCheck, now;
	if (year.length == 2) {
		if (parseInt(year) < 50) {
			year = "20" + year;
		}
	}
	now = new Date();
	dateCheck = new Date(year, month);
	if (now > dateCheck) {
		return false;
	}
	else {
		return true;
	}
}

function isCardNumValid(num) {
	var num1, num2, tempNum;
	if (!isNumber(num)) {
		return true;
	}
	num1 = ""
	if (!(num.length%2==0)) {
		for(var j=0; j < num.length; j++) {
			if ((j+1)%2==0){
				tempNum = 2 * num.charAt(j);
			}
			else {
				tempNum = 1 * num.charAt(j);
			}
			num1 = num1 + tempNum.toString();
		}
	}
	else{
		for(var j=0; j < num.length; j++){
			if ((j+1)%2==0){
				tempNum = 1 * num.charAt(j);
			}
			else{
				tempNum = 2 * num.charAt(j);
			}
			num1 = num1 + tempNum.toString();
		}
	}
	num2 = 0;
	for (var j = 0; j < num1.length; j++) {
		num2 = num2 + parseInt(num1.charAt(j));
	}
	if (num2%10==0) {
		return false;
	}
	else {
		return true;
	}
}

function ValidateCC(ccType, ccNumber){
  var num1, num2, tempNum;
	if (!isNumber(ccNumber)) {
		return true;
	}
	num1 = ""
	if (!(ccNumber.length%2==0)) {
		for(var j=0; j < ccNumber.length; j++) {
			if ((j+1)%2==0){
				tempNum = 2 * ccNumber.charAt(j);
			}
			else {
				tempNum = 1 * ccNumber.charAt(j);
			}
			num1 = num1 + tempNum.toString();
		}
	}
	else{
		for(var j=0; j < ccNumber.length; j++){
			if ((j+1)%2==0){
				tempNum = 1 * ccNumber.charAt(j);
			}
			else{
				tempNum = 2 * ccNumber.charAt(j);
			}
			num1 = num1 + tempNum.toString();
		}
	}
	num2 = 0;
	for (var j = 0; j < num1.length; j++) {
		num2 = num2 + parseInt(num1.charAt(j));
	}
	if (num2%10==0) {
		return false;
	}
	else {
		return true;
	}
  // once we know the number is good, loop the card types
  switch(ccType.toLowerCase) {
	case "mastercard":
  		if (Number(ccNumber.length) == 16 && ccNumber.substring(0,2)>="51" && ccNumber.substring(0,2)<="55") return false;
  	case "visa":
		if (Number(ccNumber.length) == 16 && ccNumber.substring(0,1)=="4") return false;
  		if (Number(ccNumber.length) == 13 && (ccNumber.substring(0,1)=="4")) return false;
  	case "discover":
  		if (Number(ccNumber.length) == 16 && ccNumber.substring(0,4)=="6011") return false;
  	case "american express":
  		if (Number(ccNumber.length) == 15 && (ccNumber.substring(0,2)=="34" || ccNumber.substring(0,2)=="37")) return false;
  	case "dinersclub":
  		if (Number(ccNumber.length) == 14 && (ccNumber.substring(0,2)=="36" || ccNumber.substring(0,2)=="30" || ccNumber.substring(0,2)=="38")) return false;
  }
  return true; // unknown credit card type -- Invalid Card
}


function sfCheck(form) {
	var e, title, empty_fields, char_check, invalid_card, month, year, invalid_date, eMail, invalid_eMail;
	var iQuantity, quantity_check, checkSpecial, tempError, special_Error, msg, upperLine, lowerLine;
	var num, invalid_phoneNumber, passwd_mismatch, invalid_Zip, mcheck, mserrStr;
	var invalid_SSN, strReturn, invalid_payAmount, invalid_Gallon, noGallon;
	
	if (document.getElementById('GallonsNeeded'))
		noGallon = true;
	else
		noGallon = false;
		
	msg = "";
	empty_fields = "";
	char_check = "";
	special_Error = "";
	tempError = "";
	strReturn = true;
	num = form.length
	var strTrim = new String();

	//form.sbut.disabled = true;

	for (var i = 0; i < form.length; i++) {
		e = form.elements[i]
		
		if ((e.title == null)||(e.title == "")) {
			title = e.name;
		}
		else {
			title = e.title;
		}
		if (((e.type == "text") || (e.type == "textarea")||(e.type == "password")) && !e.special && !e.disabled) {
			strTrim = e.value;
			strTrim = strTrim.replace(/^\s*|\s*$/g,"");
			
			if ((e.value.length <= 0 && !e.optional ) && strTrim == "") {
				if (e.title != "Company" && e.title != "MiddleInitial" && e.title!="Street Address 2" && e.title!="Feedback" && e.title!="Donation Dedication" && e.title!="Fax Number") {
				empty_fields += "\n            " + title;
				}
				continue;
			}
			else if (e.value.length > 0) {
				if (e.name == "email" || e.name == "femail" || e.name == "memail") {
					if (e.value.length > 0) {
						eMail = e.value;
						if ((eMail.indexOf("@") != -1) && (eMail.indexOf(".") != -1)) {
							invalid_eMail = false;
						}
						else {
						  
							invalid_eMail = true;
						}
					}
				}	
				if (e.name == "phone") {
					num = e.value;
					num = stripChar(num, " ");
					num = stripChar(num, "-");
					num = stripChar(num, "+");
					if (num.length < 10) {
						invalid_phoneNumber = true;
					}	
				}
			
			}
			
			if (e.name == "creditcardnumber") {
				e.value = stripChar(e.value, " "); 
				e.value = stripChar(e.value, "-"); 
				invalid_card = ValidateCC(form.methPayment.value,e.value);
			}
            
            if (e.name == "Email") {
				eMail = e.value;
				if ((eMail.indexOf("@") != -1) && (eMail.indexOf(".") != -1)) {
					invalid_eMail = false;
				}
				else {
				  
					invalid_eMail = true;
				}
			}	
			
			if (e.name == "amtpayment") {
				if (!isNumber(e.value)) {
					invalid_payAmount = true;
				}
			}
			
			if (e.name == "Phone") {
				num = e.value;
				num = stripChar(num, " ");
				num = stripChar(num, "-");
				num = stripChar(num, "+");
				if (num.length < 10) {
					invalid_phoneNumber = true;
				}	
			}
			if (e.name == "Zip" || e.name == "zip") {
				num = e.value;
				num = stripChar(num, " ");
				num = stripChar(num, "-");
				if (!isNumber(num)) {
					invalid_Zip = true;
				}
				
				if (num.length < 5) {
					invalid_Zip = true;
				}	
			}
		
		}
		
		if (e.type == "select-one" && !e.optional) {
			if (e.value == "") {
				empty_fields += "\n            " + title;
				continue;
			}
			
			if ((e.name == "EMonth")||(e.name == "EYear")) {
				month = form.EMonth.value;
				year = form.EYear.value;

				if(!isCardDateValid(year, month)) {
					invalid_date = true;
				}	
			}
		}
		
		if (e.name == "GallonsNeeded") {
			if (e.checked == true) {
				noGallon = false;
				if (e.value == "gallon") {
					if (document.getElementById('gallonsamt').value == "") {
						invalid_Gallon = true;
					}
					else if (!isNumber(document.getElementById('gallonsamt').value)) {
						invalid_Gallon = true;
					}
				}
			}
		}
				
	}
		
	msg = "The form was not submited due to the following error(s).\n";
	
	upperLine = "\n_________________________________________________________\n\n";
	lowerLine = "_________________________________________________________\n";
	
	if (empty_fields) {
		msg += upperLine;
		msg += "The following field(s) must be filled in:\n";
		msg += lowerLine;
		msg += empty_fields;
		strReturn = false;
	}
	if (char_check) {
		msg += upperLine;
		msg += "The following field(s) need a numeric value:\n";
		msg += lowerLine;
		msg += char_check;
		strReturn = false;
	}
	if (quantity_check) {
		msg += upperLine;
		msg += "Please Enter a Positive Integer.\n"
		msg += lowerLine;
		strReturn = false;
	}
	if (invalid_card) {
		msg += upperLine;
		msg += "The Credit Card Number is an invalid format.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (invalid_date) {
		msg += upperLine;
		msg += "The Credit Card has Expired.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (invalid_payAmount) {
		msg += upperLine;
		msg += "The Payment Amount entered is invalid.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (invalid_eMail) {
		msg += upperLine;
		msg += "Please make sure all E-mail address entered is/are valid.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (invalid_phoneNumber) {
		msg += upperLine;
		msg += "Please enter a valid Phone Number with area code.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (invalid_Zip) {
		msg += upperLine;
		msg += "Please enter a valid Zip or Postal code.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (special_Error) {
		msg += upperLine;
		msg += special_Error + "\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (invalid_Gallon) {
		msg += upperLine;
		msg += "Please enter a numeric gallon amount.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (noGallon) {
		msg += upperLine;
		msg += "Please select/enter gallon amount to fill.\n";
		msg += lowerLine;
		strReturn = false;
	}
	if (passwd_mismatch) {
		msg += upperLine;
		msg += "Your passwords did not match. Please enter them again.\n";
		msg += lowerLine;
		strReturn = false;
	}		
	if (!strReturn) {
		alert(msg);
		//form.sbut.disabled = false;
	}
	
	return strReturn;
}	

function isDate(sDate) {
	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
	
	return re.test(sDate) ;
}

function paymentOptional(fObj) {
	fObj.custAcct.optional = true;
}

function checkoutOptional(fObj) {
	fObj.svrinvoice.optional = true;
}

function budgetOptional(fObj) {
	fObj.availtime.optional = true;
	fObj.email.optional = true;
	fObj.custNumber.optional = true;
}

function reqInfoOptional(fObj) {
	fObj.availtime.optional = true;
	fObj.email.optional = true;
	fObj.additionalDetails.optional = true;
}

function reqServiceOptional(fObj) {
	fObj.availtime.optional = true;
	fObj.email.optional = true;
	fObj.custNumber.optional = true;
	fObj.dwyerplan.optional = true;
}

function schDeliveryOptional(fObj) {
	fObj.availtime.optional = true;
	fObj.email.optional = true;
	fObj.custNumber.optional = true;
	fObj.gallonsamt.optional = true;
}

function reqServicePlanOptional(fObj) {
	fObj.availtime.optional = true;
	fObj.email.optional = true;
	fObj.custNumber.optional = true;
	fObj.dwyerplan.optional = true;
}

//--------------------- Shopping Cart Functions
function RemoveServicePlan(servicePlanID)
{
	var pFrm = eval("document.pEditFrm");
	pFrm.servicePlanID.value = servicePlanID;
	pFrm.sAction.value = "remove";
	pFrm.submit();
}

function addPlan() {
	window.location.href = "add_plan.asp";
}	

function CheckOut() {
	window.location.href = "ssl/checkout.asp";
}	

//---------------------- Oil Heat Service Plans
function buyOilRegPlan() {
		var pFrm = eval("document.addPlanFrm");
		pFrm.serviceType.value = "Oil Heat";
		pFrm.servicePlan.value = "Oil Classic Plan";
		pFrm.planPrice.value = 169.95;
		pFrm.submit();
}

function buyOilPlusPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Oil Heat";
	pFrm.servicePlan.value = "Oil Classic Plus Plan";
	pFrm.planPrice.value = 209.95;
	pFrm.submit();
}

function buyOilUltraPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Oil Heat";
	pFrm.servicePlan.value = "Oil Classic Ultra Plan";
	pFrm.planPrice.value = 299.95;
	pFrm.submit();
}

//---------------------- Gas Heat Service Plans
function buyGasRegPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Gas Heat";
	pFrm.servicePlan.value = "Gas Classic Plan";
	pFrm.planPrice.value = 169.95;
	pFrm.submit();
}
function buyGasUltraPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Gas Heat";
	pFrm.servicePlan.value = "Gas Classic Ultra Plan";
	pFrm.planPrice.value = 289.95;
	pFrm.submit();
}

//---------------------- Air Conditioning Service Plans
function buyACSUPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Air Conditioning";
	pFrm.servicePlan.value = "Air Conditioning Start-Up Plan";
	pFrm.planPrice.value = 89.95;
	pFrm.submit();
}
function buyACPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Air Conditioning";
	pFrm.servicePlan.value = "Air Conditioning Service Plan";
	pFrm.planPrice.value = 189.95;
	pFrm.submit();
}
function buyHPSUPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Heat Pump";
	pFrm.servicePlan.value = "Heat Pump Start-Up Plan";
	pFrm.planPrice.value = 169.95;
	pFrm.submit();
}
function buyHPPlan() {
	var pFrm = eval("document.addPlanFrm");
	pFrm.serviceType.value = "Heat Pump";
	pFrm.servicePlan.value = "Heat Pump Service Plan";
	pFrm.planPrice.value = 199.95;
	pFrm.submit();
}