// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// holds the remote server address 
var serverAddress = "/rbspire_ajax.php";
// when set to true, display detailed error messages
var showErrors = true;
// initialize the validation requests cache 
var cache = new Array();


// creates an XMLHttpRequest instance
function createXmlHttpRequestObject() 
{
	// will store the reference to the XMLHttpRequest object
	var xmlHttp;
	// this should work for all browsers except IE6 and older
	try
	{
		// try to create XMLHttpRequest object
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		// assume IE6 or older
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
		                                "MSXML2.XMLHTTP.5.0",
		                                "MSXML2.XMLHTTP.4.0",
		                                "MSXML2.XMLHTTP.3.0",
		                                "MSXML2.XMLHTTP",
		                                "Microsoft.XMLHTTP");
		// try every id until one works
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
		{
		  try 
		  { 
		    // try to create XMLHttpRequest object
		    xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
		  } 
		  catch (e) {} // ignore potential error
		}
	}
	// return the created object or display an error message
	if (!xmlHttp)
	{
		displayError("Error creating the XMLHttpRequest object.");
	}
	else 
	{
		return xmlHttp;
	}
}

// function that displays an error message
function displayError($message)
{
	// ignore errors if showErrors is false
	if (showErrors)
	{
		// turn error displaying Off
		//showErrors = false;
		// display error message
 
		alert("Error encountered: \n" + $message);
		// retry validation after 10 seconds
		setTimeout("ajax_server();", 10000);
	}
}



// the function handles the validation for any form field
function ajax_server(inputValue, type, id ,inputValue2 , id2,inputValue3 , id3)
{
	var rv = false;
	//alert("azax_server");
	var sa = serverAddress 
	if (type == "postcode" || type == "del_postcode" || type == "postkey" || type == "del_postkey")
	{
		sa = "/rbajax_validate.php";
	}

	inputValue = trim(inputValue);
	type  = trim(type);
	if (id == undefined)
	{
		id = "";
	}
	else
	{
		if (inputValue == "-")
		{
			inputValue = Get_Value(id);
		}
	}
	if (inputValue2 == undefined)
	{
		inputValue2 = "";
	}
	if (id2 == undefined)
	{
		id2 = "";
	}
	if (inputValue3 == undefined)
	{
		inputValue3 = "";
	}
	if (id3 == undefined)
	{
		id3 = "";
	}
	// only continue if xmlHttp isn't void
	if (xmlHttp)
	{
		// if we received non-null parameters, we add them to cache in the
		// form of the query string to be sent to the server for validation
		if (inputValue != undefined && inputValue != "" && inputValue != "0")
		{
		  // encode values for safely adding them to an HTTP request query string
		  inputValue = encodeURIComponent(inputValue);
		  type = encodeURIComponent(type);
		  id = encodeURIComponent(id);
		  // add the values to the queue
		  
		  var query = "inputValue=" + inputValue + "&type=" + type + "&id=" + id + "&inputValue2=" + inputValue2 + "&id2=" + id2 + "&inputValue3=" + inputValue3 + "&id3=" + id3;
		  //alert(query)
		  cache.push(query);
		}
		// try to connect to the server
		try
		{
		  // continue only if the XMLHttpRequest object isn't busy
		  // and the cache is not empty
		  if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) 
		     && cache.length > 0)
		  {
		    // get a new set of parameters from the cache
		    var cacheEntry = cache.shift();
		    //alert(cacheEntry);
		    // make a server request to validate the extracted data
		    xmlHttp.open("POST", sa , true);
		    xmlHttp.setRequestHeader("Content-Type", 
		                             "application/x-www-form-urlencoded");
		    xmlHttp.onreadystatechange = handleRequestStateChange;
		    xmlHttp.send(cacheEntry);
		  }
		}
		catch (e)
		{
		  // display an error when failing to connect to the server
		  displayError(e.toString());
		}
	}
}

// function that handles the HTTP response
function handleRequestStateChange() 
{
	// when readyState is 4, we read the server response
	if (xmlHttp.readyState == 4) 
	{
		// continue only if HTTP status is "OK"
		if (xmlHttp.status == 200) 
		{
		  try
		  {
		    // read the response from the server
		    readResponse();
		  }
		  catch(e)
 
		  {
		    // display error message
		    displayError(e.toString());
		  }
		}
		else
		{
		  // display error message
		  displayError(xmlHttp.statusText);
		}
	}
}

