function doLoad() 
{
	divmove();
}	
function validateoption()
{
	
  //clear the error message box
  /*try
  {
    var elem = document.getElementById("addcarterror");
    elem.innerHTML = "";
  }
  catch(e)
  {
   // 
  }
  */
  
  try
  {
  	var frm = this.document.getElementById("frmProductLargeMain");
    var dd_options = document.getElementById("Ysubproductdropdown");
    var dd_selectedvalue = dd_options.options[dd_options.selectedIndex].value;

    if(dd_selectedvalue=="-1")
    {
    	alert('You must select an option.');
    }
	else
	{
		//var frm = this.document.getElementById("frmProductLargeMain");
		//frm.submit();
		AddFormToCart(frm);
	}
	
    return dd_selectedvalue!="-1";
  }
  catch(e)
  {
	//alert(e);
	AddFormToCart(frm);
	return true;  // no options present so continue as before 
  }
}

function hidden_reviews(url) 
{ 	
	getAllReviews(url);
	document.getElementById('hidden_reviews').style.display = 'block';
	document.getElementById('hidden_reviews').style.borderBottom = '1px solid #CCCCCC';
	document.getElementById('main_review_holder').style.background = "url('') repeat-x";
	document.getElementById('main_review_holder').style.border = '';
	document.getElementById('main_review_holder').style.margin = '0px';
	document.getElementById('main_review_holder').style.borderBottom = '1px solid #CCCCCC';
	
}
function divmove() {
		//Move Search Footer
		if(document.getElementById("quick_search_links")) {
			var elem = document.getElementById("quick_search_links_holder"); 
			var res_eval = document.getElementById("quick_search_links").innerHTML;
			var newdiv = document.createElement("div"); 
			newdiv.innerHTML = res_eval; 
			elem.innerHTML = ''; 
			elem.appendChild(newdiv);  
		}

		//Move the Breadcrumbs
		try
		{
		  if(document.getElementById("originalCrumb"))
		  {
		    var elemCrumb = document.getElementById("breadcrumbs"); 
			var resCrumb = document.getElementById("originalCrumb").innerHTML;
			var newdivCrumb = document.createElement("div"); 
			newdivCrumb.innerHTML = resCrumb; 
			elemCrumb.innerHTML = ''; 
			elemCrumb.appendChild(newdivCrumb); 
		 }
		}
		catch(e)
		{
		//
		}

		//Move Overview text
		/*if(document.getElementById("detailoverviewtext") && document.getElementById("detailoverviewholder")) {
			var elem = document.getElementById("detailoverviewholder"); 
			var res_eval = document.getElementById("detailoverviewtext").innerHTML;
			var newdiv = document.createElement("div"); 
			newdiv.innerHTML = res_eval; 
			//elem.innerHTML = ''; 
			elem.appendChild(newdiv);  
		}
		
		//Move Overview text at the top
		if(document.getElementById("detailoverviewtext")) {
			var elem = document.getElementById("short_desc_overview"); 
			var res_eval = document.getElementById("detailoverviewtext").innerHTML;
			var newdiv = document.createElement("div"); 
			newdiv.innerHTML = res_eval; 
			elem.innerHTML = ''; 
			elem.appendChild(newdiv);  
		}
		

		//Hidden Review Text
		if(document.getElementById("hidden_reviews_text")) {
			var elem = document.getElementById("hidden_reviews"); 
			var res_eval = document.getElementById("hidden_reviews_text").innerHTML;
			var newdiv = document.createElement("div"); 
			newdiv.innerHTML = res_eval; 
			elem.innerHTML = ''; 
			elem.appendChild(newdiv);  
			document.getElementById("hidden_reviews").style.display = "none";
		}*/

		//Move menu on details page
		if(document.getElementById("menudetail_text")) {
			var elem = document.getElementById("menudetail_holder"); 
			var res_eval = document.getElementById("menudetail_text").innerHTML;
			var newdiv = document.createElement("div"); 
			newdiv.innerHTML = res_eval; 
			elem.innerHTML = ''; 
			elem.appendChild(newdiv); 
		}
			getShoppingCart();
}
//window.onload = divmove;

