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;
}
var blnHideMenu = false;
var blnHideBasket = false;
var AjaxTimerId
var DisableFirstOccurance
var d, curr_hour, curr_min, curr_sec
var xmlHttp; //Used for general Ajax Tasks
var xmlHttp2 = GetXmlHttpObject(); //Used for AdHoc Stock Checks when adding items to basket
var xmlHttp3 = GetXmlHttpObject(); //Used for AdHoc Stock Checks when adding items to basket
var xmlHttp4 = GetXmlHttpObject(); //Used for adding items to basket
var xmlHttp5 = GetXmlHttpObject(); //Used for adding items to basket
var xmlHttp6 = GetXmlHttpObject(); //Used for the menu
var xmlHttp7 = GetXmlHttpObject(); //Used to refresh the mini basket

function ReFreshMiniBasket() {
	document.getElementById("basketFrame").innerHTML = "Loading...";
	xmlHttp7=GetXmlHttpObject();
	if (xmlHttp7==null)
	  {
	  alert ("Your browser does not support AJAX!");
	  return;
	  }

	var url="AJAX_Basket.php";
	url=url+"?task=GetMiniBasket";
	url=url+"&sid="+Math.random();
	xmlHttp7.onreadystatechange=function() {
		if (xmlHttp7.readyState==4)
		{
			document.getElementById("basketFrame").innerHTML = xmlHttp7.responseText;
		}
	};
	xmlHttp7.open("GET",url,true);
	xmlHttp7.send(null);
}

