// JavaScript Document
// spareparts form v 0.3 - 12 nov 2008

/*******************************************
Add Row Class
*******************************************/
function addRowClass(tableID, tableBody, instructionArray, ankertagID)
{
	// write add link to page
	var oTable = document.getElementById(tableID);
	if(oTable) 
	{
		var oAnker = document.getElementById(ankertagID);
		// make the link
		var oPara = document.createElement("a");
		oPara.setAttribute("href", "#tabel");
		oPara.onclick = function() { addFormRow(tableBody, instructionArray); return false; }
		var oTxt = document.createTextNode("Add row");
		oPara.appendChild(oTxt);
		oAnker.appendChild(oPara);
	}
}
/* main function */
function addFormRow(tableBody, fieldArray)
{
	tableBody = document.getElementById(tableBody);
	newRow = document.createElement("tr");
	rowNum = tableBody.getElementsByTagName("tr").length - 1;
	newRow.id = "row_" + rowNum;
	
	for (var i = 0; i <= fieldArray.length; i++)
	{
		oCell = document.createElement("td");
		oInput = document.createElement("input");

		switch(fieldArray[0][i])
		{
			case "text":
			createTextbox(fieldArray[2][i], rowNum, fieldArray[1][i]);
			break;
			
			case "link":
			createLink(fieldArray[2][i], rowNum, fieldArray[1][i]);
			break;
			
			default:
			//an input error has occurred. Nothing will be written out to the cell.
			break;
		}
		oCell.appendChild(oInput)
		newRow.appendChild(oCell)
	}
	rowNum += 1;
	tableBody.appendChild(newRow)
	rowNumber = rowNum;		// total number of rows created
}

/* methods */
function createLink(fieldname, rowNum, fieldvalue)
{
	oInput = document.createElement("a");
	oInput.setAttribute("href", "#");
	oInput.onclick = function() { handleButton("sparepartsbody", rowNum); return false; }
	var oLinkText = document.createTextNode(fieldvalue);
	oInput.appendChild(oLinkText);
	return oInput;
}

function createTextbox(fieldname, rowNum, fieldsize)
{
	oInput = document.createElement("input");
	oInput.type = "text";
	oInput.size = fieldsize;
	if (fieldname != "descr_") {	// verplicht veld
		oInput.setAttribute("class", "verplicht");
	}
	oInput.id = fieldname + "_" + rowNum;
	oInput.name = fieldname + "_" + rowNum;
	return oInput;
}

/***************************************************
Set up class
****************************************************/

var setupArray = new Array();
setupArray[0] = new Array();
setupArray[1] = new Array();
setupArray[2] = new Array();
// input TYPES
setupArray[0][0] = "text";
setupArray[0][1] = "text";
setupArray[0][2] = "text";
setupArray[0][3] = "link";
// input properties: field length for text, blank for radio/check, array for select
setupArray[1][0] = 16;
setupArray[1][1] = 24;
setupArray[1][2] = 4;
setupArray[1][3] = 'Remove';
// input field names
setupArray[2][0] = "partnum_";
setupArray[2][1] = "descr_";
setupArray[2][2] = "amount_";
setupArray[2][3] = "remove_";

var rowNumber = 1;

window.onload = function() { 
	addRowClass('sparepartstable', 'sparepartsbody', setupArray, 'anker'); 
	addFormRow('sparepartsbody', setupArray);
}

function handleButton(tableBody,row_num) {
	// verwijderd rows
	var obj = document.getElementById(tableBody);
	var objTr = document.getElementById("row_"+row_num);
	// tmp methode om velden te legen en row te verbergen
	document.getElementById(setupArray[2][0]+"_"+row_num).value = "";
	document.getElementById(setupArray[2][1]+"_"+row_num).value = "";
	document.getElementById(setupArray[2][2]+"_"+row_num).value = "";
	objTr.style.display="none";
	//obj.removeChild(objTr); // zou moeten werken ???
}
function clearRowFields(row_num) {
	// tmp function om 1e veld te legen
	document.sparepartsForm["partnum__"+row_num].value = "";
	document.sparepartsForm["descr__"+row_num].value = "";
	document.sparepartsForm["amount__"+row_num].value = "";
}
function setRequest(check) {
	var blokObj = document.getElementById("sparepartsBlok");
	if (check) {
		blokObj.style.display = "block";
	}
	else {
		blokObj.style.display = "none";
	}
}
function checkShipment(obj) {
	// control 'other' and show/hide textfield
	var objField = document.getElementById("shipment_method");
	if (obj.options[obj.selectedIndex].value == "") {
		objField.style.visibility = "visible";
	}
	else {
		objField.style.visibility = "hidden";
		//formulier.shipment_method.value == "";
	}
}
function setDeliveryAddress(check) {
	var adresObj = document.getElementById("deliveryaddressBlok");
	if (check) {
		adresObj.style.display = "none";
	}
	else {
		adresObj.style.display = "block";
	}
}
function checkForm(formulier) {
	// kopieer adres als checkbox is aangekruisd
	if (formulier.bezorgadres.checked) {
		formulier.bezorg_adres.value = formulier.adres.value;
		formulier.bezorg_postcode.value = formulier.postcode.value;
		formulier.bezorg_plaats.value = formulier.plaats.value;
		formulier.bezorg_land.value = formulier.land.value;
	}
	document.sparepartsForm.rownums.value = rowNumber;
	
	var formOk = true;
	if (formulier.company.value == "") {
		alert("Please, fill in your company name.");
		formOk = false;
	}
	else if (formulier.contact.value == "") {
		alert("Please, fill in your name.");
		formOk = false;
	}
	else if (formulier.email.value == "") {
		alert("Please, fill in your emailaddress.");
		formOk = false;
	}
	else if (formulier.adres.value == "") {
		alert("Please, fill in your address");
		formOk = false;
	}
	else if (formulier.postcode.value == "") {
		alert("Please, fill in your zip/postal code.");
		formOk = false;
	}
	else if (formulier.plaats.value == "") {
		alert("Please, fill in your city.");
		formOk = false;
	}
	else if (formulier.land.value == "") {
		alert("Please, fill in your country.");
		formOk = false;
	}
	else if (!formulier.bezorgadres.checked) {	// bezorgadres
		if (formulier.bezorg_adres.value == "") {
			alert("Please, fill in your delivery address");
			formOk = false;
		}
		else if (formulier.bezorg_postcode.value == "") {
			alert("Please, fill in your delivery zip/postal code.");
			formOk = false;
		}
		else if (formulier.bezorg_plaats.value == "") {
			alert("Please, fill in your delivery city.");
			formOk = false;
		}
		else if (formulier.bezorg_land.value == "") {
			alert("Please, fill in your delivery country.");
			formOk = false;
		}
	}
	else if (formulier.shipment.value == "" && formulier.shipment_method.value == "") {	// shipment
		alert("Please, fill in your method of shipment.");
		formOk = false;
	}
	else if (formulier.machine_type.value == "") {
		alert("Please, fill in your machine type.");
		formOk = false;
	}
	else if (formulier.serial_number.value == "") {
		alert("Please, fill in your serial number.");
		formOk = false;
	}
	
	return formOk;
}
