var ajaxreq=null;

var divMiniBasket='';
var varBasketUID='';
var bLoadingBasket=false;
var reqBasket = null;
var reqBasketShipping = null;

// Script written by Drew Noakes -- http://drewnoakes.com
// 4 Dec 2006

// the div element used for debug output.  created in enableDebug.
var debugDiv;

// call this function from a script within the document for which to enable debug output
function enableDebug() {
  document.write("<div id='debugContent' style='display:block; position:absolute; top:7px; right:7px; padding:10px; width:300px; background:#ccc; color:white; border:solid 1px black;'></div>");
  debugDiv = document.getElementById("debugContent");
  writeClearLink();
}

// writes the string passed to it to the page
function writeDebug(message) {
  if (debugDiv)
    debugDiv.innerHTML += message + "<br\/>";
}

// writes the value of some code expression.
// eg: writeEval("document.location"); // writes "document.location = http://drewnoakes.com"
function writeEval(code) {
  writeDebug(code + " = " + eval(code));
}

// writes all of the properties of the object passed to it
function writeDebugObject(object) {
   for (property in object)
      writeDebug(property);
}

// clears the debug output.  called either manually or by the user clicking the 'clear' link in the debug div.
function clearDebug() {
  if (debugDiv) {
    debugDiv.innerHTML = "";
    writeClearLink();
  }
}

// writes a link in the debug div that clears debug output
function writeClearLink() {
  writeDebug("<a href='#' onclick='clearDebug(); return false;'>clear</a>");
}
//enableDebug();
clearDebug();

function selectState(state)
{
	document.location.href="/cart/default.aspx?state="+state;
}


function AjaxGetBasketShippingServices(url, respHandler) 
{ 
    
    reqBasketShipping = GetXmlHttpObject();
      
    if (reqBasketShipping) 
    { 
        reqBasketShipping.onreadystatechange = respHandler; 
        reqBasketShipping.open('GET', url, true); 
        reqBasketShipping.setRequestHeader("content-type","application/x-www-form-urlencoded"); 
        reqBasketShipping.send(''); 
    } 
    else 
    { 
        alert('Your browser does not seem to support XMLHttpRequest.'); 
    } 
} 





function populateMiniBasket()
{ 
	try
	{ 
		if (reqBasket.readyState == 4 ||  
		reqBasket.readyState == 'complete') 
		{ 
			if (reqBasket.status == 200)
			{
				var resp = reqBasket.responseText;
				document.getElementById(divMiniBasket).innerHTML=resp;
				document.getElementById(divMiniBasket).className="";
				bLoadingBasket = false;
			}
		} 
	} 
	catch(e) 
	{ 
		alert('Error in populateMiniBasket(): ' + e.message + ' (' + e.name + ')'); 
	} 
}


function populateBasketShippingServices()
{ 
	try
	{ 
		if (reqBasketShipping.readyState == 4 ||  
		reqBasketShipping.readyState == 'complete') 
		{ 
			if (reqBasketShipping.status == 200)
			{
				var resp = reqBasketShipping.responseText;
				document.getElementById("shippingServiceList").innerHTML=resp;
				stopLoading();
			}
		} 
	} 
	catch(e) 
	{ 
		alert('Error in populateBasketShippingServices(): ' + e.message + ' (' + e.name + ')'); 
	} 
}


function AjaxGetBasket(url, respHandler) 
{ 
    reqBasket = GetXmlHttpObject();
    var now = new Date();
    url = url+"&ts=" + (now.getTime());
    //alert(url);
    writeDebug("AjaxGetBasket:"+url);
      
    if ((reqBasket) && (bLoadingBasket != true))
    { 
        reqBasket.onreadystatechange = respHandler; 
        reqBasket.open('GET', url, true); 
        reqBasket.setRequestHeader("content-type","application/x-www-form-urlencoded"); 
        bLoadingBasket=true;
        reqBasket.send(''); 
    } 
    else if (bLoadingBasket != true)
    { 
        alert('Your browser does not seem to support XMLHttpRequest.'); 
    } 
}
 
 
function AddToShortcuts(vuid, id, caption, notes)
{
    AjaxGetSSData('/SiteSphereHandler.ashx?action=profileadditemshortcut&visitoruid=' + vuid + '&itemid=' + id + '&url=' + escape(document.location.href) + '&caption=' + escape(caption) + '&notes=' + escape(notes), SSAjaxResultHandler);
}

