function CheckBoxYesNo(field_name) {
// alert('in CheckBox');

	if (document.forms[1].elements[field_name].checked) {
		document.forms[1].elements[field_name].value = "Yes";
		//alert("CheckBox is true " + document.forms[1].elements[field_name].name);
	} else {
		document.forms[1].elements[field_name].value = "No";
		//alert("CheckBox is false" + document.forms[1].elements[field_name].name);
	}
}

function CheckBoxTrueFalse(field_name) {
// alert('in CheckBox');

	if (document.forms[1].elements[field_name].checked) {
		document.forms[1].elements[field_name].value = 1;
		//alert("CheckBox is true " + document.forms[1].elements[field_name].name);
	} else {
		document.forms[1].elements[field_name].value = 0;
		//alert("CheckBox is false" + document.forms[1].elements[field_name].name);
	}
}
function CheckRadioButton(field_name, value) {
//alert('in CheckRadioButton ');
	document.forms[1].elements[field_name].value = value;
}

function CheckRadio(field_id, Day, Quantity, Price, ShippingCost, BoardPrice, ToolingCharge) {
//function CheckRadio(field_id, Day, Quantity, Price, Tooling) {
//alert("in CheckRadio");
//alert("field_id = " + field_id);
//alert(Day);
//alert(Quantity);
//alert("Price = " + Price);
//alert("Tooling Charge = " + ToolingCharge);
//alert("Board Price = " + BoardPrice);

	var previous_field_id = get_field_value("parameters[field_id]");

//alert("previous_field_id = " + previous_field_id);

	if (Price == -1) {
		alert("Custom Quote Required");
		
		// Uncheck any invalid selection (e.g. N/A) and select the previous valid selection if any.
		with (document.forms[1])
		{
			for (i = 0; i < length ; i++)
			{
				// We need to include the checkbox because the radio button is mixed with it.
				if ((elements[i].type == 'radio') || (elements[i].type == 'checkbox'))
				{
					if ((elements[i].name == 'board_price') || (elements[i].name == 'e_test'))
					{
						do
						{
							if ((elements[i].name == 'board_price') && (elements[i].value == -1))
								elements[i].checked = false;
							if ((elements[i].name == 'board_price') && (elements[i].id == previous_field_id))
								elements[i].checked = true;
							i++;
						} while ((elements[i].name == 'board_price') || (elements[i].name == 'e_test'));
					}
				}
			}
		}

		return;
	}
	
	// Save field values
	set_field_value("qty", Quantity);	
	set_field_value("parameters[lead_time]", Day);
	set_field_value("parameters[unit_price]", Price);	
	set_field_value("parameters[tooling]", ToolingCharge);	
	set_field_value("parameters[field_id]", field_id);		
	set_field_value("parameters[shipping_cost]", ShippingCost);	
	set_field_value("parameters[board_price]", BoardPrice);	

	// tooling is a special case... we have to set it in price matrix 
	// then we set parameters[tooling] declared in quote_form here.
///	var tooling = "tooling";
///	if (get_field_id_row(field_id) >= 5)
///		set_field_value("parameters[tooling]", document.forms[1].elements[tooling].value);	
///	else
///		set_field_value("parameters[tooling]", 0);

///	var quote_number = "quote_number";
///	set_field_value("parameters[quote_number]", document.forms[1].elements[quote_number].value);
	
	set_quote_price();	
//	setElementVisibility("quote_price")
}

// This function needs to be mofidied if the number of rows is greater than 9
function get_field_id_row(field_id) {
//alert("in get_field_id_row");
//alert("field_id = " + field_id);
	var str = field_id.toString();
//alert("str = " + str);
//alert("str.length = " + str.length);	
	if (str.length >= 3)
		return str.charAt(0);
	else 
		return -1;
}
	
