
//-Begin Section -ajax.js-\\
/***Javascript functions to use with ajax.
ajaxCall(strURL, xmlData, receiveFunction, blnAsync) - calls to specified url with data
ajaxSimpleSendRequest((strURL, strReceiveFunction, strAction, strReturnFunction) - wraps call to ajaxcall
ajaxArg(strName, strValue) - creates an argument to send to the ajaxSimpleSendRequest
createXMLDOM - called in ajaxSimpleSendRequest to create an xml document depending on the browser
AddNodeToXml - Helper function used in ajaxSimpleSendRequest to create xml arguments
***/



/*****************************************************************************************/

var mblnDefaultAsync = true;
var mblnAjaxConnectionClose = false; /* for proxies that don't behave well this needs to be set to true, for integrated authentication this needs to be false. */

//This is the main javascript function called directly by some ajax calls in the application
//ajaxSimpleSendRequest (below) wraps the call to this function and includes the functionality to build the xmldom
function ajaxCall(strURL, xmlData, receiveFunction, blnAsync) {
	var ajaxRequest = null;

	if (typeof xmlData == 'undefined') {
		xmlData = null;
	}
	else if (typeof (xmlData) == 'object') {
		xmlData = getXmlString(xmlData);
	}
	if (typeof blnAsync == 'undefined') {
		blnAsync = mblnDefaultAsync;
	}
	if (window.XMLHttpRequest) {
		// branch for native XMLHttpRequest object
		ajaxRequest = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		// branch for IE6-/Windows ActiveX version
		ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if (ajaxRequest) {
		ajaxRequest.open("POST", strURL, blnAsync);

		//        ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxRequest.setRequestHeader("Content-length", xmlData.length);

		if ((mblnAjaxConnectionClose == true) && (getInternetExplorerVersion() != 6)) {
			ajaxRequest.setRequestHeader("Connection", "close");
		}


		//this seems to be the opposite of what i expected
		//firefox3 onreadystatechange doesnt fire for synchronous
		//so blnAsync should be false, but it only works like this        
		if (blnAsync) {

			ajaxRequest.onreadystatechange = function() {
				DocumentReady(ajaxRequest, receiveFunction);
			}
		}

		//'<?xml version="1.0" encoding="ISO-8859-1" ?>'
		ajaxRequest.send(xmlData);

		if (!blnAsync) {
			// manually fire the event if synchronous
			DocumentReady(ajaxRequest, receiveFunction);
		}
	}

};

/*****************************************************************************************/

function DocumentReady(ajaxRequest, receiveFunction) {
	// only if req shows "complete"
	if ((ajaxRequest.readyState == 4) || (ajaxRequest.readyState == 'complete')) {
		// only if "OK"
		if (ajaxRequest.status == 200) {
			if (ajaxRequest.responseXML.documentElement != null) {
				var objResponse = ajaxRequest.responseXML.documentElement;
				if ((typeof (receiveFunction) != 'undefined') && (receiveFunction != '')) {
					eval(receiveFunction + '(objResponse)');
				}
			}
		}
		else {
			var strErrorMessage = 'Ajax request failed, code (' + ajaxRequest.status + ')';
			raiseMessage('stoperror', strErrorMessage, '');
			if ((typeof (receiveFunction) != 'undefined') && (receiveFunction != '')) {
				eval(receiveFunction + '(null)');
			}
		}
	}
};


/*****************************************************************************************/

/*


Example: 
//ajaxSimpleSendRequest('~/page/system/ajax/mypage.aspx', 'myFunction', 'action', '', new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value'));
	
Args:
strURL					Required, the page that will handle the request.
strReceiveFunction		Required, the function that you wish to receive the response. 
strAction				Optional, the action parameter used in the Process method in the handling ajax page. 
strReturnFunction		Optional, the function that the receive function will use for processing different actions. 
argArray				Optional Array, additional argument list must be in the form of ajaxArg e.g. 
new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value')

*/

function ajaxSimpleSendRequest(strURL, strReceiveFunction, strAction, strReturnFunction) {
	//uses function below to create xml document depending on browser
	var blnAsync = mblnDefaultAsync;
	var xmlDoc = createXMLDOM(blnAsync);
	var xmlTable = xmlDoc.createElement('table');
	var xmlRow = xmlDoc.createElement('row');

	xmlDoc.appendChild(xmlTable);
	xmlTable.appendChild(xmlRow);

	strReturnFunction = (typeof (strReturnFunction) == 'undefined') ? '' : strReturnFunction;
	strAction = (typeof (strAction) == 'undefined') ? '' : strAction;

	//Add the main arguments to the xml
	AddNodeToXml(xmlDoc, xmlRow, 'action', strAction);
	AddNodeToXml(xmlDoc, xmlRow, 'return_function', strReturnFunction);

	//Add the arguments to the xml
	var intArgLength = arguments.length;
	for (var intIndex = 4; intIndex < intArgLength; intIndex++) {
		var objArg = arguments[intIndex];
		if (objArg.getType() == 'ajaxArg') {
			AddNodeToXml(xmlDoc, xmlRow, objArg.Name, objArg.Value);
		}
	}
	//call main ajax function
	ajaxCall(strURL, xmlDoc, strReceiveFunction, blnAsync);

};

/*

Used as above but for multiple rows.
  
Example: 
//ajaxComplexSendRequest('~/page/system/ajax/mypage.aspx', 'myFunction', 'action', ''
, [new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value')), new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value'))]
, [new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value')), new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value'))]
, [new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value')), new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value'))]
);
  
*/

function ajaxComplexSendRequest(strURL, strReceiveFunction, strAction, strReturnFunction) {
	//uses function below to create xml document depending on browser
	var blnAsync = mblnDefaultAsync;
	var xmlDoc = createXMLDOM(blnAsync);
	var xmlTable = xmlDoc.createElement('table');
	var objArgList = null;
	var objArg = null;
	var intArgCount = 0;

	var xmlRow;
	xmlDoc.appendChild(xmlTable);
	strReturnFunction = (typeof (strReturnFunction) == 'undefined') ? '' : strReturnFunction;
	strAction = (typeof (strAction) == 'undefined') ? '' : strAction;

	//Add the arguments to the xml
	var intArgLength = arguments.length;
	for (var intIndex = 4; intIndex < intArgLength; intIndex++) {
		var objArgList = arguments[intIndex];

		xmlRow = xmlDoc.createElement('row');
		xmlTable.appendChild(xmlRow);

		//Add the main arguments to the xml
		AddNodeToXml(xmlDoc, xmlRow, 'action', strAction);
		AddNodeToXml(xmlDoc, xmlRow, 'return_function', strReturnFunction);

		intArgCount = objArgList.length;
		for (var intArgIndex = 0; intArgIndex < intArgCount; intArgIndex++) {
			objArg = objArgList[intArgIndex];
			if (objArg.getType() == 'ajaxArg') {
				AddNodeToXml(xmlDoc, xmlRow, objArg.Name, objArg.Value);
			}
		}
	}
	//call main ajax function
	ajaxCall(strURL, xmlDoc, strReceiveFunction, blnAsync);

};

/*

Used as above but for multiple rows, multi action.
  
Example: 
ajaxMultiSendRequest('~/page/system/ajax/mypage.aspx', 'myFunction', '', [
action:'actionname',args:[new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value')), new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value'))]
, action:'actionname',args:[new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value')), new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value'))]
, action:'actionname',args:[new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value')), new Array(new ajaxArg('arg1','arg1value'), new ajaxArg('arg2','arg2value'))]
]);
            
or
var actions = new Array();
    
actions.push({ action: 'deleteFile', args: [
new ajaxArg('asset_id', GetXmlNodeText(this.mCurrentSelection[i][8]))
, new ajaxArg('url', this.CurrentPath)
, new ajaxArg('name', GetXmlNodeText(this.mCurrentSelection[i][0]))
, new ajaxArg('is_secure_asset', GetXmlNodeText(this.mCurrentSelection[i][2]))
] });
ajaxMultiSendRequest('~/page/system/ajax/mypage.aspx', 'myFunction', '', actions);                                                      
                                                        
  
*/

function ajaxMultiSendRequest(strURL, strReceiveFunction, strReturnFunction, rows) {
	//uses function below to create xml document depending on browser
	var blnAsync = mblnDefaultAsync;
	var xmlDoc = createXMLDOM(blnAsync);
	var xmlTable = xmlDoc.createElement('table');
	var objArgList = null;
	var objArg = null;
	var intArgLength = 0;
	var intArgCount = 0;


	var xmlRow;
	xmlDoc.appendChild(xmlTable);
	strReturnFunction = (typeof (strReturnFunction) == 'undefined') ? '' : strReturnFunction;
	//strAction = (typeof (strAction) == 'undefined') ? '' : strAction;

	//Add the arguments to the xml
	intArgLength = rows.length;
	for (var intIndex = 0; intIndex < intArgLength; intIndex++) {
		var objArgList = rows[intIndex];

		if (typeof (objArgList.action) != 'string') {
			throw "action not defined";
		}
		if (typeof (objArgList.args) != 'object') {
			throw "args not defined";
		}


		xmlRow = xmlDoc.createElement('row');
		xmlTable.appendChild(xmlRow);

		//Add the main arguments to the xml
		AddNodeToXml(xmlDoc, xmlRow, 'action', objArgList.action);
		AddNodeToXml(xmlDoc, xmlRow, 'return_function', strReturnFunction);

		intArgCount = objArgList.args.length;
		for (var intArgIndex = 0; intArgIndex < intArgCount; intArgIndex++) {
			objArg = objArgList.args[intArgIndex];
			if (objArg.getType() == 'ajaxArg') {
				AddNodeToXml(xmlDoc, xmlRow, objArg.Name, objArg.Value);
			}
		}
	}
	//call main ajax function
	ajaxCall(strURL, xmlDoc, strReceiveFunction, blnAsync);

};


/*****************************************************************************************/

//Creates an ajaxarg object to send to the ajaxSimpleSendRequest function above
function ajaxArg(strName, strValue) {
	this.Name = strName;
	this.Value = strValue;
};

ajaxArg.prototype = {
	Name: '',
	Value: '',

	getType: function() {
		return 'ajaxArg';
	}
}


/*****************************************************************************************/


// This function is now defunct.
function ajaxStateHandler() {
	// only if req shows "complete"
	if (ajaxRequest.readyState == 4) {
		// only if "OK"
		if (ajaxRequest.status == 200) {
			//debugger;
			if (ajaxRequest.responseXML.documentElement != null) {
				var objResponse = ajaxRequest.responseXML.documentElement;
				var strMethod = objResponse.getElementsByTagName('method')[0].firstChild.data;
				var objStatus = objResponse.getElementsByTagName('status')[0];
				var objResults = objResponse.getElementsByTagName('result');
				var intResultCount = objResults.length;
				var intStatus = 0;
				var strErrorMessage = '';

				if (objStatus != null) {
					intStatus = GetXmlNodeText(objStatus.getElementsByTagName('status')[0]);
					strErrorMessage = GetXmlNodeText(objStatus.getElementsByTagName('error_message')[0]);
				}

				if (intStatus == 0) {

					for (var intResultIndex = 0; intResultIndex < intResultCount; intResultIndex++) {
						var objResult = objResults[intResultIndex];
						eval(strMethod + '(objResult)');
					}
				}
				else {
					raiseMessage('stoperror', strErrorMessage, '');
				}
			}
		}
	}
};

/*****************************************************************************************/

//creates an xml document depending on the browser
function createXMLDOM(blnAsync) {
	var xmlDoc;

	blnAsync = (typeof (blnAsync) == 'undefined') ? false : blnAsync == mblnDefaultAsync;

	// code for IE
	if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = blnAsync;
		xmlDoc.loadXML('<?xml version="1.0" encoding="ISO-8859-1" ?>');
	} // code for Mozilla, Firefox, Opera, etc.
	else if ((document.implementation) && (document.implementation.createDocument)) {
		xmlDoc = document.implementation.createDocument("", "", null);
		xmlDoc.async = blnAsync;
		xmlDoc.load('<?xml version="1.0" encoding="ISO-8859-1" ?>');
	}
	else {
		alert('Your browser cannot handle this script');
	}
	return (xmlDoc);
};

