/* ########### AJAX ENGINE TO SEND/RECEIVE REQUEST  ###############
*  The script which will send and receiver the plan related data
*  to php(fetcher.php). Mainly used to get plan setup, monthly cost,
*  extra, line setup cost.
*
*/

// define global variables.
var xmlHttp		= RequestObject();

// define global variables
var HOST = "fetcher.php"; // the php script which will fetch and return data
var PLANSETUP = 0;
var PLANMONTHLY = 0;
var EXTRASETUP = 0;
var EXTRAMONTHLY = 0;
var MAXLINES = 1;
var LINEPRICE = 0;
var LINESETUP = 0;
var PLANID = 0;
var MINFREELINE = 1;
var GROSSAMOUNT = 0;
var VAT = 0;
var TOTALAMOUNT = 0;
var a = 0; // used in line price calculation
var b = 0; // used in line price calculation
var EXTRATOTAL = 0;
var SETUPTOTAL = 0;
var BILLINGPERIOD = 1;
var BILLINGCHAGE = "N";
var aEXTRAVALUE = Array();
var aEXTRAID    = Array();

// set the currency symbol
var CURRENCYSYMBOL = "kr.";
var LINECOUNTER = 1;


// create xmlHTTP request for different browsers. 
function RequestObject()
{
var xmlHttp;
	
	
	
	if(window.ActiveXObject)
	{
		var tryPossibleVersions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
		
		for(i=0;i<tryPossibleVersions.length;i++) {
			try
			{
				xmlHttp = new ActiveXObject(tryPossibleVersions[i]);
				break;
			}
			catch (e)
			{
			xmlHttp = false;
			}
		}
	}
	else
	{
		try
		{
		xmlHttp = new XMLHttpRequest();
		}
		catch (e)
		{
		xmlHttp = false;
		}
	}
	if (!xmlHttp)
	alert("Error creating the XMLHttpRequest object.");
	else
	return xmlHttp;

	

}

/**
*  Function will be called by html file with different reqType(request type).
*  manily used to get plan type, extra, promo details for selected plan group
*/
function readData(id,reqType) {
	
	if(xmlHttp) {
		
		
		try
		{
			
			if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
				
				// set the currency variable
				CURRENCYSYMBOL = document.getElementById('iCurrencySymbol').value;
				// set the billing period
				BILLINGPERIOD = document.getElementById('BillingCycle').value;

				if(reqType == 'planType') {
					myVar = "action=planType&groupid="+id;
					xmlHttp.open("POST", HOST,true);
					xmlHttp.setRequestHeader ("Content-Type","application/x-www-form-urlencoded");
					xmlHttp.onreadystatechange = readPlanType;
					xmlHttp.send(myVar);
				}
				else if(reqType == 'extra') {
					PLANID = id;
					myVar = "action=extra&plan="+id;
					xmlHttp.open("POST", HOST,true);
					xmlHttp.setRequestHeader ("Content-Type","application/x-www-form-urlencoded");
					xmlHttp.onreadystatechange = readExtra;
					xmlHttp.send(myVar);
				}
				else if(reqType == 'Promo') {
					// get promo and plan id
					
					var oPromo = document.getElementById("idPromo");
					vPromo = oPromo.value;
					myVar = "action=promo&promokey="+vPromo+"&planid="+PLANID;
					xmlHttp.open("POST", HOST,true);
					xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
					xmlHttp.onreadystatechange = readPromo;
					xmlHttp.send(myVar);
				}
				else if(reqType == 'validateLineUser') {
					
					// make the query string to pass 
					var qry = "";
					var oCounter = document.getElementById("iLineCounter");
					var name = "";
					var alert_type = "";
					var alert_add = "";
									
					for(i=0;i<oCounter.value;i++) {
						name = document.getElementById("id_LinePerson_"+i);
						alert_type = document.getElementById("id_alertType_"+i);
						alert_add = document.getElementById("id_AlertAddress_"+i);
						qry = qry + "id_alertType_"+i+"="+escape(alert_type.value)+"&id_AlertAddress_"+i+"="+escape(alert_add.value)+"&";
					}
					myVar = "action=lineUser&"+qry+"cntr="+oCounter.value;
					xmlHttp.open("POST", HOST,true);
					xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
					xmlHttp.onreadystatechange = validationStatusLineUser;
					xmlHttp.send(myVar);
				}
			}

		
		}catch (e) {
			alert(e.toString());
		}

	}
	
}