function set_quote_price() {
//alert("set_quote_price");	
	// The following form fields are hopefully initialized by now
	var quote_price = "quote_price";
	var qty = "qty";
	var unit_price = "parameters[unit_price]";
//	var e_test_price = "parameters[e_test_price]";
	var field_id = "parameters[field_id]";
//	var e_test_price = "parameters[e_test_price]";
//	var e_test_field_id = "parameters[e_test_field_id]";
//	var tooling_price = "parameters[tooling]";
	
//alert('[qty].value = ' + document.forms[1].elements[qty].value);
//alert('[unit_price].value = ' + document.forms[1].elements[unit_price].value);
//alert('[e_test_price].value = ' + document.forms[1].elements[e_test_price].value);

	// Update Quote Price if the price is not equal to N/A
	if (document.forms[1].elements[qty].value > 0) {
		var price = new Number((document.forms[1].elements[qty].value * document.forms[1].elements[unit_price].value));
		
		// Tooling charge to price
			//var tooling = "parameters[tooling]";
//alert("tooling_price = " + document.forms[1].elements[tooling].value);			
			//var tooling_price = new Number(document.forms[1].elements[tooling].value);
			//price += tooling_price;
	
		//var e_test_price_num = new Number(document.forms[1].elements[e_test_price].value);
		//price += e_test_price_num;

 		document.forms[1].elements[quote_price].value = '$' + price.toFixed(2);

		// There are two quote_price variables. one in shopping_cart_column (quote_price) and 
		// one in quote_form.
		var quote_price = "parameters[quote_price]";
 		document.forms[1].elements[quote_price].value = price.toFixed(2);

	}
	

//alert(value);
//alert(document.forms[1].elements[field_name].value);
}

function CheckETest(field_id, Quantity, Price) {
//alert("CheckETest");
//alert('field_id '+field_id);
//alert(Quantity);
//alert(Price);
//alert(document.forms[1].name);

	var checks = 0;
  var isOK = true;

	with (document.forms[1])
	{
		for (i = 0; i < length ; i++)
		{
			if (elements[i].type == 'checkbox')
			{
				if (elements[i].name == 'e_test')
				{
					do
					{
						if ((elements[i].checked) && (Number(elements[i].id) != field_id))
						{
//						alert(elements[i].id);
//						alert(Number(elements[i].id));
//						alert('field_id '+field_id);
							elements[i].checked = false;
						}
						// If the E Test checkbox is uncheck we need to adjust the price and 
						// set parameters[e_test_field_id] to zero.  
						if ((Number(elements[i].id) == field_id) && !elements[i].checked)
						{
							Price = 0;
							field_id = 0;
//alert('element_checked = ' + elements[i].checked);							
						}
						
					i++;
					} while(elements[i].name == 'e_test');
				}
			}
		}
	}
	set_field_value("parameters[e_test_field_id]", field_id);	
	set_field_value("parameters[e_test_price]", Price);	
	set_quote_price();	
}

function get_field_value(field_name) {
//alert("get_field_value");
//alert("field_value = " + document.forms[1].elements[field_name].value);
 	return document.forms[1].elements[field_name].value;
}

function set_field_value(field_name, value) {
//alert('field name = ' + field_name + ' field value = ' + value);
	document.forms[1].elements[field_name].value = value;
//alert(value);
//alert('field_value = ' + document.forms[1].elements[field_name].value);
}

function setElementVisibility(field_name) {
alert("setElementVisibility")
alert(document.forms[1].elements[field_name].name)
   document.forms[1].elements[field_name].style.display = "inline";
   document.forms[1].elements[field_name].style.visibility = "visible";
alert(document.forms[1].elements[field_name].value)
}

function CheckRadioValue(Day, Quantity, Price) {
// 	document.forms[1].elements[field_name].value = value;
alert('CheckRadioValue');
//alert(document.forms[1].elements[field_name].value);
}