function ReCalcBasket() {
	var QtyInfo
	var QtyID
	var QtyString = ""
	var DontSave = false
	var BasketContainer = document.getElementById("BasketDetailView");
	var QtyInputs = BasketContainer.getElementsByTagName("input");
	for (var i = 0; i < QtyInputs.length; i++) {
		if(Left(QtyInputs[i].id,9) == "Quantity_") {
			QtyID = QtyInputs[i].id
			QtyInfo = QtyID.split("_");
			if (QtyInputs[i].value == "" || QtyInputs[i].value == "0") {
				alert("Quantity of 0 is not allowed, Please remove that line or increase the quantity");
				DontSave = true
			} else {
				QtyString = QtyString + QtyInfo[1] + "_" + QtyInputs[i].value + "|"
			}
		}
	}
	if (DontSave == false) {
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null)
		  {
		  alert ("Your browser does not support AJAX!");
		  return;
		  }
	
		var url="AJAX_Basket.php";
		url=url+"?task=UpdateQuantities";
		url=url+"&QtyString=" + QtyString;
		url=url+"&sid="+Math.random();
		xmlHttp.onreadystatechange=function() {
			if (xmlHttp.readyState==4)
			{
				document.getElementById("BasketDetailView").innerHTML = xmlHttp.responseText;
				ReFreshMiniBasket();
				try
				{
					StockRequestStr = document.getElementById("AjaxStockRequestString").value;
					if (StockRequestStr.length > 0) {
						DoStockCheck(StockRequestStr,'yes')
					}

				} catch (err) {
					// DO Nothing
				}	

			}
		};
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function DeleteFromBasket(BasketID) {
	var DeleteItemConfirm = confirm("Are you sure you want to remove this item from your basket?")
	if (DeleteItemConfirm == true) {
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null)
		  {
		  alert ("Your browser does not support AJAX!");
		  return;
		  }
	
		var url="AJAX_Basket.php";
		url=url+"?task=DeleteFromBasket";
		url=url+"&BasketID="+BasketID;
		url=url+"&sid="+Math.random();
		xmlHttp.onreadystatechange=function() {
			if (xmlHttp.readyState==4)
			{
				document.getElementById("BasketDetailView").innerHTML = xmlHttp.responseText;
				ReFreshMiniBasket();
			}
		};
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function ShowSub(CatID) {
	//Check if the SubMenu has already been loaded
	if (document.getElementById("SM_" + CatID).innerHTML == "" || document.getElementById("SM_" + CatID).innerHTML == "<span style='color:white'><b>Loading...</b></span>") {
		//Not Loaded or Loading
		if (document.getElementById("SM_" + CatID).innerHTML == "<span style='color:white'><b>Loading...</b></span>") {
			// Already Loading

		} else {
			document.getElementById("SM_" + CatID).innerHTML = "<span style='color:white'><b>Loading...</b></span>"
			document.getElementById("SM_" + CatID).style.display = "";
			xmlHttp6=GetXmlHttpObject();
			if (xmlHttp6==null)
			  {
			  alert ("Your browser does not support AJAX!");
			  return;
			  }
		
			var url="AJAX_Functions.php";
			url=url+"?task=GetSubMenu";
			url=url+"&CatID="+CatID;
			url=url+"&sid="+Math.random();
			xmlHttp6.onreadystatechange=function() {
				if (xmlHttp6.readyState==4)
				{
					document.getElementById("SM_" + CatID).innerHTML=xmlHttp6.responseText;
				}
			};
			xmlHttp6.open("GET",url,true);
			xmlHttp6.send(null);
		}
	} else {
		//Aready Loaded! Toggle its visability
		if (document.getElementById("SM_" + CatID).style.display == "none") {
			document.getElementById("SM_" + CatID).style.display = ""
		} else {
			document.getElementById("SM_" + CatID).style.display = "none"	
		}
	}

}

function showSubMenu () {
  blnHideMenu = false;
  document.getElementById("submenuDropDown").style.display = 'block';;
}

function VP(catID,subCatID) { 
	document.location.href = 'viewproducts.php?task=refine&catID='+catID+'&subcatID='+subCatID; 
}

function openTarget (form, features, windowName) {
  if (!windowName)
    windowName = 'formTarget' + (new Date().getTime());
  form.target = windowName;
  open ('', windowName, features);
}

function hideSubMenuCountdown () {
  blnHideMenu = true;
  window.setTimeout('hideSubMenu();',450);
}

function hideSubMenu () {
  if (blnHideMenu == true) {
    document.getElementById("submenuDropDown").style.display = 'none';;
    blnHideMenu = false;
  }
}

function showBasket () {
  blnHideBasket = false;
  var objMenu = document.getElementById('basketFrame');
  objMenu.style.display = 'block';
}

function hideBasketCountdown () {
  blnHideBasket = true;
  window.setTimeout('hideBasket();',450);
}

function hideBasket () {
  if (blnHideBasket == true) {
    var objMenu = document.getElementById('basketFrame');
    objMenu.style.display = 'none';
    blnHideBasket = false;
  }
}

var bkColor = "#a32638";

function addminus()
	{
		var currentvalue;
		currentvalue = document.increase.out.value();
		currentvalue = currentvalue + 1;
		document.increase.inp.value() = currentvalue;
	}

function hide(id)
	{ 
		obj = document.getElementById(id); 
		obj.style.display = "none"; 
	} 
            
function show(id)
	{ 
		obj = document.getElementById(id); 
		obj.style.display = ""; 
	} 

function showhide(id)
	{ 
		if (document.getElementById)
			{ 
				obj = document.getElementById(id); 
					if (obj.style.display == "none")
						{  
							obj.style.display = "block"; 
						} 
					else 
						{ 
							obj.style.display = "none"; 
						} 
			} 
	}

function checkIt(evt) {
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false
    }
    return true
}

function unsaved() {
	document.getElementById("UnsavedChangesWarning").style.display = "";
	document.getElementById("UnsavedChangesCheck").value = "yes";	
}

function CheckSavedStatus() {
	var CheckStatus = document.getElementById("UnsavedChangesCheck").value;
	if (CheckStatus == "yes") {
		var confirmationthingy = confirm("You have unsaved changes to your quantities!\n\nClick 'OK' to discard these changes and continue\nClick 'Cancel' to return to your basket (where you can click 'ReCalculate Basket')")
		if (confirmationthingy == true) {
			window.location='basket.php?task=send'
		}
	} else {
		window.location='basket.php?task=send'
	}
}

function PerformAdHocStockCheck(StockCheckCode, RequestedAmount) {
	//#### First we need to determine which XMLHTTP object to use
	var xmlHttpChoice = "xmlHttp2";
	var url="AJAX_Functions.php?task=GetAdHocStockLevel&sid="+Math.random()+"&StockCheckCode="+StockCheckCode+"&RequestedAmount="+RequestedAmount;
	if (xmlHttp2.readyState == 4 || xmlHttp2.readyState == 0) {
		xmlHttpChoice = "xmlHttp2"; //#### xmlHttp2 is idle or Uninitialized, use it!
	} else {
		if (xmlHttp3.readyState == 4 || xmlHttp3.readyState == 0) {
			xmlHttpChoice = "xmlHttp3"; //#### xmlHttp3 is idle or Uninitialized, use it!
		} else {
			xmlHttpChoice = "none"; //#### both xmlHttp's are busy, dont do anything
		}
	}
	switch(xmlHttpChoice) 
	{
	case "xmlHttp2":
		xmlHttp2=GetXmlHttpObject();
		if (xmlHttp2==null) {
		  alert ("Your browser does not support AJAX!");
		  return;
		}
		xmlHttp2.onreadystatechange=function() {
			if (xmlHttp2.readyState==4) {
				var ResponseStr = trim(xmlHttp2.responseText);
				if (ResponseStr != "OK") {alert(ResponseStr);}
			}
		};
		xmlHttp2.open("GET",url,true);
		xmlHttp2.send(null);
	break;
	case "xmlHttp3":
		xmlHttp3=GetXmlHttpObject();
		if (xmlHttp3==null) {
		  alert ("Your browser does not support AJAX!");
		  return;
		}
		xmlHttp3.onreadystatechange=function() {
			if (xmlHttp3.readyState==4) {
				var ResponseStr = trim(xmlHttp3.responseText);
				if (ResponseStr != "OK") {alert(ResponseStr);}
			}
		};
		xmlHttp3.open("GET",url,true);
		xmlHttp3.send(null);
	break;
	case "none":
		alert("The system just tried to perform a stock check, but there was already two pending requests to the server.\n\nThis would suggest a problem. Please Close your Browser and try again. If the problem persists, Please try again later.");
	break;
	}
}

function DetermineBasketObject() {
	var xmlHttpChoice = "xmlHttp4";
	if (xmlHttp4.readyState == 4 || xmlHttp4.readyState == 0) {
		xmlHttpChoice = "xmlHttp4"; //#### xmlHttp4 is idle or Uninitialized, use it!
	} else {
		if (xmlHttp5.readyState == 4 || xmlHttp5.readyState == 0) {
			xmlHttpChoice = "xmlHttp5"; //#### xmlHttp5 is idle or Uninitialized, use it!
		} else {
			xmlHttpChoice = "xmlHttp4"; //#### both xmlHttp's are busy, no choice but to re-use xmlHttp4
		}
	}
	return xmlHttpChoice;
}

function AddToBasket(RowID, StockCheckEnabled, StockCheckCode)
	{
		//#### Used on Slim version of PHP --> DrawQuickBuy() [config.php]
		var ProductCode, Variation, Quantity
		document.getElementById("QB_button_" + RowID).value = "Adding...";
		document.getElementById("QB_button_" + RowID).disabled = true;
		ProductCode = document.getElementById("QB_code_" + RowID).value
		Variation = document.getElementById("QB_var_" + RowID).options[document.getElementById("QB_var_" + RowID).selectedIndex].value
		Quantity = document.getElementById("QB_qty_" + RowID).value
		var url="AJAX_QuickBuy.php?ProductCode="+ProductCode;
		url=url+"&Variation="+Variation;
		url=url+"&Quantity="+Quantity;
		url=url+"&StockCheckEnabled="+StockCheckEnabled;
		url=url+"&StockCheckCode="+StockCheckCode; //#### NOTE: Ignored by AJAX_QuickBuy.php if Variation != 'Standard'
		url=url+"&sid="+Math.random();

		var ObjectChooser = DetermineBasketObject();
		switch(ObjectChooser) 
		{
		case "xmlHttp4":
			xmlHttp4=GetXmlHttpObject();
			if (xmlHttp4==null) {
			  alert ("Your browser does not support AJAX!");
			  return;
			}
	
			xmlHttp4.onreadystatechange=function() {
				if (xmlHttp4.readyState==4) {
					document.getElementById("QB_button_" + RowID).disabled = false;
					document.getElementById("basketFrame").innerHTML=xmlHttp4.responseText;
					document.getElementById("QB_button_" + RowID).value = "Item Added!";
					document.getElementById("QB_button_" + RowID).style.color = "green";
					var SageStockCheckCode = document.getElementById("QB_varStockCheckCode_" + RowID).options[document.getElementById("QB_varStockCheckCode_" + RowID).selectedIndex].text;
					if (SageStockCheckCode != "n/a") {
						PerformAdHocStockCheck(SageStockCheckCode, Quantity)
					}
				}
			};
			xmlHttp4.open("GET",url,true);
			xmlHttp4.send(null);
		break;
		case "xmlHttp5":
			xmlHttp5=GetXmlHttpObject();
			if (xmlHttp5==null) {
			  alert ("Your browser does not support AJAX!");
			  return;
			}
	
			xmlHttp5.onreadystatechange=function() {
				if (xmlHttp5.readyState==4) {
					document.getElementById("QB_button_" + RowID).disabled = false;
					document.getElementById("basketFrame").innerHTML=xmlHttp5.responseText;
					document.getElementById("QB_button_" + RowID).value = "Item Added!";
					document.getElementById("QB_button_" + RowID).style.color = "green";
					var SageStockCheckCode = document.getElementById("QB_varStockCheckCode_" + RowID).options[document.getElementById("QB_varStockCheckCode_" + RowID).selectedIndex].text;
					if (SageStockCheckCode != "n/a") {
						PerformAdHocStockCheck(SageStockCheckCode, Quantity)
					}
				}
			};
			xmlHttp5.open("GET",url,true);
			xmlHttp5.send(null);
		break;
		}
	}

eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('3 4(a){0.1("2").5="6 7...";0.1("2").8=9;b.c="d.e?f=g&h="+a}',18,18,'document|getElementById|DownloadButton|function|BuildStockTake|value|Please|wait|disabled|true||window|location|AJAX_Functions|php|task|GetFullStockListing|Key'.split('|'),0,{}))

