

// set position of small page numbers
var sPageNumPos_01 = "205px"
var sPageNumPos_02 = "345px"
var sPageNumPos_03 = "414px"
var sPageNumPos_04 = "503px"
var sPageNumPos_05 = "830px"
var sPageNumPos_06 = "898px"


var bUseDifferentAddressForShipping = true		// if true the shipping details are collected from the invoice details

window.onbeforeunload = function() {
//	return 
}

function fPOK( nS_Ref, sReturn_UUID) {
	fSetUpOrder( nS_Ref, sReturn_UUID)
}


var bEnquiryOptedIn = false
function fToggleEnquiryOptIn() {
	if ( bEnquiryOptedIn) {
		document.getElementById( "enquiryoptin").innerHTML = "NO"
		bEnquiryOptedIn = false
	}
	else {
		document.getElementById( "enquiryoptin").innerHTML = "YES"
		bEnquiryOptedIn = true
	}
}

function fCheckLoginB4Checkout( nS_Ref) {
	if ( bLoggedIn) {
		fGetCheckoutPanel( nS_Ref)
	}
	else {
		fGetAccount( nS_Ref)
	}
}

function fEnlargePhoto( nS_Ref, sBigPhotoURL) {
	document.getElementById( "bigphoto").innerHTML = "<table onClick='fCloseBigPhoto()' bgcolor='#888888' cellspacing='0px' cellpadding='0px' style='cursor:hand;cursor:pointer;border:10px solid #888888;border-bottom:1px solid #888888'><tr><td><img src='images/" + nS_Ref + "/" + sBigPhotoURL + "' style='border:2px solid black;' onLoad='fCenterBigPhoto()' /></td></tr><tr><td align='right' style='color:white;' class='pagebody'><b>Click to Close</b></td></tr></table>"
}

function fCenterBigPhoto() {
	var obj = document.getElementById( "bigphoto")
	var nLeft = (f_clientWidth()/2) - (obj.offsetWidth/2) + f_scrollLeft();
	obj.style.left = nLeft+"px"
	var nTop = (f_clientHeight()/2) - (obj.offsetHeight/2) + f_scrollTop();
	obj.style.top = nTop+"px"
}

function fCloseBigPhoto() {
	document.getElementById( "bigphoto").innerHTML = ""
}

function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}


function fValidateEmail(s) {
	var reEmail = /^.+\@.+\..+$/
	if (s == "") 
       if (fValidateEmail.arguments.length == 1) return false;
       else return (fValidateEmail.arguments[1] == true);
    else {
       return reEmail.test(s)
    }
}

function fPR_Option( nPR_Ref) {
	if ( nPR_Ref == 0) {
		fGetProductRangePanel( nS_Ref)
	}
	else {
		fShowAllItems( nPR_Ref, 0)
	}
}

function fSendEnquiry() {
	var sName = document.getElementById( "enquiryname").value
	var sEmail = document.getElementById( "enquiryemail").value
	var sEnquiryText = document.getElementById( "enquirytext").innerHTML

	if ( sName == "") {
		alert( 'Ooops! There is no name entered.\n\nPlease correct and try again.')
		return false
	}
	if ( sEmail == "") {
		alert( 'Ooops! There is no email address.\n\nPlease correct and try again.')
		return false
	}
	if ( !fValidateEmail( sEmail)) {
		alert( 'Sorry, your email address "'+sEmail+'" is not valid.\n\nPlease correct and try again.')
		return false
	}
	if ( sEnquiryText == "" || sEnquiryText == undefined) {
		var area = document.getElementsByTagName('TEXTAREA')[0];
		sEnquiryText = area.value;
		area.value = "";
	}
	if ( sEnquiryText == "") {
		alert( 'Ooops! There is no text in your enquiry.\n\nPlease correct and try again.')
		return false
	}
	else {
		sEnquiryText = sEnquiryText.split("|").join(" ")
	}

	var sParms = document.getElementById( "enquiryname").value + "|"	// 0
		+ sEmail + "|"													// 1
		+ document.getElementById( "enquirycompany").value + "|"		// 2
		+ document.getElementById( "enquirycity").value + "|"			// 3
		+ document.getElementById( "enquiryphone").value + "|"			// 4
		+ sEnquiryText + "|"											// 5
		+ ( ( bEnquiryOptedIn) ? "true" : "false") + "|"				// 6
	fSaveEnquiry( nS_Ref, sParms)			
}

