var gsCharset = 'iso-8859-1';
var gsParams	= '';

function XmlHttp( ){
		this.CreateXmlHttpObject	= CreateXmlHttpObject;
		this.GetUrlContent				= GetUrlContent;
		this.GetResponseText			= GetResponseText;
		this.GetReadyState				= GetReadyState;           
		this.HttpMethod						= 'GET'; // default
		this.objXmlHttp						= this.CreateXmlHttpObject();
}

// Initialize XMLHttpObject
function CreateXmlHttpObject() {
		var xmlhttp=false;
		try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}

		if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
				xmlhttp = new XMLHttpRequest();
		}
		return xmlhttp;
}

var objXMLHttp =  new XmlHttp();
			 
function GetReadyState( ){
		return this.objXmlHttp.readyState;
}

function GetResponseText( ){
		return this.objXmlHttp.responseText;
}


// Function performs Get request to absolute url(strUrl)
// using XmlHttp object (asynchroni)
// Response returned into objResult element using innerHTML.
// When state of XmlHttp object is changed - objOnReadyStateChangeFunction called
function GetUrlContent(strUrl, objOnReadyStateChangeFunction){
		this.objXmlHttp.open(this.HttpMethod, strUrl, true);
		this.objXmlHttp.setRequestHeader('Content-Type', 'text/xml; charset='+gsCharset);
		if(objOnReadyStateChangeFunction){
				this.objXmlHttp.onreadystatechange=function() {
						objOnReadyStateChangeFunction();
				}
		}
		this.objXmlHttp.send(null)   
}

//This function is called when we get the data back from the server.       
function GetResponse(){   
		if (objXMLHttp.GetReadyState()==4) {                       
				// save response in inner html of result object
				//var objHiddenDiv = document.getElementById('HiddenDiv');
				//objHiddenDiv.innerHTML = objXMLHttp.GetResponseText();
				gsResults = objXMLHttp.GetResponseText();
		}
} 

//function UpdateDiv(FieldValue){
//		if( FieldValue !='' ){
//				var objMyDiv = document.getElementById('MyDiv');
//				objMyDiv.innerHTML = 'Please wait, getting info from server...';
//				objXMLHttp.GetUrlContent('http://www.mysite.com/Info_to_show.php?Parameter=' + FieldValue, GetResponse);       
//		}
//		return;
//}

//=====================================================================================================================
var gbContinue = false;

function fnWaitLoadList() {
	//document.getElementById('loaderContainer').style.display = "block";
	var objLoadDiv = document.getElementById('divOrderListContent');
	objLoadDiv.innerHTML = '<p align="center"><img src="SiteImages/loading.gif" width="32" height="32" border="0" alt="Loading..." /><br /><b>Loading... Please wait...</b></p>';
	setTimeout('fnLoadList()',500);
}

function fnLoadList() { 
	gbContinue = false;
	fnHideMessage();
	//document.getElementById('loaderContainer').style.display = "block";
	var sUrl1 = 'ajax-load-order.asp?rnd='+ Math.random();

	objXMLHttp.GetUrlContent(sUrl1, fnLoadListGetResponse);
	
	if(!gbContinue) {
		fnWait(6000);
	}
	return;
} 

