function validateForm(frmEle){
	
	if(frmEle.mount){//make mount type selected
		myOption = -1;
		var errorMsg = "Please select a Mount Type!";
		if (frmEle.pcategory.value == "drapery.aspx") errorMsg = "Please select the # of Panels!";
		if(frmEle.mount.length){//multiple options
		    for (r=frmEle.mount.length-1; r > -1; r--) {
			    if (frmEle.mount[r].checked) {
				    myOption = r; r = -1;
			    }
		    }
		    if (myOption == -1) {
		    	alert(errorMsg);
		    	try {
		    		frmEle.mount[0].focus();
		    	}
		    	catch (e) {
		    	}
			    return false;
		    }
		}
		else{//single option
		    if(frmEle.mount.checked == false){
		        alert(errorMsg);
		        frmEle.mount.focus();
		        return false;
		    }
		}
	}
	//check multiple headrails
	if(frmEle.numOfHeadrails){
		if(eval(frmEle.multiheadrail.value) != 0 && eval(frmEle.numOfHeadrails.value) == 1){//2on1 suggested
			if(eval(frmEle.wi.value) + eval(frmEle.wf.value) > 96){//blinds over 96"
				alert("Multiple headrails are suggested for this size blind due to the weight, making the blinds easier to operate. You MUST change the Headrail from 'Single Headrail' to either '2 on 1 Headrail' or '3 on 1 Headrail'.");
				return false;
			}
			else if(eval(frmEle.wi.value) + eval(frmEle.wf.value) > 84 && eval(frmEle.hi.value) + eval(frmEle.hf.value) > 84){//blinds width and height over 84"
				alert("Multiple headrails are suggested for this size blind due to the weight, making the blinds easier to operate. You MUST change the Headrail from 'Single Headrail' to either '2 on 1 Headrail' or '3 on 1 Headrail'.");
				return false;
			}
			else{//blinds 96" or under
				var agree=confirm("Multiple headrails are suggested for this size blind due to the weight, making the blinds easier to operate. We recommend that you change the Headrail from 'Single Headrail' to either '2 on 1 Headrail' or '3 on 1 Headrail'.\r\n\r\n Are you sure you wish to continue? Doing so may affect your warranty.");
				if (agree){//return true;
				}
				else{
					return false;
				}
			}
		}
		if(frmEle.numOfHeadrails.value > 1){//multiple headrails
			var overallWidth = eval(frmEle.wi.value) + eval(frmEle.wf.value);
			if(frmEle.numOfHeadrails.value == 2){//2on1
				var individualWidths = eval(frmEle.wi_Right.value) + eval(frmEle.wf_Right.value) + eval(frmEle.wi_Left.value) + eval(frmEle.wf_Left.value);
				if(overallWidth != individualWidths){
					alert("Left and right blind widths must equal the overwidth of " + overallWidth + " inches. Currently they add up to " + individualWidths + ".");
					return false;
				}
			}
			if(frmEle.numOfHeadrails.value == 3){//3on1
				var individualWidths = eval(frmEle.wi_Right.value) + eval(frmEle.wf_Right.value) + eval(frmEle.wi_Left.value) + eval(frmEle.wf_Left.value) + eval(frmEle.wi_Center.value) + eval(frmEle.wf_Center.value);
				if(overallWidth != individualWidths){
					alert("Left, right, and center blind widths must equal the overwidth of " + overallWidth + " inches. Currently they add up to " + individualWidths + ".");
					return false;
				}
			}
			if((frmEle.cid.value == 7 ) && (frmEle.LiftCord_Left.value == 2 || frmEle.LiftCord_Right.value == 1)){//cell shades
			    alert("Controls must be split on a 2 on 1 headrail! Please select 'left control' on the 'left blind' and 'right control' on the 'right blind'.");
			    return false;
			}
		}
	}
	if(frmEle.upgrade_1031){//4" edge binding, look for designer colors
		if(frmEle.DesignerTapes){//designer tapes on product
			for(i=0;i<frmEle.DesignerTapes.length;i++){
				if(frmEle.tapeColorID.value == frmEle.DesignerTapes[i].value){//designer tape selected
					if(frmEle.upgrade_1031.checked == false){
						alert("You have selected a 'Decorative Tape' edge binding color and must also select the '4 Inch Edge Binding' upgrade.\r\n\r\nYou can fix this problem by one of the following:\r\n1. Select the 4 Inch Edge Binding upgrade\r\n2. Change the edge binding to a standard solid color.");
						return false
					}
				}
			}
		}
	}
	if(frmEle.colorID.value == "0"){//make sure color selected
		alert("Please select a color.");
		frmEle.colorID.focus();
		return false;
	}
	if(frmEle.pid.value == 10166 && frmEle.tapeColorID.value == "0"){//make sure tape color selected with Tavaura
		alert("Please select an edge binding color.");
		frmEle.tapeColorID.focus();
		return false;
	}
	if(frmEle.feature_1010){
		if(frmEle.feature_1010.value == ""){//make sure cornice valance style selected
			alert("Please enter whether you would like a 'Cornice Style Valance'.\r\n\r\nIf you have moulding or trim around your windows, select 'No'\r\nIf you have chosen 'Outside Mount' we recommend 'Yes'.");
			frmEle.feature_1010.focus();
			return false;
		}
	}
	if(frmEle.valanceAgree){
		if(frmEle.valanceAgree.checked == false){//valance agreement
			alert("Please check that you understand and agree to the valance measuring instructions.");
			frmEle.valanceAgree.focus();
			MM_showHideLayers('valanceAgreeDiv','','show');
			return false;
		}
	}
	if(frmEle.tapeColorID && frmEle.upgrade_1000){//routless and tapes
		if(eval(frmEle.tapeColorID.value) > 0 && frmEle.upgrade_1000.checked == true){
			alert("Decorative tapes and routless ladders cannot be selected together. Please remove either one of the options.");
			frmEle.tapeColorID.focus();
			return false;
		}
	}
	if(frmEle.upgrade_1000 && frmEle.upgrade_1002){//routless and remote
		if(frmEle.upgrade_1002.checked == true && frmEle.upgrade_1000.checked == true){
			alert("Remote control tilt and routless ladders cannot be selected together. Please remove either one of the options.");
			frmEle.tapeColorID.focus();
			return false;
		}
	}
	if(frmEle.pid.value == 10069 || frmEle.pid.value == 10070){
		if(frmEle.upgrade_1000 && frmEle.feature_1001){//routless and wand
			if(frmEle.upgrade_1000.checked == true && eval(frmEle.feature_1001.value) == 1003){
				alert("You must select a cord tilt with routless ladders. Please remove either one of the options.");
				frmEle.feature_1001.focus();
				return false;
			}
		}
	}
	if(frmEle.pid.value == 10160){//clasic faux
		if(frmEle.upgrade_1000){//routless, too wide
			if(frmEle.upgrade_1000.checked == true && (eval(frmEle.wi.value) + eval(frmEle.wf.value)) > 70){
				alert("We cannot manufacturer routless blinds over 70\" wide. Please remove the routless upgrade.");
				frmEle.upgrade_1000.focus();
				return false;
			}
		}
	}
	
	if(frmEle.upgrade_1011 && frmEle.numOfHeadrails){//rollease and 2on1
		if(frmEle.upgrade_1011.checked == true && frmEle.numOfHeadrails.value > 1){
			alert("Rollease and Multiple Headrails cannot be selected together. Please remove either one of the options.");
			frmEle.numOfHeadrails.focus();
			return false;
		}
	}
	if(frmEle.upgrade_1003 && frmEle.numOfHeadrails){//TDBU and 2on1
		if(frmEle.upgrade_1003.checked == true && frmEle.numOfHeadrails.value > 1){
			alert("Top Down Bottom Up and Multiple Headrails cannot be selected together. Please remove either one of the options.");
			frmEle.numOfHeadrails.focus();
			return false;
		}
	}
	if(frmEle.upgrade_1003 && frmEle.upgrade_1011){//rollease and tdbu
		if(frmEle.upgrade_1003.checked == true && frmEle.upgrade_1011.checked == true){
			alert("Top Down Bottom Up and Rollease cannot be selected together. Please remove either one of the options.");
			frmEle.upgrade_1003.focus();
			return false;
		}
	}
	if(frmEle.upgrade_1034 && frmEle.upgrade_1011){//rollease and moveable liner
		if(frmEle.upgrade_1034.checked == true && frmEle.upgrade_1011.checked == true){
			alert("Rollease cannot be selected together with a moveable liner. Please remove either one of the options.");
			frmEle.upgrade_1034.focus();
			return false;
		}
	}
	if(frmEle.upgrade_1014 && frmEle.feature_1019){//cassette headrail and reverse roll
		if(frmEle.upgrade_1014.checked == true && frmEle.feature_1019.value == 1031){
			alert("You cannot select a 'reverse style roll' with the 'Cassette Headrail'. Either select 'standard roll' or remove the 'Cassette Headrail'.");
			frmEle.feature_1019.focus();
			return false;
		}
	}
	if ((frmEle.upgrade_1049 || frmEle.upgrade_1050) && frmEle.feature_1019) {//fascia headrail and reverse roll
		var fasciaValance = false;
		if (frmEle.upgrade_1049)
			if (frmEle.upgrade_1049.checked == true)
			    fasciaValance = true;  // fabric fascia selected
		if (frmEle.upgrade_1050)
			if (frmEle.upgrade_1050.checked == true)
				fasciaValance = true;  //alumin. fascia selected
		if (fasciaValance == true && frmEle.feature_1019.value == 1031) {
			alert("You cannot select a 'reverse style roll' with the 'Fascia Valance'. Either select 'standard roll' or remove the 'Fascia Valance'.");
			frmEle.feature_1019.focus();
			return false;
		}
	}
	if(frmEle.upgrade_1014 && frmEle.upgrade_1017){//cassette headrail and motor
		if(frmEle.upgrade_1014.checked == false && frmEle.upgrade_1017.checked == true){
			alert("You MUST also select a 'Cassette Headrail' in order to add 'Motorization' to a shade!");
			frmEle.upgrade_1014.focus();
			return false;
		}
	}
	if(frmEle.upgrade_1017 && (frmEle.upgrade_1018 || frmEle.upgrade_1020 || frmEle.upgrade_1021 || frmEle.upgrade_1022)){//motor and remote
		var bRemote = false;
		if(frmEle.upgrade_1018) if(frmEle.upgrade_1018.checked == true)bRemote = true;
		if(frmEle.upgrade_1020) if(frmEle.upgrade_1020.checked == true)bRemote = true;
		if(frmEle.upgrade_1021) if(frmEle.upgrade_1021.checked == true)bRemote = true;
		if(frmEle.upgrade_1022) if(frmEle.upgrade_1022.checked == true)bRemote = true;
		if(frmEle.upgrade_1017.checked == false && (bRemote == true)){
			alert("You MUST also select 'Motorization' in order to add a 'Remote' to a shade!");
			frmEle.upgrade_1017.focus();
			return false;
		}
	}
	if(frmEle.cid.value == 3 || frmEle.cid.value == 4 || frmEle.cid.value == 5){//wood, faux or alum blinds
		if((eval(frmEle.wi.value) + eval(frmEle.wf.value)) <= 13.5){//small blinds
			if (! confirm ('Blinds under 13 inches are too small for both tilt and lift controls. They will come with a center tilt only and no lift.')){
				return false;
			}
		}
		else if((eval(frmEle.wi.value) + eval(frmEle.wf.value)) <= 20){//split controls
			if(frmEle.LiftCord_Left && frmEle.TiltCord_Left){
				if((frmEle.LiftCord_Right.value == 1 && frmEle.TiltCord_Right.value == 1) || (frmEle.LiftCord_Right.value == 2 && frmEle.TiltCord_Right.value == 2)){
					alert('Blinds under 20 inches must have the "Tilt Cord" and "Lift Position" on separate sides of the blind. Please adjust!')
					return false;
				}
			}
		}
	}
	if(frmEle.upgrade_1003 && (frmEle.pid.value == 10057 || frmEle.pid.value == 10061 || frmEle.pid.value == 10062)){
		if(eval(frmEle.wi.value) + eval(frmEle.wf.value) > 80 && frmEle.upgrade_1003.checked == true){//shades over 80" & TDBU
			var agreeTDBU=confirm("Shades with the 'Top Down Bottom Up' upgrade and are over 60 inches wide will VOID the manufacturers warranty.\r\n\r\n Are you sure you wish to continue?");				
			if (agreeTDBU){//return true;
			}
			else{
				return false;
			}
		}
	}
	if (frmEle.upgrade_1054) {
		if (eval(frmEle.wi.value) + eval(frmEle.wf.value) > 82 && frmEle.upgrade_1054.checked == true) {//shades over 82" & Cordless TDBU
			alert('Shades over 82 inches cannot be made with the Cordless Top Down Bottom Up upgrade.')
			return false;	
		}
	}
	if (frmEle.upgrade_1007 && (frmEle.pid.value == 10353 || frmEle.pid.value == 10354)) {
		if (eval(frmEle.wi.value) + eval(frmEle.wf.value) < 18 && frmEle.upgrade_1007.checked == true) {//comfortex shades under 18" & Cordless
			alert('Shades under 18 inches cannot be made with the Cordless upgrade.')
			return false;
		}
	}
	if(frmEle.upgrade_1003 && frmEle.cid.value == 8){//bamboo shades
		if(((eval(frmEle.wi.value) + eval(frmEle.wf.value)) < 20) && (frmEle.upgrade_1003.checked == true)){//small blinds
			alert('Shades under 20 inches are too small for the Top Down Bottom Up controls.')
			return false;			
		}
	}
	
	if(frmEle.upgrade_1035){//vertical executive valance
		if((frmEle.upgrade_1035.checked == true) && (frmEle.tapeColorID.value == 0)){//small blinds
			alert('Please select a "Valance Insert" for your "Executive Valance"!')
			frmEle.tapeColorID.focus();
			return false;			
		}
	}
	
	if(frmEle.mount && frmEle.upgrade_1000){//routless and outside mount
		if(frmEle.mount[1].checked && frmEle.upgrade_1000.checked == true){
			var agreeOBRoutless=confirm("We do not recommend the routless upgrade with outside mount blinds as the blind slats may not stay in place.\r\n\r\n Are you sure you wish to continue?");				
			if (agreeOBRoutless){//return true;
			}
			else{
				return false;
			}
		}
	}
	
	if(frmEle.sill){//shutters
	    if(validateShutterForm(frmEle) == false)
	        return false;
	}
}

