var canRequest=true;
var doFocus=false;
var callingScript="";
var startFrom=0;
var NUM_IN_GALLERY;

function sleep(delay)
{
  var start = new Date().getTime();
  while (new Date().getTime() < start + delay);
}

function setCallingScript(script)
{
  callingScript = script;
}

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;
}

function basketStateChanged() 
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    var pos = response.indexOf("}");
    document.getElementById("mini_basket").innerHTML=response.substring(pos+1,response.length);
    if (document.getElementById("mini_basket").innerHTML.indexOf("empty") > 0 && document.getElementById("basket_full"))
      document.getElementById("basket_full").innerHTML = "<p><br><br><b>your basket is currently empty</b></p>";
    var info = response.substring(response.indexOf("{")+1, pos);
    if (info)
			showInfoBox(info);
    canRequest = true;
  }
}

function addToBasket(_client)
{
  if (!canRequest)
  {
    setTimeout('addToBasket()', 500);
    return;
  }
	
	//track when items are added to basket
	if (_client)
		action = "Add from Client";
	else
		action = "Add from Public";
	_gaq.push(['_trackEvent', "Basket", action, code, sell_price]);
	
	xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="addtobasket.php";
  url=url+"?code="+escape(code);
  url=url+"&photo="+escape(photo);
  url=url+"&size="+escape(size);
  url=url+"&finish="+escape(finish);
  url=url+"&mat="+escape(mat);
  url=url+"&frame="+escape(frame);
  url=url+"&qty="+escape(qty);
  url=url+"&cost_price="+escape(cost_price);
  url=url+"&sell_price="+escape(sell_price);
  url=url+"&client="+escape(_client);
  url=url+"&bw="+escape(bw);

  canRequest = false;
  xmlHttp.onreadystatechange=basketStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function getMiniBasket()
{
  if (!canRequest)
  {
    setTimeout('getMiniBasket()', 500);
    return;
  }
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="getminibasket.php?caller="+callingScript;

  canRequest = false;
  xmlHttp.onreadystatechange=basketStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function clearBasket()
{
  if (confirm("Are you sure you want to empty your shopping basket?"))
  {
    if (!canRequest)
    {
      setTimeout('clearBasket()', 500);
      return;
    }
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null)
    {
      alert ("Your browser does not support AJAX!");
      return;
    } 
    var url="clearbasket.php";

		_gaq.push(['_trackEvent', "Basket", "Clear"]);
		
    canRequest = false;
    xmlHttp.onreadystatechange=basketStateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
  }
}

function focusBack()
{
  if (doFocus)
    document.getElementById(currentEdit).focus();
  doFocus = false;
}

function fullbasketStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
    document.getElementById("basket_full").innerHTML=response.substring(pos+1,response.length);
    var totals = response.substring(response.indexOf("[")+1, pos);
    document.getElementById("values").innerHTML=totals;
    canRequest = true;
    setTimeout('focusBack()', 10);
  }
}

function deleteBasketItem()
{
  if (!canRequest)
  {
    setTimeout('deleteBasketItem()', 500);
    return;
  }
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="deletebasketitem.php";
  url=url+"?code="+escape(code);
  url=url+"&photo="+escape(photo);
  url=url+"&size="+escape(size);
  url=url+"&finish="+escape(finish);
  url=url+"&mat="+escape(mat);
  url=url+"&frame="+escape(frame);

	_gaq.push(['_trackEvent', "Basket", "Remove Item", code]);

	canRequest = false;
  xmlHttp.onreadystatechange=fullbasketStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function updateBasketQty()
{
  if (!canRequest)
  {
    setTimeout('updateBasketQty()', 500);
    return;
  }
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="updatebasketqty.php";
  url=url+"?code="+escape(code);
  url=url+"&photo="+escape(photo);
  url=url+"&size="+escape(size);
  url=url+"&finish="+escape(finish);
  url=url+"&mat="+escape(mat);
  url=url+"&frame="+escape(frame);
  url=url+"&qty="+escape(qty);

	_gaq.push(['_trackEvent', "Basket", "Update Qty", code]);
  
	canRequest = false;
  xmlHttp.onreadystatechange=fullbasketStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function sizeStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
    document.getElementById("basket_size").innerHTML=response.substring(pos+1,response.length);
    var values = response.substring(response.indexOf("[")+1, pos).split(",");
		var code  = values[0];
		var width = values[1];
		var height= values[2];
    sizeSelect('size1', code, width, height);
    canRequest = true;
  }
}

