/*****************************************************************

	blueCart E-Commerce 2007 - (c) 2007 Bergan Blue, Australia
	THIS IS COMMERCIAL SOFTWARE. DO NOT COPY/USE/SELL.
	
	Filename			: ajax-base.js (JavaScript)
	File Version		: 1.00.00
	File Summary		: JavaScript Library to handle all blueCart e-commerce AJAX requests
	
	Developed by		: Jon Bergan <jbergan@berganblue.com.au>
	Creation Date		: 25 Sep 2007
	
	Modifications		: None
	
*****************************************************************/

function newAjaxObject()
{
	var ajaxObj = null;
	var strName;
	
	try 
	{

		ajaxObj = new XMLHttpRequest();

	} catch (stupidBrowserException) {

		if (navigator.userAgent.indexOf("MSIE")>=0)
		{ 
			strName = "Msxml2.XMLHTTP";
			if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
				strName="MSXML2.ServerXMLHTTP.4.0"

			try { 
				ajaxObj = new ActiveXObject(strName);
			} catch(e) { 
				alert("Error: Scripting for ActiveX might be disabled - Please enable and try again!"); 
			} 
		} else {
			alert("Error: You need to use an AJAX supported browser to use this application!\n\nPlease upgrade your browser to the latest version.");
		}
	}

	return ajaxObj;
}

function runScript(ajaxURL)
{
	var ajaxObj = newAjaxObject();
	
	ajaxObj.open("GET", ajaxURL , true);
    ajaxObj.send(null);
}

function updateAjaxPanel(ajaxID, ajaxURL)
{
	var ajaxObj = newAjaxObject();
	
    ajaxObj.onreadystatechange = function() { handleUpdate(ajaxID, ajaxObj); };

	ajaxObj.open("GET", ajaxURL , true)
    ajaxObj.send(null)
}

function updateAjaxPanelStr(ajaxID, updateStr)
{
	document.getElementById(ajaxID).innerHTML = updateStr;
}

function emptyAjaxPanel(ajaxID)
{
	document.getElementById(ajaxID).innerHTML = "";
}

function handleUpdate(ajaxID, ajaxObj)
{
	if ((ajaxObj.readyState == 4) && (ajaxObj.status == 200))
	{
		document.getElementById(ajaxID).innerHTML = ajaxObj.responseText;

		if (document.getElementById('ajaxMiniCart') && ajaxID != "ajaxMiniCart")
			refreshMiniCart();
	}
}

function getContent(ajaxID, ajaxLoaderID, ajaxURL)
{
	aLoadInto = document.getElementById(ajaxID);
	aLoader = document.getElementById(ajaxLoaderID);
	
    aLoadInto.className = 'ajaxDivHide';

	aLoader.innerHTML = '<p><img src="'+bluecartPublicRoot+'templates/images/bluecart-ajax-loader.gif" alt="" /> Loading...</p>';
    aLoader.className = 'ajaxDivShow';

    var ajaxObj = newAjaxObject();
    ajaxObj.onreadystatechange = function() { handleExtraContent(ajaxID, ajaxLoaderID, ajaxObj); };
    ajaxObj.open("GET", bluecartPublicRoot+ajaxURL, true);
    ajaxObj.send(null);
}

function getContentCustom(ajaxID, ajaxLoaderID, ajaxURL, ajaxMsg)
{
	aLoadInto = document.getElementById(ajaxID);
	aLoader = document.getElementById(ajaxLoaderID);
	
    aLoadInto.className = 'ajaxDivHide';

	aLoader.innerHTML = '<p><img src="'+bluecartPublicRoot+'templates/images/bluecart-ajax-loader.gif" alt="" /> '+ajaxMsg+'</p>';
    aLoader.className = 'ajaxDivShow';

    var ajaxObj = newAjaxObject();
    ajaxObj.onreadystatechange = function() { handleExtraContent(ajaxID, ajaxLoaderID, ajaxObj); };
    ajaxObj.open("GET", bluecartPublicRoot+ajaxURL, true);
    ajaxObj.send(null);
}

function getContentFullCustom(ajaxID, ajaxLoaderID, ajaxURL, ajaxMsg)
{
	aLoadInto = document.getElementById(ajaxID);
	aLoader = document.getElementById(ajaxLoaderID);
	
    aLoadInto.className = 'ajaxDivHide';

	aLoader.innerHTML = ajaxMsg;
    aLoader.className = 'ajaxDivShow';

    var ajaxObj = newAjaxObject();
    ajaxObj.onreadystatechange = function() { handleExtraContent(ajaxID, ajaxLoaderID, ajaxObj); };
    ajaxObj.open("GET", bluecartPublicRoot+ajaxURL, true);
    ajaxObj.send(null);
}

function handleExtraContent(ajaxID, ajaxLoaderID, ajaxObj)
{
	if ((ajaxObj.readyState == 4) && (ajaxObj.status == 200))
	{
		aLoadInto = document.getElementById(ajaxID);
		aLoader = document.getElementById(ajaxLoaderID);
	
		aLoader.innerHTML = '';
		aLoader.className = 'ajaxDivHide';

 	 	aLoadInto.className = 'ajaxDivShow';
		aLoadInto.innerHTML = ajaxObj.responseText;
		
		// Small hack to stop IE from displaying empty div's
		if (navigator.userAgent.indexOf("MSIE")>=0)
			if (aLoadInto.innerHTML.length == 0)
				aLoadInto.style.height = "0px";

		// Some minor exceptions to trigger events after specific AJAX elements are updated
		if (document.getElementById('ajaxMiniCart') && ajaxID != "ajaxMiniCart")
			refreshMiniCart();
			
//		if (document.getElementById('ajaxCheckoutShipping') && ajaxID == "ajaxContentShipping")
//			populateDefaultDeliveryAddress();
	}
}



