// JavaScript Document
var curObj;
var maxObj;
var str_name;
var str_value;
var message;
var txtname="Name";
var txtaddr="Address";
var txttel="Telephone Number";
var txtfax="Fax Number";
var txtemail="E-mail address";
var txtadd="Additional";
var selprd="selproduct";
var selclr="selcolor";
var selpck="selpack";
var txtqty="txtquantity";
var tbOrderLine="orderline";
var ordLine=0;
var parm="";
var eqmark="=";
var symbol="&";
var prvProduct="";
var aryHQColorText = new Array("Black","Copper","Gold","Silver");
var aryMPColorText = new Array("Black   ");
var aryHQPackText = new Array("20 Blocks","40 Blocks","60 Blocks","80 Blocks");
var aryMPSPackText = new Array("10 Bars   ");
var aryMPMPackText = new Array("12 Bars   ");
var aryMPBPackText = new Array("12 Bars   ");
// Start all process of order page
function mainProcess() {
	//Start verify all input field
	var Error = verify();
	//Check all input is not empty
	if (!Error) {
		//Check order line is empty
		if (ordLine==0) {
			alert(message + "order detail !"); }
		else {
			prepareQueryString();
			open("script/complete.php"+"?"+parm,'w01','toolbar=no,status=no,menubar=no,resizeable=no,scrollbars=no,width=510,height=400,left=0,top=0');
			clearOrderForm();
		}
	}
}
// Start process of order detail line
function preProcess() {
	var prd = getSelect(selprd);
	var clr = getSelect(selclr);
	var pck = getSelect(selpck);
	var qty = document.getElementById(txtqty).value;
	if (prd=="") {
		alert("Product must be select one."); }
	else if (clr=="") {
		alert("Color must be select one."); }
	else if (pck=="") {
		alert("Pack must be select one."); }
	else if (trim(qty)=="") {
		alert("Quantity must be input."); }
	else {
		insertRow(prd,clr,pck,qty);
		resetInput();
	}
}

function verify() {
	var errorValue=false;
	maxObj=document.orderform.length - 1;
	//message =" is required, please enter a value in the field.";
	message = "You must fill in your ";
	for(curObj=0;curObj<maxObj;curObj++) { //for verifyvalue
		obj_name=document.orderform[curObj].name;
		obj_value=document.orderform[curObj].value ;
		if (obj_name==selprd || obj_name==selclr || obj_name==selpck || obj_name==txtqty || obj_name=="additional") {
			//Ignore input object in order line (not verfity by main process)
		} else if (trim(obj_value)=="") {
			//alert(document.orderform[curObj].id + message);
			alert(message + document.orderform[curObj].id + " !");
			maxObj=curObj;
			errorValue=true;
		} else if (obj_name=="email") { 
					var validate = isEmail(obj_value);
					if (!validate) {
						alert(document.orderform[curObj].id + " is invalid."); 
						maxObj=curObj; 
						errorValue=true; }
		} 

	}//for verifyvalue
	return errorValue;
}//verify

function isEmail(str) {
  	// are regular expressions supported?
  	var supported = 0;
  	if (window.RegExp) {
    	var tempStr = "a";
    	var tempReg = new RegExp(tempStr);
    	if (tempReg.test(tempStr)) supported = 1;
  	}
  	if (!supported) 
    	return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  	return (!r1.test(str) && r2.test(str));
}

//function isNumber() {
	//var oldstring = document.formone.inputone.value;
	//var newstring = parseFloat(oldstring).toString();
	//var InpValid=1;
	//if (oldstring.length == newstring.length &amp;&amp; newstring != "NaN") {
		//alert("Input is a number");
	//}
	//else {
		//alert("Input is not a number");
		//InpValid=0;
	//}
//}

function getSelect(selectName) {
	var x=document.getElementById(selectName);
	return (x.options[x.selectedIndex].text);
}

