
function getRatesAndRatesDescribed_Return(obj, callbackArgs) {
	if (resultIsError(obj)) {
		return;
	}
	getRates_Return(obj[0], callbackArgs);
	getRatesDescribed_Return(obj[1], callbackArgs);
}


function getRates_Return(obj, callbackArgs) {
	var length = obj.length;
	if (resultIsError(obj)) {
		return;
	}

	var naText = 'N/A = This speed is not currently available due to traffic & demand, or the distance involved.';
	var GSTtext = '';
	
	if (Session["GSTinc"] == true) {
		GSTtext = 'Prices including GST.';
	} else {
		GSTtext = 'Prices excluding GST.';
	}
	
	var tblSpeedRates = document.getElementById("tblSpeedRates");	
	var tblSpeedRatesBody = tblSpeedRates.tBodies[0];
				
	if (tblSpeedRatesBody == null) {
		tblSpeedRatesBody = document.createElement("TBODY");
	}
			
	var tblSpeedRateRows = tblSpeedRates.getElementsByTagName("TR");
				
	for (i = tblSpeedRateRows.length - 1 ; i >= 0; i--) {
		var delRow = tblSpeedRateRows[i];
		tblSpeedRatesBody.removeChild(delRow);
	}		
	
	try {	
		if (obj.length > 0) {	

			var naFound = obj[0];
			var newRow;
			var newCell;
			
			for (var i = 2; i < obj.length; i++) {
			
				var rtnRow = obj[i];
				var colour = rtnRow[i, 2];

				newRow = tblSpeedRates.insertRow(tblSpeedRates.rows.length);
				newRow.id = "getRates" + i;
				newRow.style.backgroundColor = colour;
				
				newCell = newRow.insertCell(-1);
				newCell.vAlign = "top";
				newCell.width = "60%";
				newCell.style.paddingLeft = "5px";
				newCell.style.paddingTop = "1px";
				newCell.style.paddingBottom = "1px";
				newCell.innerHTML =  rtnRow[i, 0];
				
				newCell = newRow.insertCell(-1);
				newCell.vAlign = "top";
				newCell.width = "40%";
				newCell.align = "right";
				newCell.style.paddingRight = "5px";
				newCell.style.paddingTop = "1px";
				newCell.style.paddingBottom = "1px";
				newCell.innerHTML =  rtnRow[i, 1];
			    					
			}
			
			newRow = tblSpeedRates.insertRow(tblSpeedRates.rows.length);
			newRow.id = "getRateBlank";
			newCell = newRow.insertCell(-1);
			newCell.vAlign = "top";
			newCell.colSpan = "2";							
		}
				
		var tblSpeedRatesExtraDescription = document.getElementById("tblSpeedRatesExtraDescription");	
		var speedRatesExtraDescriptionRows = tblSpeedRatesExtraDescription.rows;														
		var speedRatesExtraDescriptionRow = speedRatesExtraDescriptionRows[0];
		
		if (naFound) {
			speedRatesExtraDescriptionRow.cells[0].innerHTML = "<BR>" + naText + "<BR><BR>" + GSTtext + "<BR><BR>";
		} else {
			speedRatesExtraDescriptionRow.cells[0].innerHTML = "<BR>" + GSTtext + "<BR><BR>";
		}
	

	} catch (e) {
		javascriptError(pageName, e.description, '105');
	}
}