function fUpdateBasketItem( nS_Ref, o, nB_Ref) {
//alert(nS_Ref+"\n"+nB_Ref)
	
	var nQuantity = o.value
//alert( nQuantity)
	fGetBasketPanel( nS_Ref, -1, nQuantity, nB_Ref) // -1 for PI_Ref forces update only to basket item
}

function fBuyItem( nPI_Ref) {
	var nQuantity = document.getElementById( "quantity").value
	fGetBasketPanel( nS_Ref, nPI_Ref, nQuantity) 
}

function fShowItemExtraInfo() {
	var o = document.getElementById( "itemdetailinfo")
	o.style.display = "inline"
	fScrollTo( 0, 370)
	return false
}

function fHideItemExtraInfo() {
	var o = document.getElementById( "itemdetailinfo")
	o.style.display = "none"
}

function fSearchFirstPage() {
	fShowSearchPage( nS_Ref, 0)
}

function fEditStore() {
	var oFrm = document.getElementById( "editstore")
	oFrm.submit()
	return false
}

function fRemoveSplashPage() {
	document.getElementById( "splashpage").style.display = "none"
	document.getElementById( "splashbgtable").style.display = "none"
}


function fDelayedOnload() {
	fScrollTo( 0, 0)
	if ( document.getElementById( "splashbg")) {
		document.getElementById( "splashbg").style.width = f_clientWidth()+"px"
		document.getElementById( "splashimage").style.display = "block"
		document.getElementById( "splashlogo").style.display = "block"
		document.getElementById( "splashlink").style.display = "block"
	}
}


function fOnLoad() {
	setTimeout( "fDelayedOnload();", 1000)
	
}

// temp menu functions
function fHome_Option(n, nS_Ref) {
	fGetHomePanel( nS_Ref)
}

function fAbout_Option(n) {
	alert("About: "+n)
}

function fPutCommentCS_Cookie() {
	var sForCommentCookie = document.getElementById( 'ordercomment').value
	fSetCookie ( "CheckoutComment", sForCommentCookie, dCS_CommentCookie)
	return false
}

var bShowHomePageExtraItems = false
function fExpandItemsOnHomePage() {

//	alert( document.getElementById( "hidden_items_"+nPR_Ref).innerHTML)
	
	if ( !bShowHomePageExtraItems) {
		document.getElementById( "hidden_items_"+nPR_Ref).style.display = "inline"
		document.getElementById( "hidden_items_plus_"+nPR_Ref).innerHTML = "-"
		document.getElementById( "hidden_items_arrow_"+nPR_Ref).innerHTML = '<img src="images/droparrow-down.jpg" border="0px">'

		bShowHomePageExtraItems = true
	}
	else {
		document.getElementById( "hidden_items_"+nPR_Ref).style.display = "none"
		document.getElementById( "hidden_items_plus_"+nPR_Ref).innerHTML = "+"
		document.getElementById( "hidden_items_arrow_"+nPR_Ref).innerHTML = '<img src="images/droparrow-right.jpg" border="0px">'
		bShowHomePageExtraItems = false
	}
}
function fReturnToHome( nS_Ref) {
	alert("TO WRITE: fReturnToHome( " + nS_Ref + ")")
	return false
}

function fCheckStock( o, nStockCnt) {
	if ( o.value > nStockCnt) {
		o.value = nStockCnt
		return true
	}
	if ( isNaN( 1*o.value) || 1*o.value < 1) {
		o.value = 1
		return true
	}
	o.value = Math.floor( 1*o.value)
	return true
}


function fAccountEdited() {
	document.getElementById("acc_warning_1").innerHTML = ""
	document.getElementById("acc_warning_2").innerHTML = ""
	return true
}