/* @Descriptio: Function fills the plan combo dynamicaly by fetching the
*  data from AJAX response
*  @Param : Ajax response
*  @Return : Fills the plan type combo
*/

function readPlanType() {
	
	try
	{
		if (xmlHttp.readyState == 4)
		{
			if (xmlHttp.status == 200)
			{
				xmlResponse = xmlHttp.responseText;
				//alert(xmlResponse);	
				var resData = xmlResponse.split("|");
				
				
				var optionLength = resData.length;
				var oPlanType = document.getElementById("planType");
				oPlanType.innerHTML = "";
				// blank all sections (for returning process)
				
					for(i=0;i<optionLength-1;i++) {
						 var inData = new Array();
						 inData = resData[i].split("~");
						if(inData.length>0) {
							var option = new Option();
							document.sales.planType.options[i] = option;
							document.sales.planType.options[i].value = inData[0];
							document.sales.planType.options[i].text = inData[1];
							
						}
					}
				
				clearAllSections();
				
				
			}
			else
			{
			alert("There was a problem accessing the server: " +
			xmlHttp.statusText);
			}
		}
	}
	catch (e)
	{
		alert("Error in server response pls try after some time"+e.toString());
	}
}

/* @Descript : Function read the available extras based on plan type.
*  it also set the following values in global var (plan setup, monthly, maxline, linesetup,
*  linemonthly.
*  @Calls : calls other functions printPlanLines, setPlanCost
*/

function readExtra() {

	try
	{
		if (xmlHttp.readyState == 4)
		{
			if (xmlHttp.status == 200)
			{
				xmlResponse = xmlHttp.responseText;
				//alert(xmlResponse);
				var spData = xmlResponse.split("|");
				var oExtra = document.getElementById("extraData");
				var oLabelExtra = document.getElementById("lableExtra");
				
				if(spData[0] != "") {
					oLabelExtra.style.display="inline";
				}
				else {
					oLabelExtra.style.display="none";
				}
				oExtra.innerHTML = spData[0];
				oExtra.style.display = "inline";

				 EXTRASETUP = 0;
				 EXTRAMONTHLY = 0;
				 MAXLINES = 0;
				 LINESETUP = 0;
				 LINEPRICE = 0;
				 EXTRATOTAL = 0;
				

				//assign plan setup and monthly to global var
				PLANSETUP = spData[1];
				PLANMONTHLY = spData[2];
				PLANMONTHLY = parseInt(PLANMONTHLY*BILLINGPERIOD);
				MAXLINES = spData[3];
				LINESETUP = spData[4];
				LINEPRICE = spData[5];
				LINEPRICE = parseInt(LINEPRICE*BILLINGPERIOD);
				MINFREELINES = spData[6];
				

				// print number of lines available for this plan
				
				printPlanLines();
				
				//clear all spanes
				var oExtraSetup = document.getElementById('extraSetup');
				var oExtraMonthly = document.getElementById('extraMonthly');
				var oExtraTotalMonthly = document.getElementById('extraTotalMonthly');
				var oLineSetup = document.getElementById('lineSetup');
				//var oLinePrice = document.getElementById('linePrice');
				var oGross     = document.getElementById('grossAmount');
				var oVat     = document.getElementById('vat');
				var oTotal     = document.getElementById('totalAmount');
				
				oExtraSetup.innerHTML = CURRENCYSYMBOL+"0.00";
				oExtraMonthly.innerHTML = CURRENCYSYMBOL+"0.00";
				oLineSetup.innerHTML = CURRENCYSYMBOL+"0.00";
				//oLinePrice.innerHTML = CURRENCYSYMBOL+"0.00";
				oGross.innerHTML = CURRENCYSYMBOL+"0.00";
				oVat.innerHTML = CURRENCYSYMBOL+"0.00";
				oTotal.innerHTML = CURRENCYSYMBOL+"0.00";
				oExtraTotalMonthly.innerHTML = CURRENCYSYMBOL+"0.00";

				// print the setup, monthly cost for this plan
				
				
				// if there is no line for this plan
				/* Note: the default value of hLineCounter is set to 1 in tpl. to
				*  show one default line. but when a plan will not have any line
				*  overwrite the default value to 0.
				*/

				if(MINFREELINES == 0) {
					document.getElementById('iLineCounter').value=0;
				}
				else if(BILLINGCHAGE == 'Y') {
					document.getElementById('iLineCounter').value=LINECOUNTER;
				}
				else {
					document.getElementById('iLineCounter').value=1;
				}
				oLineCounter = document.getElementById('iLineCounter');
				
				
				printLineCost(oLineCounter.value);
				
				/* does not delete the user detail when user change the billing
				*  cycle.
				*/
				if(BILLINGCHAGE == 'N') {
					initLineUsers();
				}
				// The code will only execute to update the extra price after
				// change in billing cycle.
				if(BILLINGCHAGE == 'Y' && spData[0] !="") {
					
					fillExtraAfterCycleChange();
				}
			
			}
			else
			{
			alert("There was a problem accessing the server: " +
			xmlHttp.statusText);
			}
		}
	}
	catch (e)
	{
		alert("Error in server response pls try after some time"+e.toString());
	}

}

