﻿// JScript File

// called when the radio button for weight is toggled
//
//function ChangeWeightToPounds(textBoxID)
//{
//	var text_box = document.getElementById(textBoxID);
//	var ounces = text_box.value;
//	var pounds = ounces / 16;
//	text_box.value = pounds;
//}

// called when the radio button for weight is toggled
//
//function ChangeWeightToOunces(textBoxID)
//{
//	var text_box = document.getElementById(textBoxID);
//	var pounds = text_box.value;
//	var ounces = pounds * 16;
//	text_box.value = ounces;
//}

// ToggleRadioCheckBox
//
function ToggleRadioCheckBox(toggleGroupArray, pattern)
{
	for (var index = 0; index < toggleGroupArray.length; index++)
	{
		var input_control = document.getElementById(toggleGroupArray[index]);
		
		if (input_control != null)
		{
			if (pattern.charAt(index) == '0')
			{
				input_control.checked = false;
			}
		}
	}
}

// ToggleRadioGroup
//
function ToggleRadioGroup(toggleGroupArray)
{
	var parent_checked = false;
	
	for (var index = 0; index < toggleGroupArray.length; index++)
	{
		var input_control = document.getElementById(toggleGroupArray[index]);
		
		if (input_control != null)
		{
			if (input_control.type == "radio")
			{
				parent_checked = input_control.checked;
			}
			else
			{
				if (parent_checked == true)
				{
					input_control.disabled = false;
				}
				else
				{
					input_control.disabled = true;
					input_control.checked = false;
				}
			}
		}
	}
}

function IsNumeric(sText)
{
	var valid_chars = "0123456789.";
	var current_char;
	var found_dot = false;
	
	for (var index = 0; index < sText.length; index++)
	{
		current_char = sText.charAt(index);
		
		if (current_char == '.')
		{
			if (found_dot == true)
				return false;
		
			found_dot = true;
		}
     
		if (valid_chars.indexOf(current_char) == -1)
			return false;
	}
	
	return true;
}

// called when the calculate zone button is clicked
//
function CalculateZone(calculatorControlID)
{
	var panel_error_id = calculatorControlID + "_PanelCubicFeetError";
	var panel_error = document.getElementById(panel_error_id);

	if (panel_error != null)
		panel_error.style.display = "none";
		
	var origin_zip_code = '';
	var text_field_origin_zip_code_id = calculatorControlID + "_TextBoxZoneOriginZIPCode";
	var text_field_origin_zip_code = document.getElementById(text_field_origin_zip_code_id);
	
	if (text_field_origin_zip_code != null)
		origin_zip_code = text_field_origin_zip_code.value;
	
	var destination_zip_code = '';
	var text_field_destination_zip_code_id = calculatorControlID + "_TextBoxZoneDestinationZIPCode";
	var text_field_destination_zip_code = document.getElementById(text_field_destination_zip_code_id);
	
	if (text_field_destination_zip_code != null)
		destination_zip_code = text_field_destination_zip_code.value;
				
	AjaxWebService.CalculateZone(calculatorControlID, origin_zip_code, destination_zip_code, CalculateSuccess, CalculateFailed, null);

}