function fSubmitAccountDetails( nS_Ref, sMode) {
	var oSelect = document.getElementById("county")
	var sBillingCounty = oSelect.options[oSelect.selectedIndex].value

	oSelect = document.getElementById("shipping_county")
	var sShippingCounty = oSelect.options[oSelect.selectedIndex].value

	oSelect = document.getElementById("billing-country")
	var sBillingCountry = oSelect.options[oSelect.selectedIndex].value

	oSelect = document.getElementById("ship_country")
	var sShippingCountry = oSelect.options[oSelect.selectedIndex].value

	var sParms = document.getElementById("as_ref").value + "|"

		+ document.getElementById("password").value + "|"
		+ document.getElementById("confirmpassword").value + "|"
		
		+ document.getElementById("keep_informed").checked + "|"
		
		
		+ document.getElementById("email").value + "|"
		+ document.getElementById("salutation").value + "|"
		+ document.getElementById("firstname").value + "|"
		+ document.getElementById("lastname").value + "|"
		
		+ document.getElementById("company").value + "|"

		+ document.getElementById("phone").value + "|"
		+ document.getElementById("phone_2").value + "|"
		+ document.getElementById("fax").value + "|"
		+ document.getElementById("website_url").value + "|"

		+ document.getElementById("house_number").value + "|"
		+ document.getElementById("address_1").value + "|"
		+ document.getElementById("address_2").value + "|"
		+ document.getElementById("address_3").value + "|"
		+ document.getElementById("address_4").value + "|"
		
		+ sBillingCounty + "|"
		+ sBillingCountry + "|" // odd problem if "country" is used for id, in IE v8.6001.18702
		+ document.getElementById("postcode").value + "|"


		+ document.getElementById("ship_email").value + "|"
		+ document.getElementById("ship_salutation").value + "|"
		+ document.getElementById("ship_firstname").value + "|"
		+ document.getElementById("ship_lastname").value + "|"
		
		+ document.getElementById("ship_company").value + "|"

		+ document.getElementById("ship_phone").value + "|"
		+ document.getElementById("ship_phone_2").value + "|"
		+ document.getElementById("ship_fax").value + "|"
		+ document.getElementById("ship_website_url").value + "|"

		+ document.getElementById("ship_house_number").value + "|"
		+ document.getElementById("ship_address_1").value + "|"
		+ document.getElementById("ship_address_2").value + "|"
		+ document.getElementById("ship_address_3").value + "|"
		+ document.getElementById("ship_address_4").value + "|"
		
		+ sShippingCounty + "|"
		+ sShippingCountry + "|"
		+ document.getElementById("ship_postcode").value + "|"
		
		// field 38 - if false then details for invoice will be loaded into shipping fields
		+ ( ( bUseDifferentAddressForShipping) ? "true" : "false") + "|"																			
	fGetAccountDetailsPanel( nS_Ref, sMode, sParms)
	return true
}

function fSubmitLogin() {
	fGetLoginPanel( 
		document.getElementById("storeref").value, 
		document.getElementById("loginname").value, 
		document.getElementById("loginpass").value, 
		document.getElementById("from").value)
	return true
}

var bSiteMapIn = false;
function fShowSiteMap( nS_Ref) {
	if ( !bSiteMapIn){
		document.getElementById("sitemap").style.left = "0px"
		document.getElementById("lowerleftpanel").innerHTML = ""
		var nSiteMapTableHeight = document.getElementById("sitemaptable").offsetHeight
		document.getElementById("lowerleftpanel").style.height = nSiteMapTableHeight+"px"
		bSiteMapIn = true
	}
	else { 
		fHideSiteMap()
		fGetHomePanel( nS_Ref)
	}
	return true
}


function fHideSiteMap()	{
	document.getElementById("sitemap").style.left = "-3000px"
	bSiteMapIn = false
}

function fScrollTo( x, y) {
/*
	var ScrollTop = document.body.scrollTop;
	if (ScrollTop == 0)	{
		if (window.pageYOffset) {
			ScrollTop = window.pageYOffset;
		}
		else{
			ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
		}
	}
*/
	window.scrollTo( x, y)
}


var dCS_CookiesExpire = new Date()
dCS_CookiesExpire.setDate( dCS_CookiesExpire.getDate() + nCS_CookieDaysToExpire)

