var URL = '';
var browser = '';

function ___initialise(___browser, ___url)
{
	browser = ___browser;
	URL = ___url;
	
}

//stock enquiry
function onClickStockEnquiry(id)
{
	setScrollY(0);
	showLoader();
	$("#stockEnquiry").load(URL + 'ajax.php?action=buildStockEnquiry&id=' + id, onLoadStockEnquiry);	
}

function onLoadStockEnquiry()
{
	hideLoader();
	
	$("#stockEnquiry").show("slow").css({"visibility" : "visible"});	
}

function closeStockEnquiry()
{
	$("#stockEnquiry").hide("slow");	
}

function sendStockEnquiry()
{
	setScrollY(0);
	$.post(URL + 'ajax.php?action=sendStockEnquiry', { 
		   id : $("#stockEnquiryId").val(),
		   email : $("#stockEnquiryEmail").val()
		   }, updateStockEnquiryMessage, 'html');
}

function updateStockEnquiryMessage(data)
{
	$('#stockEnquiryMessage').html(data);
}
//end stock enquiry

//autosuggest
var noOfAutoSuggestResults = 0;
var autoSuggestResultSelected = 0;
var autoSuggestResultHref = '';

function showAutoSuggest(params)
{
	var searchString = params.searchString;
	var keyCode = params.keyCode;
	
	switch(keyCode)
	{
		case 38 :
			autoSuggestResultSelected--;
			if(autoSuggestResultSelected <= 0)
			{
				autoSuggestResultSelected = noOfAutoSuggestResults;
			}
			
			for(x = 1; x <= noOfAutoSuggestResults; x++)	
			{
				if(x == autoSuggestResultSelected)
				{
					autoSuggestResultHref = $('#autoSuggestResult' + x).attr('href');
					$('#autoSuggestResult' + x).addClass('selected');
				}
				else
				{
					$('#autoSuggestResult' + x).removeClass('selected');	
				}
			}
		break;
		
		case 40 :
			if(autoSuggestResultSelected >= noOfAutoSuggestResults)
			{
				autoSuggestResultSelected = 0;
			}
			autoSuggestResultSelected++;
			
			for (x = 1; x <= noOfAutoSuggestResults; x++)	
			{
				if(x == autoSuggestResultSelected)
				{
					autoSuggestResultHref = $('#autoSuggestResult' + x).attr('href');
					$('#autoSuggestResult' + x).addClass('selected');
				}
				else
				{
					$('#autoSuggestResult' + x).removeClass('selected');	
				}
			}
		break;
		
		case 37 :
			//$('#searchField').val('');
			//hideAutoSuggest();
		break;
		
		case 39 :
			if(autoSuggestResultHref)
			{
				window.location = autoSuggestResultHref;
			}
		break;
		
		case 13 :
			if(autoSuggestResultHref)
			{
				window.location = autoSuggestResultHref;
			}
			else
			{
				return true;
			}
		break;
		
		default :
			autoSuggestResultSelected = 0;
			autoSuggestResultHref = '';
		
			$('#autoSuggest').load(URL + 'ajax.php?action=autoSuggest&searchString=' + urlencode(searchString), '', function() { autoSuggestLoaded(); });
		break;
	}
}

function autoSuggestLoaded()
{
	if(strlen($('#autoSuggest').html()) > 0)
	{
		setScrollY(0);
		
		//get position of search field
		var elementPos = findPos(document.getElementById('searchField'));
		var elementHeight = $('#searchField').outerHeight();
		
		$('#autoSuggest').css({"visibility" : "visible", "left" : elementPos[0], "top" : elementPos[1] + elementHeight});
	}
	else
	{
		hideAutoSuggest();
	}
}

function hideAutoSuggest()
{
	$('#autoSuggest').css({"visibility" : "hidden"}).html("");
	/*
	noOfAutoSuggestResults = 0;
	autoSuggestResultSelected = 0;
	autoSuggestResultHref = '';
	*/
}
//end autosuggest