function AddToShortcutsWithPage(vuid, id, caption, notes, pageurl)
{
    AjaxGetSSData('/SiteSphereHandler.ashx?action=profileadditemshortcut&visitoruid=' + vuid + '&itemid=' + id + '&url=' + escape(pageurl) + '&caption=' + escape(caption) + '&notes=' + escape(notes), SSAjaxResultHandler);
}

function DeleteFromShortcuts(vuid, id)
{
    AjaxGetSSData('/SiteSphereHandler.ashx?action=profiledeleteshortcut&visitoruid=' + vuid + '&shortcutid=' + id, SSAjaxResultHandler);
}

function DeleteFromUsers(id) {
    AjaxGetSSData('/SiteSphereHandler.ashx?action=userdelete&profileuserid=' + id, SSAjaxResultHandler);
}

function UpdateShortcut(vuid, id, caption, notes)
{
    AjaxGetSSData('/SiteSphereHandler.ashx?action=profileupdateshortcut&visitoruid=' + vuid + '&shortcutid=' + id + '&caption=' + escape(caption) + '&notes=' + escape(notes), SSAjaxResultHandler);
}

function BasketRemoveItem(id, buid) {
    AjaxGetSSData('/SiteSphereHandler.ashx?action=basketremoveitem&basketuid=' + buid + '&lineid=' + id, SSAjaxRefreshMiniBasketHandler);
}

function RefreshPage() {
    document.location.href = document.location.href;
}

function checkout() {

    document.location.href = "/checkout/";
}

function setMiniBasket(divid)
{
	divMiniBasket=divid;
}


function SSAjaxRefreshMiniBasketHandler() {
    try {
        if (ajaxreq.readyState == 4 ||
            ajaxreq.readyState == 'complete') {
            if (divMiniBasket != '')
            {
		document.getElementById(divMiniBasket).className="loadingminibasket";
		AjaxGetBasket('/SiteSphereHandler.ashx?query=mini basket&basketuid=' + varBasketUID , populateMiniBasket);
            }
            else
            {
            	document.location.href = document.location.href;
            }
        }
    }
    catch (e) {
        alert('SSAjaxRefreshMiniBasketHandler::Error in Ajax response' + e.message);
    }
}

function SSAjaxResultHandler() {
    try {
        //readyState of 4 or 'complete' represents  
        //that data has been returned  
        if (ajaxreq.readyState == 4 ||
            ajaxreq.readyState == 'complete') {
            //alert( ajaxreq.responseText );
            document.location.href = document.location.href;
            //location.reload(true);
        }
    }
    catch (e) {
        alert('SSAjaxResultHandler::Error in Ajax response');
    }
}

function AjaxGetSSData(url, responseHandler) {

	if (divMiniBasket != '')
	{
		document.getElementById(divMiniBasket).className="loadingminibasket";
	}

    if (window.XMLHttpRequest) {
        // browser has native support for XMLHttpRequest object
        ajaxreq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        // try XMLHTTP ActiveX (Internet Explorer) version
        ajaxreq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    var now = new Date();
    url = url+"&ts=" + (now.getTime());
	
    if (ajaxreq) {
        ajaxreq.onreadystatechange = responseHandler;
        ajaxreq.open('GET', url, true);
        ajaxreq.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        ajaxreq.send('');
    }
    else {
        alert('Your browser does not seem to support XMLHttpRequest.');
    }
}

function CallServerNow(url) {

	var reqThis = null;

    if (window.XMLHttpRequest) {
        // browser has native support for XMLHttpRequest object
        reqThis = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        // try XMLHTTP ActiveX (Internet Explorer) version
        reqThis = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (reqThis) {
        reqThis.open('GET', url, false);
        reqThis.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        reqThis.send('');

	    try {
		//readyState of 4 or 'complete' represents  
		//that data has been returned  
		if (reqThis.readyState == 4 ||
		    reqThis.readyState == 'complete') {
		}
		var sRet = reqThis.responseText;
		//alert(sRet);
	    	return sRet;
	    }
	    catch (e) {
		var s='Error in respone to: ' + url;
		return s;
	    }
    }
    else {
        var s='Your browser does not seem to support XMLHttpRequest.';
	return s;
    }
}

