					
function goInStock(id) {
	var outOfStock = document.getElementById('outofstockline' + id);
	var inStock = document.getElementById('addtobasketline' + id);
	var outOfStockMessage = document.getElementById('outofstockmessage' + id);
	outOfStock.style.display = 'none';
	outOfStock.style.visibility = 'hidden';
	outOfStockMessage.style.display = 'none';
	outOfStockMessage.style.visibility = 'hidden';
	inStock.style.display = '';
	inStock.style.visibility = 'visible';
	
}

function goOutOfStock(id) {
	var outOfStock = document.getElementById('outofstockline' + id);
	var inStock = document.getElementById('addtobasketline' + id);
	var outOfStockMessage = document.getElementById('outofstockmessage' + id);
	inStock.style.display = 'none';
	inStock.style.visibility = 'hidden';
	outOfStockMessage.style.display = '';
	outOfStockMessage.style.visibility = 'visible';
	outOfStock.style.display = '';
	outOfStock.style.visibility = 'visible';
}
								
function ExtractNum(stringNo) 
{
	//We're doing string functions to make sure that we're getting the price after "(+" of each option labels
	stringNo = stringNo.slice(stringNo.lastIndexOf("(+"),stringNo.length);

	var parsedNo = ""; 
	for(var n=0; n<stringNo.length; n++) 
	{
		var i = stringNo.substring(n,n+1); 
		if(i=="1"||i=="2"||i=="3"||i=="4"||i=="5"||i=="6"||i=="7"||i=="8"||i=="9"||i=="0"||i==".")
		parsedNo += i; 
	} 
	if (parsedNo.length > 0) { 
	return parsedNo;} else {return 0;}
}
 	

function checkStock(id,outOfStockItems) {
	// Build up out options selections
	var txtPrice = document.getElementById('txtPrice' + id);
	var origPrice = document.getElementById('origPrice' + id);
	var txtPriceEx = document.getElementById('txtPriceEx' +id);
	
	var selections = new Array();
	var selectionCount = 0;
	var numOptionsTotal = 0;
	
	for (i=0;i<document.getElementById('options' + id).elements.length;i++) {
		var element = document.getElementById('options' + id).elements[i];
		if(element.name.substring(0,6)=='OPT_ID') {
		    numOptIDs = numOptIDs + 1;
			switch(element.type)
			{
				case 'checkbox':
					// is this checkbox selected?
					if(element.checked == true) {
						// use this ID
						selections[selectionCount]=element.value;
						selectionCount++;
												
						// find all labels
						var labels = document.getElementsByTagName('label');
						// loop through all label elements
							for (var m = 0; m < labels.length; m++) {
								var label = labels[m];
								var labelFor = label.htmlFor;					
								if (labelFor == element.id) {
										numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(label.innerHTML));
								}							
							}
					} else {
						// otherwise we have to get out the nocheckvalue
						var nocheck = document.getElementById('options' + id).elements['NOCHECK_' + element.name]
						selections[selectionCount]=nocheck.value;
						selectionCount++;
					}
					break;
					
				case 'radio':
					if(element.checked == true) {
						selections[selectionCount]=element.value;
						selectionCount++;
						// find all labels
						var labels = document.getElementsByTagName('label');
						// loop through all label elements
							for (var m = 0; m < labels.length; m++) {
								var label = labels[m];
								var labelFor = label.htmlFor;					
								if (labelFor == element.id) {
										numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(label.innerHTML));
								}							
							}
					}
					break;
					
				case 'select-one':
									
					var Index = element.selectedIndex;
					selections[selectionCount]=element.value;
					selectionCount++;
					numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(element.options[Index].text));
					break;
					
				default:
					break;	
			}	
		}
	}
	
	txtPrice.value=( parseFloat(origPrice.value) +  parseFloat(numOptionsTotal)).toFixed(2);
	if (txtPriceEx != null){
		var numTax = document.getElementById('numTax' + id);
		txtPriceEx.value = (txtPrice.value * numTax.value).toFixed(2);
	}
	
	selections = (selections.sort());
	var selection = selections.join('-');
	var isOutOfStock = false;
	
	// Does this combination exist in out outofstock array?
	for(i=0; i<outOfStockItems.length; i++) {
		if(outOfStockItems[i]==selection) {
			isOutOfStock = true;
			break;
		}
	}
	
	if(isOutOfStock) {
		goOutOfStock(id);
	} else {
		goInStock(id);
	}
}

function ExtractPrice(stringNo) 
{
	//We're doing string functions to make sure that we're getting the price after "£" of each option labels
	stringNo = stringNo.slice(stringNo.lastIndexOf("£"),stringNo.length);

	var parsedNo = ""; 
	for(var n=0; n<stringNo.length; n++) 
	{
		var i = stringNo.substring(n,n+1); 
		if(i=="1"||i=="2"||i=="3"||i=="4"||i=="5"||i=="6"||i=="7"||i=="8"||i=="9"||i=="0"||i==".")
		parsedNo += i; 
	} 
	if (parsedNo.length > 0) { 
	return parsedNo;} else {return 0;}
}