/*****************************************************************************************/

//Helper function used in ajaxSimpleSendRequest to create xml arguments
function AddNodeToXml(xmlDoc, xmlRow, strName, value) {

	var xmlNewNode = xmlDoc.createElement(strName);
	xmlNewNode.appendChild(xmlDoc.createTextNode(value));
	xmlRow.appendChild(xmlNewNode);

};

function ajax_callback(filename, clientId, nodeLinkGuid, postbackArgs, onCompleted, disableForm, enableForm) {
	var actions = new Array();

	if (disableForm == true) {
		formDisable(true);
	}

	actions.push({ action: 'ajax_callback', args: [
                                        new ajaxArg('clientId', clientId)
                                        , new ajaxArg('nodeLinkGuid', nodeLinkGuid)
                                        , new ajaxArg('postbackArgs', postbackArgs)
                                        , new ajaxArg('ContentGuid', MiWeb.mArgs.ContentGuid)
                                        , new ajaxArg('PageGuid', MiWeb.mArgs.PageGuid)
                                        , new ajaxArg('LocaleGuid', MiWeb.mArgs.LocaleGuid)
                                        , new ajaxArg('SiteGuid', MiWeb.mArgs.SiteGuid)
                                        , new ajaxArg('SiteUrlGuid', MiWeb.mArgs.SiteUrlGuid)
                                        , new ajaxArg('onCompleted', onCompleted)
                                        , new ajaxArg('Filename', filename)
                                        , new ajaxArg('enableForm', enableForm)
                                       ]
	});
	ajaxMultiSendRequest(MiWeb.resolveUrl('~/page/system/ajax/control_callback.aspx'), 'ajax_callback_rec', onCompleted, actions);
};