// read the discounts available for given promos.
function readPromo() {
	
	try
	{
		
		if (xmlHttp.readyState == 4)
		{
			if (xmlHttp.status == 200)
			{
				xmlResponse = xmlHttp.responseText;
				
				var oPromoPlanId = document.getElementById('hIdPromoPlanId');
				var oPromoDisSetup = document.getElementById('hIdPromoDisSetup');
				var oPromoDisMonthly = document.getElementById('hIdPromoDisMonthly');
				
				oPromoPlanId.value = PLANID;
				oPromoDisSetup.value = 0;
				oPromoDisMonthly.value = 0;

				var set = 0;
				var mon = 0;
				var aPromo = "";
				if(xmlResponse == '') {
					aPromo = "";
				}
				else {
					var aPromo = xmlResponse.split("|");
					
					if(aPromo.length>0) {
						set = aPromo[0];
						mon = aPromo[1];
					}
				}

				
				if(aPromo != "") {
					//set the hidden fields for promos and call the functions
					
					oPromoDisSetup.value = set;
					oPromoDisMonthly.value = mon;
				}
				// call functions to update prices
				setPlanCost();
				
				


			}
		}
	}
	catch (e) {
		alert("Error in server response pls try after some time"+e.toString());
	}
}

/* Function will execute when a user select num of line.
*  Based on num line the function returns rows to enter persons.
*/
function printLineUser() {
	
		
	// get number of lines to be print
	var oExistingLine = document.getElementById('iLineCounter');
	var vExistingLine = 1; 
	if(oExistingLine) {
		vExistingLine = oExistingLine.value;
	}
	else {
		vExistingLine = 1;
	}
	var totalLine = parseInt(MAXLINES) + parseInt(MINFREELINES);
	if(vExistingLine==totalLine) {
		return false;
	}
	num = parseInt(vExistingLine) + 1;
	// update number of lines
	oExistingLine.value = num;
	var oLineUser = document.getElementById('lineUser');
		
	var sLnUser = "";
	for(i=0;i<num;i++) {
		
		// read previous entered data (if any any load)
		var valName		= "";
		var valAlert	= "";
		var valAddress	= "";
		var sSelected   = "";
		var eSelected   = "";
		var fSelected   = "";

		var objName  = document.getElementById('id_LinePerson_'+i);
		var objAlert = document.getElementById('id_alertType_'+i);
		var objAddress = document.getElementById('id_AlertAddress_'+i);
		var objDelImage = document.getElementById('delImg');
		var imgSrc = objDelImage.value;
		
		if(objName && objName.value !="") {
			valName = objName.value;
		}
		if(objAlert && objAlert.value !="") {
			valAlert = objAlert.value;
			if(valAlert == 'sms') {
				sSelected = "selected";
			}
			else if(valAlert == 'email') {
				eSelected = "selected";
			}
			else if(valAlert == 'fax') {
				fSelected = "selected";
			}


		}
		if(objAddress && objAddress.value !="") {
			valAddress = objAddress.value;
		}

		sLnUser = sLnUser + "<table width='100%' cellspacing='0' cellpadding='0' border='0'>";
		sLnUser = sLnUser + "<tr><td><input type='text' id='id_LinePerson_"+i+"'  name='txtLinePerson_"+i+"' value='"+valName+"' style='width:210px;'>";
		sLnUser = sLnUser + "</td><td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='20%' align='center'>";
		sLnUser = sLnUser + "<select name='alertType_"+i+"' id='id_alertType_"+i+"'>";
		sLnUser = sLnUser + "<option value='sms' "+sSelected+">SMS</option>";
		sLnUser = sLnUser + "<option value='email' "+eSelected+">Email</option>";
		//sLnUser = sLnUser + "<option value='fax' "+fSelected+">Fax</option>";
		sLnUser = sLnUser + "</select>";
		sLnUser = sLnUser + "</td>";
		sLnUser = sLnUser + "<td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='30%'>";
		sLnUser = sLnUser + "<input type='text' name='txtAlertAddress_"+i+"' value='"+valAddress+"' style='width:125px' id='id_AlertAddress_"+i+"'>";
		sLnUser = sLnUser + "</td>";
		sLnUser = sLnUser + "<td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='10%'><img src='"+imgSrc+"' onclick='delLineUser("+i+")'></td>";
		sLnUser = sLnUser + "</tr>";
		sLnUser = sLnUser + "</table>";
	}
	oLineUser.innerHTML = "";
	oLineUser.innerHTML = sLnUser;
	
	// show the cost of line for selected number
	
	printLineCost(num);
}