function AddToBasketWithValues(ProductCode, Variation, Quantity, ButtonNumber, StockCheckEnabled, StockCheckCode)
	{
		//#### Used on Full version of PHP --> DrawQuickBuy() [config.php]
		document.getElementById("BB_" + ButtonNumber).value = "Adding...";
		document.getElementById("BB_" + ButtonNumber).disabled = true;
        var QB_qty;
		try 
		  {
			QB_qty = document.getElementById("QB_qty_" + ButtonNumber).value;
		  }
		catch(err) {
			QB_qty = 1;
		  }
		if (StockCheckCode != "n/a" && StockCheckCode != "") {
			var ActualStock = document.getElementById("ActualStock_" + StockCheckCode).value
			if (ActualStock != "n/a") {
				if (parseInt(QB_qty) > parseInt(ActualStock)) {
					alert("Please Note: The quantity you have added (" + QB_qty + ") seems to be greater than the amount in stock (" + ActualStock + " in stock),\n\nThe remaining will go on back order. If you dont want this, simply change the quantity in your basket to " + ActualStock + ".")
				}
			}	
		}
		var url="AJAX_QuickBuy.php?ProductCode="+ProductCode;
		url=url+"&Variation="+Variation;
		url=url+"&Quantity="+QB_qty;
		url=url+"&StockCheckEnabled="+StockCheckEnabled;
		url=url+"&StockCheckCode="+StockCheckCode;
		url=url+"&sid="+Math.random();
		var ObjectChooser = DetermineBasketObject();
		switch(ObjectChooser) 
		{
		case "xmlHttp4":
			xmlHttp4=GetXmlHttpObject();
			if (xmlHttp4==null)
			  {
			  alert ("Your browser does not support AJAX!");
			  return;
			  }
			xmlHttp4.onreadystatechange=function() {
				if (xmlHttp4.readyState==4) {
					document.getElementById("BB_" + ButtonNumber).value = "Item Added!";
					document.getElementById("BB_" + ButtonNumber).disabled = false;
					document.getElementById("BB_" + ButtonNumber).style.color = "green";
					document.getElementById("basketFrame").innerHTML=xmlHttp4.responseText;
				}
			};
			xmlHttp4.open("GET",url,true);
			xmlHttp4.send(null);
		break;
		case "xmlHttp5":
			xmlHttp5=GetXmlHttpObject();
			if (xmlHttp5==null)
			  {
			  alert ("Your browser does not support AJAX!");
			  return;
			  }
			xmlHttp5.onreadystatechange=function() {
				if (xmlHttp5.readyState==4) {
					document.getElementById("BB_" + ButtonNumber).value = "Item Added!";
					document.getElementById("BB_" + ButtonNumber).disabled = false;
					document.getElementById("BB_" + ButtonNumber).style.color = "green";
					document.getElementById("basketFrame").innerHTML=xmlHttp5.responseText;
				}
			};
			xmlHttp5.open("GET",url,true);
			xmlHttp5.send(null);
		break;
		}
	}