function insertRow(val1,val2,val3,val4){
	ordLine++;
	var lastLine=ordLine;
	var xRow=document.getElementById(tbOrderLine).insertRow(lastLine);
	xRow.bgColor="#FFFFCC";
	xRow.style.color="#000000";
	var y0col=xRow.insertCell(0);
	var y1col=xRow.insertCell(1);
	var y2col=xRow.insertCell(2);
	var y3col=xRow.insertCell(3);
	var y4col=xRow.insertCell(4);
	var y5col=xRow.insertCell(5);
	y0col.innerHTML=lastLine;
	y1col.innerHTML=val1;
	y2col.innerHTML=val2;
	y3col.innerHTML=val3;
	y4col.innerHTML=val4;
	y5col.innerHTML="";
	var aElement=document.createElement('<INPUT TYPE="button" class="bodystylepink" VALUE="Remove" ID=' + xRow.rowIndex + ' onClick="deleteRow()">');
	y5col.appendChild(aElement);
	//alert(document.getElementById(tbOrderLine).innerHTML);
}
//Start function delete current row and reset sequence number
function deleteRow() {
	//Declare current row from current button Id
	var currentRow=event.srcElement.id;
	//Get element in order line table and delete row
	document.getElementById(tbOrderLine).deleteRow(currentRow);
	//Check row deleted is not last line
	if (ordLine>currentRow) {
		//Get all rows from order line table
		var xRow=document.getElementById(tbOrderLine).rows;
		//Declare variable new row
		var newRow;
		//Loop rearrange sequence number and rearrange button id
		for (newRow=currentRow;newRow<=ordLine-1;newRow++) {
			var yCol=xRow[newRow].cells;
			yCol[0].innerHTML=newRow;
			var btn=document.getElementById(eval(newRow)+1);
			btn.id=newRow;
		} // end for
	} //end if
	//Decrease counter for last order line
	ordLine--;
} //end function deleteRow

function resetInput() {
	reBuildOption();
	document.getElementById(selprd).selectedIndex=0;
	document.getElementById(selclr).selectedIndex=0;
	document.getElementById(selpck).selectedIndex=0;
	document.getElementById(txtqty).value="";
	prvProduct="";
}

function trim(strText) {
	strText = "" + strText;
	// this will get rid of leading spaces
	while (strText.substring(0,1) == ' ')			
	    strText = strText.substring(1, strText.length)
	// this will get rid of trailing spaces
	while (strText.substring(strText.length - 1,strText.length) == ' ')			
	    strText = strText.substring(0, strText.length-1)
	return strText
}

function clearOrderForm() {
	//Start Clear all input field
	document.getElementById(txtname).value="";
	document.getElementById(txtaddr).value="";
	document.getElementById(txttel).value="";
	document.getElementById(txtfax).value="";
	document.getElementById(txtemail).value="";
	document.getElementById(txtadd).value="";
	//Check order line has been already exist
	if (ordLine > 0) {
		//Get element in order line table
		var xTable = document.getElementById(tbOrderLine);
		//Start delete all order line
		for(i=ordLine;i>0;i--) {
			xTable.deleteRow(i);
		}
		//Reset counter for last order line 
		ordLine=0;
	}
}

function prepareQueryString() {
	var name=document.getElementById(txtname).value;
	var addr=document.getElementById(txtaddr).value;
	var tel=document.getElementById(txttel).value;
	var fax=document.getElementById(txtfax).value;
	var mail=document.getElementById(txtemail).value;
	var add=document.getElementById(txtadd).value;
	parm="xname"+eqmark+name+symbol+"xaddr"+eqmark+addr+symbol+"xtel"+eqmark+tel+symbol;
	parm=parm+"xfax"+eqmark+fax+symbol+"xmail"+eqmark+mail+symbol+"xadd"+eqmark+add+symbol;
	parm=parm+"totalline"+eqmark+ordLine+symbol;
	
	var xRow=document.getElementById(tbOrderLine).rows;
	var txtcol1="prd[";
	var txtcol2="clr[";
	var txtcol3="pck[";
	var txtcol4="qty[";
	var yCol;
	for(i=1;i<=ordLine;i++) {
		yCol=xRow[i].cells;
		parm=parm+txtcol1+i+"]"+eqmark+yCol[1].innerHTML+symbol;
		parm=parm+txtcol2+i+"]"+eqmark+yCol[2].innerHTML+symbol;
		parm=parm+txtcol3+i+"]"+eqmark+yCol[3].innerHTML+symbol;
		parm=parm+txtcol4+i+"]"+eqmark+yCol[4].innerHTML+symbol;
	}
}