/* Function will execute when a user delete line user.
*  @Param : id of record which need to be delete.
*/
function delLineUser(id) {
	
	// get number of lines to be print
	var oExistingLine = document.getElementById('iLineCounter');
	vExistingLine = oExistingLine.value;

	// if there is only one line no deletion.
	if(vExistingLine==MINFREELINES) {
		return false;
	}
	// update number of lines
	oExistingLine.value = parseInt(vExistingLine) - 1 ; // 1 less
	
	if(oExistingLine.value < 0) {
		oExistingLine.value = 0;
	}

	var oLineUser = document.getElementById('lineUser');
		
	var sLnUser = "";
	k=0;
	for(i=0;i<vExistingLine;i++) {
		
		if(i !=id) { // print all lines except deleted id
		
		// read previous entered data (if any any load)
		var valName		= "";
		var valAlert	= "";
		var valAddress	= "";
		var sSelected   = "";
		var eSelected   = "";
		var fSelected   = "";

		var objName  = document.getElementById('id_LinePerson_'+i);
		var objAlert = document.getElementById('id_alertType_'+i);
		var objAddress = document.getElementById('id_AlertAddress_'+i);
		var objDelImage = document.getElementById('delImg');
		var imgSrc = objDelImage.value;
		
		if(objName && objName.value !="") {
			valName = objName.value;
		}
		if(objAlert && objAlert.value !="") {
			valAlert = objAlert.value;
			if(valAlert == 'sms') {
				sSelected = "selected";
			}
			else if(valAlert == 'email') {
				eSelected = "selected";
			}
			else if(valAlert == 'fax') {
				fSelected = "selected";
			}


		}
		if(objAddress && objAddress.value !="") {
			valAddress = objAddress.value;
		}

		sLnUser = sLnUser + "<table width='100%' cellspacing='0' cellpadding='0' border='0'>";
		sLnUser = sLnUser + "<tr><td><input type='text' name='txtLinePerson_"+k+"' value='"+valName+"' style='width:210px;' id='id_LinePerson_"+k+"'>";
		sLnUser = sLnUser + "</td><td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='20%' align='center'>";
		sLnUser = sLnUser + "<select name='alertType_"+k+"' id='id_alertType_"+k+"'>";
		sLnUser = sLnUser + "<option value='sms' "+sSelected+">SMS</option>";
		sLnUser = sLnUser + "<option value='email' "+eSelected+">Email</option>";
		//sLnUser = sLnUser + "<option value='fax' "+fSelected+">Fax</option>";
		sLnUser = sLnUser + "</select>";
		sLnUser = sLnUser + "</td>";
		sLnUser = sLnUser + "<td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='30%'>";
		sLnUser = sLnUser + "<input type='text' name='txtAlertAddress_"+k+"' value='"+valAddress+"'  style='width:125px' id='id_AlertAddress_"+k+"'>";
		sLnUser = sLnUser + "</td>";
		sLnUser = sLnUser + "<td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='10%'><img src='"+imgSrc+"' onclick='delLineUser("+k+")'></td>";
		sLnUser = sLnUser + "</tr>";
		sLnUser = sLnUser + "</table>";
	
	k++;
	}
	
	}
	oLineUser.innerHTML = "";
	oLineUser.innerHTML = sLnUser;
	
	// show the cost of line for selected number
	printLineCost(oExistingLine.value);
}

/* @Desc: print plan lines on the basis of plan
*  @Param: number of lines
*  @Retturn : void
*/
function printPlanLines() {
	
	var oSpnLine = document.getElementById('spnLine');
	if(MINFREELINES>0) {
		oSpnLine.style.display = "inline";
	}
	else {
		oSpnLine.style.display = "none";
	}

}

