// cableBuilder beta v0.4
// don't steal code. it's not nice.

var cableDesc;
var cableLength;
var cableType;
var cablePrice;
var cableQty;
var cableCost;
var con1;
var con2;
var conImgL;
var conImgC;
var conImgR;


var cableDesc2;
var cableLength2;
var cableType2;
var cablePrice2;
var cableQty2;
var cableCost2;
var con12;
var con22;
var conImgL2;
var conImgC2;
var conImgR2;

var cableDesc3;
var cableLength3;
var cableType3;
var cablePrice3;
var cableQty3;
var cableCost3;
var con13;
var con23;
var conImgL3;
var conImgC3;
var conImgR3;

var orderDesc;
var subtotal;

function init()
{
cableDesc 		= "No cable built.";
cableLength 	= document.getElementById("cableLength").value;
cablePrice 		= document.getElementById("cableType").value;
cableQty 		= document.getElementById("cableQty").value;

cableDesc2 		= "No cable built.";
cableLength2 	= document.getElementById("cableLength2").value;
cablePrice2 	= document.getElementById("cableType2").value;
cableQty2 		= document.getElementById("cableQty2").value;

cableDesc3 		= "No cable built.";
cableLength3 	= document.getElementById("cableLength3").value;
cablePrice3 	= document.getElementById("cableType3").value;
cableQty3 		= document.getElementById("cableQty3").value;

cableCost  		= "0";
cableCost2 		= "0";
cableCost3 		= "0";

subtotal   		= "0";
}

//***************************************************************
//*** THESE ARE THE COST UPDATE FUNCTIONS FOR EACH CABLE LINE ***
//***************************************************************

function costUpdate()
{	
cableQty 		= 	document.getElementById("cableQty").value;
cableLength 	= 	document.getElementById("cableLength").value;
cablePrice 		= 	document.getElementById("cableType").value;

	if (cableLength <= 5)
	{cableCost = 13 * cableQty;}
	
	else 
	{cableCost = ((cableLength * cablePrice) + 13) * cableQty;}

	if (isNaN(cableCost) || cableLength == 0)
	{cableCost = "0";}
	
	else
	{updateSubtotal();}
}

function costUpdate2()
{	
cableQty2 		= 	document.getElementById("cableQty2").value;
cableLength2 	= 	document.getElementById("cableLength2").value;
cablePrice2		= 	document.getElementById("cableType2").value;

	if (cableLength2 <= 5)
	{cableCost2 = 13 * cableQty2;}
	
	else 
	{cableCost2 = ((cableLength2 * cablePrice2) + 13) * cableQty2;}

	if (isNaN(cableCost2) || cableLength2 == 0)
	{cableCost2 = "0";}
	
	else
	{updateSubtotal();}
}

function costUpdate3()
{	
cableQty3		= 	document.getElementById("cableQty3").value;
cableLength3 	= 	document.getElementById("cableLength3").value;
cablePrice3		= 	document.getElementById("cableType3").value;

	if (cableLength3 <= 5)
	{cableCost3 = 13 * cableQty3;}
	
	else 
	{cableCost3 = ((cableLength3 * cablePrice3) + 13) * cableQty3;}

	if (isNaN(cableCost3) || cableLength3 == 0)
	{cableCost3 = "0";}
	
	else
	{updateSubtotal();}
}

//********************************************************************************************
//*** THIS FUNCTION ADDS THE CABLE LINES TOGETHER AND ROUNDS THEM TO THE NEAREST HUNDREDTH ***
//*** THEN IT SETS THE SUBTOTAL TO THAT RESULT                                             ***
//********************************************************************************************

function updateSubtotal()
{
var preDiscount
var discount = 0.75
var discountAmt
var postDiscount

	preDiscount 	= 	parseFloat(cableCost) + parseFloat(cableCost2) + parseFloat(cableCost3);
	postDiscount 	=  (parseFloat(cableCost) + parseFloat(cableCost2) + parseFloat(cableCost3)) * discount;
	discountAmt		=	preDiscount - postDiscount;

	document.getElementById("discount").value = "($" + discountAmt.toFixed(2) + ")";
	document.getElementById("subtotal").value = "$" + postDiscount.toFixed(2);
}


//***************************************************************
//*** THESE ARE THE CABLE - CONNECTOR TYPE SHUT OFF FUNCTIONS ***
//***************************************************************

function cb_conOnOff()
{
cableType 		= 	document.getElementById("cableType").options[document.getElementById("cableType").selectedIndex].innerHTML;

	if (cableType == "CAT5")
		{document.getElementById("con1").value = "RJ45";
		 document.getElementById("con2").value = "RJ45";
		 document.getElementById("con1").disabled=true;
		 document.getElementById("con2").disabled=true;}
	else
		{document.getElementById("con1").disabled=false;
		 document.getElementById("con2").disabled=false;}
}