function ajax_callback_rec(objResults) {
	var rows = objResults.getElementsByTagName('row');
	var intRowCount = rows.length;
	var cell;
	var status;
	var message;
	var func;
	var control;
	var enableForm

	for (intRowIndex = 0; intRowIndex < intRowCount; intRowIndex++) {
		cell = rows[intRowIndex].getElementsByTagName('cell');
		status = GetXmlNodeText(cell[0]);
		message = GetXmlNodeText(cell[1]);
		enableForm = GetXmlNodeText(cell[4]);

		if (enableForm == 'true') {
			formDisable(false);
		}

		if (status == 0) {
			control = $(GetXmlNodeText(cell[2]));
			func = GetXmlNodeText(cell[3]);
			if (control != null) {
				control.innerHTML = GetXmlNodeText(cell[5]);
			}
			if ((func != null) && (func != '')) {
				var row = rows[intRowIndex];
				eval(func + '(row);');
			}

		}
		else {
			raiseMessage('stoperror', message, '');
		}
	}
};
    
    
//-End Section -ajax.js-\\


//-Begin Section -commerce_basket.js-\\
// JScript File
/* Ajax handling */

function newBasketXMLDOM()
{
//	var xmlDoc;
//	
//	// code for IE
//	if (window.ActiveXObject)
//	{
//		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
//	}// code for Mozilla, Firefox, Opera, etc.
//	else if ((document.implementation) && (document.implementation.createDocument))
//	{
//		xmlDoc=document.implementation.createDocument("","",null);
//	}
//	else
//	{
//		alert('Your browser cannot handle this script');
//	}
//	xmlDoc.async=false;
//	xmlDoc.load('<?xml version="1.0" encoding="ISO-8859-1" ?>');
//	return(xmlDoc);
}

function ajaxAddToBasket(strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice)
{
//    ajaxCallBasket('AddToBasket', strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice);
}   

function ajaxRemoveFromBasket(strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice)
{
//    ajaxCallBasket('RemoveFromBasket', strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice);
}   