/* function to print plan setup , monthly cost.
 at the same time call printAMount() to update the gross, net value
 */

function setPlanCost() {
	
	var oPlanSetup = document.getElementById('planSetup');
	var oPlanMonthly = document.getElementById('planMonthly');

	/* check whether any promos exists. if yes update the cost.
	 if the promos plan id and user selection for plan is same update the price
	*/
	var oPromoPlanId = document.getElementById('hIdPromoPlanId');
	var oPromoDicSetup = document.getElementById('hIdPromoDisSetup');
	var oPromoDisMonthly = document.getElementById('hIdPromoDisMonthly');
	var oSetupTotal = document.getElementById('setup_total');

	cPlanSetup   = PLANSETUP;
	cPlanMonthly = PLANMONTHLY;

	if(PLANID == oPromoPlanId.value) {
		cPlanSetup = parseInt(PLANSETUP) - parseInt(oPromoDicSetup.value);
		cPlanMonthly = parseInt(PLANMONTHLY) - parseInt(oPromoDisMonthly.value);
				
		
	}

	// print the price
	SETUPTOTAL = parseInt(cPlanSetup) + parseInt(EXTRASETUP) + parseInt(LINESETUP);

	oPlanSetup.innerHTML = CURRENCYSYMBOL+cPlanSetup+".00";
	oPlanMonthly.innerHTML = CURRENCYSYMBOL+parseInt(cPlanMonthly)+".00";
	oSetupTotal.innerHTML = CURRENCYSYMBOL+SETUPTOTAL+".00";

	// get number of lines selected
	var oNumLines = document.getElementById('iLineCounter');
	var numlines;
	var cLineSetup=0;
	var cLinePrice=0;
	if(oNumLines.value == 0 || oNumLines.value == 'undefined') {
		numlines = 0;
	}
	else {
		numlines = oNumLines.value;
		// if value of counter is same as freelines no charge for line
		if(numlines == MINFREELINES) {
			numlines = 0;
		}
		else {
			numlines = parseInt(numlines)-parseInt(MINFREELINES);
		}
		
		cLineSetup = parseInt(LINESETUP)*parseInt(numlines);
		cLinePrice = parseInt(LINEPRICE)*parseInt(numlines);
		EXTRATOTAL = EXTRAMONTHLY + cLinePrice;
	}
	// set global var for gross, vat, total
	
	//GROSSAMOUNT = parseInt(cPlanSetup)+parseInt(cPlanMonthly)+parseInt(EXTRASETUP)+parseInt(EXTRAMONTHLY)+parseInt(cLineSetup)+parseInt(cLinePrice);
	GROSSAMOUNT = parseInt(cPlanMonthly)+parseInt(EXTRAMONTHLY)+parseInt(cLinePrice);
	// call method print gross, vat, total
	printAmount();
}

/* function to print extra setup , monthly cost.
 at the same time call printAMount() to update the gross, net value
 */

function printExtraSetup(vSet,id) {
	var aSetup = "";
	var extraSetup = 0;
	var extraMonthly = 0;
	
	if(vSet !="") {
		aSetup = vSet.split("_");
		extraSetup = aSetup[0];
		extraMonthly = aSetup[1];
		extraMonthly = parseInt(extraMonthly*BILLINGPERIOD);
	}
	//var ob = document.getElementById(id);

	ob =document.sales.chkExtra[id];
	
	if(!ob) {
		ob = document.sales.chkExtra; // control is not an array
	}
	var oExtraSetup = document.getElementById('extraSetup');
	var oExtraMonthly = document.getElementById('extraMonthly');
	var oExtraMonthlyTotal = document.getElementById('extraTotalMonthly');
	var oSetupTotal = document.getElementById('setup_total');
	
	if(ob) {

		if(ob.checked==true) {
			
			EXTRASETUP = parseInt(EXTRASETUP)+parseInt(extraSetup);
			EXTRAMONTHLY = parseInt(EXTRAMONTHLY)+parseInt(extraMonthly);
		}
		else {
			EXTRASETUP = parseInt(EXTRASETUP)-parseInt(extraSetup);
			EXTRAMONTHLY = parseInt(EXTRAMONTHLY)-parseInt(extraMonthly);
			
		}
	}
	SETUPTOTAL = parseInt(PLANSETUP) + parseInt(EXTRASETUP) + parseInt(LINESETUP);
	
	oSetupTotal.innerHTML = CURRENCYSYMBOL+SETUPTOTAL+".00";
	oExtraSetup.innerHTML = CURRENCYSYMBOL+EXTRASETUP+".00";
	oExtraMonthly.innerHTML = CURRENCYSYMBOL+EXTRAMONTHLY+".00";
	oExtraMonthlyTotal.innerHTML = CURRENCYSYMBOL+(parseInt(EXTRAMONTHLY) + parseInt(a))+".00";
	// update total cost
	setPlanCost();
}