function changeOption() {
	//Get product value in Select Element
	var prd=getSelectObject(selprd).value;
	//Move product value (2 character) to variable
	var newProduct=prd.substring(0,2);
	//Check Option has been changed
	if (prvProduct!=newProduct) {
		//Move new option value to indicator variable
		prvProduct=newProduct;
		//Get Select Element (Color Option)
		var clrOption=getSelectObject(selclr);
		//Remove all Option color
		removeOption(clrOption);
		//Get Select Element (Pack Option)
		var pckOption=getSelectObject(selpck);
		//Remove all Option pack
		removeOption(pckOption);
		//alert(newProduct);
		if (trim(newProduct)=="") {
			//Set dafault to Select Element
			reBuildOption();
		} else if (newProduct=="HQ") {
			//alert("HQ" + newProduct);
			//Add new option to Select Element (Color)
			addOption(clrOption,aryHQColorText); 
			//Add new option to Select Element (Pack)
			addOption(pckOption,aryHQPackText);
		} else if (newProduct.substring(0,1)=="W") {
			var newProduct=prd.substring(0,1);
			//Move new option value to indicator variable
			prvProduct=newProduct;
			//Add new option to Select Element (Color)
			addOption(clrOption,aryMPColorText); 
			//Add new option to Select Element (Pack)
			addOption(pckOption,aryMPSPackText);
		} else if (newProduct.substring(0,1)=="C") {
			var newProduct=prd.substring(0,2);
			//Move new option value to indicator variable
			prvProduct=newProduct;
			//alert(newProduct);
			//Add new option to Select Element (Color)
			addOption(clrOption,aryMPColorText);
			//Declare new variable
			var aryMPPackText;
			//Check case product value
			switch (newProduct) {
				//Case MP Small Pack
				//case "W":
					//aryMPPackText=aryMPSPackText;
					//break;
				//Case MP Medium Pack
				case "C1":
					aryMPPackText=aryMPMPackText;
					break;
				//Case MP Big Pack	
				case "C2":
					aryMPPackText=aryMPBPackText;
					break;
				default:
					break;
			} //end switch
			//Add new option to Select Element (Pack)
			addOption(pckOption,aryMPPackText);
		} //end if
	} //end if
} //end Function

function getSelectObject(selectName) {
	var x=document.getElementById(selectName);
	return (x);
}

function removeOption(selectObject) {
	//Get number of member in Select Element
	var numObj=selectObject.length;
	for(i=numObj;i>0;i--) {
		selectObject.remove(i);
	}
}

function addOption(obj,aryText) {
	//Get number of member in Select Element
	var numObj=obj.length;
	for(i=0;i<aryText.length;i++) {
		obj[numObj+i]=new Option(aryText[i]);
	}
}

function reBuildOption() {
	//Get Select Element (Color Option)
	var clrOption=getSelectObject(selclr);
	//Remove all Option color
	removeOption(clrOption);
	//Add new option to Select Element (Color)
	addOption(clrOption,aryHQColorText);
	//Get Select Element (Pack Option)
	var pckOption=getSelectObject(selpck);
	//Remove all Option pack
	removeOption(pckOption);
	//Add new option to Select Element (Pack)
	addOption(pckOption,aryHQPackText);
	addOption(pckOption,aryMPSPackText);
	addOption(pckOption,aryMPMPackText);
}