//This function is called when we get the data back from the server.       
function fnLoadListGetResponse(){   
	if (objXMLHttp.GetReadyState()==4) {                       
		// save response in inner html of result object
		sResults = objXMLHttp.GetResponseText();

		var objMyDiv = document.getElementById('divOrderListContent');

		var tblHeader = '<table border="0" cellspacing="1" cellpadding="1" class="order-list-tbl">'+
			'<tr>'+
			'<td colspan="3"><img src="SiteImages/spacer.gif" width="100" height="1" border="0" alt=""></td>'+
			'</tr>';
		var tblEmpty = '<tr>'+
			'<td colspan="3" align="center">Your order list is empty</td>'+
			'</tr>'+
			'<tr>'+
			'<td colspan="3"><img src="SiteImages/spacer.gif" width="100" height="1" border="0" alt=""></td>'+
			'</tr>';
		var tblCatTitle = '<tr>'+
			'<th colspan="3">[sCatTitle]</th>'+
			'</tr>'+
			'<tr>'+
			'<td colspan="3"><img src="SiteImages/spacer.gif" width="100" height="1" border="0" alt=""></td>'+
			'</tr>';
		var tblOrder = '<tr>'+
			'<th>Product</th>'+
			'<th>Availability</th>'+
			'<th>Quantity</th>'+
			'</tr>'+
			'<tr>'+
			'<td colspan="3"><img src="SiteImages/spacer.gif" width="100" height="1" border="0" alt=""></td>'+
			'</tr>';
		var tblContent = '<tr>'+
			'<td class="order-list-td-1" style="">[sCode]</td>'+
			'<td class="order-list-td-1" style="">[sAvail]</td>'+
			'<td class="order-list-td-2">[sQuantity]</td>'+
			'</tr>'+
			'<tr>'+
			'<td colspan="3"><img src="SiteImages/spacer.gif" width="100" height="1" border="0" alt=""></td>'+
			'</tr>';
	var tblSubmit = '<tr>'+
			'<td colspan="3" align="center"><a href="order-form.asp"><img src="SiteImages/but_submit_order.gif" width="84" height="21" border="0" alt="Submit Order" name="ContinueToOrderInDiv" id="ContinueToOrderInDiv" onMouseOver="MM_swapImage(\'ContinueToOrderInDiv\',\'\',\'SiteImages/but_submit_order_over.gif\',1);" onMouseOut="MM_swapImgRestore();" /></a></td>'+
			'</tr>';
		var tblFooter = '</table>';

		var tblList = '';
		var tmpCategory = '';
		var tmpContent = '';
		var aResults;
		var aSubResults;
		
		if(sResults != 'none') {
			aResults = sResults.split(";");
			for(a=0; a<aResults.length-1; a++) {
				aSubResults = aResults[a].split('~');

				if(tmpCategory!=aSubResults[0]) {
					tmpContent = tblCatTitle;
					tmpContent = tmpContent.replace('[sCatTitle]',aSubResults[0]);
					tblList = tblList + tmpContent;
				}
				tmpCategory = aSubResults[0];

				tmpContent	= tblContent;
				tmpContent	= tmpContent.replace('[sCode]',aSubResults[1]);
				tmpContent	= tmpContent.replace('[sAvail]',aSubResults[2]);
				tmpContent	= tmpContent.replace('[sQuantity]',aSubResults[3]);
				//tmpContent	= tmpContent.replace('[sRemove]','<a href="javascript:fnUpdateOrder(\'p='+ aSubResults[0] +'&amp;qnt=0\',\'dv_'+ aSubResults[0] +'\',false);">x</a>');
				tblList = tblList + tmpContent;
			}
			objMyDiv.innerHTML = tblHeader + tblOrder + tblList + tblSubmit + tblFooter;
		} else {
			objMyDiv.innerHTML = tblHeader + tblEmpty + tblFooter;
		}
	}
	document.getElementById('loaderContainer').style.display = "none";
} 

//-------------------- 
var sDivID;

function fnUpdateOrder(sParams,sFnDivID,iChecked) { 
	gbContinue = false;
	fnHideMessage();
	//document.getElementById('loaderContainer').style.display = "block";
	var sUrl = 'ajax-add-to-order.asp?rnd='+ Math.random() +'&chk='+ iChecked +'&'+ sParams;

	sDivID = sFnDivID;
	objXMLHttp.GetUrlContent(sUrl, fnUpdateOrderGetResponse);
	
	if(!gbContinue) {
		fnWait(6000);
		//document.getElementById('loaderContainer').style.display = "none";
	}
	fnShowMessage('Your order has been updated!');
	document.getElementById('loaderContainer').style.display = "none";
	return;
} 

//This function is called when we get the data back from the server.       
function fnUpdateOrderGetResponse() {   
	if (objXMLHttp.GetReadyState()==4) {                       
		var sResults = objXMLHttp.GetResponseText();
		var objFnDivID = document.getElementById(sDivID);
		if(sResults != 'none') {
			var aResults = sResults.split(",");
			var tID = aResults[0];
			var tQnt = aResults[1];
			var tcid = aResults[2];
			objFnDivID.innerHTML = '<input type="text" name="qnt_"'+ tID +'" value="'+ tQnt +'" class="quentity-field" onChange="fnUpdateOrder(\'cid='+ tcid +'&amp;p='+ tID +'&amp;qnt=\'+(this.value),\'dv_'+ tID +'\',true);fnCloseOrder();" title="Change quantity" />';
		} else {
			objFnDivID.innerHTML = '';
			
			var sTdID = sDivID.replace('dv_','td_');
			var sCheckboxID = sDivID.replace('dv_','av_');
			
			document.getElementById(sTdID).className = 'list-td';
			document.getElementById(sCheckboxID).checked = false;
			
		}
	}
} 