// read server's response 
function readResponse()
{
	// retrieve the server's response 
	var response = xmlHttp.responseText;
	// server error?
	if (response.indexOf("ERRNO") >= 0 
		  || response.indexOf("error:") >= 0
		  || response.length == 0)
		throw(response.length == 0 ? "Server error." : response);
	// get response in XML format (assume the response is valid XML)
	responseXml = xmlHttp.responseXML;
	// get the document element
	//alert(response);
	xmlDoc = responseXml.documentElement;
	//alert(xmlDoc);
	
	if(xmlDoc != undefined && xmlDoc.getElementsByTagName("result")[0] != undefined)
	{
	result = xmlDoc.getElementsByTagName("result")[0].firstChild.data;
	if (result >= 1)
	{
		key = "type";
		type = get_from_XML(xmlDoc,key);
		if (type == "postcode" || type == "del_postcode")
		{
			key = "fieldid";
			id = get_from_XML(xmlDoc,key);
			if (id == "postalcode_find")
			{
				id = "address";
			}
			if (id == "del_postalcode_find")
			{
				id = "del_address";
			}
			key = "addresses";
			data = get_from_XML(xmlDoc,key);
			//alert(data);
			Populate_Selector(id,data,true,true);
		
		}
		if (type == "postkey" || type == "del_postkey")
		{
			key = "fieldid";
			id = get_from_XML(xmlDoc,key);
			if (id == "address")
			{
				pref = "";
			}
			if (id == "del_address")
			{
				pref = "del_";
			}
			Set_Value(pref + "org",get_from_XML(xmlDoc,"organisation"),false);
			Set_Value(pref + "address1",get_from_XML(xmlDoc,"property"));
			Set_Value(pref + "address2",get_from_XML(xmlDoc,"address1"));
			Set_Value(pref + "address3",get_from_XML(xmlDoc,"address2"));
			Set_Value(pref + "locality",get_from_XML(xmlDoc,"town"));
			Set_Value(pref + "region",get_from_XML(xmlDoc,"county"));
			Set_Value(pref + "postalcode",get_from_XML(xmlDoc,"postcode"));
			ele = Get_Element(pref + "addresscontainer");
			ele.className = "";
			MSIE_Refresh(ele);
			//alert(data);
			//Populate_Selector(id,data,true,true);
		
		}
		if (type == "Model")
		{
			key = "id";
			id = get_from_XML(xmlDoc,key);
			key = "data";
			data = get_from_XML(xmlDoc,key);
			Populate_Selector(id,data);
		
		}
		//alert("type" + type);
		if (type == "prodimage100x100")
		{
			key = "id";
			id = get_from_XML(xmlDoc,key);
			key = "data";
			data = get_from_XML(xmlDoc,key);
			//alert(data);
			Set_Image(id,data);
		
		}
		if (type == "addtobasket")
		{
			key = "id";
			id = get_from_XML(xmlDoc,key);
			key = "data";
			data = get_from_XML(xmlDoc,key);
			Set_InnerHTML(id,data);
			if (result == 2)
			{
				Confirm_Add_to_Basket(true); // already in basket
			}
			else
			{
				Confirm_Add_to_Basket(false);
			}
		
		}
		if (type == "fitresult")
		{
			key = "id";
			id = get_from_XML(xmlDoc,key);
			key = "id2";
			id2 = get_from_XML(xmlDoc,key);
			key = "id3";
			id3 = get_from_XML(xmlDoc,key);
			d2 = Get_Element(id);
			if (d2)
			{
				d2.style.display= "block";
			}
			d3 = Get_Element(id3);
			if (d3)
			{
				d3.style.display= "block";
			}
			key = "data";
			data = get_from_XML(xmlDoc,key);
			Set_InnerHTML(id,data);
			key = "data2";
			data2 = "";
			data2 = get_from_XML(xmlDoc,key);
			
			//Set_InnerHTML(id2,"HEllo");
			data2 = data2.replace(/\t/g," ");
			data2 = data2.replace(/  /g," ");
//			alert(data2.length)
//			alert(data2)
//			Set_InnerHTML(id2,data2);

			var elespan = Get_Element("bootfinderspan");
			if (elespan != undefined)
			{
				elespan.parentNode.removeChild(elespan);
			}
			var obj = document.createElement("span");
			obj.id = "bootfinderspan";
			obj.innerHTML = data2;
//			alert(data2.length)
			
			divobj1 = document.getElementById(id2);
			divobj1.appendChild(obj);
			if (result == 2)
			{
				Hide_Element("product_detail_price_buy")
			}

		
		
		}

		// call validate() again, in case there are values left in the cache
		setTimeout("ajax_server();", 500);
	}
	else
	{
		key = "message";
		var message = get_from_XML(xmlDoc,key);
		alert(message);
	}
	}
	else
	{
		alert("Sorry, no results were found.");
	}
}