//image swapping function:
function imageswap(imgDocID, imgObjName) {
	//eval("document['"+imgDocID+"].src = " + imgObjName + ".src");
//	document.images[imgDocID].src = eval(imgObjName + ".src");
	//document['back'].src = eval(imgObjName+".src");
	document.getElementById(imgDocID).setAttribute("src", imgObjName);
	//return true;
} 

function GetXmlHttpObject(){
      var objXMLHttp=null
      if(window.XMLHttpRequest){
            objXMLHttp = new XMLHttpRequest()
      }
      else if (window.ActiveXObject){
            objXMLHttp = new ActiveXObject("Microsoft.XMLHttp")
      }
      return objXMLHttp
}

/**************************************************************
 AJAX Request to get the shopping cart
***************************************************************/
function getShoppingCart()
{ 
  xmlHttpAddress=GetXmlHttpObject();
  if (xmlHttpAddress==null)
  {
    return;
  } 

  var currentTime = new Date()
  var secs = currentTime.getTime();
  var url="/fh_shoppingcart.asp?rand=" + secs;
  xmlHttpAddress.onreadystatechange=showShoppingCart;
  //xmlHttpAddress.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=Windows-1252');

  xmlHttpAddress.open("GET",url,true); 
  xmlHttpAddress.send(null);
}

function showShoppingCart() 
{ 

  if (xmlHttpAddress.readyState==4)
  { 
    var res_eval = xmlHttpAddress.responseText; 
    var elem;
    var newdiv;

    if(res_eval.indexOf("ERRORMESSAGE") != -1)
    {
      try //Add the error message to the error div
      {
        //elem = document.getElementById("addcarterror");
        //newdiv = document.createElement("div");         

        //newdiv.innerHTML = "Unfortunately, we were unable to add the selected quantity to the cart"; //res_eval

        //elem.innerHTML = ''; 
        //elem.appendChild(newdiv); 
        var sText = "";
        sText = "Unfortunately, we were unable to add the selected quantity to the cart."
	try
	{
	  if(parseInt(document.getElementById("quantity").value) > 1)
	  {
		sText+="  \nTry reducing the selected quantity.";
	  }
	}
	catch(e)
	{
	  //alert(e);
	}

        alert(sText);
      }
      catch(e)
      {}
    }
    else
    {
      try
      {
       // window.location = returnurl
        elem = document.getElementById("minibasketcontents");
        newdiv = document.createElement("div"); 
        newdiv.innerHTML = res_eval;
        elem.innerHTML = ''; 
        elem.appendChild(newdiv); 
        return false;
      }
      catch(e)
      {}
    }
  }
}


/**************************************************************
 Shoping Cart Ajax End
***************************************************************/ 

/**************************************************************
 Add to Cart with Ajax request
***************************************************************/

function addedToCart()
{
//if nextpage is populated (from fredhopper) then move to this page


// else, just display the cart
//alert("added to cart");

//SB - Removed this line to stop the cart updating before the refresh
//showShoppingCart();
//alert("welcome")
if (xmlHttpAddress.readyState==4)
  { 
    var res_eval = xmlHttpAddress.responseText; 
    var elem;
    var newdiv;

    if(res_eval.indexOf("ERRORMESSAGE") != -1)
    {
      try //Add the error message to the error div
      {
        var sText = "";
        sText = "Unfortunately, we were unable to add the selected quantity to the cart."
					try
					{
					  if(parseInt(document.getElementById("quantity").value) > 1)
					  {
						sText+="  \nTry reducing the selected quantity.";
					  }
					}
					catch(e)
					{
					  //alert(e);
					}
        alert(sText);
      }
      catch(e)
      {}
    } else {
    	window.location = returnurl
    	//alert("alladdedfine")
    }
  
}

}

function AddFormToCart(frm)
{
  var catalogid;
  var quantity;
  var returnurl;

  //Get the catalogid
  catalogid = getproductid(frm);

  if(catalogid==0)
  {
    catalogid=getcatalogid(frm);  
  }

  var sStripped = "";
  sStripped = stripproductid(frm.returnurl.value);

  if(sStripped.indexOf("?")>0)
  {
    sStripped +="&";	
  }
  else
  {
    sStripped +="?";   
  }
  
  //only add the additional data to the querystring if going to the crosssell page
  returnurl = getreturnurl(frm);
  if (returnurl.indexOf("fh_recommend")>-1)
  {
	//Get the quantity
	quantity = getquantity(frm);
	quantity = quantity=="" ? 1 : quantity;
  
	frm.returnurl.value =  sStripped + "p_id=" + Base64.encode(catalogid);
	frm.returnurl.value = stripquerystringparam(frm.returnurl.value,"p_qty");
  
	frm.returnurl.value += "&p_qty=" +quantity //encodedqty;
	
	//Get the returnurl
	returnurl = getreturnurl(frm);
  }
  addShoppingCart(catalogid,getquantity(frm),returnurl);
  return false;
}

