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

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;
	//	alert(response);
    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)
    {
      document.getElementById("basket_info").innerHTML="<p><b>"+info+"</b></p>";
      setTimeout("clearBasketInfo()",5000);
    }
    canRequest = true;
  }
}

function addToBasket(_client)
{
  if (!canRequest)
  {
    setTimeout('addToBasket()', 500);
    return;
  }
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="addtobasket.php";
//  var params = "photo="+escape(photo);
//  params=params+"&size="+escape(size);
//  params=params+"&finish="+escape(finish);
//  params=params+"&qty="+escape(qty);
  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);

//  alert(url);
//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  alert(params);
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=basketStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

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

    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;
//    alert(response);
    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);

//  alert(params);
//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  alert(params);
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=fullbasketStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

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

//  alert(params);
//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  alert(params);
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=fullbasketStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

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

function getSizes()
{
	if (!document.getElementById("basket_size"))
		return;
		
  if (!canRequest)
  {
    setTimeout('getSizes()', 100);
    return;
  }

  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="getsizes.php";
//  var params = "photo="+escape(photo);
//  params=params+"&size="+escape(size);
//  params=params+"&finish="+escape(finish);
//  params=params+"&qty="+escape(qty);
  url=url+"?photo="+escape(photo);
  url=url+"&gallery="+escape(gallery);
//	alert(url);
//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=sizeStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

function finishStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    //alert(xmlHttp.responseText);
    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];

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

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

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

//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=finishStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

function matStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    //alert(xmlHttp.responseText);
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
    document.getElementById("basket_mat").innerHTML=response.substring(pos+1,response.length);
    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];
      matSelect('mat1', code, sell_price, cost_price);
    }
    canRequest = true;
  }
}

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

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

//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=matStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

function frameStateChanged()
{ 
  if (xmlHttp.readyState==4)
  { 
    //alert(xmlHttp.responseText);
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
    document.getElementById("basket_frame").innerHTML=response.substring(pos+1,response.length);
    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()
{
  if (!canRequest)
  {
    setTimeout('getFrames()', 100);
    return;
  }

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

//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=frameStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

function createGalleryStateChanged()
{ 
  if (xmlHttp.readyState==1)
  { 
    document.getElementById("results_container").className = "results_container_loading";
		var page = Math.floor(startFrom / 30)+1;
		var pages = Math.floor(dirCount / 30)+1;
    document.getElementById("results_container").innerHTML = "<center><img src=\"images/loading.gif\"> Processing page "+page+" of "+pages+"...</center>"
  }
  else if (xmlHttp.readyState==4)
  { 
    //alert(xmlHttp.responseText);
    response = xmlHttp.responseText;
    var pos = response.indexOf("]");
    document.getElementById("results_container").className = "results_container";
		
		if (response.indexOf("CREATION COMPLETE") > -1)
    	document.getElementById("results_container").innerHTML=response.substring(pos+1,response.length);
		
//		if (document.getElementById("editbutton"))
//		{
//			document.getElementById("editbutton").onclick = "editGallery("+response.substring(response.indexOf("[")+1, pos)+")";
///			document.getElementById("editbutton").disabled = false;
//		}
		if (clientId)
		{
			getClientFolders();
		}
    canRequest = true;
		if (response.indexOf("CREATION COMPLETE")==-1)
		{
			startFrom += 30;
			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";
//  var params = "photo="+escape(photo);
//  params=params+"&size="+escape(size);
//  params=params+"&finish="+escape(finish);
//  params=params+"&qty="+escape(qty);
  url=url+"?dir="+escape(createDir);
  url=url+"&count="+escape(dirCount);
  url=url+"&client="+escape(clientId);
  url=url+"&start="+escape(startFrom);

//  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//  xmlHttp.setRequestHeader("Content-length", params.length);
//  xmlHttp.setRequestHeader("Connection", "close");
  canRequest = false;
  xmlHttp.onreadystatechange=createGalleryStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  //xmlHttp.send(params);
}

function checkVoucherStateChanged()
{ 
  if (xmlHttp.readyState==1)
  { 
    document.getElementById("voucher_result").innerHTML = "<p>checking voucher...</p>"
  }
  else if (xmlHttp.readyState==4)
  { 
    //alert(xmlHttp.responseText);
    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);
  //xmlHttp.send(params);
}

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);
  //xmlHttp.send(params);
}

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);
  //xmlHttp.send(params);
}

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);
  //xmlHttp.send(params);
}

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);
  //xmlHttp.send(params);
}