function getSizes()
{
	if (!$("#basket_size"))
		return;
		
	$("#size_con").show();
	$("#qty_con").show();
	$("#add_con").show();
	$("#basket_size").html("<div style=\"text-align: center;\"><img src=\"images/loading_dk.gif\"></div>");
  if (!canRequest)
  {
    setTimeout('getSizes()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="getsizes.php";
  url=url+"?photo="+escape(photo);
  url=url+"&gallery="+escape(gallery);

	canRequest = false;
  xmlHttp.onreadystatechange=sizeStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function finishStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
    document.getElementById("basket_finish").innerHTML=response.substring(pos+1,response.length);

    var params     		= response.substring(response.indexOf("[")+1, pos).split('|');
    var code       		= params[0];
    var sell_price 		= params[1];
    var cost_price 		= params[2];
    var show_border 	= parseInt(params[3]);
    var allowmatframe = parseInt(params[4]);

    finishSelect('finish1', code, sell_price, cost_price, show_border, allowmatframe);
    canRequest = true;
  }
}

function getFinishes()
{
	$("#finish_con").show();
	$("#basket_finish").html("<div style=\"text-align: center;\"><img src=\"images/loading_dk.gif\"></div>");
  if (!canRequest)
  {
    setTimeout('getFinishes()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="getfinishes.php";
  url=url+"?size="+escape(size);

  canRequest = false;
  xmlHttp.onreadystatechange=finishStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function matStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
		var contents = $.trim(response.substring(pos+1,response.length));
		if (contents.length)
		{
			$("#mat_con").show();
	    $("#basket_mat").html(contents);
		}
		else
			$("#mat_con").hide();
    if (response.length > 10)
    {
      var params = response.substring(response.indexOf("[")+1, pos).split('|');
      var code   = params[0];
      var sell_price  = params[1];
      var cost_price  = params[2];
      var colour  		= params[3];
      matSelect('mat1', code, sell_price, cost_price, colour);
    }
    canRequest = true;
  }
}

function getMats()
{
	$("#mat_con").show();
	$("#basket_mat").html("<div style=\"text-align: center;\"><img src=\"images/loading_dk.gif\"></div>");
  if (!canRequest)
  {
    setTimeout('getMats()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="getmats.php";
  url=url+"?finish="+escape(finish);
  url=url+"&size="+escape(size);
  url=url+"&show_none="+showMatNone;

  canRequest = false;
  xmlHttp.onreadystatechange=matStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function frameStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
		var contents = $.trim(response.substring(pos+1,response.length));
		if (contents.length)
		{
			$("#frame_con").show();
	    $("#basket_frame").html(contents);
		}
		else
			$("#frame_con").hide();
    if (response.length > 10)
    {
      var params = response.substring(response.indexOf("[")+1, pos).split('|');
      var code   = params[0];
      var sell_price  = params[1];
      var cost_price  = params[2];
      frameSelect('frame1', code, sell_price, cost_price);
    }
    canRequest = true;
  }
}

function getFrames()
{
	$("#frame_con").show();
	$("#basket_frame").html("<div style=\"text-align: center;\"><img src=\"images/loading_dk.gif\"></div>");
  if (!canRequest)
  {
    setTimeout('getFrames()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="getframes.php";
  url=url+"?finish="+escape(finish);
  url=url+"&size="+escape(size);
  url=url+"&show_none="+showFrameNone;

  canRequest = false;
  xmlHttp.onreadystatechange=frameStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function createGalleryStateChanged()
{ 
  if (xmlHttp.readyState==1)
  { 
    $("#results_container").addClass("loading");
		var page = Math.floor(startFrom / NUM_IN_GALLERY)+1;
		var pages = Math.floor(dirCount / NUM_IN_GALLERY)+1;
    $("#results_container").html("<center><img src=\"images/loading.gif\"> Processing page "+page+" of "+pages+"...</center>");
  }
  else if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
    document.getElementById("results_container").className = "results_container";
		
		if (response.indexOf("CREATION COMPLETE") > -1)
    	$("#results_container").html(response.substring(pos+1,response.length));
		else
			createdGallery = response.substring(response.indexOf("[")+1, pos);
		
		if (clientId)
		{
			getClientFolders();
		}
    canRequest = true;
		if (response.indexOf("CREATION COMPLETE")==-1)
		{
			startFrom += NUM_IN_GALLERY;
			setTimeout('createGallery()',1);
		}
  }
}

function createGallery()
{
  if (!canRequest)
  {
    setTimeout('createGallery()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="creategallery.php";
  url=url+"?dir="+escape(createDir);
  url=url+"&count="+escape(dirCount);
  url=url+"&client="+escape(clientId);
  url=url+"&start="+escape(startFrom);
  url=url+"&gallery_id="+escape(createdGallery);

  canRequest = false;
  xmlHttp.onreadystatechange=createGalleryStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function checkVoucherStateChanged()
{ 
  if (xmlHttp.readyState==1)
  { 
    document.getElementById("voucher_result").innerHTML = "<p><img src=\"images/working.gif\"> checking discount code...</p>"
  }
  else if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    document.getElementById("voucher_result").innerHTML=response;
    canRequest = true;
  }
}

function checkVoucher()
{
  if (!canRequest)
  {
    setTimeout('checkVoucher()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="checkvoucher.php";
  url=url+"?v="+escape(voucher);

  canRequest = false;
  xmlHttp.onreadystatechange=checkVoucherStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function getClientFoldersChanged()
{ 
  if (xmlHttp.readyState==1)
  { 
    document.getElementById("dir_container").innerHTML = ""
  }
  else if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    document.getElementById("dir_container").innerHTML=response;
    canRequest = true;
  }
}

function getClientFolders()
{
  if (!canRequest)
  {
    setTimeout('getClientFolders()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="getclientfolders.php";
  url=url+"?client="+escape(clientId);
  url=url+"&name="+escape(clientName);

  canRequest = false;
  xmlHttp.onreadystatechange=getClientFoldersChanged
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function addClientVoucherChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    document.getElementById("results_container").innerHTML=response;
    canRequest = true;
  }
}

function addClientVoucher()
{
  if (!canRequest)
  {
    setTimeout('addClientVoucher()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="addclientvoucher.php";
  url=url+"?client="+escape(clientId);
  url=url+"&code="+escape(voucherCode);
  url=url+"&value="+escape(voucherValue);
  url=url+"&expiry="+escape(voucherExpiry);

  canRequest = false;
  xmlHttp.onreadystatechange=addClientVoucherChanged
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function doCompleteOrderChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
		window.location = "vieworders.php";
    canRequest = true;
  }
}

function doCompleteOrder()
{
  if (!canRequest)
  {
    setTimeout('doCompleteOrder()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="completeorder.php";
  url=url+"?order="+escape(orderNo);

  canRequest = false;
  xmlHttp.onreadystatechange=doCompleteOrderChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}
/*
function calendarChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    response = xmlHttp.responseText;
    document.getElementById("calendar_container").innerHTML=response;
    canRequest = true;
  }
}

function getCalendar(_month,_year)
{
  if (!canRequest)
  {
    setTimeout('doCompleteOrder()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="calendar.php";
  url=url+"?month="+_month+"&year="+_year;

  canRequest = false;
  xmlHttp.onreadystatechange=calendarChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}
*/