function cb_conOnOff2()
{
cableType2 		= 	document.getElementById("cableType2").options[document.getElementById("cableType2").selectedIndex].innerHTML;

	if (cableType2 == "CAT5")
		{document.getElementById("con12").value = "RJ45";
		 document.getElementById("con22").value = "RJ45";
		 document.getElementById("con12").disabled=true;
		 document.getElementById("con22").disabled=true;}
	else
		{document.getElementById("con12").disabled=false;
		 document.getElementById("con22").disabled=false;}
}

function cb_conOnOff3()
{
cableType3 		= 	document.getElementById("cableType3").options[document.getElementById("cableType3").selectedIndex].innerHTML;

	if (cableType3 == "CAT5")
		{document.getElementById("con13").value = "RJ45";
		 document.getElementById("con23").value = "RJ45";
		 document.getElementById("con13").disabled=true;
		 document.getElementById("con23").disabled=true;}
	else
		{document.getElementById("con13").disabled=false;
		 document.getElementById("con23").disabled=false;}
}

//***************************************************
//*** THIS FUNCTION CONTROLS THE CONNECTOR IMAGES ***
//***************************************************

function cableCon()
{
	document.getElementById("cableL").src = "../images/products/connectors/" + document.getElementById("con1").value + "L.jpg";
//	document.getElementById("cable0C").src = "images/products/connectors/" + document.getElementById("cableType0").innerHTML + ".jpg";
	document.getElementById("cableR").src = "../images/products/connectors/" + document.getElementById("con2").value + "R.jpg";
}

function cableCon2()
{
	document.getElementById("cableL2").src = "../images/products/connectors/" + document.getElementById("con12").value + "L.jpg";
//	document.getElementById("cable0C").src = "images/products/connectors/" + document.getElementById("cableType0").innerHTML + ".jpg";
	document.getElementById("cableR2").src = "../images/products/connectors/" + document.getElementById("con22").value + "R.jpg";
}

function cableCon3()
{
	document.getElementById("cableL3").src = "../images/products/connectors/" + document.getElementById("con13").value + "L.jpg";
//	document.getElementById("cable0C").src = "images/products/connectors/" + document.getElementById("cableType0").innerHTML + ".jpg";
	document.getElementById("cableR3").src = "../images/products/connectors/" + document.getElementById("con23").value + "R.jpg";
}

function isNumberKey(evt)
{
	var charCode = (evt.which) ? evt.which : event.keyCode
	if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;
		
	return true;
}

//*****************************************************************************
//*** THESE FUNCTIONS VALIDATE THE CABLE IS COMPLETE BEFORE DESCRIBING THEM ***
//*****************************************************************************

function validateCable()
{
cableLength 	= 	document.getElementById("cableLength").value;
cableQty		=	document.getElementById("cableQty").value;
con1			=	document.getElementById("con1").value;
con2			=	document.getElementById("con2").value;
cableType 		= 	document.getElementById("cableType").options[document.getElementById("cableType").selectedIndex].innerHTML;

	if 		(cableLength > 0
				&& cableQty > 0
				&& con1 != "Undefined"
				&& con2 != "Undefined"
				&& cableType != "CAT5")
			{describeRFcable();}
		
	else if (cableLength > 0
				&& cableQty > 0
				&& cableType == "CAT5")
			{describeCAT5cable();}
			
	else
			{document.getElementById("orderDesc").value = "No cable built."}
}

function validateCable2()
{
cableLength2 	= 	document.getElementById("cableLength2").value;
cableQty2		=	document.getElementById("cableQty2").value;
con12			=	document.getElementById("con12").value;
con22			=	document.getElementById("con22").value;
cableType2 		= 	document.getElementById("cableType2").options[document.getElementById("cableType2").selectedIndex].innerHTML;

	if 		(cableLength2 > 0
				&& cableQty2 > 0
				&& con12 != "Undefined"
				&& con22 != "Undefined"
				&& cableType2 != "CAT5")
			{describeRFcable2();}
		
	else if (cableLength2 > 0
				&& cableQty2 > 0
				&& cableType2 == "CAT5")
			{describeCAT5cable2();}
			
	else
			{document.getElementById("orderDesc2").value = ""}
}

function validateCable3()
{
cableLength3 	= 	document.getElementById("cableLength3").value;
cableQty3		=	document.getElementById("cableQty3").value;
con13			=	document.getElementById("con13").value;
con23			=	document.getElementById("con23").value;
cableType3 		= 	document.getElementById("cableType3").options[document.getElementById("cableType3").selectedIndex].innerHTML;

	if 		(cableLength3 > 0
				&& cableQty3 > 0
				&& con13 != "Undefined"
				&& con23 != "Undefined"
				&& cableType3 != "CAT5")
			{describeRFcable3();}
		
	else if (cableLength3 > 0
				&& cableQty3 > 0
				&& cableType3 == "CAT5")
			{describeCAT5cable3();}
			
	else
			{document.getElementById("orderDesc3").value = ""}
}

//***********************************************************
//*** THESE FUNCTIONS DESCRIBE RF CABLES IN PLAIN ENGLISH ***
//***********************************************************