function ajaxUpdateBasket(strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice, strNewSizeId, blnNewBlackAndWhite)
{
//    ajaxCallBasket('UpdateBasket', strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice, strNewSizeId, blnNewBlackAndWhite);
}   

function ajaxNewBasketOption(strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice)
{
//    ajaxCallBasket('NewBasketOption', strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice);
}          
   
function ajaxClearBasket()
{
//    ajaxCallBasket('ClearBasket', '', 0, 0, false, 0);
}    
   
function ajaxCallBasket(strAction, strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice, strNewSizeId, blnNewBlackAndWhite)
{
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = generateBasketXmlForAjax(strAction, strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice, strNewSizeId, blnNewBlackAndWhite);
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve');
}     
   
function generateBasketXmlForAjax(strAction,strImageSrc, strQuantity, strSizeId, blnBlackAndWhite, strPrice, strNewSizeId, blnNewBlackAndWhite)
{
//	var xmlNewNode;
//	var xmlDoc = newBasketXMLDOM();			
//	var xmlTable = xmlDoc.createElement('table1');
//	var xmlRow = xmlDoc.createElement('row1');
//	
//	xmlNewNode = xmlDoc.createElement('action');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strAction));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('return_function');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	ajaxBasketAddDefaultValues(xmlDoc, xmlRow);
//	
//	xmlNewNode = xmlDoc.createElement('id');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strImageSrc));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('quantity');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strQuantity));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('size_id');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strSizeId));
//	xmlRow.appendChild(xmlNewNode);			
//	
//	xmlNewNode = xmlDoc.createElement('black_and_white');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(blnBlackAndWhite));
//	xmlRow.appendChild(xmlNewNode);
//	
//	
//	
//	xmlNewNode = xmlDoc.createElement('price');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strPrice));
//	xmlRow.appendChild(xmlNewNode);
//				
//	if(typeof(strNewSizeId) != 'undefined')
//	{
//		xmlNewNode = xmlDoc.createElement('new_size_id');
//		xmlNewNode.appendChild(xmlDoc.createTextNode(strNewSizeId));
//		xmlRow.appendChild(xmlNewNode);	
//	}
//	
//	if(typeof(blnNewBlackAndWhite) != 'undefined')
//	{
//		xmlNewNode = xmlDoc.createElement('new_black_and_white');
//		xmlNewNode.appendChild(xmlDoc.createTextNode(blnNewBlackAndWhite));
//		xmlRow.appendChild(xmlNewNode);	
//	}
//	
//	xmlTable.appendChild(xmlRow);
//	xmlDoc.appendChild(xmlTable);
//	
//	return xmlDoc;
}

function ajaxBasketAddDefaultValues(xmlDoc, xmlRow)
{	

	if(typeof(mstrBasketClientID) != 'undefined')
	{

		xmlNewNode = xmlDoc.createElement('basket_clientid');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mstrBasketClientID));
		xmlRow.appendChild(xmlNewNode);	
		
		xmlNewNode = xmlDoc.createElement('basket_uniqueid');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mstrBasketUniqueID));
		xmlRow.appendChild(xmlNewNode);	


		xmlNewNode = xmlDoc.createElement('thumbnail_height');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mintThumbnailHeight));
		xmlRow.appendChild(xmlNewNode);	
		
		xmlNewNode = xmlDoc.createElement('thumbnail_width');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mintThumbnailWidth));
		xmlRow.appendChild(xmlNewNode);	
		                
		xmlNewNode = xmlDoc.createElement('thumbnail_maintain_aspect_ratio');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mblnThumbnailMaintainAspectRatio));
		xmlRow.appendChild(xmlNewNode);	
		                
		xmlNewNode = xmlDoc.createElement('thumbnail_threshold');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mintThumbnailThreshold));
		xmlRow.appendChild(xmlNewNode);	
		
		xmlNewNode = xmlDoc.createElement('thumbnail_zoom');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mintThumbnailZoom));
		xmlRow.appendChild(xmlNewNode);	
			
		xmlNewNode = xmlDoc.createElement('thumbnail_bevel');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mblnThumbnailBevel));
		xmlRow.appendChild(xmlNewNode);	
		
		xmlNewNode = xmlDoc.createElement('thumbnail_border');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mblnThumbnailBorder));
		xmlRow.appendChild(xmlNewNode);	
		                
		xmlNewNode = xmlDoc.createElement('thumbnail_cache');
		xmlNewNode.appendChild(xmlDoc.createTextNode(mblnBasketThumbnailCache));
		xmlRow.appendChild(xmlNewNode);	
	}
}