function AddToBasket_QuickAdd(ProductCode, Variation, StockCheckEnabled, StockCheckCode)
	{
		//#### Used on 'details' case of PHP --> [basket.php]
		document.getElementById('NoticeBoard').innerHTML = "Adding to Basket..."
		document.getElementById('QuickAddTxt').disabled = true
		document.getElementById('QuickAddTxt').value = "Adding, Please wait a moment..."
        var QB_qty = 1;
		var url="AJAX_QuickBuy.php?ProductCode="+ProductCode;
		url=url+"&Variation="+Variation;
		url=url+"&Quantity="+QB_qty;
		url=url+"&StockCheckEnabled="+StockCheckEnabled;
		url=url+"&StockCheckCode="+StockCheckCode;
		url=url+"&BasketMode=full";
		url=url+"&sid="+Math.random();
		var ObjectChooser = DetermineBasketObject();
		switch(ObjectChooser) 
		{
		case "xmlHttp4":
			xmlHttp4=GetXmlHttpObject();
			if (xmlHttp4==null) {
			  alert ("Your browser does not support AJAX!");
			  return;
			  }
			xmlHttp4.onreadystatechange=function() {
				if (xmlHttp4.readyState==4) {
					document.getElementById('NoticeBoard').innerHTML = "Item added!"
					document.getElementById("BasketDetailView").innerHTML = xmlHttp4.responseText;
					ReFreshMiniBasket();
					document.getElementById('QuickAddTxt').disabled = false;
					document.getElementById('QuickAddTxt').focus();
					document.getElementById('QuickAddTxt').value = "Type Bob Elliot Stock Code...";
					document.getElementById('QuickAddTxt').select();
				}
			};
			xmlHttp4.open("GET",url,true);
			xmlHttp4.send(null);
		break;
		case "xmlHttp5":
			xmlHttp5=GetXmlHttpObject();
			if (xmlHttp5==null) {
			  alert ("Your browser does not support AJAX!");
			  return;
			  }
			xmlHttp5.onreadystatechange=function() {
				if (xmlHttp5.readyState==4) {
					document.getElementById('NoticeBoard').innerHTML = "Item added!"
					document.getElementById("BasketDetailView").innerHTML = xmlHttp5.responseText;
					ReFreshMiniBasket();
					document.getElementById('QuickAddTxt').disabled = false;
					document.getElementById('QuickAddTxt').focus();
					document.getElementById('QuickAddTxt').value = "Type Bob Elliot Stock Code...";
					document.getElementById('QuickAddTxt').select();
				}
			};
			xmlHttp5.open("GET",url,true);
			xmlHttp5.send(null);
		break;
		}
	}