function describeRFcable()
{
cableLength 	= 	document.getElementById("cableLength").value;
cableQty		=	document.getElementById("cableQty").value;
con1Name		=	document.getElementById("con1").options[document.getElementById("con1").selectedIndex].innerHTML;
con2Name		=	document.getElementById("con2").options[document.getElementById("con2").selectedIndex].innerHTML;
cableType 		= 	document.getElementById("cableType").options[document.getElementById("cableType").selectedIndex].innerHTML;

cableDesc = cableQty + " x " + cableLength + " feet of " + cableType + " cable with " + con1Name + " and " + con2Name + " connectors. [$" + cableCost.toFixed(2) + "]";

document.getElementById("orderDesc").value = cableDesc;
}

function describeRFcable2()
{
cableLength2 	= 	document.getElementById("cableLength2").value;
cableQty2		=	document.getElementById("cableQty2").value;
con1Name2		=	document.getElementById("con12").options[document.getElementById("con12").selectedIndex].innerHTML;
con2Name2		=	document.getElementById("con22").options[document.getElementById("con22").selectedIndex].innerHTML;
cableType2 		= 	document.getElementById("cableType2").options[document.getElementById("cableType2").selectedIndex].innerHTML;

cableDesc2 = cableQty2 + " x " + cableLength2 + " feet of " + cableType2 + " cable with " + con1Name2 + " and " + con2Name2 + " connectors. [$" + cableCost2.toFixed(2) + "]";

document.getElementById("orderDesc2").value = cableDesc2;
}

function describeRFcable3()
{
cableLength3 	= 	document.getElementById("cableLength3").value;
cableQty3		=	document.getElementById("cableQty3").value;
con1Name3		=	document.getElementById("con13").options[document.getElementById("con13").selectedIndex].innerHTML;
con2Name3		=	document.getElementById("con23").options[document.getElementById("con23").selectedIndex].innerHTML;
cableType3 		= 	document.getElementById("cableType3").options[document.getElementById("cableType3").selectedIndex].innerHTML;

cableDesc3 = cableQty3 + " x " + cableLength3 + " feet of " + cableType3 + " cable with " + con1Name3 + " and " + con2Name3 + " connectors. [$" + cableCost3.toFixed(2) + "]";

document.getElementById("orderDesc3").value = cableDesc3;
}

//*************************************************************
//*** THESE FUNCTIONS DESCRIBE CAT5 CABLES IN PLAIN ENGLISH ***
//*************************************************************

function describeCAT5cable()
{
cableLength 	= 	document.getElementById("cableLength").value;
cableQty		=	document.getElementById("cableQty").value;

cableDesc = cableQty + " x " + cableLength + " feet of outdoor-shielded CAT5 cable with RJ-45 connectors. [$" + cableCost.toFixed(2) + "]";

document.getElementById("orderDesc").value = cableDesc;
}

function describeCAT5cable2()
{
cableLength2 	= 	document.getElementById("cableLength2").value;
cableQty2		=	document.getElementById("cableQty2").value;

cableDesc2 = cableQty2 + " x " + cableLength2 + " feet of outdoor-shielded CAT5 cable with RJ-45 connectors. [$" + cableCost2.toFixed(2) + "]";

document.getElementById("orderDesc2").value = cableDesc2;
}

function describeCAT5cable3()
{
cableLength3 	= 	document.getElementById("cableLength3").value;
cableQty3		=	document.getElementById("cableQty3").value;

cableDesc3 = cableQty3 + " x " + cableLength3 + " feet of outdoor-shielded CAT5 cable with RJ-45 connectors. [$" + cableCost3.toFixed(2) + "]";

document.getElementById("orderDesc3").value = cableDesc3;
}

//*************************************************************
//*** THESE FUNCTIONS RESET THE CABLE QUANTITIES TO ZERO.   ***
//*** THEY ARE CALLED WHEN A CABLE LINE ITEM IS SUBTRACTED. ***
//*************************************************************


function resetCable()
{
document.getElementById("cableQty").value	=	"0";
validateCable();
costUpdate();
}

function resetCable2()
{
document.getElementById("cableQty2").value	=	"0";
validateCable2();
costUpdate2();
}

function resetCable3()
{
document.getElementById("cableQty3").value	=	"0";
validateCable3();
costUpdate3();
}


//*********************************************************************
//*** THIS FUNCTION CHECKS TO ENSURE THE CONTACT FORM IS FILLED OUT ***
//*********************************************************************

function formCheck(formobj){
	// Enter name of mandatory fields
	var fieldRequired = Array("name", "email");
	// Enter field description to appear in the dialog box
	var fieldDescription = Array("name", "email");
	// dialog message
	var alertMsg = "Please complete the following fields:\n";
	
	var l_Msg = alertMsg.length;
	
	for (var i = 0; i < fieldRequired.length; i++){
		var obj = formobj.elements[fieldRequired[i]];
		if (obj){
			switch(obj.type){
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "text":
			case "textarea":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			default:
			}
			if (obj.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}