function ajaxBasketRecieve(objResponse)
{

	try
	{
	
		var xmlAjax = objResponse.getElementsByTagName('result')[0];
		var intStatus = GetXmlNodeText(xmlAjax.getElementsByTagName('status')[0]);
		var strErrorMessage = GetXmlNodeText(xmlAjax.getElementsByTagName('error_message')[0]);

	
		if(intStatus != 0)
		{
			raiseMessage('stoperror', strErrorMessage, '');
		}
		else
		{
		
			var strAction = GetXmlNodeText(xmlAjax.getElementsByTagName('action')[0]);
			var intQuantity = GetXmlNodeText(xmlAjax.getElementsByTagName('quantity')[0]);
			var decTotal = GetXmlNodeText(xmlAjax.getElementsByTagName('total')[0]);
			var intItems = GetXmlNodeText(xmlAjax.getElementsByTagName('items')[0]);
			var ctlQuantityControls = getElementsByClassName(document, 'span', 'elBasketQuantity');
			var ctlTotalControls = getElementsByClassName(document, 'span', 'elBasketTotal');
			var intCount = ctlQuantityControls.length;
			
			for(var intQIndex = 0; intQIndex < intCount; intQIndex++)
			{
				ctlQuantityControls[intQIndex].innerHTML = intQuantity;
			}
			intCount = ctlTotalControls.length;
			for(var intTIndex = 0; intTIndex < intCount; intTIndex++)
			{
				ctlTotalControls[intTIndex].innerHTML = "£" + decTotal;
			}
			
			if(typeof(mstrBasketClientID) != 'undefined')
			{
			
				var ctlBasket = document.getElementById(mstrBasketClientID);
				ctlBasket.innerHTML = GetXmlNodeText(xmlAjax.getElementsByTagName('data')[0]);
			}
			
			//raiseMessage('information', 'Q=' + intQuantity + ' P=£' + decTotal + ' I=' + intItems, '');
		}
	}
	catch(ex)
	{
		raiseMessage('stoperror', ex.description, '');
	}
		
}


function ajaxChangeBrowseMode(intBrowseMode)
{
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = generateBasketXmlForAjax2('ChangeBrowseMode', intBrowseMode);
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve2');
}          
   


function generateBasketXmlForAjax2(strAction, intBrowseMode)
{
	var xmlNewNode;
	var xmlDoc = newBasketXMLDOM();			
	var xmlTable = xmlDoc.createElement('table1');
	var xmlRow = xmlDoc.createElement('row1');
	
	xmlNewNode = xmlDoc.createElement('action');
	xmlNewNode.appendChild(xmlDoc.createTextNode(strAction));
	xmlRow.appendChild(xmlNewNode);
	
	xmlNewNode = xmlDoc.createElement('return_function');
	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve2'));
	xmlRow.appendChild(xmlNewNode);
	
	ajaxBasketAddDefaultValues(xmlRow);
	
	xmlNewNode = xmlDoc.createElement('browse_mode');
	xmlNewNode.appendChild(xmlDoc.createTextNode(intBrowseMode));
	xmlRow.appendChild(xmlNewNode);
	
	xmlTable.appendChild(xmlRow);
	xmlDoc.appendChild(xmlTable);
	
	return xmlDoc;
}

function ajaxBasketRecieve2(objResponse)
{
}

function basketQuantity_keypress(e, that, onEnterFunction)
{
    var intKeyCode = (e.which?e.which:e.keyCode);
    if((intKeyCode > 47)&&(intKeyCode < 58))
    {
        return true;
    }
    if(intKeyCode == 13)
    {
		if(onEnterFunction)
		{
			eval(onEnterFunction);
		}
        return false;
    }
    else if(intKeyCode == 43)
    {
		if(parseInt(that.value) < 100)
		{
			that.value = parseInt(that.value) + 1;
		}
        return false;
    }
    else if(intKeyCode == 95)
    {
		that.value = parseInt(that.value) - 1;
		if(parseInt(that.value) < 0)
		{
			that.value = 0;
		}
        return false;
    }
    else if(intKeyCode == 45)
    {
		that.value = parseInt(that.value) - 1;
		if(parseInt(that.value) < 0)
		{
			that.value = 0;
		}
        return false;
    }
    else if(intKeyCode == 27)
    {
		that.value = 0;
        return false;
    }
    
    //window.status = intKeyCode;
        
    return false;
}



function ajaxSetImageSize(intID, strName, strToolTip, decPrice)
{
//	var xmlNewNode;
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = newBasketXMLDOM();			
//	var xmlTable = xmlDoc.createElement('table1');
//	var xmlRow = xmlDoc.createElement('row1');
//	
//	xmlNewNode = xmlDoc.createElement('action');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('SetImageSize'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('return_function');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	ajaxBasketAddDefaultValues(xmlDoc, xmlRow);
//	
//	xmlNewNode = xmlDoc.createElement('id');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(intID));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('name');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strName));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('tool_tip');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strToolTip));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('price');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(decPrice));
//	xmlRow.appendChild(xmlNewNode);
//		

//	
//	xmlTable.appendChild(xmlRow);
//	xmlDoc.appendChild(xmlTable);
//	
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve');
}

function ajaxDeleteImageSize(intID)
{
//	var xmlNewNode;
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = newBasketXMLDOM();			
//	var xmlTable = xmlDoc.createElement('table1');
//	var xmlRow = xmlDoc.createElement('row1');
//	
//	xmlNewNode = xmlDoc.createElement('action');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('DeleteImageSize'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('return_function');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	ajaxBasketAddDefaultValues(xmlDoc, xmlRow);
//	
//	xmlNewNode = xmlDoc.createElement('id');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(intID));
//	xmlRow.appendChild(xmlNewNode);
//	
//		

//	
//	xmlTable.appendChild(xmlRow);
//	xmlDoc.appendChild(xmlTable);
//	
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve');
}