// called when the calculate cubic button is clicked
//
function CalculateCubic(calculatorControlID)
{
	var panel_error_id = calculatorControlID + "_PanelCubicFeetError";
	var panel_error = document.getElementById(panel_error_id);
			
	if (panel_error != null)
		panel_error.style.display = "none";
		
	var radio_button_boxes_id = calculatorControlID + "_RadioButtonBoxes";
	var radio_button_boxes = document.getElementById(radio_button_boxes_id);
	var is_boxes = true;
	
	if (radio_button_boxes != null)
	{
		is_boxes = radio_button_boxes.checked;
	}		

	var length = '';
	var text_field_cubic_length_id = calculatorControlID + "_TextBoxCubicFeetLength";
	var text_field_cubic_length = document.getElementById(text_field_cubic_length_id);
	
	if (text_field_cubic_length != null)
	{
		if (IsNumeric(text_field_cubic_length.value) == true)
		{
			length = text_field_cubic_length.value;
		}
		else
		{
			text_field_cubic_length.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelCubicFeetError").innerHTML = "An invalid length was entered.";
			
			return;
		}
	}

	if (length == '')
		length = 0;
	
	var width = '';
	var text_field_cubic_width_id = calculatorControlID + "_TextBoxCubicFeetWidth";
	var text_field_cubic_width = document.getElementById(text_field_cubic_width_id);
	
	if (text_field_cubic_width != null)
	{
		if (IsNumeric(text_field_cubic_width.value) == true)
		{
			width = text_field_cubic_width.value;
		}
		else
		{
			text_field_cubic_width.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelCubicFeetError").innerHTML = "An invalid width was entered.";
			
			return;
		}
	}
	
	if (width == '')
		width = 0;
	
	var height = '';
	var text_field_cubic_height_id = calculatorControlID + "_TextBoxCubicFeetHeight";
	var text_field_cubic_height = document.getElementById(text_field_cubic_height_id);
	
	if (text_field_cubic_height != null)
	{
		if (IsNumeric(text_field_cubic_height.value) == true)
		{
			height = text_field_cubic_height.value;
		}
		else
		{
			text_field_cubic_height.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelCubicFeetError").innerHTML = "An invalid height was entered.";
			
			return;
		}
	}
	
	if (height == '')
		height = 0;
	
	AjaxWebService.CalculateCubic(calculatorControlID, length, width, height, is_boxes, CalculateSuccess, CalculateFailed, null);
}

// called when the close button is click on the cubic calculator
//
function UpdateCubicFeet(labelControlID, calculatorControlID, calculatorID, mailServiceID)
{
	var label = document.getElementById(labelControlID);
	var text_field_cubic_feet_id = calculatorControlID + "_TextBoxCubicFeet";
	var text_field_cubic_feet = document.getElementById(text_field_cubic_feet_id);
	
	if ((label != null) && (text_field_cubic_feet != null))
	{
		var result = label.innerHTML;
		
		if (result != 0)
		{
			text_field_cubic_feet.value = result;		
			Calculate(calculatorControlID, calculatorID, mailServiceID);
		}
	}
}

// called when the calculate dimensional button is clicked
//
function CalculateDimensionalWeight(calculatorControlID)
{
	var panel_error_id = calculatorControlID + "_PanelDimensionalError";
	var panel_error = document.getElementById(panel_error_id);
			
	if (panel_error != null)
		panel_error.style.display = "none";
		
	var radio_button_rectangular_id = calculatorControlID + "_RadioButtonRectangular";
	var radio_button_rectangular = document.getElementById(radio_button_rectangular_id);
	var is_rectangular = true;
	
	if (radio_button_rectangular != null)
	{
		is_rectangular = radio_button_rectangular.checked;
	}
	
	// get length from text box
	//
	var length = '';
	var text_field_dimensional_length_id = calculatorControlID + "_TextBoxDimensionalLength";
	var text_field_dimensional_length = document.getElementById(text_field_dimensional_length_id);
	
	if (text_field_dimensional_length != null)
	{
		if (IsNumeric(text_field_dimensional_length.value) == true)
		{
			length = text_field_dimensional_length.value;
		}
		else
		{
			text_field_dimensional_length.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelDimensionalError").innerHTML = "An invalid length was entered.";
			
			return;
		}
	}

	if (length == '')
		length = 0;
	
	// get width from text box
	//
	var width = '';
	var text_field_dimensional_width_id = calculatorControlID + "_TextBoxDimensionalWidth";
	var text_field_dimensional_width = document.getElementById(text_field_dimensional_width_id);
	
	if (text_field_dimensional_width != null)
	{
		if (IsNumeric(text_field_dimensional_width.value) == true)
		{
			width = text_field_dimensional_width.value;
		}
		else
		{
			text_field_dimensional_width.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelDimensionalError").innerHTML = "An invalid width was entered.";
			
			return;
		}
	}
	
	if (width == '')
		width = 0;
		
	// get height from text box
	//
	var height = '';
	var text_field_dimensional_height_id = calculatorControlID + "_TextBoxDimensionalHeight";
	var text_field_dimensional_height = document.getElementById(text_field_dimensional_height_id);
	
	if (text_field_dimensional_height != null)
	{
		if (IsNumeric(text_field_dimensional_height.value) == true)
		{
			height = text_field_dimensional_height.value;
		}
		else
		{
			text_field_dimensional_height.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelDimensionalError").innerHTML = "An invalid height was entered.";
			
			return;
		}
	}
	
	if (height == '')
		height = 0;
		
	// get girth from text box
	//
	var girth = '';
	var text_field_dimensional_girth_id = calculatorControlID + "_TextBoxDimensionalGirth";
	var text_field_dimensional_girth = document.getElementById(text_field_dimensional_girth_id);
	if (text_field_dimensional_girth != null)
	{
		if (IsNumeric(text_field_dimensional_girth.value) == true)
		{
			girth = text_field_dimensional_girth.value;
		}
		else
		{
			text_field_dimensional_girth.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelDimensionalError").innerHTML = "An invalid girth was entered.";
			
			return;
		}
	}
	
	if (girth == '')
		girth = 0;
					
	AjaxWebService.CalculateDimensionalWeight(calculatorControlID, length, width, height, girth, is_rectangular, CalculateSuccess, CalculateFailed, null)
}