function getRates_Return_old(obj) {

	if (resultIsError(obj)) {
		return;
	}
	
	var naText = 'N/A = This speed is not currently available due to traffic & demand, or the distance involved.';
	var GSTtext = '';
	
	if (Session["GSTinc"] == true) {
		GSTtext = 'Prices including GST.';
	} else {
		GSTtext = 'Prices excluding GST.';
	}
	
	try {		
	
		if (obj.length > 0) {	
	
			var naFound = obj[0];
									
			var tbl = document.getElementById("tblSpeedRates");	
			var rows = tbl.rows;
							
			var i = 0;
	
			for (i = 2; i < obj.length; i++) {
				var row = rows[i - 2];
				var rtnRow = obj[i];
				var colour = rtnRow[i, 2];
				if (colour != null) {
					row.style.backgroundColor = colour;
				} 
				
				row.cells[0].style.paddingLeft = "5px";
				row.cells[0].style.paddingTop = "1px";
				row.cells[0].style.paddingBottom = "1px";
				
				row.cells[1].style.paddingRight = "5px";
				row.cells[1].style.paddingTop = "1px";
				row.cells[1].style.paddingBottom = "1px";
				
				if (row.cells[0] != null) {
					row.cells[0].innerHTML = rtnRow[i, 0];
				}
				if (row.cells[1] != null) {
					row.cells[1].innerHTML = rtnRow[i, 1];
				}
			}

			for (i = (obj.length - 1); i < rows.length; i++) {																
				var row = rows[i];
				
				row.style.backgroundColor = "";
				
				if (row.cells[0] != null) {
					row.cells[0].innerHTML = "&nbsp;";
				}

				if (row.cells[1] != null) {
					row.cells[1].innerHTML = "&nbsp;";
				}
			}
			
			tbl = document.getElementById("tblSpeedRatesExtraDescription");	
			rows = tbl.rows;														
			var row = rows[0];
			
			if (naFound) {
				row.cells[0].innerHTML = "<BR>" + naText + "<BR><BR>" + GSTtext + "<BR><BR>";
			} else {
				row.cells[0].innerHTML = "<BR>" + GSTtext + "<BR><BR>";
			}
									
		} 
	} catch (e) {
		javascriptError(pageName, e.description, '105');
	}
}