function ajaxSetImageDetails(strName, strPath, strToolTip, strComments, intImageSizesID)
{
//	var xmlNewNode;
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = newBasketXMLDOM();			
//	var xmlTable = xmlDoc.createElement('table1');
//	var xmlRow = xmlDoc.createElement('row1');
//	
//	xmlNewNode = xmlDoc.createElement('action');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('SetImageDetails'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('return_function');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	ajaxBasketAddDefaultValues(xmlDoc, xmlRow);
//	
//	xmlNewNode = xmlDoc.createElement('name');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strName));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('path');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strPath));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('tool_tip');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strToolTip));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('comments');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strComments));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('image_sizes');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(intImageSizesID));
//	xmlRow.appendChild(xmlNewNode);
//	
//	
//	xmlTable.appendChild(xmlRow);
//	xmlDoc.appendChild(xmlTable);
//	
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve');
}
function ajaxDeleteImageDetails(strPath)
{
//	var xmlNewNode;
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = newBasketXMLDOM();			
//	var xmlTable = xmlDoc.createElement('table1');
//	var xmlRow = xmlDoc.createElement('row1');
//	
//	xmlNewNode = xmlDoc.createElement('action');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('DeleteImageDetails'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('return_function');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	ajaxBasketAddDefaultValues(xmlDoc, xmlRow);
//	
//	xmlNewNode = xmlDoc.createElement('path');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strPath));
//	xmlRow.appendChild(xmlNewNode);
//	
//		

//	
//	xmlTable.appendChild(xmlRow);
//	xmlDoc.appendChild(xmlTable);
//	
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve');
//}

//function ajaxSetFolderDetails(strName, strPath, strToolTip, strComments)
//{
//	var xmlNewNode;
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = newBasketXMLDOM();			
//	var xmlTable = xmlDoc.createElement('table1');
//	var xmlRow = xmlDoc.createElement('row1');
//	
//	xmlNewNode = xmlDoc.createElement('action');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('SetFolderDetails'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('return_function');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	ajaxBasketAddDefaultValues(xmlDoc, xmlRow);
//	
//		
//	xmlNewNode = xmlDoc.createElement('name');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strName));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('path');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strPath));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('tool_tip');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strToolTip));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('comments');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strComments));
//	xmlRow.appendChild(xmlNewNode);
//		

//	
//	xmlTable.appendChild(xmlRow);
//	xmlDoc.appendChild(xmlTable);
//	
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve');
}

function ajaxDeleteFolderDetails(strPath)
{
//	var xmlNewNode;
//    var url = mstrAppPath + 'page/custom/exesight/BasketAjax.aspx';
//    var xmlDoc = newBasketXMLDOM();			
//	var xmlTable = xmlDoc.createElement('table1');
//	var xmlRow = xmlDoc.createElement('row1');
//	
//	xmlNewNode = xmlDoc.createElement('action');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('DeleteFolderDetails'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	xmlNewNode = xmlDoc.createElement('return_function');
//	xmlNewNode.appendChild(xmlDoc.createTextNode('ajaxBasketRecieve'));
//	xmlRow.appendChild(xmlNewNode);
//	
//	ajaxBasketAddDefaultValues(xmlDoc, xmlRow);
//	
//	xmlNewNode = xmlDoc.createElement('path');
//	xmlNewNode.appendChild(xmlDoc.createTextNode(strPath));
//	xmlRow.appendChild(xmlNewNode);
//	
//		

//	
//	xmlTable.appendChild(xmlRow);
//	xmlDoc.appendChild(xmlTable);
//	
//    var strXml = getXmlString(xmlDoc);
//    ajaxCall(url, strXml, 'ajaxBasketRecieve');
}
//-End Section -commerce_basket.js-\\


//-Begin Section -Gmap.js-\\

// this variable will collect the html which will eventually be placed in the sidebar
var sidebar_html = "";
// this is the handle to the map
var map = "";
// arrays to hold copies of the markers and html used by the sidebar
// because the function closure trick doesnt work there
var gmarkers = [];
var htmls = [];
var intCount = 0;
// arrays to hold variants of the info window html with get direction forms open
var to_htmls = [];
var from_htmls = [];
var counter = 0;

var prefix = '';

var intZoom = 9;

var sidebar_mode = 0;
var sidebar_title = '';
var map_title = '';

var center_lat = '';
var center_lon = '';

var enable_overview = 1;

var blnDirections = 'true';

function GetXmlNodeText(node)
{ 
    if(node && node.text)
    { 
        return node.text; 
    }
    else if(node && node.textContent)
    { 
        return node.textContent; 
    } 
    else
    {
		return '';
    }
}