/* function to print line setup , monthly cost.
 at the same time call printAMount() to update the gross, net value
 */

function printLineCost(num) {
	

	if(num == MINFREELINES) {
		num = 0;
	}
	else {
		num = parseInt(num) - parseInt(MINFREELINES);
	}
	var oLineSetup = document.getElementById('lineSetup');
	var oLinePrice = document.getElementById('linePrice');
	var oExtraTotal = document.getElementById('extraTotalMonthly');
	var oSetupTotal = document.getElementById('setup_total');

	a = parseInt(LINEPRICE)*num;
	b = parseInt(LINESETUP)*num;
	SETUPTOTAL = parseInt(PLANSETUP) + parseInt(EXTRASETUP) + parseInt(b);
	
	oSetupTotal.innerHTML = CURRENCYSYMBOL+SETUPTOTAL+".00";
	oLinePrice.innerHTML  = CURRENCYSYMBOL+a+".00";
	oLineSetup.innerHTML  = CURRENCYSYMBOL+b+".00";
	oExtraTotal.innerHTML = CURRENCYSYMBOL+(parseInt(EXTRAMONTHLY) + parseInt(a))+".00";
	// update total cost
	setPlanCost();
}

// function to print gross, vat, total
function printAmount() {
	
	var oGross     = document.getElementById('grossAmount');
	var oVat     = document.getElementById('vat');
	var oTotal     = document.getElementById('totalAmount');
	
	sVat = 	parseInt(GROSSAMOUNT)+parseInt(SETUPTOTAL)
	VAT = parseInt(sVat)*(25/100);
	VAT = Math.round(VAT);
	TOTALAMOUNT = parseInt(GROSSAMOUNT) + parseInt(VAT)+parseInt(SETUPTOTAL);

	oGross.innerHTML = CURRENCYSYMBOL+GROSSAMOUNT+".00";
	oVat.innerHTML = CURRENCYSYMBOL+VAT+".00";
	oTotal.innerHTML = CURRENCYSYMBOL+TOTALAMOUNT+".00";
	
	

}

function clearAllSections() {
	
	// make objects
	var oExtraLabel = document.getElementById("lableExtra");
	var oExtra = document.getElementById("extraData");
	var oLine = document.getElementById("spnLine");
	var oPlanSetup = document.getElementById("planSetup");
	var oPlanMonthly = document.getElementById("planMonthly");
	var oExtraSetup = document.getElementById("extraSetup");
	var oExtraMonthly = document.getElementById("extraMonthly");
	var oLineSetup = document.getElementById("lineSetup");
	var oLinePrice = document.getElementById("linePrice");
	var oExtraTotalMonthly = document.getElementById('extraTotalMonthly');
	var oSetupTotal = document.getElementById('setup_total');

	var oGrossAmount = document.getElementById("grossAmount");
	var oVat = document.getElementById("vat");
	var oTotalAmount = document.getElementById("totalAmount");
	
	
	oExtraLabel.style.display="none";
	oExtra.style.display = "none";
	oLine.style.display="none";
	oPlanSetup.innerHTML = CURRENCYSYMBOL+"0.00";
	oPlanMonthly.innerHTML = CURRENCYSYMBOL+"0.00";
	oExtraSetup.innerHTML = CURRENCYSYMBOL+"0.00";
	oExtraMonthly.innerHTML = CURRENCYSYMBOL+"0.00";
	oLineSetup.innerHTML = CURRENCYSYMBOL+"0.00";
	oLinePrice.innerHTML = CURRENCYSYMBOL+"0.00";
	oExtraTotalMonthly.innerHTML = CURRENCYSYMBOL+"0.00";
	oSetupTotal.innerHTML = CURRENCYSYMBOL+"0.00";

	oGrossAmount.innerHTML = CURRENCYSYMBOL+"0.00";
	oVat.innerHTML = CURRENCYSYMBOL+"0.00";
	oTotalAmount.innerHTML = CURRENCYSYMBOL+"0.00";
	
	// restore all variables
	
	 PLANSETUP = 0;
	 PLANMONTHLY = 0;
	 EXTRASETUP = 0;
	 EXTRAMONTHLY = 0;
	 MAXLINES = 1;
	 LINEPRICE = 0;
	 LINESETUP = 0;
	 PLANID = 0;
	 EXTRATOTAL = 0;
	 SETUPTOTAL = 0;
	 BILLINGCHAGE = "N";
	 aEXTRAVALUE = new Array();
	 aEXTRAID    = new Array();
	 BILLINGCHAGE = "N";
	 GROSSAMOUNT = 0;
	 VAT = 0;
	 TOTALAMOUNT = 0;
	
}