function getRatesDescribed_Return(obj, callbackArgs) {

	var description = obj[0];
	var jobTypeFieldSettings = obj[1];

	if (resultIsError(description) || resultIsError(jobTypeFieldSettings)) {
		return;
	}

	try {
		if (description.length > 0) {								
		
			var i = 0;
			
			var tbl = document.getElementById("tblSpeedRateDescribed");	
			var tblTotals = document.getElementById("tblSpeedRateDescribedTotals");
			var tblBody = tbl.tBodies[0];
			var tblBodyTotals = tblTotals.tBodies[0];
			
			if (tblBody == null) {
				tblBody = document.createElement("TBODY");
			}

			if (tblBodyTotals == null) {
				tblBodyTotals = document.createElement("TBODY");
			}
			
			var rows = tbl.getElementsByTagName("TR");
				
			for (i = rows.length - 1 ; i >= 0; i--) {
				var delRow = rows[i];
				tblBody.removeChild(delRow);
			}				


			rows = tblTotals.getElementsByTagName("TR");
				
			for (i = rows.length - 1 ; i >= 0; i--) {
				var delRow = rows[i];
				tblBodyTotals.removeChild(delRow);
			}		


			if (description.length == 1) {
				var errorMessage = trim(description[0]);
				var newTR = document.createElement("TR");				
				var newTD = document.createElement("TD");
				var newTDText = document.createTextNode(errorMessage);
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);		
				tblBody.appendChild(newTR);	
				tbl.appendChild(tblBody);
			} else if (description.length == 4) {
			
				var newTR = document.createElement("TR");		
				var newTD = document.createElement("TD");
				var newTDText = document.createTextNode("Description");
				newTD.style.fontWeight="bold";
				newTD.setAttribute("align","left");
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);
								
				newTD = document.createElement("TD");
				newTDText = document.createTextNode("Charge");
				newTD.style.fontWeight = "bold";
				newTD.setAttribute("align","right");
				newTD.setAttribute("nowrap", "true");
				newTD.setAttribute("width", "1");
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);
								
				tblBody.appendChild(newTR);	
						
				var rateIncl = "$" + trim(description[0]);
				var rateExcl = "$" + trim(description[1]);
				
				if (Session["GSTinc"] == true) {
					jobAmount = trim(description[0]);
				} else {
					jobAmount = trim(description[1]);
				}
				var description = description[3];

				for (i = 0; i < description.length; i++) {																
					var newTR = document.createElement("TR");	
					
					for (y = 0; y < 2; y++) {
						var newTD = document.createElement("TD");
						var newTDText = document.createTextNode(description[i][y]);
						if (y == 0) {
							newTD.setAttribute("align","left");
						} else {
							newTD.setAttribute("align","right");
						}
						newTD.setAttribute("vAlign","top");
						newTD.appendChild(newTDText);
						newTR.appendChild(newTD);
					}
				
					newTR.setAttribute("vAlign","top");
					tblBody.appendChild(newTR);
				}
				
				// Excluding GST
				newTR = document.createElement("TR");	
				newTD = document.createElement("TD");
				newTDText = document.createTextNode("Total");
				newTD.setAttribute("align","left");
				newTD.setAttribute("id", "tdJobAmountTitle"); 
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);

				newTD = document.createElement("TD");
				newTDText = document.createTextNode("(Exc GST)");
				newTD.setAttribute("align","left");
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);

				newTD = document.createElement("TD");
				newTDText = document.createTextNode(rateExcl);
				newTD.setAttribute("align","right");
				newTD.setAttribute("id", "tdTopBorder"); 
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);
				
				tblBodyTotals.appendChild(newTR);
				
				// Including GST
				newTR = document.createElement("TR");	
				newTD = document.createElement("TD");
				newTDText = document.createTextNode("");
				newTD.setAttribute("align","left");
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);
				
				newTD = document.createElement("TD");
				newTDText = document.createTextNode("(Incl GST)");
				newTD.setAttribute("align","left");
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);
				
				newTD = document.createElement("TD");
				newTDText = document.createTextNode(rateIncl);
				newTD.setAttribute("align","right");
				newTD.setAttribute("id", "tdBottomBorder");
				newTD.appendChild(newTDText);
				newTR.appendChild(newTD);
				
				tblBodyTotals.appendChild(newTR);	

				// Put together all tables
				tbl.appendChild(tblBody);
				tblTotals.appendChild(tblBodyTotals);
							
			}
			
		} 
	} catch (e) {
		javascriptError(pageName, e.description, '106a');
	}
	
	setJobTypeFields(jobTypeFieldSettings, callbackArgs);
	
}

function setJobTypeFields(obj, callbackArgs)
{
	try
	{
		var enableReturn = obj[0];
		var autoPopulatePreBook = obj[1];
		var PreBookDay = obj[2];
		var PreBookMonthYear = obj[3];
		var PreBookTime = obj[4];
		var PreBookamORpm = obj[5]; 
	
		if (callbackArgs == null || callbackArgs[0] == true) {
			
			if (autoPopulatePreBook == "True"){
				document.getElementById("chkPrebook").checked = true;
				document.getElementById("chkPrebook").disabled = true;
				//document.getElementById("AutoPopulatePrebook").value = "True";
			
				for (var i=0 ; i < document.getElementById("cboDay").length ; i++)
				{
					if ( document.getElementById("cboDay").options[i].value == PreBookDay)
					{
						document.getElementById("cboDay").options[i].selected = true;
						break;
					}
				}	
				
				for (var i=0 ; i < document.getElementById("cboMonthYear").length ; i++)
				{
					if ( document.getElementById("cboMonthYear").options[i].value == PreBookMonthYear)
					{
						document.getElementById("cboMonthYear").options[i].selected = true;
						break;
					}
				}	
				
				document.getElementById("txtLogTime").value = PreBookTime;
				
				for (var i=0 ; i < document.getElementById("txtamORpm").length ; i++)
				{
					if ( document.getElementById("txtamORpm").options[i].value == PreBookamORpm)
					{
						document.getElementById("txtamORpm").options[i].selected = true;
						break;
					}
				}
				
				document.getElementById("cboDay").disabled = true;	
				document.getElementById("cboMonthYear").disabled = true;	
				document.getElementById("txtLogTime").disabled = true;	
				document.getElementById("txtamORpm").disabled = true;
				
			}
			else if(document.getElementById("chkPrebook").disabled == true)
			{
				document.getElementById("chkPrebook").checked = false;
				document.getElementById("chkPrebook").disabled = false;	
				EnablePrebookControls();
			}
		}
	} catch (e) {
		javascriptError(pageName, e.description, '106b');
	}
}