var dCS_CommentCookie = new Date()
dCS_CommentCookie.setDate( dCS_CommentCookie.getDate() + 1)


// ---------------------------------------------

// if user has not visited before or has no cookie from last time
// creade a new ID and set last product-range and items-paging-start to defaults

if ( fGetCookie( sS_Name) == null) {
	
	fSetCookie( sS_Name, sUUID, dCS_CookiesExpire)

	fSetCookie( ""+nS_Ref+"productref", "-1", dCS_CookiesExpire)
	fSetCookie( ""+nS_Ref+"pagestart", "0", dCS_CookiesExpire) // relates to product items pages
}


// ----------------------------------------------

function fShowSearchPage( nS_Ref, nSelectedPageStart) {
	var sSearchStr = ""+document.getElementById("search").value
	if (sSearchStr == "search" || sSearchStr == "") return

	//alert("nSelectedPageStart: " +nSelectedPageStart)
	
	// get last known page start, if 0 set to first page
	var nItemsPageStart = 1*fGetCookie( ""+nS_Ref+"searchpagestart")

	nItemsPageStart = ( 1*nItemsPageStart == 0 || 1*nSelectedPageStart == 0) ? nItemsPerPage : ( 1*nItemsPageStart + 1*nSelectedPageStart)
	
 	// reset page start cookie
	fSetCookie( ""+nS_Ref+"searchpagestart", ""+nItemsPageStart, dCS_CookiesExpire)

	fGetSearchPanel( nS_Ref, sSearchStr, nItemsPageStart, nItemsPerPage)
}

function fOrderFirstPage() {
	fShowOrderPage( nS_Ref, 0)
}

function fShowOrderPage( nS_Ref, nOrderSelectedPageStart) {

	//alert("nOrderSelectedPageStart: " +nOrderSelectedPageStart)
	
	// get last known page start, if 0 set to first page
	var nOrderItemsPageStart = 1*fGetCookie( ""+nS_Ref+"orderpagestart")

	nOrderItemsPageStart = ( 1*nOrderItemsPageStart == 0 || 1*nOrderSelectedPageStart == 0) ? nOrderItemsPerPage : ( 1*nOrderItemsPageStart + 1*nOrderSelectedPageStart)
	
 	// reset page start cookie
	fSetCookie( ""+nS_Ref+"orderpagestart", ""+nOrderItemsPageStart, dCS_CookiesExpire)

	fGetOrderPanel( nS_Ref, nOrderItemsPageStart, nOrderItemsPerPage)
}

function fSortItemsOption( nPR_Ref) {
	var o = document.getElementById( "sortitems")
	fSetCookie( ""+nS_Ref+"sortorder", ""+o.options[o.selectedIndex].value, dCS_CookiesExpire)
	fShowAllItems( nPR_Ref, 0) // 0 is for nItemsPageStart, 0 = return to first page
}

function fShowAllItems( nPR_Ref, nSelectedPageStart) {



	var nCS_Cookie_PR_Ref = 1*fGetCookie( sS_Name+"productref")

	// check if a range has been selected and held in a cookie, return range ID ref
	nPR_Ref = ( nCS_Cookie_PR_Ref == -1) ? -1 : nPR_Ref

	// pick up last sort order
	var nItemsSortOrder = 1*fGetCookie( ""+nS_Ref+"sortorder")
	
	// get last known page start, if 0 set to first page
	var nItemsPageStart = 1*fGetCookie( ""+nS_Ref+"pagestart")

	nItemsPageStart = ( 1*nItemsPageStart == 0 || 1*nSelectedPageStart == 0) ? nItemsPerPage : ( 1*nItemsPageStart + 1*nSelectedPageStart)
	

//alert( "nItemsPageStart: " + nItemsPageStart)

	// reset page start cookie
	fSetCookie( ""+nS_Ref+"pagestart", ""+nItemsPageStart, dCS_CookiesExpire)

	fGetRangeOfItemsPanel( nS_Ref, nPR_Ref, nItemsSortOrder, nItemsPageStart, nItemsPerPage)
}