function Populate_Selector(select_ID,values_input,clear,set_size)
{
if (select_ID != "" && select_ID != undefined)
{
	//alert(select_ID);
	var sel = Get_Element(select_ID);
	var values = new Array();
	values = values_input.split(";;");
	var addr = new Array();
	var postkey;
	var postaddress;
	var opt;
	var i;

// first remove any existing options (except the first)
	var len = sel.options.length;
	for (i=1;i<len;i++)
	{
		sel.options[1] = null;
	}
	if (values.length == 1 || clear != undefined ) // only one address returned  for the postcode
	{
		sel.options[0] = null;
	}
	if (clear != undefined)
	{
		opt = document.createElement("OPTION");
		opt.text="Please select";
		opt.value="";
		sel.options.add(opt);
	}
	for (i=0;i<values.length;i++)
	{
		addr = values[i]
		if (addr.length > 5)
		{
			addr = addr.split("::");
			postkey = trim(addr[0]);
			postaddress = trim(addr[1]);
			//alert(postkey + ":" + postaddress + ":");
			opt = document.createElement("OPTION");
			opt.text=postaddress;
			opt.value=postkey;
			sel.options.add(opt);
		}
	}
	sel.disabled = false;
	if (set_size != undefined)
	{
		sel.size = i+1	;
	}

}
}


function trim(sString)
{
if (sString != undefined)
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
}
return sString;
}

function get_from_XML(xmlDoc,key)
{
	var rv = "";
	if (xmlDoc.getElementsByTagName(key)[0].firstChild != undefined)
	{
		rv = xmlDoc.getElementsByTagName(key)[0].firstChild.data;
	}
	return rv;
}
// sets focus on the first field of the form
function setFocus(id)    
{
	Get_Element(id).enabled = true;
	Get_Element(id).focus();
}

function Set_Image(imageID, src)
{
	if (imageID != "")
	{
		var img = Get_Element(imageID);
		if (img != undefined)
		{
			img.src = src;
			//img.alt = src;
		}
		//alert(src);
	}
}

function Set_InnerHTML(ID, html)
{
	//alert("ID: " + ID + " src: " + html + ":");

	if (ID != "")
	{
		var obj = Get_Element(ID);
		//alert("ID: " + ID );
	
		if (obj != undefined)
		{
			//alert("I2D: " + ID );
			obj.innerHTML = html;
		}
//		alert("ID:" + ID + "src:" + src + ":");
	}
}

function Set_Value(fieldID,value,overwrite)
{
//	alert("f " + fieldID)
	var f = Get_Element(fieldID);
	if (overwrite == false && overwrite != undefined)
	{
		if (f.value != "" || value == "")
		{
			// leave it alone
		}
		else
		{
			f.value = value;
		}
	}
	else
	{
		f.value = value;
	}
}

function Get_Value(fieldID)
{
	//alert("f " + fieldID)
	var f = Get_Element(fieldID);
	value = f.value;
	return value
}

function Get_Name(fieldID)
{
	//alert("f " + fieldID)
	var f = Get_Element(fieldID);
	value = f.name;
	return value
}
function Set_Name(fieldID,value)
{
	//alert("f " + fieldID)
	var f = Get_Element(fieldID);
	f.name = value;
}

function Reset_Image(imageID)
{
	if (imageID != "")
	{
		var img = Get_Element(imageID);
//		img.src = image_dir + "clear.gif";
	}
}