function validateCart(frmEle) {
	if (frmEle.freeinstall) {//free installation
		if (frmEle.freeinstall[0].checked || frmEle.freeinstall[1].checked) {
		}
		else {
			alert("Please select whether you would like FREE Installation or not.");
			frmEle.freeinstall[0].focus();
			return false;
		}
	}
}

function confirmDelete(name)
{//Check they want to delete and item
	if (! confirm ('Are you sure you want to delete: ' + name + '?'))
	{
		return false	
	}
}
function confirmGoogleCheckout(){
	if(document.googleForm.agree.checked == false){
		alert('You must agree to the terms and conditions before proceeding to Google Checkout!');
		return false;
	}
}

function updateShipCost(shipValue){
	var shipValues = shipValue.split("|") 
	document.getElementById("shipCost").innerHTML = "$" + ToDollarsAndCents(shipValues[1]);
	var grandTotal = eval(document.cart.preShipTotal.value) + eval(shipValues[1]);
	document.getElementById("grandTotal").innerHTML = "$" + ToDollarsAndCents(grandTotal);
}
function ToDollarsAndCents(n) 
{ 
   var s = "" + Math.round(n * 100) / 100 
   var i = s.indexOf('.') 
   if (i < 0) return s + ".00" 
   var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3) 
   if (i + 2 == s.length) t += "0" 
   return t 
}
function GetWholeNumber(n) 
{ 
	var s = "" + n;
   var i = s.indexOf('.');
   if (i < 0){
		return n
	}
   else{
		return s.substring(0,i);
   }
}
function GetFraction(n) 
{ 
	var s = "" + n;
   var i = s.indexOf('.');
   if (i < 0){
		return ".0"
	}
   else{
		return "." + s.substring(i + 1, i + 4);
   }
}
function NearestEigth(n,updown)
{
	n = n * 1;
	var s = 0;
	if(.125 > n) s = 0;
	else if(.125 == n) s = .125;
	else if(.25 > n) if(updown == 'up') {s = .25} else { s = .125;}
	else if(.25 == n) s = .25;
	else if(.375 > n) if(updown == 'up') {s = .375} else { s = .25;}
	else if(.375 == n) s = .375;
	else if(.5 > n) if(updown == 'up') {s = .5 }else { s = .375;}
	else if(.5 == n) s = .5;
	else if(.625 > n) if(updown == 'up') {s = .625} else { s = .5;}
	else if(.625 == n) s = .625;
	else if(.75 > n) if(updown == 'up') {s = .75} else { s = .625;}
	else if(.75 == n) s = .75;
	else if(.875 > n) if(updown == 'up') {s = .875} else { s = .75;}
	else s = .875;
	s = s + "";
	var i = s.indexOf('.');
	s = "." + s.substring(i + 1, i + 4);
	return s;
}