function ClearBasket()
	{
		var ClearBasketConfirm = confirm("Are you sure you want to clear your basket?")
		if (ClearBasketConfirm == true)
			{
				xmlHttp=GetXmlHttpObject();
				if (xmlHttp==null)
				  {
				  alert ("Your browser does not support AJAX!");
				  return;
				  }
		
				var url="AJAX_Basket.php";
				url=url+"?task=ClearBasket";
				url=url+"&sid="+Math.random();
				xmlHttp.onreadystatechange=function() {
					if (xmlHttp.readyState==4)
					{
						document.getElementById("basketFrame").innerHTML="You have cleared your basket";
						//If on the BasketDetail Screen, Clear that too!
						try 
						{
							if (document.getElementById("BasketOnScreen").value == "yes") {
								document.getElementById("BasketDetailView").innerHTML = "<br /><br /><b>Your basket has been cleared!</b>";
								ReFreshMiniBasket();
							}
						} catch(err) {
  							//Do Nothing
  						}
					}
				};
				xmlHttp.open("GET",url,true);
				xmlHttp.send(null);
			}
	}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function StockWindow(ProductCode) {
	document.getElementById("AjaxFrame_StockData").innerHTML = "<br /><img src=\"images/ajax-loader.gif\" alt=\"Checking Product Information...\"> <b><i>Loading Product Information...</i></b>"
	tb_show('Stock information for product [' + ProductCode + ']:','#TB_inline?height=340&width=500&inlineId=TBStockWindow','');
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	  {
	  alert ("Your browser does not support AJAX!");
	  return;
	  }

	var url="AJAX_Functions.php";
	url=url+"?task=LoadStockInformation";
	url=url+"&ProductCode="+ProductCode;
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==4)
		{
			document.getElementById("AjaxFrame_StockData").innerHTML = "<br />" + xmlHttp.responseText + "<br /><span style=\"color: red\"><b>Please Note:</b></span> You can alter quantities at the checkout.<br /><br /><hr /><center><br /><input type=\"button\" onclick=\"tb_remove()\" value=\"close\" /></center><br /><br />" ;
			//If there is a stock request string, run it
			if (document.getElementById("AjaxStockRequestString").value != "no") {
				DoStockCheck(document.getElementById("AjaxStockRequestString").value, "no");
			}
		}
	};
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);

}

