var xmlHttp//GLOBAL VARIABLE 
function html_entity_decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}

/*********THESE FUNCTIONS TO CLAER CHART TABLE (HTML, NOT COOKIES)*************/
//FUNCTION EXISTS TO MAKE ROOM FOR EACH NEW AJAX CALL
function ClearChart()//FUNCTION TO GET ROW INFO FOR HTML TABLE
{
	var checkedObjArray = new Array();
	var cCount = 0;
	var tbl = document.getElementById('Chart_Table');
	for (var i=0; i<tbl.tBodies[0].rows.length; i++) 
	{
		checkedObjArray[cCount] = tbl.tBodies[0].rows[i];
		cCount++;
	}
	if (checkedObjArray.length > 0) {
	var rIndex = checkedObjArray[0].sectionRowIndex;
	deleteRows(checkedObjArray);
	}
}

function deleteRows(rowObjArray)//FUNCTION TO DELETE ROWS FROM HTML TABLE
{
	for (var i=0; i<rowObjArray.length; i++) {
		var rIndex = rowObjArray[i].sectionRowIndex;
		rowObjArray[i].parentNode.deleteRow(rIndex);
	}
}
/*********END FUNCTIONS TO CLAER CHART TABLE (HTML, NOT COOKIES)*************/


//FUNCTION FOR GETTING CHART KEYS, RELATES TO ASSIGNING ID TO DYNAMICALLY CREATED
//HTML CONTROLS
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}


function DeleteChartItem(passed_param)//FUNCTION TO DELETE CHART ITEM
{
	//ClearChart();//CLEAR EXISTING CHART HTML ROWS
	//showDiv();//SHOW PROGRESS INDICATOR
	xmlHttp=GetXmlHttpObject()
	var product_id
	product_id = document.getElementById("productid").value
	var url="byz_template_codes_functions_addtochart.asp";//ASP PAGE URL
	var Action = "Delete"
	if (xmlHttp==null)
	{
		alert ("Your browser does not support some functions on this site, please use Internet Explorer!");
		return;
	} 
	//FIXES A WEIRD PROBLEM  
	var ItemToDelete = passed_param.split(" ")
	url=url+"?DeleteKey="+ItemToDelete[0]+"&CC_DeletechartItem=1&Action="+Action
	
		
	//SEND PARAMETERS TO ASP
	url=url+"&product_id="+product_id+"&sid="+Math.random();
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}