function Format_Currency(value)
{

/*Parse number to currency format:
By Website Abstraction (www.wsabstract.com)
and Java-scripts.net (www.java-scripts.net)
*/


var prefix=currency

var tempnum = value.toString();
if (tempnum.substring(0,1)==currency)
{
	return value;
}

if(tempnum != "0")
{
	//alert("tempnum " + tempnum)
}
var pos = tempnum.indexOf(".");
if (pos <= 0)
{
	value=prefix+tempnum+".00";
	//alert("pos " + pos + " v1 " + value);
}
else
{
	var arr;
	var i = 0;
	var d = 0;
	arr = tempnum.split(".");
	i = arr[0];
	d = arr[1] + "00";
	d = d.substring(0,2);
	value = prefix + i + "." + d;
	//alert("v2 " + value);
}


return value;
}


function Clear_Select(select_ID)
{
if (select_ID != "" && select_ID != undefined)
{
	var sel = Get_Element(select_ID);
	sel.disabled = true;
// remove any existing options (except the first)
	var len = sel.options.length;
	for (i=0;i<len;i++)
	{
		sel.options[0] = null;
	}
	opt = document.createElement("OPTION");
	opt.text="Please select";
	opt.value="";
	sel.options[sel.length] = opt;

}
}
function Populate_Model(select)
{
	var Make_ID = Select_Value(select,"")
//	alert(Make_ID);
	Clear_Select("model")
	Make_ID = parseInt(Make_ID);
	if (Make_ID > 0)
	{
		Make_ID = Make_ID.toString();
		ajax_server(Make_ID, "Model", "model");
	}
}
function Goto_Bag_Finder(select)
{
	var ID = Select_Value(select,"")
	if (ID != "")
	{
		ID = parseInt(ID);
		document.location="/bag_finder_results.php?Model_ID=" + ID;	
	}
}

function PD_Bag_Finder(select,Product_ID)
{	
	if (Product_ID == undefined)
	{
		Product_ID = "0";
	}
	var ID = Select_Value(select,"")
	if (ID != "")
	{
		ID = parseInt(ID);
		ID = ID.toString();
		Product_ID = parseInt(Product_ID);
		Product_ID = Product_ID.toString();
		//alert(ID);	
		ajax_server(ID, "fitresult", "fit-result" , Product_ID, "bootGrid","","fit-result-base");
		//ajax_server(inputValue, type, id ,inputValue2 , id2,inputValue3 , id3)

//		document.location="/bag_finder_results.php?Model_ID=" + ID;	
	}
}



function Select_Value(sel,id)
{
var sel 
if (id != "" && id != undefined)
{
	sel = Get_Element(id);
}
var val = sel.options[sel.selectedIndex].value;
return val;
}
function Switch_to_Grid()
{
div = Get_Element("productResultList");
//alert(div);
if (div != undefined)
{
	div.id = "productResultGrid"
	MSIE_Refresh(div);


}
else 
{
	div = Get_Element("productList");
	//alert(div);
	if (div != undefined)
	{
		div.id = "productGrid"
		MSIE_Refresh(div);

	}
}
ele = Get_Element("Switchtolist");
ele.disabled = false;
ele.href = "javascript:Switch_to_List();"
ele = Get_Element("Switchtogrid");
ele.disabled = true;
ele.href = "javascript:void(0);"

}
function Refresh_Lis()
{
var cont = 100;
li = Get_Element("li" + cont)
while (li != undefined)
{
	cont++;	
	li = Get_Element("li" + cont)
}

}
function Switch_to_List()
{
div = Get_Element("productResultGrid");
//alert(div);
if (div != undefined)
{
	div.id = "productResultList"
	MSIE_Refresh(div);
}
else 
{
	div = Get_Element("productGrid");
	//alert(div);
	if (div != undefined)
	{
		div.id = "productList"
		MSIE_Refresh(div);
	}
}
ele = Get_Element("Switchtolist");
ele.disabled = true;
ele.href = "javascript:void(0);"
ele = Get_Element("Switchtogrid");
ele.disabled = false;
ele.href = "javascript:Switch_to_Grid();"

}

function Get_Element(id)
{
//alert(id);
return document.getElementById(id);
}