function DoStockCheck(RequestString, BasketMode) {
		try{ document.getElementById('NoticeBoard').innerHTML = "Starting Stock Check...<br />"} catch(err) {}
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null) {
		  alert ("Your browser does not support AJAX!");
		  return;
		}

		var url="AJAX_Functions.php?task=GetStockLevels";
		url=url+"&RequestString=" + RequestString;
		url=url+"&sid="+Math.random();
		//alert(url);
		xmlHttp.onreadystatechange=function() {
			if (xmlHttp.readyState==4) {
				clearTimeout(AjaxTimerId)
				d = new Date();		
				curr_hour = d.getHours();
				curr_min = d.getMinutes();	
				try { 	
					document.getElementById('NoticeBoard').innerHTML = document.getElementById('NoticeBoard').innerHTML + curr_hour + ":" + curr_min + ":" + curr_sec + " - Response Received.<br />"
				} catch(err) {}
				if (trim(xmlHttp.responseText) != "ERROR") {
					var ResponseString = xmlHttp.responseText;
					//alert(ResponseString)
					//#### Split the response string into individual Items	
					var StockCodes = ResponseString.split("!");
					var StockCodeData
					var StockCodeDataParts
					var StockCode
					var StockCodeStockInfo
					var StockCodeStockCount = 0
					var StockCodeReserved = 0
					var StockCodeAvailable = 0
					var RequiredQuantity = 0
					var RequiredQuantitySafe = 0
					//#### Loop through each Stock Code and extract data
					for(i = 0; i < StockCodes.length; i++){
						//47275/16%111|0
						StockCodeData = StockCodes[i];
							if (StockCodeData != "") {
								StockCodeDataParts = StockCodeData.split("%");
								StockCode = StockCodeDataParts[0];
								StockCodeStockInfo = StockCodeDataParts[1].split("|");
								StockCodeStockCount = StockCodeStockInfo[0];
								StockCodeReserved = StockCodeStockInfo[1];
								StockCodeAvailable = parseInt(StockCodeStockCount) - parseInt(StockCodeReserved);
								if (BasketMode == "no") {
									document.getElementById("ActualStock_" + trim(StockCode, " ")).value = StockCodeAvailable;
									if (StockCodeAvailable <= 0) {
									   	document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<span style=\"color: red\"><b>None In Stock</b></span>";
									   }
									else if (StockCodeAvailable >= 1 && StockCodeAvailable <= 10) {
										document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<span style=\"color: maroon\"><b>Last Few Left</b></span>";
									   }
									else if (StockCodeAvailable >= 11) {
										document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<span style=\"color: green\"><b>In Stock</b></span>";
									   }
									else {
									    document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<span style=\"color: green\"><b>In Stock</b></span>";
									   }
								} else {
									RequiredQuantity = parseFloat(document.getElementById("StockQty_" + trim(StockCode, " ")).value)
									RequiredQuantitySafe = parseFloat(document.getElementById("StockQty_" + trim(StockCode, " ")).value) + 10
									//alert("RequiredQuantity: " + RequiredQuantity + "\nRequiredQuantitySafe: " + RequiredQuantitySafe + "\nStockCodeAvailable: " + StockCodeAvailable)
									if (RequiredQuantitySafe <= StockCodeAvailable) {
										document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<img src='images/Stock_InStock.gif' onmouseover=\"tooltip.show('In Stock');\" onmouseout=\"tooltip.hide();\">";
									} else if (RequiredQuantitySafe > StockCodeAvailable && RequiredQuantity <= StockCodeAvailable) {
										document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<img src='images/Stock_LowStock.gif' onmouseover=\"tooltip.show('" + StockCodeAvailable + " in stock, we may struggle to fulfil your requested quantity.');\" onmouseout=\"tooltip.hide();\">";
									} else if (RequiredQuantity > StockCodeAvailable && StockCodeAvailable > 0) {
										document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<img src='images/Stock_PartlyStocked.gif' onmouseover=\"tooltip.show('" + StockCodeAvailable + " in stock, The remaining will go on back order. If you dont want this, simply change the quantity in your basket to " + StockCodeAvailable + ".');\" onmouseout=\"tooltip.hide();\">";
									} else if (RequiredQuantity > StockCodeAvailable && StockCodeAvailable <= 0) {
										document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<img src='images/Stock_NoStock.gif' onmouseover=\"tooltip.show('Not in Stock! Will go on back order, If you dont want this, delete the row.');\" onmouseout=\"tooltip.hide();\">";
									} else {
										document.getElementById("Stock_" + trim(StockCode, " ")).innerHTML = "<img src='images/Stock_Unknown.gif' onmouseover=\"tooltip.show('" + StockCodeAvailable + " in stock? Contact us for more information');\" onmouseout=\"tooltip.hide();\">";
									}
									document.getElementById("BasketStockCheckButton").value = "Perform a stock check";
									document.getElementById("BasketStockCheckButton").disabled = false;
								}
								StockCodeStockCount = 0
								StockCodeReserved = 0
								StockCodeAvailable = 0
							}
						}

					}
				else {
						document.getElementById('NoticeBoard').innerHTML = document.getElementById('NoticeBoard').innerHTML + curr_hour + ":" + curr_min + ":" + curr_sec + " - <span style='color: red'><b>unknown stock error!</b></span><br />"
						alert("An error occured when attempting to fetch the Stock Data, Please ring 01772 459887 and report this problem so we can get it resolved as soon as possible. Thankyou.")
						if (BasketMode == "no") {

						} else {
							document.getElementById("BasketStockCheckButton").value = "Try Again?";
							document.getElementById("BasketStockCheckButton").disabled = false;
						}

					}
			}
		};
		d = new Date();		
		curr_hour = d.getHours();
		curr_min = d.getMinutes();
		curr_sec = d.getSeconds();	
		try{ 
		document.getElementById('NoticeBoard').innerHTML = curr_hour + ":" + curr_min + ":" + curr_sec + " - Contacting Stock Server...<br />"
		} catch(err) {}
		DisableFirstOccurance = true;
		AjaxTimerId = setTimeout(function() {StockCheckError()}, 20000);
		if (BasketMode == "yes") {
			document.getElementById("BasketStockCheckButton").value = "Checking...";
			document.getElementById("BasketStockCheckButton").disabled = true;
		}
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}

function StockCheckError() {
	if (DisableFirstOccurance == true) {
		DisableFirstOccurance = false;
	} else {
		alert('The Stock Check Server is not responding, Please contact us by phone instead');
	}
}