// called when the close button is click on the cubic calculator
//
function UpdateDimensionalWeight(labelControlID, calculatorControlID, calculatorID, mailServiceID)
{
	var label = document.getElementById(labelControlID);
	var text_field_dimensional_id = calculatorControlID + "_TextBoxDimensionalWeight";
	var text_field_dimensional = document.getElementById(text_field_dimensional_id);
		
	if ((label != null) && (text_field_dimensional != null))
	{
		var result = label.innerHTML;
		
		if (result != "")
		{
			text_field_dimensional.value = result;		
			Calculate(calculatorControlID, calculatorID, mailServiceID);
		}
	}
}

// called when a weight is entered or the calculate button is clicked
//
function Calculate(calculatorControlID, calculatorID, mailServiceID)
{
	var panel_error_id = calculatorControlID + "_PanelError";
	var panel_error = document.getElementById(panel_error_id);
			
	if (panel_error != null)
		panel_error.style.display = "none";
		
	// var for this calculation history
	var sub_history = "" + mailServiceID + "|" + calculatorID + "|";

	// get weight
	//
	var weight_ounces = '';
	var text_field_weight_id = calculatorControlID + "_TextBoxWeight";
	var text_field_weight = document.getElementById(text_field_weight_id);
		
	if (text_field_weight != null)
	{
		if (IsNumeric(text_field_weight.value) == true)
		{
			weight_ounces = text_field_weight.value;
		}
		else
		{
			text_field_weight.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelError").innerHTML = "An invalid weight was entered.";
			
			return;
		}
	}
	
	// if the UI has both pounds and ounces
	//
	var text_field_weight_2_id = calculatorControlID + "_TextBoxWeight_2";
	var text_field_weight_2 = document.getElementById(text_field_weight_2_id);
	if (text_field_weight_2 != null)
	{
		if (IsNumeric(text_field_weight_2.value) == true)
		{						
			weight_ounces = (Number(weight_ounces) * 16) + Number(text_field_weight_2.value);
		}
		else
		{
			text_field_weight_2.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelError").innerHTML = "An invalid weight was entered.";
			
			return;
		}
	}
		
	// get cubic feet
	//
	var text_field_cubic_feet_id = calculatorControlID + "_TextBoxCubicFeet";
	var text_field_cubic_feet = document.getElementById(text_field_cubic_feet_id);
	if (text_field_cubic_feet != null)
	{
		if (IsNumeric(text_field_cubic_feet.value) == true)
		{
			weight_ounces = text_field_cubic_feet.value;
		}
		else
		{
			text_field_cubic_feet.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelError").innerHTML = "An invalid cubic feet value was entered.";
			
			return;
		}
	}
		
	if (weight_ounces == '')
		weight_ounces = 0;
		
	var panel_single_piece_weight_id = calculatorControlID + "_PanelSinglePieceWeight";
	var panel_single_piece_weight = document.getElementById(panel_single_piece_weight_id);
	var other_weight = "or " + (weight_ounces / 16) + " pounds";
	
	if (panel_single_piece_weight != null)
	{
		var children = panel_single_piece_weight.getElementsByTagName('input');
		
		if ((children != null) && (children.length == 3))
		{
			if (children[2].checked == true)
			{
				weight_ounces = weight_ounces * 16;
				other_weight = "or " + weight_ounces + " ounces";
			}
		}
	}
	
	var other_weight_label_id = calculatorControlID + "_LabelOtherWeight";
	var other_weight_label = document.getElementById(other_weight_label_id);
	if (other_weight_label != null)
	{
		other_weight_label.innerHTML = other_weight;
	}
		
	// get dimensional weight if avaiable
	//
	var dimensional_weight_pounds = '';
	var text_field_dimensional_weight_id = calculatorControlID + "_TextBoxDimensionalWeight";
	var text_field_dimensional_weight = document.getElementById(text_field_dimensional_weight_id);
	if (text_field_dimensional_weight != null)
	{
		if (IsNumeric(text_field_dimensional_weight.value) == true)
		{
			dimensional_weight_pounds = text_field_dimensional_weight.value;
		}
		else
		{
			text_field_dimensional_weight.value = "0";
			
			if (panel_error != null)
				panel_error.style.display = "inline";
			
			document.getElementById(calculatorControlID + "_LabelError").innerHTML = "An invalid Dimensional Weight value was entered.";
			
			return;
		}
	}
	
	if (dimensional_weight_pounds == '')
		dimensional_weight_pounds = 0;
		
	var weights = new Array(weight_ounces, dimensional_weight_pounds);
	
	sub_history = sub_history + weight_ounces + "," + dimensional_weight_pounds + "|";
		
	// get grid view inputs (number of pieces and destination entry) for each element
	//
	var grid_view_id = calculatorControlID + "_GridViewElements";
	var grid_view = document.getElementById(grid_view_id);
	var row_count = grid_view.rows.length - 1;
	var number_of_peices = new Array(row_count);
	var destination_entries = new Array(row_count);
	var index;
	var add_to_history = false;
									
	for (index = 0; index < row_count; index++)
	{
		var row = index + 2;
		var filler = (row < 10) ? "_ctl0" : "_ctl";
		var text_field_id = grid_view_id + filler + row + "_NumberOfPieces";		
		var text_field = document.getElementById(text_field_id);
		var add_row_to_history = false;
		
		if (text_field != null)
		{
			number_of_peices[index] = text_field.value;
						
			if ((number_of_peices[index] != "0") && (number_of_peices[index] != ""))
			{			
				sub_history = sub_history + "{" + index + "," + number_of_peices[index];
				add_to_history = true;
				add_row_to_history = true;
			}
		}
		
		var	drop_down_field_id = grid_view_id + filler + row + "_DestinationEntries";
		var drop_down_field = document.getElementById(drop_down_field_id);
		
		if (drop_down_field != null)
		{
			destination_entries[index] = drop_down_field.value;
			
			if (add_row_to_history == true)
				sub_history = sub_history + "," + destination_entries[index];
		}
		
		if (add_row_to_history == true)
			sub_history = sub_history + "}";
	}
	
	sub_history = sub_history + "|";
		
	// get surchanges and discounts
	//
	var panel_surcharges_id = calculatorControlID + "_PanelSurcharges";
	var panel_surcharges = document.getElementById(panel_surcharges_id);
	var surcharges = null;
	
	if (panel_surcharges != null)
	{
		var children = panel_surcharges.getElementsByTagName('input');
		if (children != null)
		{
			surcharges = new Array(children.length);
		
			for (index = 0; index < children.length; index++)
			{
				surcharges[index] = children[index].checked;
				sub_history = sub_history + surcharges[index] + ",";
			}
		}
	}
	
	sub_history = sub_history + "|";
	
	if (add_to_history == true)
	{
		var history = document.getElementById("ctl00_ContentPlaceHolder1_HiddenHistory");
				
		if (history != null)
		{
			sub_history = sub_history + ";";
			history.value = history.value + sub_history;
		}
	}
	
	var print_friendly_link_id = calculatorControlID + "_HyperLinkPrintFriendly";
	var print_friendly_link = document.getElementById(print_friendly_link_id);
	if (print_friendly_link != null)
	{
		print_friendly_link.href = "CalculatorSetPagePF.aspx?msid=" + mailServiceID + "&cid=" + calculatorID + "&p=" + encodeURIComponent(sub_history);
	}
							
	AjaxWebService.Calculate(calculatorID, calculatorControlID, weights, number_of_peices, destination_entries, surcharges, CalculateSuccess, CalculateFailed, null);
}