function Validate_Bag_Finder_Form(frm)
{
var rv = false;

var model = Get_Element("model");
var model_value = 0;
if (model != undefined)
{
	model_value = parseInt(Select_Value(model,""));
//	alert(model_value);
}
if (model_value > 0)
{
	// the punter has selected by make and model
	rv=true;
	return rv;
}
var height = Get_Element("height");
var width = Get_Element("width");
var depth = Get_Element("depth");

var height_value = parseInt("0" + height.value);
var width_value = parseInt("0" + width.value);
var depth_value = parseInt("0" + depth.value);
var ele;
//alert(height_value);



if (height_value == 0)
{
	ele = Get_Element("heightcontainer");
	ele.className = "error";
	ele = Get_Element("heightstar");
	ele.style.visibility = "hidden";
	ele = Get_Element("heighterror");
	ele.style.visibility = "visible";
}
else
{
	ele = Get_Element("heightcontainer");
	ele.className = "";
	ele = Get_Element("heightstar");
	ele.style.visibility = "visible";
	ele = Get_Element("heighterror");
	ele.style.visibility = "hidden";
}

if (width_value == 0)
{
	ele = Get_Element("widthcontainer");
	ele.className = "error";
	ele = Get_Element("widthstar");
	ele.style.visibility = "hidden";
	ele = Get_Element("widtherror");
	ele.style.visibility = "visible";
}
else
{
	ele = Get_Element("widthcontainer");
	ele.className = "";
	ele = Get_Element("widthstar");
	ele.style.visibility = "visible";
	ele = Get_Element("widtherror");
	ele.style.visibility = "hidden";
}

if (depth_value == 0)
{
	ele = Get_Element("depthcontainer");
	ele.className = "error";
	ele = Get_Element("depthstar");
	ele.style.visibility = "hidden";
	ele = Get_Element("deptherror");
	ele.style.visibility = "visible";
}
else
{
	ele = Get_Element("depthcontainer");
	ele.className = "";
	ele = Get_Element("depthstar");
	ele.style.visibility = "visible";
	ele = Get_Element("deptherror");
	ele.style.visibility = "hidden";
}
if (height_value > 0 && width_value > 0 && depth_value > 0)
{
	rv = true;
}



return rv;
}
function Set_Colour_100x100(ID,Colour_ID)
{
ID = parseInt(ID);
ID = ID.toString();
Colour_ID = parseInt(Colour_ID);
Colour_ID = Colour_ID.toString();
idf = Get_Element("ID" + ID);
idf.value = Colour_ID;
ajax_server(Colour_ID, "prodimage100x100", "mainimage" + ID);
idc = Get_Element("mainimagelink" + ID);
if (idc)
{
	var href = idc.href
//	alert(idc.href);
	href = href.replace(ID,Colour_ID);
//	alert (href);
	idc.href = href;
}
idc.value = Colour_ID;
}

function Add_to_Basket(ID,Qty_ID)
{
if (Qty_ID == undefined)
{
	Qty_ID = "";
}
var Product_ID;
idc = Get_Element("colour");
if (idc != undefined && Qty_ID != "")
{
	Colour_ID = Select_Value(idc);
	if (Colour_ID != false && parseInt(Colour_ID) > 0)
	{
		Product_ID = Colour_ID;
	}	
}
else
{
	ID = parseInt(ID);
	ID = ID.toString();
	idf = Get_Element("ID" + ID);
	Product_ID = idf.value
	Product_ID = parseInt(Product_ID);
	Product_ID = Product_ID.toString();
	//alert(":" + ID + ":" + Product_ID + ":" );
}
Qty = 1;
//alert(Qty_ID);
if (Qty_ID != undefined && Qty_ID != "")
{
	Qty_ID = parseInt(Qty_ID);
	Qty_ID = Qty_ID.toString();
	idq = Get_Element("Qty" + Qty_ID);
	Qty = idq.value
	Qty = parseInt(Qty);
	Qty = Qty.toString();	
	//alert(Qty);
}
ajax_server(Product_ID, "addtobasket", "shoppingbasket",Qty);
}

function Confirm_Add_to_Basket(already_in)
{
	var url = top.window.location.href
	//alert(url);
	var pos = url.indexOf("#");	
	if (pos > 0)
	{
		url = url.substring(0,pos)
	}

	url = url + "#basket";
	//alert(url);
	top.window.location.href = url;
	if (already_in == true)
	{
		alert("This item is already in your basket");
	}
	else
	{
		alert("This item has been added to your basket");
	}

}

function Add_Bookmark (title, url)
{
if (window.sidebar) 
{ // firefox
      window.sidebar.addPanel(title, url,"");
} 
else if( window.external ) 
{ //MSIE
        window.external.AddFavorite( url, title);
} 
else 
{
	alert('Please bookmark this site via your browser.');
}
}