// validate form1
function validateForm1() {
	
	
	var oPlanGroup = document.getElementById("planGroup");
	var oPlanType = document.getElementById("planType");
	var oLineUser = document.getElementById("spnLine");

	var test = true;
	if(oPlanGroup.value==0) {
		oPlanGroup.style.backgroundColor = "silver";
		test = false;
	}
	if(oPlanType.value==0) {
		oPlanType.style.backgroundColor = "silver";
		test = false;
	}
		
	// if line user exists then validate
	if(oLineUser.style.display == "inline") {
		if(!validateFiledLineUsers()) {
			test = false;
		}
	}
		
	if(!test) {
		
		return false;		
	}
	
	show_processing();
	if(oLineUser.style.display == "inline") {
		readData('','validateLineUser');
	}
	else {
		// reset the line to 0
		var lineCounter = document.getElementById('iLineCounter');
		lineCounter.value = 0;
		load_customer_form();
	}
}

// validate fields for line user

function validateFiledLineUsers() {
	
	var oPlanGroup = document.getElementById("planGroup");
	var oPlanType = document.getElementById("planType");

	// get total number of available line users.
	var oCounterLineUser = document.getElementById('iLineCounter');
	
	if(oCounterLineUser) {
		
		var test = true;
		for(i=0;i<oCounterLineUser.value;i++) {
			
			// get the value of each row
			var oLinePerson = document.getElementById('id_LinePerson_'+i);
			var oAlertType = document.getElementById('id_alertType_'+i);
			var oAlertAddress = document.getElementById('id_AlertAddress_'+i);
			
			if(oLinePerson) {
				if(oLinePerson.value=="") {
					
						oLinePerson.style.backgroundColor = "silver";
						test = false;
				
				}
			}
			if(oAlertType) {
				if(oAlertType.value=="") {
					
						oAlertType.style.backgroundColor = "silver";
						test = false;
					
				}
			}
			if(oAlertAddress) {
				if(oAlertAddress.value=="") {
					
						oAlertAddress.style.backgroundColor = "silver";
						test = false;
				
				}
			}
		}
		if(test) {
			return true;
			
		}
		else {
			return false;
		}
	}
	else {
		return false;
	}
}

// assign calculated fields in hidden to pass in step2
function loadDataForStep2() {
	var oPostGrossAmount = document.getElementById("iGrossAmount");
	var oPostVat = document.getElementById("iVat");
	var oPostTotalAmount = document.getElementById("iTotalAmount");
	
	// assign in hidden fields to pass in second step
	oPostGrossAmount.value=GROSSAMOUNT;
	oPostVat.value=VAT;
	oPostTotalAmount.value=TOTALAMOUNT;
}

// function to show/hide extra data
function operateExtra() {
	
	var obj_extra = document.getElementById("extra_details");
	if(obj_extra.style.display == "inline") {
		obj_extra.style.display = "none";
	}
	else {
		obj_extra.style.display = "inline";
	}
}
// function to show/hide setup data
function operateSetup() {
	
	var obj_setup = document.getElementById("setup_details");
	if(obj_setup.style.display == "inline") {
		obj_setup.style.display = "none";
	}
	else {
		obj_setup.style.display = "inline";
	}
}