function getproductid(frm)
{
  try
  {
    //var dd_options = document.getElementById("Ysubproductdropdown");
    dd_options = frm.Ysubproductdropdown;
    var dd_selectedvalue = dd_options.options[dd_options.selectedIndex].value;

    if(dd_selectedvalue!="-1")
    {
    	return dd_selectedvalue;
    }
  }
  catch(e)
  {
    try
    {
      return frm.productid.value;
    }

    catch(e)
    {
      return 0;   
    }
  }

  //Options: YsubProductdropdown
  //if no options then productid  

}

function getcatalogid(frm)
{
try
{
  return frm.catalogid.value;
}
catch(e)
{
return 0;
}
} 


function getquantity(frm)
{
  try
  {
    return frm.quantity.value;
  }
  catch(e)
  {
    return 1;
  }
}

function getreturnurl(frm)
{
  try
  {
    return frm.returnurl.value;
  }
  catch(e)
  {
    return 1;
  }
}

function addShoppingCart(catalogid,quantity,returnurl)
{ 
//  alert("addShoppingCart()");
//  alert("catalogid:" + catalogid);
//  alert("quantity:" + quantity);

  xmlHttpAddress=GetXmlHttpObject();
  if (xmlHttpAddress==null)
  {
    return;
  } 

  var currentTime = new Date()
  var secs = currentTime.getTime();
  var url="/fh_addshoppingcart.asp?catalogid=" + catalogid + "&quantity=" + quantity + "&rand=" + secs;
  
  //Get the value of the cart before adding
  
  
  xmlHttpAddress.onreadystatechange=function(evt) {
  	if (xmlHttpAddress.readyState==4)
  { 
    var res_eval = xmlHttpAddress.responseText; 
    var elem;
    var newdiv;

    if(res_eval.indexOf("ERRORMESSAGE") != -1)
    {
      try //Add the error message to the error div
      {
        var sText = "";
        sText = "Unfortunately, we were unable to add the selected quantity to the cart."
					try
					{
					  if(parseInt(document.getElementById("quantity").value) > 1)
					  {
						sText+="  \nTry reducing the selected quantity.";
					  }
					}
					catch(e)
					{
					  //alert(e);
					}
        alert(sText);
      }
      catch(e)
      {}
    } else {
        //TODO: NEED TO STRIP THIS PROPERLY NOT JUST LAST 5 CHARS
		//Assume this is the last part of the string for now
		//priceaddedtocart=
		var addedprice="";
		var sStart = res_eval.indexOf("priceaddedtocart=");
		var sEnd = res_eval.indexOf("~OVER~");
		
		
		if (sStart>=0)
		{
			//addedprice = res_eval.substring(sStart+17,res_eval.length).toString();
			addedprice = res_eval.substring(sStart+17,sEnd).toString();
		}
		
		if (returnurl.indexOf("fh_recommend")>-1)
		{
			window.location = stripquerystringparam(returnurl,"addedprice")+ "&addedprice=" + addedprice;;
		}
		else
		{
			window.location = stripquerystringparam(returnurl,"addedprice")
		}
    }
  
}
}
  
  //xmlHttpAddress.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=Windows-1252');

  xmlHttpAddress.open("GET",url,true); 
  xmlHttpAddress.send(null);
  
  //alert(returnurl);
  //window.location = returnurl
}




/**************************************************************
 End of Add to Cart Ajax
***************************************************************/