function Remove(id)
{
	id = parseInt(id);
	var frm = Get_Element("basketform");
	var ele = Get_Element("quantity" + id);
	if (ele != undefined && frm != undefined)
	{
		ele.value = 0;
		frm.submit();
	}
	
}

var err = "";
function Validate_Your_Details(form,prompt)
{
if (prompt == true)
{
}
else
{
	var sel = Get_Element("outsideuk");
	OutsideUK(sel);
	sel = Get_Element("delivery");
	Show_Deliverydetails(sel)
	sel = Get_Element("del_outsideuk");
	Del_OutsideUK(sel);


}

err = "";
Validate_Field("firstname",err);
Validate_Field("surname",err);
Validate_Field("address1",err);
Validate_Field("locality",err);
Validate_Field("postalcode",err);
Validate_Field("telephone",err);
Validate_Field("email",err);

var delivery = Select_Value("","delivery") 
if (delivery == "no" )
{
	Validate_Field("del_firstname",err);
	Validate_Field("del_surname",err);
	Validate_Field("del_address1",err);
	Validate_Field("del_locality",err);
	Validate_Field("del_postalcode",err);
}

if (err != "")
{
	if (prompt == true)
	{
		alert("Please complete the following fields:" + "\n\n" + err);
	}
	return false;
}
Open_Addresses();

return true;
}
function Open_Addresses ()
{
var ele
if (Get_Value("postalcode") != "")
{
	ele = Get_Element("addresscontainer");
	ele.className = "";
	MSIE_Refresh(ele);

}
//alert(Get_Value("del_postalcode"))
if (Get_Value("del_postalcode") != "")
{
	ele = Get_Element("deliverydetailscontainer");
	ele.className = "";
	MSIE_Refresh(ele);

	ele = Get_Element("del_addresscontainer");
	ele.className = "";
	MSIE_Refresh(ele);

}

}
function Validate_Field(elename)
{
var val = Get_Value(elename);
if (val == "")
{
	Set_Error_EMs(elename);
	err += get_Var_Title(elename) + "\n";
}
else
{
	UnSet_Error_EMs(elename);
}

}

function OutsideUK(sel)
{
if (sel == "" || sel == undefined)
{
	sel = Get_Element("outsideuk");
}
var val = sel.options[sel.selectedIndex].value;
//alert(val);
var ele = Get_Element("postcodefinder");
//alert(ele);
if (ele != undefined)
{
	if (val == "")
	{
		//
	}
	else if (val == "yes")
	{
		ele.className = "hidden";
		ele = Get_Element("addresscontainer");
		ele.className = "";
		MSIE_Refresh(ele);

	}
	else
	{
		ele.className = "";
		MSIE_Refresh(ele);
		var HTML = ele.innerHTML;
		if (MSIE())
		{
			alert("Please enter your postcode and select your address");
		}
		ele.innerHTML = HTML;


		ele = Get_Element("addresscontainer");
		ele.className = "hidden";


	}
}
}

function Set_Error_EMs(elename)
{
	ele = Get_Element(elename + "container");
	ele.className = "error";
	ele = Get_Element(elename + "star");
	ele.style.visibility = "hidden";
	ele = Get_Element(elename + "error");
	ele.style.visibility = "visible";
}
function UnSet_Error_EMs(elename)
{
	ele = Get_Element(elename + "container");
	ele.className = "";
	ele = Get_Element(elename + "star");
	ele.style.visibility = "visible";
	ele = Get_Element(elename + "error");
	ele.style.visibility = "hidden";
}
function Show_Deliverydetails(sel)
{
var val = sel.options[sel.selectedIndex].value;
//alert(val);
var ele = Get_Element("deliverydetailscontainer");
//alert(ele);
if (ele != undefined)
{
	if (val == "")
	{
		//
	}
	else if (val == "yes")
	{
		ele.className = "hidden";
		ele = Get_Element("del_addresscontainer");
		ele.className = "";
		MSIE_Refresh(ele);

	}
	else
	{
		ele.className = "";
		MSIE_Refresh(ele);
		var HTML = ele.innerHTML;
		if (MSIE())
		{
			//alert("Please enter your delivery postcode and select your address");
		}
		ele.innerHTML = HTML;


		ele = Get_Element("del_addresscontainer");
		ele.className = "hidden";
	}
}

}