function closeShopByBrands() 
{
	$('#shopByBrands').remove();
	$('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); });
}

function showShopByBrands(brands)
{
	$('body').append('<div id="jquery-overlay"></div><div id="shopByBrands" class="brands">' + brands + '</div>');	
	
	// Get page sizes
	var arrPageSizes = getPageSize();
	// Style overlay and show it
	$('#jquery-overlay').css({
		backgroundColor:	'#000',
		opacity:			0.8,
		width:				arrPageSizes[0],
		height:				arrPageSizes[1]
	}).fadeIn();
	
	// Get page scroll
	var arrPageScroll = getPageScroll();
	
	// Calculate top and left offset for the jquery-lightbox div object and show it
	$('#shopByBrands').css({
		"top" :	arrPageScroll[1] + (arrPageSizes[3] / 10)
	}).slideDown('slow');
	
	// Assigning click events in elements to close overlay
	$('#jquery-overlay,#shopByBrands').click(function() {
		closeShopByBrands();									
	});
}

function dontShowProceedToCheckout()
{
	if(document.getElementById('dontShowProceedToCheckout').checked == true)
	{
		createCookie('dontShowProceedToCheckout','1','');
	}
}

function showLoader()
{
  $("#loader").css({"visibility" : "visible", "top" : (200 + getScrollY()) + "px"});
}

function hideLoader()
{
  $("#loader").css({"visibility" : "hidden"});
}

function updateMessage(data)
{
  $('#message').html(data);
}

//CANT FIND IT
function onClickCantFindIt()
{
	setScrollY(0);
	showLoader();
	$("#cantFindIt").load(URL + 'ajax.php?action=buildCantFindIt', onLoadCantFindIt);	
}

function onLoadCantFindIt()
{
	hideLoader();
	$("#cantFindIt").show("slow").css({"visibility" : "visible"});	
}

function closeCantFindIt()
{
	$("#cantFindIt").hide("slow");	
}

function sendCantFindIt()
{
	setScrollY(0);
	$.post(URL + 'ajax.php?action=sendCantFindIt', { 
		   name : $("#cantFindItName").val(), 
		   email : $("#cantFindItEmail").val(), 
		   manufacturer : $("#cantFindItManufacturer").val(),
		   product : $("#cantFindItProduct").val(),
		   comments : $("#cantFindItComments").val()
		   }, updateCantFindItMessage, 'html');
}

function updateCantFindItMessage(data)
{
	$('#cantFindItMessage').html(data);
}

//PRICE PROMISE
function onClickPricePromise(product, manufacturer)
{
	setScrollY(0);
	showLoader();
	$("#pricePromise").load(URL + 'ajax.php?action=buildPricePromise&product=' + product + '&manufacturer=' + manufacturer, onLoadPricePromise);	
}

function onLoadPricePromise()
{
	hideLoader();
	$("#pricePromise").show("slow").css({"visibility" : "visible"});	
}

function closePricePromise()
{
	$("#pricePromise").hide("slow");	
}

function sendPricePromise()
{
	setScrollY(0);
	$.post(URL + 'ajax.php?action=sendPricePromise', { 
		   name : $("#pricePromiseName").val(), 
		   email : $("#pricePromiseEmail").val(), 
		   manufacturer : $("#pricePromiseManufacturer").val(),
		   product : $("#pricePromiseProduct").val(),
		   competitor : $("#pricePromiseCompetitor").val(),
		   price : $("#pricePromisePrice").val(), 
		   comments : $("#pricePromiseComments").val()
		   }, updatePricePromiseMessage, 'html');
}

function updatePricePromiseMessage(data)
{
	$('#pricePromiseMessage').html(data);
}

//PRODUCT IMAGES
function resizeMainImageCell(___height)
{
	document.getElementById('mainImageCell').style.height =  ___height;
}

function onProductThumbMouseOver(imgPath, ___height)
{
	document.getElementById('mainImage').src = imgPath;
	resizeMainImageCell(___height);
}

function resizeProductDescription()
{
	var prodDesc = document.getElementById("productDescriptionContainer");
	if(prodDesc.clientHeight > 450)
	{
	  prodDesc.style.height = "450px";
	}
}

//THUMBS
function initialiseThumbs()
{
	thumbsFadeControl("thumbsLeftControl", 25);
}

function thumbsUpdateVisible()
{
  for(_key in thumbsVisible)
  {
	element = document.getElementById('thumb[' + _key + ']');
	element.style.display = 'none';
  }
  
  var pos = thumbsLeft;
  var shown = 0;
  
  while(shown < thumbsShow)
  {
	element = document.getElementById('thumb[' + pos + ']');
	element.style.display = 'inline-block';
	
	switch(pos)
	{
	  case thumbsTotal :
		pos = 0;
	  break;
	  
	  default:
		pos++;
	  break;
	}
	shown++;
  }
}

function thumbsFadeControl(___id, ___opacity)
{
  var element = document.getElementById(___id);
  element.style.opacity = ___opacity / 100;
  element.style.filter = "alpha(opacity = " + ___opacity + ")";
}

//ALSO BOUGHT
function initialiseAlsoBought()
{
	alsoBoughtFadeControl("alsoBoughtLeftControl", 25);
}

function alsoBoughtUpdateVisible()
{
  for(_key in visible)
  {
	element = document.getElementById('alsoBought[' + _key + ']');
	element.style.display = 'none';
  }
  
  var pos = left;
  var shown = 0;
  
  while(shown < show)
  {
	element = document.getElementById('alsoBought[' + pos + ']');
	element.style.display = 'block';
	
	switch(pos)
	{
	  case total :
		pos = 0;
	  break;
	  
	  default:
		pos++;
	  break;
	}
	shown++;
  }
}

function alsoBoughtUpdateQtys()
{
  for(_key in qtys)
  {
	element = document.getElementById('quantity[' + _key + ']');
	
	if(element != null && qtys[_key] > 0)
	{
	  element.value = qtys[_key];
	}
  }
}

function alsoBoughtFadeControl(___id, ___opacity)
{
  var element = document.getElementById(___id);
  element.style.opacity = ___opacity / 100;
  element.style.filter = "alpha(opacity = " + ___opacity + ")";
}

//QUICK SHOP
function onLoadSubMenu()
{
	hideLoader();
	document.getElementById("qsSubMenu").disabled = false;	
}

function onLoadSubMenu2()
{
	hideLoader();
	document.getElementById("qsSubMenu2").disabled = false;	
}

function onChangeQSTopLevelCategory()
{
	resetQuickShop();
	showLoader();
	switch(browser)
	{
		case "OPERA" :
			loadXMLDocQS(URL + 'ajax.php?action=quickShop&id=' + document.getElementById('qsTopLevelCategories').value, 'qsSubMenu');
		break;
		
		default :
			$('#qsSubMenu').load(URL + 'ajax.php?action=quickShop&id=' + document.getElementById('qsTopLevelCategories').value, onLoadSubMenu); 
		break;
	}
	
	document.getElementById('qsSubMenu').style.display = ''; 
	document.getElementById('qsSubmit').style.display = '';
}

function onChangeQSSubMenu()
{
	showLoader();
	
	switch(browser)
	{
		case "OPERA" :
			loadXMLDocQS(URL + 'ajax.php?action=quickShop&id=' + document.getElementById('qsSubMenu').value + '&qsTopLevelCategory=' + document.getElementById('qsTopLevelCategories').value, 'qsSubMenu2');
		break;
		
		default :
			$('#qsSubMenu2').load(URL + 'ajax.php?action=quickShop&id=' + document.getElementById('qsSubMenu').value + '&qsTopLevelCategory=' + document.getElementById('qsTopLevelCategories').value, onLoadSubMenu2);
		break;
	}
	
	document.getElementById('qsSubMenu2').style.display = '';
}

function resetQuickShop()
{
	var qsSubMenu = document.getElementById("qsSubMenu");
	qsSubMenu.options.length=0;
	qsSubMenu.disabled = true;
	
	var qsSubMenu2 = document.getElementById("qsSubMenu2")
	qsSubMenu2.options.length=0;
	qsSubMenu2.disabled = true;
	
	document.getElementById("qsSubMenu").style.display='none';
	document.getElementById("qsSubMenu2").style.display='none';
	document.getElementById("qsSubmit").style.display='none';
}

function loadXMLDocQS(url, ___id) 
{
   // Internet Explorer
   try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
   catch(e) {
      try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch(oc) { req = null; }
   }

   // Mozailla/Safari
   if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }
   
   // Call the processChange() function when the page has loaded
   if (req != null) {
      switch(___id)
	  {
	    case "qsSubMenu" :
		  req.onreadystatechange = processChangeSelectQS1;
	    break;
		case "qsSubMenu2" :
		  req.onreadystatechange = processChangeSelectQS2;
	    break;
	  }
      
      req.open("GET", url, true);
      req.send(null);
   }
}

function processChangeSelectQS1() {
   // The page has loaded and the HTTP status code is 200 OK
   if (req.readyState == 4 && req.status == 200) {
	  select_innerHTML(document.getElementById("qsSubMenu"),req.responseText);
	  document.getElementById("qsSubMenu").disabled = false;
   }
}

function processChangeSelectQS2() {
   // The page has loaded and the HTTP status code is 200 OK
   if (req.readyState == 4 && req.status == 200) {
	  select_innerHTML(document.getElementById("qsSubMenu2"),req.responseText);
	  document.getElementById("qsSubMenu2").disabled = false;
   }
}