function getAllReviews(url)
{ 
	xmlHttpAddress=GetXmlHttpObject();
	if (xmlHttpAddress==null)
	{
		alert ("Your browser does not support AJAX!");
		return;
	} 
	/* update the div tag for the shipping method */
	var url="/fh_allreviews.asp?id="+ url;
	
	xmlHttpAddress.onreadystatechange=ShowAllReviews;
	xmlHttpAddress.open("GET",url,true); 
	xmlHttpAddress.send(null);
}
function ShowAllReviews() 
{ 
//alert(addresslocation)
if (xmlHttpAddress.readyState==4)
	{ 
		//alert(xmlHttpAddress.responseText)
		//document.getElementById("addresschoice").innerHTML=xmlHttpPostcode.responseText;
		var elem = document.getElementById("hidden_reviews"); 
		var res_eval = xmlHttpAddress.responseText; 
		var newdiv = document.createElement("div"); 
		newdiv.innerHTML = res_eval; 
		elem.innerHTML = ''; 
		elem.appendChild(newdiv); 

	}
}

function stripquerystringparam(sBefore,sParam)
{
  var sConverted;
  var iStart;
  var iEnd;
  var iFirstParam;  

  try
  {  
    iStart = sBefore.indexOf(sParam);

    if (iStart>0)
    {
      //There is a productid    
      //assume there is no '&' character in the number
      iEnd = sBefore.substring(iStart).indexOf("&");    
      if(iEnd > 0)
      {
        iFirstParam = sBefore.indexOf("?");
        if(iFirstParam==iStart-1)
          sConverted = sBefore.substring(0,iStart-1) + "?" + sBefore.substring(iStart+iEnd+1); 
        else
          sConverted = sBefore.substring(0,iStart-1) + sBefore.substring(iStart+iEnd);
      }
      else
        sConverted = sBefore.substring(0,iStart-1)      
      
      return sConverted; 
    }
    else
      return sBefore;
     
  }
  catch(e)
  {
    return sBefore;
  }  
}

function stripproductid(sBefore)
{
  var sConverted;
  var iStart;
  var iEnd;
  var iFirstParam;  

  try
  {  
    iStart = sBefore.indexOf("p_id");

    if (iStart>0)
    {
      //There is a productid    
      //assume there is no '&' character in the number
      iEnd = sBefore.substring(iStart).indexOf("&");    
      if(iEnd > 0)
      {
        iFirstParam = sBefore.indexOf("?");
        if(iFirstParam==iStart-1)
        {
          sConverted = sBefore.substring(0,iStart-1) + "?" + sBefore.substring(iStart+iEnd+1); 
        }
        else
        {
          sConverted = sBefore.substring(0,iStart-1) + sBefore.substring(iStart+iEnd);
        }
      }
      else
      {
        sConverted = sBefore.substring(0,iStart-1)      
      }
      return sConverted; 
    }
    else
    {
      return sBefore;
    }
  
  }
  catch(e)
  {
    return sBefore;
  }  
}


/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		try{
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
		}
		catch(e)
		{return "";}
	},
 
	// public method for decoding
	decode : function (input) {
		try
		{
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
		}
 		catch(e)
		{return "";}
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}


function Querystring(qs) { // optionally pass a querystring to parse
	this.params = {};
	
	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&'); // parse out name/value pairs separated via &
	
// split out each name=value pair
	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split('=');
		var name = decodeURIComponent(pair[0]);
		
		var value = (pair.length==2)
			? decodeURIComponent(pair[1])
			: name;
		
		this.params[name] = value;
	}
}

Querystring.prototype.get = function(key, default_) {
	var value = this.params[key];
	return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key) {
	var value = this.params[key];
	return (value != null);
}

Querystring.prototype.strip = function(key){
	//Loop through the querystring parameters
	for (var i = 0; i < this.params.length; i++)
    {
	  
	}
}


function NavigateBrands(letter) {
	document.getElementById('brandsa').style.display = 'none';
	document.getElementById('brandse').style.display = 'none';
	document.getElementById('brandsm').style.display = 'none';
	document.getElementById('brandss').style.display = 'none';
	
	document.getElementById('brands'+letter).style.display = 'block';
}

function NavigateSwap(show) {
	document.getElementById('brandsNav').style.display = 'none';
	document.getElementById('fullNav').style.display = 'none';
	
	document.getElementById(show).style.display = 'block';
	if (show == "brandsNav") {
		document.getElementById('brandsa').style.display = 'block';
	} else {
		document.getElementById('brandsa').style.display = 'none';
	document.getElementById('brandse').style.display = 'none';
	document.getElementById('brandsm').style.display = 'none';
	document.getElementById('brandss').style.display = 'none';
	}
}