function UpdateChart(strForm, Action)//FUNCTION FOR UPDATING CHART CONTENTS
{ 
	
	xmlHttp=GetXmlHttpObject()
	var url="byz_template_codes_functions_addtochart.asp";//ASP PAGE URL
	if (xmlHttp==null)
	{
		alert ("Your browser does not support some functions on this site, please use Internet Explorer!");
		return;
	} 
			
	if (Action == 'Add')
	{
		//ClearChart();//CLEAR EXISTING CHART HTML ROWS
		//showDiv();//SHOW PROGRESS INDICATOR 
		var formname = strForm
		var strPrice
		var strSize
		var strPlayerNumberInd
		var strPlayerNumber
		var strPlayerNameInd
		var strPlayerName
		var strQuantity
		var strProductID
		
		strPrice = strForm + "_Price"
		strPrice = document.getElementById(strPrice).value
		strSize = strForm + "_Size"
		strSize = document.getElementById(strSize).value
		
		strPlayerNumberInd = strForm + "_PlayerNumber"
		strPlayerNumber = document.getElementById(strPlayerNumberInd).value
		document.getElementById(strPlayerNumberInd).value = ''
		
		strPlayerNameInd = strForm + "_PlayerName"
		strPlayerName = document.getElementById(strPlayerNameInd).value
		document.getElementById(strPlayerNameInd).value = ''
		
		strQuantityInd = strForm + "_Quantity"
		strQuantity = document.getElementById(strQuantityInd).value
		document.getElementById(strQuantityInd).value = 1
		
		strProductID = strForm + "_ProductID"
		strProductID = document.getElementById(strProductID).value
		
		
		url=url+"?Price="+strPrice+"&Size="+strSize+"&PlayerNumber="+strPlayerNumber+"&PlayerName="+strPlayerName+"&Quantity="+strQuantity+"&product_id="+strProductID+"&Action="+Action;
	}
	else
	{
		 var urlParamSeperator = "?";
		 //CODE BELOW USED TO RETRIEVE FORM VALUES WHERE FORM NAME NOT KNOWN
		 var theForm = strForm, z = 0;//SET VARIABLE AND PASS FORM NAME
		 for(z=0; z<theForm.length;z++){//LOOP THROUGH ALL FORM VALUES IN FORM
		  if((theForm[z].type == 'text') || (theForm[z].type == 'hidden')){//IF FORM ELEMENT IS A TEXTFIELD OR HIDDEN FIELD
		  	//PASS ITS VALUE TO URL FOR SENDING TO ASP
			 url=url+urlParamSeperator+theForm[z].name+"="+theForm[z].value
			 urlParamSeperator = "&";
		 }
		}
		//ClearChart();//CLEAR EXISTING CHART HTML ROWS
		//showDiv();//SHOW PROGRESS INDICATOR 
		var product_id
		product_id = document.getElementById("productid").value
		url=url+urlParamSeperator+"CC_Updatechart=1&Action="+Action+"&product_id="+product_id
	}
	//SEND PARAMETERS TO ASP
	url=url+"&sid="+Math.random();
	//alert(url)
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}



function stateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{ 	
		var tb_SelectionRows  = document.getElementById('tb_SelectionRows')
		var thestring = xmlHttp.responseText;//STRING RETURNED	
		
		//STRING RETURNED FROM ASP PAGE RETURNED IN FORMAT BELOW, IF NOT THEN CART EMPTY;-//XXL#Size|23#PlayerNumber10838739|WEDDING#PlayerName10838739|10#Qty10838739|Kr700.00#LineTotal|10838739#Delete10838739*@Grand Total Cost#700.00@Discount#(you've saved Kr600.00)
		//alert(thestring)
		var newRow;
		var tds
		var td
		ClearChart();//CLEAR EXISTING CHART HTML ROWS
		
		var strChartEmpty = '<br/>Ingen st&oslash;rrelse og/eller trykk er valgt. <br/>Gj&oslash;r dine valg i boksen til venstre.<br/><br/>'

		var splittedString = thestring.split('#');
		if(splittedString[0] == 'EMPTY')//IF CHART EMPTY
		{
			document.getElementById("GrandTotalCost").innerHTML="Kr0.00";
			document.getElementById("TotalCostOfShirt").innerHTML="Kr"+splittedString[1];
			document.getElementById("Savings").innerHTML='<font color="red">(Du har spart Kr0.00)</font>';
			document.getElementById("CartEmpty").innerHTML=strChartEmpty;
		}
		else //IF CART CONTAINS ITEMS
		{
			document.getElementById("CartEmpty").innerHTML =''
			//Split the returned string at every @ TO GET TABLE ROWS: 
			var tableRows = thestring.split('@');
			//4 TABLE ROW GROUPINGS WILL ALWAYS BE RETURNED AND SO
			//ASSIGN VALUES AS REQUIRED AND CREATE NEW ROWS FOR EACH CHART ITEM
			var HTMLControlData
			var dataChecker
			var GrandTotalCost = tableRows[1].split('#');
			var TotalCostOfShirt = tableRows[2].split('#');
			var Savings = tableRows[3].split('#');
			
			var itemRelation
			
			document.getElementById("GrandTotalCost").innerHTML="Kr"+GrandTotalCost[1];
			document.getElementById("TotalCostOfShirt").innerHTML="Kr"+TotalCostOfShirt[1];
			document.getElementById("Savings").innerHTML=Savings[1];
			//Split the returned string at every * TO GET TABLE ROWS FOR CHART ITEMS:
			var itemRows = tableRows[0].split('*');
			for (var i=0; i < itemRows.length; i++)
			{
				//CHECK IF CHART ITEM IS RELATED TO PRODUCT BEING VIEWED
				
				itemRelation = itemRows[i].split('$');
				//alert(itemRelation)
				if(itemRelation[0] > 0)
				{
					newRow = document.createElement('tr');
					//tds = itemRows[i].split('|');
					tds = itemRelation[1].split('|');
					for (var j=0; j < tds.length; j++)
					{
						HTMLControlData = tds[j].split('#');
						td = document.createElement('td');
						if(HTMLControlData[0] != '')
						{
							if((HTMLControlData[1] != 'Size') && (HTMLControlData[1] != 'LineTotal')) 
							{
								if (HTMLControlData[1] == "Delete"+HTMLControlData[0])
								{
									var submit_button = document.createElement("input");
									submit_button.type = "button";
									submit_button.name = "Delete"+HTMLControlData[0];
									submit_button.id = "Delete"+HTMLControlData[0];
									submit_button.className = "submitbtn";
									submit_button.value = "Delete"; 
									td.appendChild(submit_button);
									submit_button.onclick=function(){
									DeleteChartItem(this.id);
									} 
								}
								else
								{
									var input = document.createElement("input");
									input.type = "text"; 
									input.name = HTMLControlData[1];
									input.id = HTMLControlData[1];
									if(HTMLControlData[0] != "null")
									{		
										input.value = html_entity_decode(HTMLControlData[0]);	
									}
									input.className = "txtfield";
									dataChecker = Left(HTMLControlData[1], 10)
									if (dataChecker == "PlayerName")
									{
										input.size=15
									}
									else 
									{
										input.size=5
									}
									td.appendChild(input);
									input.onchange=function(){
									UpdateChart(this.form, 'Update');
									} 
								}
							}
							else
							{
								td.appendChild(document.createTextNode(HTMLControlData[0]));
							}
						
						newRow.appendChild(td); 
					}
				}
				tb_SelectionRows.appendChild(newRow);
				}
				else
				{
					newRow = document.createElement('tr');
					//tds = itemRows[i].split('|');
					//tds = itemRelation[1].split('|');
					for (var j=0; j < tds.length; j++)
					{
						HTMLControlData = tds[j].split('#');
						td = document.createElement('td');
						if(HTMLControlData[0] != '')
						{
							if((HTMLControlData[1] != 'Size') && (HTMLControlData[1] != 'LineTotal')) 
							{
								if (HTMLControlData[1] != "Delete"+HTMLControlData[0])
								{
									var input = document.createElement("input");
									input.type = "hidden"; 
									input.name = HTMLControlData[1];
									input.id = HTMLControlData[1];
									if(HTMLControlData[0] != "null")
									{
										input.value = HTMLControlData[0];
									}
									input.className = "txtfield";
									dataChecker = Left(HTMLControlData[1], 10)
									if (dataChecker == "PlayerName")
									{
										input.size=15
									}
									else 
									{
										input.size=5
									}
									td.appendChild(input);
								}
							}
						newRow.appendChild(td); 
					}
				}
				tb_SelectionRows.appendChild(newRow);
				}
				//end show html table/form elements
			}
		}
		//hideDiv();//HIDE PROGRESS INDICATOR 
	}			  
}
	
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
}
catch (e)
{
	// Internet Explorer
	try
	{
	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	}
	return xmlHttp;
}

//PROGRESS INDICATOR FUNCTIONS
function showDiv() 
{
	setTimeout('document.images["myAnimatedImage"].src="images/Progressbar.gif"', 200); 
	document.getElementById('myHiddenDiv').style.display ="";
}
function hideDiv() 
{
	document.getElementById('myHiddenDiv').style.display ="none";  
} 