function speed_onchange(alertBox) {

	var fromSuburb, toSuburb, speed, pedal, van, rtnjob, weight, size, markup;
	var ourRef, clientReferenceA, clientReferenceB, quantity;
	//debugger;
	if (document.getElementById("cboSpeed")[document.getElementById("cboSpeed").selectedIndex].getAttribute('systemname') == "UT")
	{
			document.getElementById("chkReturn").checked = false;
			document.getElementById("chkReturn").disabled = true;
			chkMultiPart_OnClick()
	}
	else
	{
		document.getElementById("chkReturn").disabled = false;
	}
	clientID = document.frmJobEntry.ClientID.value;
	if (document.getElementById('txtFromSuburbName').value.length == 0) {
		if (alertBox) {
			if (document.getElementById('txtFromSuburbName').disabled == false) {
				setFocus(document.getElementById('txtFromSuburbName'));
			}
			alert("Please enter the field '" + document.getElementById('txtFromSuburbName').title + "'");
		}
		return false;
	}
	else {
		fromSuburb = document.getElementById('txtFromSuburb').value;
	}

	if (document.getElementById('txtToSuburbName').value.length == 0) {
		if (alertBox) {
			if (document.getElementById('txtToSuburbName').disabled == false) {
				setFocus(document.getElementById('txtToSuburbName'));
			}
			alert("Please enter the field '" + document.getElementById('txtToSuburbName').title + "'");
		}
		return false;
	}
	else {
		toSuburb = document.getElementById('txtToSuburb').value;
	}
	size = getSelectValue(document.frmJobEntry.cboSize);
	
	speed = getSelectValue(document.frmJobEntry.cboSpeed);
		
	if (document.frmJobEntry.chkReturn.checked){
		rtnjob = 1;
	} else {
		rtnjob = 0;
	}
	if (getWeightValue().length > 0) {
		weight = getWeightValue();
		
		if (!isDecimal(weight, true)) {
			alert('Invalid weight entered');
			setFocus(document.getElementById('txtWeight'));
			return false;
		}
		
	} else {
		weight = 0;
	}
		
	var prebookJob;	
	if (document.frmJobEntry.chkPrebook.checked) {
		prebookJob = 1;
	} else {
		prebookJob = "";
	}
	
	var GSTincl = 0;
	if (Session["GSTinc"] == true) {
		GSTincl = 1;
	}
	
	ourRef = "";
	clientReferenceA = document.getElementById('txtReferenceA').value;
	clientReferenceB = document.getElementById('txtReferenceB').value;
	quantity = document.getElementById('txtQuanity').value;
	
	if (quantity.length == 0) {
		quantity = 1
	}
	
	markup = document.getElementById('hdnMarkup').value;
		
	jsrsExecute(Application["ApplicationPath"] + "/ServerScript/Job.aspx", getRatesDescribed_Return, "GetRateDescribed", new Array(clientID, fromSuburb, toSuburb, size, speed, rtnjob, weight, prebookJob, GSTincl, markup, ourRef, clientReferenceA, clientReferenceB, quantity), null);	
}

function getWeightValue() {
	var weight = document.getElementById('txtWeight');
	var weightText = document.getElementById('hdnWeight');
	var weightValue = "";
	
	if (weight.value != weightText.value) {
		weightValue = weight.value;
	}
	return weightValue;
}