function fToggleShipping() {
	if ( bUseDifferentAddressForShipping) {
		// shrink list to hide Shipping fields
		document.getElementById("acc_shippingpanel").style.display = "none"
		document.getElementById("acc_toggleshipping").innerHTML = sShip_Button_Different_Text
		bUseDifferentAddressForShipping = false
	}
	else {
		// expand list to display all Shipping fields
		document.getElementById("acc_shippingpanel").style.display = "inline"
		document.getElementById("acc_toggleshipping").innerHTML = sShip_Button_Same_Text
		window.scrollBy(0, 450)
		bUseDifferentAddressForShipping = true
	}
	return false
}



// ###### AJAX CALLS ###### //


function fGetHomePanel( nS_Ref) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fGetHomePanel(" + nS_Ref + "\n'" + sCookieUUID + "')")
	fSendToServer("home.asp", "storeref="+nS_Ref+"&uuid="+sCookieUUID, "fGetHomePanelStateChanged")
}
function fGetHomePanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		fHideSiteMap()
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("basketcount").innerHTML=aTxt[1]
		document.getElementById("bigpagenumber").innerHTML="01"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_01
		document.getElementById("smallpagenumber").innerHTML="01"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
	}
}

function fRemoveItemFromBasket( nS_Ref, nB_Ref) {
	//if ( bDebug) 
	//alert("IN fRemoveItemFromBasket(" + nS_Ref + ", " + nB_Ref + ")")
	fSendToServer("removebasketitem.asp", "storeref="+nS_Ref+"&basketref="+nB_Ref, "fRemoveItemFromBasketStateChanged")
}
function fRemoveItemFromBasketStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		fHideSiteMap()
		fGetBasketPanel( nS_Ref)
	}
}

function fGetTermsPanel( nS_Ref) {
	//if ( bDebug) 
	//alert("IN fGetTermsPanel(" + nS_Ref + "')")
	fSendToServer("terms.asp", "storeref="+nS_Ref, "fGetTermsPanelStateChanged")
}
function fGetTermsPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="01"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_01
		document.getElementById("smallpagenumber").innerHTML="01"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
	}
}


function fGetDeliveryPanel( nS_Ref) {
	//if ( bDebug) 
	//alert("IN fGetTermsPanel(" + nS_Ref + "')")
	fSendToServer("delivery.asp", "storeref="+nS_Ref, "fGetDeliveryPanelStateChanged")
}
function fGetDeliveryPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="01"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_01
		document.getElementById("smallpagenumber").innerHTML="01"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
	}
}



function fSetUpOrder( nS_Ref, sReturn_UUID) {
	var sCookieUUID = fGetCookie( sS_Name)
	var sOrderComment = ""
	if ( sReturn_UUID == sCookieUUID) {
		sOrderComment = fGetCookie ( "CheckoutComment")
		sOrderComment = ( ""+sOrderComment == "null" || ""+sOrderComment == "undefined") ? "" : sOrderComment
	}
	//if ( bDebug) 
	//alert("IN fSetUpOrder(" + nS_Ref + "\n'" + sCookieUUID + "\n" + sOrderComment + ")")
	fSendToServer("setuporder.asp", "storeref="+nS_Ref+"&uuid="+sCookieUUID+"&ordercomment="+sOrderComment+"&oid="+sOrder_UUID, "fSetUpOrderStateChanged")
}
function fSetUpOrderStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		if ( ""+aTxt[0] != "") {
			document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
			document.getElementById("basketcount").innerHTML="0"
		}
		else {
			fGetHomePanel( nS_Ref)
		}
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
	}
}


function fGetSearchPanel( nS_Ref, sSearchStr, nItemsPageStart, nItemsPerPage) {
	//if ( bDebug) 
	//alert("IN fGetSearchPanel(" + nS_Ref + "\n" + sSearchStr + "\n" + nItemsPageStart + "\n" + nItemsPerPage + "')")
	fSendToServer("search.asp", "storeref="+nS_Ref+"&searchstr="+sSearchStr+"&pagestart="+nItemsPageStart+"&itemsperpage=" + nItemsPerPage, "fGetSearchPanelStateChanged")
}
function fGetSearchPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="01"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_01
		document.getElementById("smallpagenumber").innerHTML="01"
		fHideSiteMap()

		fGetRightPanel( nS_Ref, false)
	}
}