function CheckArrayUp(XDim, YDim, ArrayUp, ArrayX, ArrayY, QTY1, QTY2, QTY3, QTY4) {
//	alert('in CheckArrayUp');
//	alert('XDim ' + document.forms[1].elements[XDim].value);
//	alert('YDim ' + document.forms[1].elements[YDim].value);
//	alert('ArrayUp ' + document.forms[1].elements[ArrayUp].value);
//	alert('ArrayX ' + document.forms[1].elements[ArrayX].value);
//	alert('ArrayY ' + document.forms[1].elements[ArrayY].value);

	if ((document.forms[1].elements[ArrayUp].value > 0) && 
		((document.forms[1].elements[ArrayX].value == '') || (document.forms[1].elements[ArrayY].value == ''))) {
      error_message = error_message + "* " + "Array quantities need to be multiples of the array up value" + "\n";
      error = true;
			return;
	}

//The total area of all of the boards combined has to be less then or equal to the array of the array � XArray * YArray.
//	XDim.value * YDim.value * ArrayUp <= XArray * YArray 
	if ((document.forms[1].elements[XDim].value * document.forms[1].elements[YDim].value * document.forms[1].elements[ArrayUp].value) >
			(document.forms[1].elements[ArrayX].value * document.forms[1].elements[ArrayY].value)) {
      error_message = error_message + "* " + "Your array up causes the total board area to be larger than your array area" + "\n";
      error = true;
			return;
	}
	
	var remainder = document.forms[1].elements[QTY1].value % document.forms[1].elements[ArrayUp].value;
	if ((Number(document.forms[1].elements[QTY1].value) < Number(document.forms[1].elements[ArrayUp].value)) || (remainder > 0)) {
      error_message = error_message + "* " + "Board Quantity 1 must be a multiple of Array Up." + "\n";
      error = true;
	}

	remainder = document.forms[1].elements[QTY2].value % document.forms[1].elements[ArrayUp].value;
	if ((Number(document.forms[1].elements[QTY2].value) < Number(document.forms[1].elements[ArrayUp].value)) || (remainder > 0)) {
      error_message = error_message + "* " + "Board Quantity 2 must be a multiple of Array Up." + "\n";
      error = true;
	}

	remainder = document.forms[1].elements[QTY3].value % document.forms[1].elements[ArrayUp].value;
	if ((Number(document.forms[1].elements[QTY3].value) < document.forms[1].elements[ArrayUp].value) || (remainder > 0)) {
      error_message = error_message + "* " + "Board Quantity 3 must be a multiple of Array Up." + "\n";
      error = true;
	}

	remainder = document.forms[1].elements[QTY4].value % document.forms[1].elements[ArrayUp].value;
	if ((Number(document.forms[1].elements[QTY4].value) < document.forms[1].elements[ArrayUp].value) || (remainder > 0)) {
      error_message = error_message + "* " + "Board Quantity 4 must be a multiple of Array Up." + "\n";
      error = true;
	}

}

var form = "";
var submitted = false;
var error = false;
var error_message = "";