function updatePrice() {
	// 
	aEXTRAVALUE = Array();
	aEXTRAID = Array();

	var oPlanType = document.getElementById("planType");
	oLineCounter = document.getElementById('iLineCounter');
	LINECOUNTER = parseInt(oLineCounter.value);

	if(oPlanType.value ==0) {
		return false;
	}
	
	if(document.sales.chkExtra) {

	if(document.sales.chkExtra.length) {
		// get the extra selected.
		k=0;
		if(document.sales.chkExtra.length) {
			k = document.sales.chkExtra.length;
		}
		for( i = 0; i < k; i++ ) {
			
			aEXTRAVALUE[i] = "";
			aEXTRAID[i]	   = "";
			
			if( document.sales.chkExtra[i].checked == true ) {
				
				oValExtraValue = document.sales.chkExtra[i].value;
				oValExtraId    = document.sales.chkExtra[i].id;
				aEXTRAVALUE[i] = oValExtraValue;
				aEXTRAID[i]	   = oValExtraId;
				
			}
		}
	}
	else {  // for single checkbox
		
			aEXTRAVALUE[0] = "";
			aEXTRAID[0] = "";
			if( document.sales.chkExtra.checked == true ) {
				
				oValExtraValue = document.sales.chkExtra.value;
				oValExtraId    = document.sales.chkExtra.id;
				aEXTRAVALUE[0] = oValExtraValue;
				aEXTRAID[0]	   = oValExtraId;
				
			}
	}

	}
	// call the read function to print the data.
	BILLINGCHAGE = "Y";
	
	// preserve the line counter
	
	
	readData(oPlanType.value,'extra');
	
	
}

function fillExtraAfterCycleChange() {
	
	if(document.sales.chkExtra)  {
	
	if(document.sales.chkExtra.length) {
		
		k=0;
		if(document.sales.chkExtra.length) {
			k = document.sales.chkExtra.length;
		}
		for(i=0;i<k;i++) {
			
			if(aEXTRAVALUE[i] != "") {
				
				document.sales.chkExtra[i].checked = true;
				printExtraSetup(aEXTRAVALUE[i], i);
				
			}

		}
	}
	else { // for single checkbox
		
		
		if(aEXTRAVALUE[0] != "") {
				
				document.sales.chkExtra.checked = true;
				
				printExtraSetup(aEXTRAVALUE[0], 0);
				
		}

	}

	}
	num = parseInt(LINECOUNTER);
	

	printLineCost(num);
	BILLINGCHAGE = "N";
}

// function initialize line section

function initLineUsers() {
		
		var sLnUser = "";
		var objDelImage = document.getElementById('delImg');
		var imgSrc = objDelImage.value;

		sLnUser = sLnUser + "<table width='100%' cellspacing='0' cellpadding='0' border='0'>";
		sLnUser = sLnUser + "<tr><td><input type='text' id='id_LinePerson_0'  name='txtLinePerson_0' value='' style='width:210px;'>";
		sLnUser = sLnUser + "</td><td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='20%' align='center'>";
		sLnUser = sLnUser + "<select name='alertType_0' id='id_alertType_0'>";
		sLnUser = sLnUser + "<option value='sms'>SMS</option>";
		sLnUser = sLnUser + "<option value='email'>Email</option>";
		//sLnUser = sLnUser + "<option value='fax'>Fax</option>";
		sLnUser = sLnUser + "</select>";
		sLnUser = sLnUser + "</td>";
		sLnUser = sLnUser + "<td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='30%'>";
		sLnUser = sLnUser + "<input type='text' name='txtAlertAddress_0' value='' style='width:125px' id='id_AlertAddress_0'>";
		sLnUser = sLnUser + "</td>";
		sLnUser = sLnUser + "<td>&nbsp;</td>";
		sLnUser = sLnUser + "<td width='10%'><img src='"+imgSrc+"' onclick='delLineUser(0)'></td>";
		sLnUser = sLnUser + "</tr>";
		sLnUser = sLnUser + "</table>";
		
		var oExistingLine = document.getElementById('iLineCounter');
		oExistingLine.value = 1;
		var oLine = document.getElementById("lineUser");
		oLine.innerHTML = sLnUser;
}

// validation of form1
function validationStatusLineUser() {
	
	try
	{
		
		if (xmlHttp.readyState == 4)
		{
			if (xmlHttp.status == 200)
			{
				xmlResponse = xmlHttp.responseText;
				
				
				if(xmlResponse == "ok") {
					
					load_customer_form();
				}
				else {
					hide_processing();
					alert(xmlResponse);	
				}


			}
		}
	}
	catch (e) {
		alert("Error in server response pls try after some time"+e.toString());
	}

}

function show_processing() {
	
	var o_proc_image_div = document.getElementById('waiting_image');
	o_proc_image_div.style.display="inline";
}
function hide_processing() {
	
	var o_proc_image_div = document.getElementById('waiting_image');
	o_proc_image_div.style.display="none";
}

function test() {
	
	var o = alert(document.getElementById('id_alertType_0').value);
	alert(o.value);
}

// function to submit the plan page and load the customer form
function load_customer_form() {
	hide_processing();
	loadDataForStep2();
	document.sales.submit();
}