function Del_OutsideUK(sel)
{
var val = sel.options[sel.selectedIndex].value;
//alert(val);
var ele = Get_Element("del_postcodefinder");
//alert(ele);
if (ele != undefined)
{
	if (val == "")
	{
		//
	}
	else if (val == "yes")
	{
		ele.className = "hidden";
		ele = Get_Element("del_addresscontainer");
		ele.className = "";
		MSIE_Refresh(ele);

	}
	else
	{
		ele.className = "";
		MSIE_Refresh(ele);
		var HTML = ele.innerHTML;
		if (MSIE())
		{
			alert("Please enter your delivery postcode and select your address");
		}
		ele.innerHTML = HTML;


		ele = Get_Element("del_addresscontainer");
		ele.className = "hidden";
	}
}
}

function CCNo_Selected(sel)
{
var val = sel.options[sel.selectedIndex].value;
//alert(val);
var ele = Get_Element("ccdetailscontainer");
//alert(ele);
if (ele != undefined)
{
	if (val == "")
	{
		ele.className = "hidden";
	}
	else
	{
		ele.className = "";
	}
}
}

function Validate_CC_Details(form,prompt)
{
if (prompt == true)
{
}
else
{
	var sel = Get_Element("CCType_ID");
	CCNo_Selected(sel);

}

err = "";
Validate_Field("cardname",err);
Validate_Field("cardnumber",err);
var ccnum = Get_Value("cardnumber");
if (ccnum != "" && ccnum.length < 10)
{
	err += "Debit/Credit card number" + "\n";
}
Validate_Field("securitycode",err);

var expirymonth = Select_Value("","expirymonth") 
var expiryyear = Select_Value("","expiryyear") 
if (expirymonth == "" || expiryyear == "")
{
	err += "Card Expiry Date" + "\n";
}

cb = Get_Element("checkbox");
if (cb.checked != true)
{
	err += "Agree to Terms and Conditions" + "\n";
}


if (err != "")
{
	if (prompt == true)
	{
		alert("Please complete the following fields:" + "\n\n" + err);
	}
	return false;
}
Open_Addresses();

return true;
}
var titles = new Array;
titles["firstname"] = "First Name";
titles["surname"] = "Surname";
titles["address1"] = "Address Line 1";
titles["locality"] = "Town / City";
titles["postalcode"] = "Postcode/Zip";
titles["telephone"] = "Telephone";
titles["email"] = "Email Address";

titles["del_firstname"] = "First Name (delivery)";
titles["del_surname"] = "Surname (delivery)";
titles["del_address1"] = "Delivery Address Line 1";
titles["del_locality"] = "Delivery Town / City";
titles["del_postalcode"] = "Delivery Postcode/Zip";
titles["cardname"] = "Cardholders name";
titles["cardnumber"] = "Debit/Credit card number";
titles["securitycode"] = "Card security code";

function get_Var_Title(str)
{
	var st = titles[str];
	//alert(st);
	if (st != undefined && st != "")
	{
		str = st;
	}
	//alert(str);
	return str;
}

function Swap_Product_Image(img)
{
var id = "detailed_product_image";
var ele = Get_Element(id);
if (ele != undefined)
{
	Set_Image(id,img);
}

id = "detailed_product_image_lightbox";
ele = Get_Element(id);
if (ele != undefined)
{
	ele.href = img;
}

}
function Hide_Element(id)
{
	var ele = Get_Element(id);
	if (ele != undefined)
	{
		ele.className = "offscreen";
//		MSIE_Refresh(ele);

	}
}
function Show_Element(id)
{
	var ele = Get_Element(id);
	if (ele != undefined)
	{
		ele.className = "";
		MSIE_Refresh(ele);

	}
}
function Show_Summary()
{
Hide_Element("Product_Features");
Show_Element("Product_Summary");
}
function Show_Features()
{
Hide_Element("Product_Summary")
Show_Element("Product_Features");

}
function MSIE_Refresh(ele)
{
if (MSIE())
{
	ele.innerHTML += "<span class='hidden'></span>";
}
}


function MSIE()
{
if (navigator.userAgent.indexOf("MSIE") > 0)
{
	return true;
}
return false;


}