if (GBrowserIsCompatible()) {
  // A function to create the marker and set up the event window
  function createMarker(point,name,html,iconcolour) {
    counter++;
    
    var icon = new GIcon();
    icon.image = mstrAppPath + "_themes/googlemap/images/mm_20_" + iconcolour + ".png"; //
    icon.iconSize = new GSize(12, 20);

    icon.shadow = mstrAppPath + "_themes/googlemap/images/mm_20_shadow.png";
    icon.shadowSize = new GSize(22, 20);
    icon.iconAnchor = new GPoint(6, 20);
    icon.infoWindowAnchor = new GPoint(5, 1);     
    
    
    var marker = new GMarker(point, icon);
    var finalhtml;
    
    if(blnDirections == 'true') {
        // The info window version with the "to here" form open
        to_htmls[intCount] = html + '<br><br>Directions: <b>To here</b> - <a href="javascript:fromhere(' + intCount + ')" class="popuplnk">From here</a>' +
           '<br><br>Start address/postcode:<br><form action="http://maps.google.com/maps" method="get" target="_blank">' +
           '<input type="text" size="30" maxlength="40" name="saddr" id="saddr" value="" /><br>' +
           '<input value="Get Directions" type="submit">' +
           '<input type="hidden" name="daddr" value="' +
           point.y + ',' + point.x + "(" + prefix + ' - ' + name + ")" + '"/>';
        // The info window version with the "to here" form open
        from_htmls[intCount] = html + '<br><br>Directions: <a href="javascript:tohere(' + intCount + ')" class="popuplnk">To here</a> - <b>From here</b>' +
           '<br><br>End address/postcode:<br><form action="http://maps.google.com/maps" method="get" target="_blank">' +
           '<input type="text" size="30" maxlength="40" name="daddr" id="daddr" value="" /><br>' +
           '<input value="Get Directions" type="submit">' +
           '<input type="hidden" name="saddr" value="' +
           point.y + ',' + point.x + "(" + prefix + ' - ' + name + ")" + '"/>';
        // The inactive version of the direction info
        finalhtml = html + '<br><br>Directions: <a href="javascript:tohere('+ intCount +')" class="popuplnk">To here</a> - <a href="javascript:fromhere('+ intCount +')" class="popuplnk">From here</a>';
    }
    else {
        if(name!='') {
            finalhtml = '<strong>'+name + '</strong><br>' + html;
        }
        else {
            finalhtml = html;
        }
    }
    GEvent.addListener(marker, "click", function() {
      marker.openInfoWindowHtml('<div class="popup">'+finalhtml+'</div>');
    });
    /*
    MOUSEOVER INSTEAD
    GEvent.addListener(marker, "mouseover", function() {
      marker.openInfoWindowHtml('<div class="popup">'+finalhtml+'</div>');
    });
    */
    // save the info we need to use later for the sidebar
    gmarkers[intCount] = marker;
    htmls[intCount] = finalhtml;
    // add a line to the sidebar html
    if(sidebar_mode == 0) {
        sidebar_html += '<div id="side'+counter+'"><a href="javascript:myclick(' + intCount + ')" class="Office">' + name + '</a><br /></div>'; //' + html + '</div>';
    }
    else if(sidebar_mode == 1) {
        sidebar_html += '<div id="side'+counter+'"><a href="javascript:myclick(' + intCount + ')" class="Office">' + name + '</a><br />' + html + '</div>';
    }
    intCount++;
    return marker;
  }
  

  // This function picks up the click and opens the corresponding info window
  function myclick(i) {
    document.getElementById("mapcont").focus();    
    gmarkers[i].openInfoWindowHtml('<div class="popup">'+htmls[i]+'</div>');
  }

  // functions that open the directions forms
  function tohere(i) {
    gmarkers[i].openInfoWindowHtml('<div class="popup">'+ to_htmls[i]+'</div>');

  }
  function fromhere(i) {
    gmarkers[i].openInfoWindowHtml('<div class="popup">'+ from_htmls[i] +'</div>');
  }

function firstClick()
{
    myclick(0);   
}

	// Download the data in data.xml and load it on the map. The format we
	// expect is:
	// <markers>
	//   <marker lat="37.441" lng="-122.141" title="blah" desc="comp name1"/>
	//   <marker lat="37.322" lng="-121.213" title="blah" desc="comp name2"/>
	// </markers>
	function init() {
        var request = GXmlHttp.create();
        request.open("GET", xmlFile, true);
        request.onreadystatechange = function() {
            if (request.readyState == 4) {





                var xmlDoc = request.responseXML;
                
                var mode_check = xmlDoc.getElementsByTagName("metadata");
                

                if(mode_check.length==1) {
                    //meta data xml
                    
                    //create the map and add a couple of toolbars
                    map = new GMap2(document.getElementById("mapcont"));
                    map.addControl(new GLargeMapControl()); //pan & zoom
                    //map.addControl(new GMapTypeControl());  //map type: map, satellite, hybrid
                    //map.addControl(new GOverviewMapControl());                   
                    
                    blnDirections = false;
                    intZoom = 6;
                    
   
                    var markers = xmlDoc.getElementsByTagName("item");
                    for (var i = 0; i < markers.length; i++) {
                    
                        var gpsLon = parseFloat(GetXmlNodeText(markers[i].getElementsByTagName("gpslongitude")[0]));
                        var gpsLat = parseFloat(GetXmlNodeText(markers[i].getElementsByTagName("gpslatitude")[0]));
                        if(i==0) {
                            //center near blackpool
                            map.setCenter(new GLatLng(parseFloat('54.6021'), parseFloat('-4.3636')), intZoom, null);
                        }
                        try {
                            var iconColour = GetXmlNodeText(markers[i].getElementsByTagName("mapiconcolour")[0]);
                        }
                        catch(e) {
                            var iconColour = 'red';
                        }
                        
                        if(!isNaN(gpsLon) && !isNaN(gpsLat)) {
                            var point = new GPoint(gpsLon,gpsLat);
                            var title = GetXmlNodeText(markers[i].getElementsByTagName("title")[0]);
                            var desc = GetXmlNodeText(markers[i].getElementsByTagName("description")[0]);
                            if(typeof(desc)=='undefined') {
                                desc = '';
                            }
                            var img = GetXmlNodeText(markers[i].getElementsByTagName("image")[0]);
                            var link = GetXmlNodeText(markers[i].getElementsByTagName("link")[0]);
                            var docpdfNode = markers[i].getElementsByTagName("pdfdocument")[0];
                            var docpdf = '';
                            if (docpdfNode != null)
                            {
								docpdf = GetXmlNodeText(docpdfNode);
							}
							
                            desc = '<table class="datatbl" cellspacing="0" cellpadding="0" border="0">'+
                                    '<tr>'+
                                    '<td valign="top"><strong>'+title+'</strong>'+
                                    desc;
                            
                            if(link!='') {
                                desc += '<br/><br/><a href="'+link+'">Read More</a>';
                            }
                            if(docpdf!='') {
                                desc += '<br/><a href="'+docpdf+'" target="_blank">Download PDF</a>';
                            }                        
                            
                            desc += '</td>';
                            
                            if(img!='')
                            {

                                desc += '<td width="10" nowrap></td>'+
                                        '<td valign="top" width="90" nowrap><img src="'+img+'" align="top" title="'+title+'" /></td>';
                            }
                            desc += '</tr>'+
                                '</table>';
                  
                            var marker = createMarker(point,'',desc,iconColour);
                            map.addOverlay(marker);
                        }
                    }   
                         
         
                    
                }
                else {
                
                    //create the map and add a couple of toolbars
                    map = new GMap2(document.getElementById("mapcont"));
                    map.addControl(new GLargeMapControl()); //pan & zoom
                    map.addControl(new GMapTypeControl());  //map type: map, satellite, hybrid


                    var properties = xmlDoc.documentElement.getElementsByTagName("property");
                    for (var i = 0; i < properties.length; i++) {
                        if(properties[i].getAttribute("name") == 'company_name') {
                            prefix = GetXmlNodeText(properties[i]);   
                        }
                        else if (properties[i].getAttribute("name") == 'sidebar_mode') {
                            sidebar_mode = GetXmlNodeText(properties[i]);
                        }
                        else if (properties[i].getAttribute("name") == 'sidebar_title') {
                            sidebar_title = GetXmlNodeText(properties[i]);
                        }
                        else if (properties[i].getAttribute("name") == 'map_title') {
                            map_title = GetXmlNodeText(properties[i]);
                        }
                        else if (properties[i].getAttribute("name") == 'zoom') {
                            intZoom = parseInt(GetXmlNodeText(properties[i]));
                        }
                        else if (properties[i].getAttribute("name") == 'directions') {
                            blnDirections = GetXmlNodeText(properties[i]);
                        }
                        else if (properties[i].getAttribute("name") == 'center_lat') {
                            center_lat = GetXmlNodeText(properties[i]);
                        }
                        else if (properties[i].getAttribute("name") == 'center_lon') {
                            center_lon = GetXmlNodeText(properties[i]);
                        }
                        else if (properties[i].getAttribute("name") == 'enable_overview') {
                            enable_overview = GetXmlNodeText(properties[i]);
                        }
                         
                    }	

                    if(parseInt(enable_overview) == 1)
                    {
                        //map.addControl(new GOverviewMapControl());    
						window.setTimeout("overview = new GOverviewMapControl();map.addControl(overview)",500); 

                    }
                    
                    
                    if(map_title != '') {
                        
                        var objMap = document.getElementById("mapcont");
                        if(objMap) {
                            var objTitle = document.createElement('h1');
                            objTitle.innerText = map_title;
                            objTitle.className = 'MapTitle';
                            objMap.insertAdjacentElement('beforeBegin', objTitle);
                            
                        }
                    }                
                    	    
                    var markers = xmlDoc.documentElement.getElementsByTagName("marker");
                    for (var i = 0; i < markers.length; i++) {
                        if(i==0) {
                            //center near first point
                            if(center_lat=='')
                            {
                               map.setCenter(new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng"))), intZoom, null);
                            }
                            else
                            {
                                map.setCenter(new GLatLng(parseFloat(center_lat), parseFloat(center_lon)), intZoom, null);
                            }
                        }
                        
                        try {
                            var iconColour = markers[i].getAttribute("icon").toString()
                        }
                        catch(e) {
                            var iconColour = 'red';
                        }
                        var point = new GPoint(parseFloat(markers[i].getAttribute("lng")),parseFloat(markers[i].getAttribute("lat")));
                        var title = markers[i].getAttribute("title").toString();
                        var desc = markers[i].getAttribute("desc").toString();
                        var marker = createMarker(point,title,desc,iconColour);
                        map.addOverlay(marker);
                    }
                    if(i==1)
                    {
                        firstClick();
                        
                    }
                }

                // put the assembled sidebar_html contents into the sidebar div
                //sidebar_html = '<h1 class="elContentTitle">Contact Us</h1>' + sidebar_html;
                if(document.getElementById("sidebar")) {
                    if(sidebar_title!='') {
                        sidebar_title = '<h1 class="SideBarTitle"><span>'+sidebar_title+'</span>'+sidebar_title+'</h1>';
                    }
                    document.getElementById("sidebar").innerHTML = sidebar_title + sidebar_html;
                }
            }
        }
        request.send(null);
    }

    Event.observe(window, 'load', init, false);
    //DomLoaded.load(init);
}
else {
  alert('Sorry, the Google Maps API is not compatible with this browser');
}  
 
//-End Section -Gmap.js-\\

//-End File