function fGetOrderPanel( nS_Ref, nOrderItemsPageStart, nOrderItemsPerPage) {
	//if ( bDebug) 
	//alert("IN fGetOrderPanel(" + nS_Ref + "\n" + nOrderItemsPageStart + "\n" + nOrderItemsPerPage + ")")
	fSendToServer("paidfororders.asp", "storeref="+nS_Ref+"&pagestart="+nOrderItemsPageStart+"&itemsperpage=" + nOrderItemsPerPage, "fGetOrderPanelStateChanged")
}
function fGetOrderPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="05"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_05
		document.getElementById("smallpagenumber").innerHTML="05"
		fHideSiteMap()
	}
}

function fGetOrderDetailsPanel( nPPO_Ref, sPPO_UUID) {
	//if ( bDebug) 
	//alert("IN fGetOrderDetailsPanel( nS_Ref + "\n" + nPPO_Ref + "\n" + sPPO_UUID + ")")
	fSendToServer("orderdetails.asp", "storeref="+nS_Ref+"&pporef="+nPPO_Ref+"&ppouuid="+sPPO_UUID, "fGetOrderDetailsStateChanged")
}
function fGetOrderDetailsStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="05"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_05
		document.getElementById("smallpagenumber").innerHTML="05"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
	}
}


function fSaveEnquiry( nS_Ref, sParms) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fSaveEnquiry(" + nS_Ref + "\n" + sParms + "\n" + sCookieUUID + "')")
	fSendToServer("sendenquiry.asp", "storeref="+nS_Ref+"&parms="+sParms+"&uuid="+sCookieUUID, "fSaveEnquiryStateChanged")
}

function fSaveEnquiryStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
		bEnquiryOptedIn = false
	}
}

function fGetRightPanel( nS_Ref, bShowContactPage) {

	var nRightPanel_PF_Ref = ( bShowContactPage) ? 0 : aRightPanel_PF_Ref[ Math.floor( Math.random() * aRightPanel_PF_Ref.length)]
	
	//if ( bDebug) 
	//alert("IN fGetRightPanel( nS_Ref)")
	fSendToServer("rightpanel.asp", "storeref="+nS_Ref+"&pfref="+nRightPanel_PF_Ref, "fGetRightPanelStateChanged")
}
function fGetRightPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerrightpanel").innerHTML = aTxt[0]
	}
}


function fGetAboutPanel( nS_Ref) {
	//if ( bDebug) 
	//alert("IN fGetAboutPanel(" + nS_Ref + "')")
	fSendToServer("about.asp", "storeref="+nS_Ref, "fGetAboutPanelStateChanged")
}
function fGetAboutPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="03"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_03
		document.getElementById("smallpagenumber").innerHTML="03"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
	}
}

function fGetContactPanel( nS_Ref) {
	//if ( bDebug) 
	//alert("IN fGetContactPanel(" + nS_Ref + "')")
	fSendToServer("contact.asp", "storeref="+nS_Ref, "fGetContactPanelStateChanged")
}
function fGetContactPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="04"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_04
		document.getElementById("smallpagenumber").innerHTML="04"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, true)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
	}
}

var sOrderComment
function fGetPaymentPanel( nS_Ref) {
	var sCookieUUID = fGetCookie( sS_Name)
	sOrderComment = ""+document.getElementById("ordercomment").innerHTML
	//if ( bDebug) 
	//alert("IN fGetPaymentPanel(" + nS_Ref + "\n" + sCookieUUID + ")")
	fSendToServer("payment.asp", "storeref="+nS_Ref+"&uuid="+sCookieUUID, "fGetPaymentPanelStateChanged")
}
function fGetPaymentPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
	}
}

function fGetProductItemDetailsPanel( nS_Ref, nPI_Ref) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fGetProductItemDetailsPanel(" nS_Ref + "\n" + nPI_Ref + "\n'" + sCookieUUID + "')")
	fSendToServer("itemdetails.asp", "storeref=" + nS_Ref + "&uuid="+sCookieUUID+"&productitemref="+nPI_Ref, "fGetProductItemDetailsPanelStateChanged")
}
function fGetProductItemDetailsPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="02"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_02
		document.getElementById("smallpagenumber").innerHTML="02"
		fHideSiteMap()
	}
}