// called when the AjaxWebService.Calculate call return with success
//
function CalculateSuccess(result, content)
{
	var index;
	for (index = 0; index < result.length; index += 2)
	{		
		index_of = result[index].indexOf("_LabelError");
	
		if (index_of != -1)
		{
			var panel_error_id = result[index].substring(0, index_of) + "_PanelError";
			var panel_error = document.getElementById(panel_error_id);
			
			if (panel_error != null)
				panel_error.style.display = "inline";
		}
		
		index_of = result[index].indexOf("_LabelCubicFeetError");
		if (index_of != -1)
		{
			var panel_error_id = result[index].substring(0, index_of) + "_PanelCubicFeetError";
			var panel_error = document.getElementById(panel_error_id);
			
			if (panel_error != null)
				panel_error.style.display = "inline";
		}
		
		index_of = result[index].indexOf("_LabelDimensionalError");
		if (index_of != -1)
		{
			var panel_error_id = result[index].substring(0, index_of) + "_PanelDimensionalError";
			var panel_error = document.getElementById(panel_error_id);
			
			if (panel_error != null)
				panel_error.style.display = "inline";
		}
		
		index_of = result[index].indexOf("_LabelZoneError");
		if (index_of != -1)
		{
			var panel_error_id = result[index].substring(0, index_of) + "_PanelZoneError";
			var panel_error = document.getElementById(panel_error_id);
			
			if (panel_error != null)
				panel_error.style.display = "inline";
		}
	
		var element = document.getElementById(result[index]);
		
		if (element != null)
		{
			index_of = result[index].indexOf("_NumberOfPieces");
			if (index_of != -1)
				element.value = result[index+1];
			else
				element.innerHTML = result[index+1];
		}
	}
	
	dcsMultiTrack('DCS.dcsuri', window.location.pathname);
}

// called when the AjaxWebService.Calculate call return with failer
//
function CalculateFailed(error)
{
	alert("Error: " + error.get_message() + "\r\n" +
          "Status Code: " + error.get_statusCode() + "\r\n" +
          "Exception Type: " + error.get_exceptionType() + "\r\n" +
          "Timed Out: " + error.get_timedOut());
}


function TogglePanel(panelID, linkButton)
{
	var panel = document.getElementById(panelID);
	
	if (panel != null)
	{
		if (panel.style.display == "none")
		{
			panel.style.display = "inline";
			linkButton.innerHTML = "Hide Calculator"
		}
		else
		{
			panel.style.display = "none";
			linkButton.innerHTML = "Show Calculator"
		}
	}
}