function check_quote_form(form_name) {
//alert('in check_form.js prototech_boards');  
  error = false;
  form = form_name;
  error_message = "Errors have occured during the process of your form.\n\nPlease make the following corrections:\n\n";
//  alert(form_name);

	if (IsNumeric("parameters[DIMENSION_1]") == false) {
		error_message = error_message + "* " + "Board length must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[DIMENSION_2]") == false) {
		error_message = error_message + "* " + "Board width must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[ArrayUp]") == false) {
		error_message = error_message + "* " + "Array Up must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[ArrayX]") == false) {
		error_message = error_message + "* " + "Array X Dim must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[ArrayY]") == false) {
		error_message = error_message + "* " + "Array Y Dim must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[SM_HOLE]") == false) {
		error_message = error_message + "* " + "Smallest Hole Size must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
//	if (IsNumeric("parameters[MOUNTS_TOP]") == false) {
//		error_message = error_message + "* " + "Top SMD Pads must be a numeric value" + "\n";
//    alert(error_message);
//    return false;
//	}
//	if (IsNumeric("parameters[MOUNTS_BOTTOM]") == false) {
//		error_message = error_message + "* " + "Bottom SMD Pads must be a numeric value" + "\n";
//    alert(error_message);
//    return false;
//	}

	if (IsNumeric("parameters[QTY1]") == false) {
		error_message = error_message + "* " + "Quantity 1 must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[QTY2]") == false) {
		error_message = error_message + "* " + "Quantity 2 must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[QTY3]") == false) {
		error_message = error_message + "* " + "Quantity 3 Dim must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}
	if (IsNumeric("parameters[QTY4]") == false) {
		error_message = error_message + "* " + "Quantity 4 Dim must be a numeric value" + "\n";
    alert(error_message);
    return false;
	}

//  check_input("parameters[part_number]", '3', "The Part Number must have at least 3 characters");
  check_input("parameters[part_number]", '3', "The Part Number must have at least 3 characters");
  check_select("parameters[LAYER]", '', "You must select a valid Number of Layers");
  check_input("parameters[DIMENSION_1]", '1', "X Dimension must be >= 0.5 and <= 16");
	check_range("parameters[DIMENSION_1]", 0.5, 20, "X Dimension must be >= 0.5 and <= 20");
  check_input("parameters[DIMENSION_2]", '1', "Y Dimension must be >= 0.5 and <= 22");
	check_range("parameters[DIMENSION_2]", 0.5, 33, "Y Dimension must be >= 0.5 and <= 33");

	CheckArrayUp("parameters[DIMENSION_1]", "parameters[DIMENSION_2]", "parameters[ArrayUp]", "parameters[ArrayX]", "parameters[ArrayY]", "parameters[QTY1]", "parameters[QTY2]", "parameters[QTY3]", "parameters[QTY4]");
  check_range("parameters[ArrayX]", 0.5, 22, "ArrayX must be >= 0.5 and <= 22");
  check_range("parameters[ArrayY]", 0.5, 35, "ArrayY must be >= 0.5 and <= 35");

  check_range("parameters[SM_HOLE]", 0.008, 0.25, "Smallest Hole Size must be >= 0.008 and <= 0.25");
//  check_range("parameters[MOUNTS_TOP]", 0, 100000, "Top SMD Pads must be >= 0 and <= 100,000");
//  check_range("parameters[MOUNTS_BOTTOM]", 0, 100000, "Bottom SMD Pads must be >= 0 and <= 100,000");

  check_range("parameters[QTY1]", 0, 50000, "Quantity 1 must be >= 0 and <= 50,000. For arrays qty/arrup < 50,000");
  check_range("parameters[QTY2]", 0, 50000, "Quantity 2 must be >= 0 and <= 50,000. For arrays qty/arrup < 50,000");
  check_range("parameters[QTY3]", 0, 50000, "Quantity 3 must be >= 0 and <= 50,000. For arrays qty/arrup < 50,000");
  check_range("parameters[QTY4]", 0, 50000, "Quantity 4 must be >= 0 and <= 50,000. For arrays qty/arrup < 50,000");

	check_input("parameters[email_address]", '3', "The email address is a required field");
//alert('in check_form.js 2'); 
  if (error == true) {
    alert(error_message);
    return false;
  } else {
//		document.getElementById("standardTable").value = '';

	//var standardTable = "standardTable";
	//document.forms[1].elements[standardTable].value = '';
		var price_tables = document.getElementById('price_tables');
		price_tables.style.display = 'block';
		document.getElementById("price_tables").innerHTML = "<span style='font-weight: bold; font-size:12px; color:#CC0000; text-decoration:blink;'>&nbsp;&nbsp;&nbsp;Processing Quote...</span><img src='/imgs/loading.gif' alt='Loading...' title='Processing Quote' width='300' />"
		display_price_matrix(form_name, 'prototech_boards');
		$('quote_mail_message_box').hide();
		window.scrollTo(0,0);
//alert('in check_form.js 3'); 		
    return true;
  }
}