function fGetRangeOfItemsPanel( nS_Ref, nPR_Ref, nItemsSortOrder, nItemsPageStart, nItemsPerPage) {
	var sCookieUUID = fGetCookie( sS_Name)
	
	//if ( bDebug) 
	//alert( "IN fGetRangeOfItemsPanel(" + nS_Ref + "\n" + nPR_Ref + "\n'" + sCookieUUID + "'\n" + nItemsSortOrder + "\n" + nItemsPageStart + "\n" + nItemsPerPage + ")")
	
	fSendToServer("rangeofitems.asp", "storeref=" + nS_Ref +						
	"&rangeref="+nPR_Ref+"&uuid="+sCookieUUID+"&sortorder="+nItemsSortOrder+"&pagestart="+nItemsPageStart+"&itemsperpage=" + nItemsPerPage, "fGetRangeOfItemsPanelStateChanged")
}
function fGetRangeOfItemsPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="02"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_02
		document.getElementById("smallpagenumber").innerHTML="02"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
	}
}

function fGetProductRangePanel( nS_Ref) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fGetProductRangePanel(" + nS_Ref + "\n'" + sCookieUUID + "')")
	fSendToServer("productrange.asp", "storeref="+nS_Ref+"&uuid="+sCookieUUID, "fGetProductRangePanelStateChanged")
}
function fGetProductRangePanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("bigpagenumber").innerHTML="02"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_02
		document.getElementById("smallpagenumber").innerHTML="02"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
	}
}

function fGetCheckoutPanel( nS_Ref) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fGetCheckoutPanel(" + nS_Ref + "\n'" + sCookieUUID + "')")
	fSendToServer("checkout.asp", "storeref="+nS_Ref+"&uuid="+sCookieUUID, "fGetCheckoutPanelStateChanged")
}
function fGetCheckoutPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 

//alert(aTxt[1])
//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]

		//alert(document.getElementById( "test").innerHTML)
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
	}
}

function fGetBasketPanel( nS_Ref, nPI_Ref, nQuantity, nB_Ref) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fGetBasketPanel(" + nS_Ref + "\n'" + sCookieUUID + "\n'" + nPI_Ref + "\n" + nQuantity + "\n" + nB_Ref + ")")
	fSendToServer("basket.asp", "storeref="+nS_Ref+"&uuid="+sCookieUUID+"&itemref="+nPI_Ref+"&quantity="+nQuantity+"&basketref="+nB_Ref, "fGetBasketPanelStateChanged")
}
function fGetBasketPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		document.getElementById("basketcount").innerHTML=aTxt[1]
		document.getElementById("bigpagenumber").innerHTML="06"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_06
		document.getElementById("smallpagenumber").innerHTML="06"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
	}
}

function fGetAccountDetailsPanel( nS_Ref, sMode, sParms) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fGetAccountDetailsPanel(" + nS_Ref + "\n'" + sMode + "'\n'" + sParms + "')")
	fSendToServer("accountdetails.asp", "storeref="+nS_Ref+"&mode="+sMode+"&parms="+sParms+"&uuid="+sCookieUUID, "fGetAccountDetailsPanelStateChanged")
}
function fGetAccountDetailsPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")

		//if( bDebug) 
		//fAjaxDebug( aTxt)
		//alert( aTxt[8])
		bUseDifferentAddressForShipping = true
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		if ( !isNaN( 1*aTxt[2])) {
			fGetLoginPanel( nS_Ref, aTxt[3], aTxt[4], '')
		}
		document.getElementById("bigpagenumber").innerHTML="05"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_05
		document.getElementById("smallpagenumber").innerHTML="05"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
	}
}

function fGetLogoutPanel() {
	//if ( bDebug) 
	//alert("IN fGetLogoutPanel()")
	fSendToServer("logout.asp", "", "fGetLogoutPanelStateChanged")
}
function fGetLogoutPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		fGetAccount( nS_Ref)
//		document.getElementById( "loginstatus").innerHTML = "logged out"
		bLoggedIn = false
	}
	else {
		bLoggedIn = true
	}
	fHideSiteMap()
}