function getSpeeds_Return(obj) {

	if (resultIsError(obj)) {
		return;
	}
	var i, max, speed, speedItem, firstItem, defaultSpeed, selectedSpeed, fastestSpeed, foundSpeed;
	var newOption, speedName;
	var defaultSpeedUsed, defaultSpeedFound, selectedSpeedUsed;
	
	max = obj.length;
	
	selectedSpeed = "";
	fastestSpeed = null;
	foundSpeed = false;
	defaultSpeedFound = false;
	defaultSpeedUsed = false;
	selectedSpeedUsed = false;
	speed = document.getElementById('cboSpeed');
	
	if (speed.options.length != 0) {
		selectedSpeed = getSelectValue(speed);
	}
	
	while (speed.length > 0){
		speed.removeChild(speed.options[0]);
	}
	defaultSpeed = document.getElementById('hdnDefaultSpeed').value;
	
	for (i=0; i < max; i++) {
		speedItem = obj[i];
		speedName = speedItem[1] + "";
			
		newOption = document.createElement("OPTION");
		newOption.value = speedItem[0];
		newOption.text =  speedItem[1];
		newOption.innerText = speedItem[1];
		//debugger;
		newOption.setAttribute('systemname', speedItem[5], 1);
		
		//newOption.getAttribute('systemname');
		
		if (speedItem.length > 2) {
			newOption.style.backgroundColor =  speedItem[2];
		}
		
		if (fastestSpeed == null && speedName != "DIRECT") {
			fastestSpeed = newOption; 
			newOption.selected = true;
		}
		
		if (!foundSpeed && selectedSpeed.length > 0 && selectedSpeed == speedItem[0] && speedName != "DIRECT") {
			foundSpeed = true;
		}
		
		
		if (selectedSpeed.length != 0) 
		{
			if (foundSpeed && !selectedSpeedUsed) {
				newOption.selected = true;
				selectedSpeedUsed = true;
			}
		} 
		else
		{
			if (newOption.value == defaultSpeed) {
				defaultSpeedFound = true;
				
				if (speedItem[1] != "DIRECT") {
					newOption.selected = true;
					defaultSpeedUsed = true;
				}
			} else {
				if (defaultSpeedFound && !defaultSpeedUsed) {
					if (speedItem[1] != "DIRECT") {
						newOption.selected = true;
						defaultSpeedUsed = true;
					}
				}
			}
		}

		speed.appendChild(newOption);
	}
		
	getRatesAndRatesDescribed(false);
}


function getSpeeds() {
	var fromSuburb, toSuburb, size, clientID, prebookJob;
		
	clientID = document.frmJobEntry.ClientID.value;
	if (document.getElementById('txtFromSuburbName').value.length == 0) {
		return false;
	}
	else {
		fromSuburb = document.getElementById('txtFromSuburb').value;
	}

	if (document.getElementById('txtToSuburbName').value.length == 0) {
		return false;
	}
	else {
		toSuburb = document.getElementById('txtToSuburb').value;
	}
	size = getSelectValue(document.getElementById('cboSize'));
								
	if (document.frmJobEntry.chkPrebook.checked) {
		prebookJob = 1;
	} else {
		prebookJob = "";
	}
	
	if ((speedLastCheckedFromSuburbID != fromSuburb) ||
		(speedLastCheckedToSuburbID != toSuburb) ||
		(speedLastCheckedPrebook != prebookJob) ||
		(speedLastCheckedSize != size)) {
	
		speedLastCheckedFromSuburbID = fromSuburb;
		speedLastCheckedToSuburbID = toSuburb;
		speedLastCheckedPrebook = prebookJob;
		speedLastCheckedSize = size;
				
		jsrsExecute(Application["ApplicationPath"] + "/ServerScript/Job.aspx", getSpeeds_Return, "GetSpeeds", new Array(clientID, fromSuburb, toSuburb, size, prebookJob), null);	
		return false;
	} else {
		return true;
	}
}