function checkStockPosters(id,outOfStockItems,P_ID) {
	// Build up out options selections
	var txtPrice = document.getElementById('txtPrice' + id);
	var origPrice = document.getElementById('origPrice' + id);
	var txtPriceEx = document.getElementById('txtPriceEx' +id);
	
	var selections = new Array();
	var selectionCount = 0;
	var numOptionsTotal = 0;
	var numTemp = 0;
	var numOptIDs = 0;
	var numTemp1 = 0;
	var numTemp2 = 0;
	var numProductID = 0;
	
	numProductID = parseInt(P_ID)
	
	//Count the menu
	for (i=0;i<document.getElementById('options' + id).elements.length;i++) {
		var element = document.getElementById('options' + id).elements[i];
		if(element.name.substring(0,6)=='OPT_ID') {
		    numTemp = numTemp + 1
		}
	}
	for (i=0;i<document.getElementById('options' + id).elements.length;i++) {
		var element = document.getElementById('options' + id).elements[i];
		if(element.name.substring(0,6)=='OPT_ID') {
		    numOptIDs = numOptIDs + 1;
			switch(element.type)
			{
				case 'checkbox':
					// is this checkbox selected?
					if(element.checked == true) {
						// use this ID
						selections[selectionCount]=element.value;
						selectionCount++;
												
						// find all labels
						var labels = document.getElementsByTagName('label');
						// loop through all label elements
							for (var m = 0; m < labels.length; m++) {
								var label = labels[m];
								var labelFor = label.htmlFor;					
								if (labelFor == element.id) {
										numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(label.innerHTML));
								}							
							}
					} else {
						// otherwise we have to get out the nocheckvalue
						var nocheck = document.getElementById('options' + id).elements['NOCHECK_' + element.name]
						selections[selectionCount]=nocheck.value;
						selectionCount++;
					}
					break;
					
				case 'radio':
					if(element.checked == true) {
						selections[selectionCount]=element.value;
						selectionCount++;
						// find all labels
						var labels = document.getElementsByTagName('label');
						// loop through all label elements
							for (var m = 0; m < labels.length; m++) {
								var label = labels[m];
								var labelFor = label.htmlFor;					
								if (labelFor == element.id) {
										numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(label.innerHTML));
								}							
							}
					}
					break;
					
				case 'select-one':
									
					//Just change the way it calculates if it's two combobox with size and design - BR - 02/05/2007
					if(numTemp == 2) {
					    var Index = element.selectedIndex;
					    
					    if (numOptIDs == 1) {
					        numTemp1 = element.value
					    }
					    else {
					        numTemp2 = element.value
					    }
					    
					    if ( (numTemp1 > 0) && (numTemp2 > 0) ) {
					        selections[selectionCount]=element.value;
					        selectionCount++;
					        //numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(element.options[Index].text));
					        //numOptionsTotal = numOptionsTotal + parseFloat(ExtractPrice(element.options[Index].value));
					        showHint(numProductID,numTemp1,numTemp2)
					        break;    
					    }
					}
					else
					{
					    var Index = element.selectedIndex;
					    selections[selectionCount]=element.value;
					    selectionCount++;
					    numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(element.options[Index].text));
					    break;
					}
					
				default:
					break;	
			}	
		}
	}
	
	//txtPrice.value=( parseFloat(origPrice.value) +  parseFloat(numOptionsTotal)).toFixed(2);
	if (txtPriceEx != null){
		var numTax = document.getElementById('numTax' + id);
		txtPriceEx.value = (txtPrice.value * numTax.value).toFixed(2);
	}
	
	selections = (selections.sort());
	var selection = selections.join('-');
	var isOutOfStock = false;
	
	// Does this combination exist in out outofstock array?
	for(i=0; i<outOfStockItems.length; i++) {
		if(outOfStockItems[i]==selection) {
			isOutOfStock = true;
			break;
		}
	}
	
	if(isOutOfStock) {
		goOutOfStock(id);
	} else {
		goInStock(id);
	}
}

//AJAX Starts here.

var xmlHttp

function showHint(numProductID,numTempID1,numTempID2)
{   
    numProductID = parseInt(numProductID)
    numID1 = parseInt(numTempID1)
    numID2 = parseInt(numTempID2)
    //alert (numTempID1 + ', ' + numTempID2)
    if ((numTempID1 = 0) || (numTempID2 = 0))
    { 
      document.getElementById("txtHint").innerHTML="";
      //alert("failed");
      return;
    }
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
      alert ("Your browser does not support AJAX!");
      return;
    } 
    var url="price_calculation.asp";
    url=url+"?pid="+numProductID;
    url=url+"&opt_id1="+numID1;
    url=url+"&opt_id2="+numID2;
    //alert (url)
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
} 

function stateChanged() 
{    
    if (xmlHttp.readyState==4)
    {    
        numTotal = parseInt(xmlHttp.responseText);
        //alert(xmlHttp.responseText);
        document.getElementById("txtHint").innerHTML = parseFloat(numTotal).toFixed(2);
    }
}

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;
} 

						