function fGetLoginPanel( nS_Ref, sA_Email, sA_Password, sFrom) {
	//if ( bDebug) 
	//alert("IN fGetLoginPanel()")
	fSendToServer("login.asp", "storeref="+nS_Ref+"&loginname="+sA_Email+"&loginpass="+sA_Password+"&from="+sFrom, "fGetLoginPanelStateChanged")
}
function fGetLoginPanelStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")
		//if( bDebug) 
		//fAjaxDebug( aTxt)
		fHideSiteMap()
		fGetAccount( nS_Ref)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
	}
}

function fGetAccount( nS_Ref) {
	var sCookieUUID = fGetCookie( sS_Name)
	//if ( bDebug) 
	//alert("IN fGetAccount()")
	//alert("nS_Ref:"+nS_Ref)
	fSendToServer( "account.asp", "storeref="+nS_Ref+"&uuid="+sCookieUUID, "fGetAccountStateChanged")
}
function fGetAccountStateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
		var aTxt = String( xmlHttp.responseText).split("|")
		//if( bDebug) 
		//fAjaxDebug( aTxt)
		document.getElementById("lowerleftpanel").innerHTML=aTxt[0]
		if ( ""+aTxt[1] == "loggedin") {
//			document.getElementById( "loginstatus").innerHTML = "logged in"
			bLoggedIn = true
		}
		else {
			bLoggedIn = false
		}
		document.getElementById("bigpagenumber").innerHTML="05"
		document.getElementById("smallpagenumber").style.left = sPageNumPos_05
		document.getElementById("smallpagenumber").innerHTML="05"
		fHideSiteMap()
		fGetRightPanel( nS_Ref, false)
		setTimeout( "fScrollTo(0,nTopOfPanels_ScrollPosY)", 200)
			
		//if (document.getElementById( "acc_warning") != null) document.getElementById( "acc_warning").scrollTop = "0px"
	}
}


// ######## AJAX FUNCTIONS ######## //

function fAjaxDebug( a) {
	var s = "AJAX DEBUG - Serverside Response Items\n\n"
	for ( var i = 0; i < a.length; i++) {
		s += ""+i+": " + a[i] + "\n"
	}
	alert( s )
}

function fSendToServer(sURL,sPrmStr,sCallFunc,bAJAXPost) {

	// this random number sent as a parameter ensures 
	// things update ok ... why? don't ask me!!
	var sRandom=(Math.random()*1000).toString()
	sURL=sURL+"?cnt="+sRandom+"&"+sPrmStr
	eval("xmlHttp=GetXmlHttpObject("+sCallFunc+")")
	if (!bAJAXPost) {
		xmlHttp.open("GET", sURL, false)
		xmlHttp.send(null)
	}
	else {
		xmlHttp.open("POST", sURL, false)
		xmlHttp.setRequestHeader("Content-type","multipart/form-data")
		xmlHttp.setRequestHeader("Content-length", sPrmStr.length)
		xmlHttp.setRequestHeader("Connection","close")
		xmlHttp.send(sPrmStr)
	}
} 

function GetXmlHttpObject(handler) { 
	var objXmlHttp=null

	if (navigator.userAgent.indexOf("Opera")>=0) {
		alert("The Opera browser is not supported !!") 
		return 
	}
	if (navigator.userAgent.indexOf("MSIE")>=0) { 
		var strName="Msxml2.XMLHTTP"
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0) {
			strName="Microsoft.XMLHTTP"
		} 
		try	{ 
			objXmlHttp=new ActiveXObject(strName)
			objXmlHttp.onreadystatechange=handler 
			return objXmlHttp
		} 
		catch(e) { 
			alert("Error. Scripting for ActiveX might be disabled") 
			return 
		} 
	} 
	if (navigator.userAgent.indexOf("Mozilla")>=0) {
		objXmlHttp=new XMLHttpRequest()
		objXmlHttp.onload=handler
		objXmlHttp.onerror=handler 
		return objXmlHttp
	}
}
// ############### END OF AJAX CODE ######################