/* WWWWHITTARD Global Scripts */

/**********************************************************************************/

/* Javascript Global Variables */

var numberOfVariantTypes=50;				/* Zero Based Index Of Variant Types */


/**********************************************************************************/

/* Define Browser Type */

var MSIE = false;
var Opera = false;
var Mozilla = false;

var agent=navigator.userAgent.toLowerCase(); 

if(agent.indexOf('msie')>=0 && agent.indexOf('opera') <0) {
						MSIE=true;
}
if(agent.indexOf('opera')>=0) {
				Opera=true;
}

if(agent.indexOf('mozilla')>=0) {
				Mozilla=true;
}


/**********************************************************************************/

/* CCBA CSS Bug Fix For IE - Float Left Causing Slow Loading */

function ccbaStyleFix() {

	if(MSIE) {
		var theTargetDiv=document.getElementById("CCBAMAINPAGECONTAINER");
		theTargetDiv.style.className="ccbaMainPageContentContainer";
	}
}


/**********************************************************************************/

/* CR Key Check */

function crCheck(eventKeyCode) {
	if(eventKeyCode==13) {
		return true;
	} else {
		return false;
	}
}

/**********************************************************************************/

/* Cookie Validation - This Script Loads In Every Page */

function setTestCookie(name, value, expires, path, domain, secure) { 
	var curCookie = name + "=" + escape(value) + 
	((expires) ? "; expires=" + expires.toGMTString() : "") + 
	((path) ? "; path=" + path : "") + 
	((domain) ? "; domain=" + domain : "") + 
	((secure) ? "; secure" : ""); 
	document.cookie = curCookie; 
} 

var cookieExpires = new Date(); 
cookieExpires.setTime(cookieExpires.getTime() + 1800000); 
 
setTestCookie("testCookie", "testCookie", cookieExpires, false, false, false); 

if (document.cookie.indexOf('testCookie') ==-1) { 
	this.location.href="/system-content/cookies-disabled.htm"; /* Bounce User To Cookie Disabled Page */
} else {
	exp = new Date(); 
	exp.setTime(exp.getTime() - 1800000); 
	setTestCookie("testCookie", "testCookie", exp, false, false, false);

}

/**********************************************************************************/

/* Top Navigation Menu Show / Hide */

function showTopNavigationSubElement(targetElementId,direction) {

	var theTargetElementObject=document.getElementById("SUBELEMENT_"+targetElementId);

	if(direction==1) {
		if(theTargetElementObject.style.visibility !='') {
			theTargetElementObject.style.visibility='';
			theTargetElementObject.style.display='';
		}
	} else {
		if(theTargetElementObject.style.visibility !='hidden') {
			theTargetElementObject.style.visibility='hidden';
			theTargetElementObject.style.display='none';
		}
	}
	
}



/**********************************************************************************/

/* Redirect Form Submit */

function redirectFormSubmit() {
	
	var theTargetForm=document.getElementById("REDIRECTFORM");
	theTargetForm.submit();
}

/**********************************************************************************/

/* Ajax */

function xmlhttpPost() {

	var submitUrl="/test/ajaxtest.raa";
 
    	var xmlHttpReq = false;
    	var self = this;
 
    	if (window.XMLHttpRequest) {
        	self.xmlHttpReq = new XMLHttpRequest(); /* Fire Fox */
    	} else if (window.ActiveXObject) {
        	self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); /* IE */
    	}

    	self.xmlHttpReq.open('POST', submitUrl, true);
    	self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  
	self.xmlHttpReq.onreadystatechange = function() {
        	if (self.xmlHttpReq.readyState == 4) {
            		updatepage(self.xmlHttpReq.responseText);
        	}
    	}
    
	self.xmlHttpReq.send(submitUrl);
}

function updatepage(str) {
    document.getElementById("result").value = str;
}

/**********************************************************************************/

/* DHTML Calendar */

/**********************************************************************************/

function showRaaCalendar(theCallingInboundElement,theTargetElement) {

	/* Build Calender */

	buildRaaCalendarDiv(theCallingInboundElement);	 				/* Build The Virtual Div */
	var raaCalendarContent=buildRaaCalendarContent(0,0,theTargetElement,0,'');		/* Render The Calendar Content */
	raaCalendarDiv.innerHTML=raaCalendarContent;					/* Populate The Calendar Content */
}

/**********************************************************************************/

function showRaaCheckoutCalendar(theCallingInboundElement,theTargetElement,theNonDeliveryDateCache) {

	/* Build RAA Checkout Calender */

	buildRaaCheckoutCalendarDiv(theCallingInboundElement);							/* Build The Virtual Div */
	var raaCalendarContent=buildRaaCalendarContent(0,0,theTargetElement,1,theNonDeliveryDateCache);		/* Render The Calendar Content */
	raaCalendarDiv.innerHTML=raaCalendarContent;
}

/**********************************************************************************/

/* Remove Raa Calendar Div */

function removeRaaCalendar() {

	var raaCalendarDiv = document.getElementById('raaCalendarDiv');

	if(raaCalendarDiv) {
		document.body.removeChild(raaCalendarDiv);
	}

	clearTimeout(raaCalenderTimedRemovalObject); /* Clear Timeout - Fail Safe ! */
}

/**********************************************************************************/

function buildRaaCalendarDiv(theCallingInboundElement) {

	/* Define Target Element */

	var theCallingElement=document.getElementById(theCallingInboundElement);

	/* Remove Other Instances Of Virtual Div */
	
	removeRaaCalendar();
	
	/* Determine Position Of Calling Element */

	var callingElementLeftPos=defineLeftPosition(theCallingElement);
	var callingElementTopPos=defineTopPosition(theCallingElement);

	callingElementLeftPos=callingElementLeftPos+5;

	theCallingElementWidth=theCallingElement.style.width;
	theCallingElementWidth=theCallingElementWidth.replace("px","");

	if(theCallingElementWidth=="") {
		theCallingElementWidth=0;
	}

	if(! isNaN(theCallingElementWidth) && theCallingElementWidth !="") {
		callingElementLeftPos=callingElementLeftPos+parseInt(theCallingElementWidth);
	}
	callingElementLeftPos=callingElementLeftPos+5;

	callingElementLeftPos=callingElementLeftPos+"px";
	callingElementTopPos=callingElementTopPos+"px";

	/* Create A Virual Div */

	raaCalendarDiv = document.createElement('DIV');
	raaCalendarDiv.id = "raaCalendarDiv";
	raaCalendarDiv.style.zIndex = 1000;
	raaCalendarDiv.style.position = "absolute";
	raaCalendarDiv.style.display = "block";
	raaCalendarDiv.style.left = callingElementLeftPos;
	raaCalendarDiv.style.top = callingElementTopPos;

	document.body.appendChild(raaCalendarDiv);
}


/**********************************************************************************/

function buildRaaCheckoutCalendarDiv(theCallingInboundElement) {

	/* Define Target Element */

	var theCallingElement=document.getElementById(theCallingInboundElement);

	/* Remove Other Instances Of Virtual Div */
	
	removeRaaCalendar();
	
	/* Determine Position Of Calling Element */

	var callingElementLeftPos=defineLeftPosition(theCallingElement);
	var callingElementTopPos=defineTopPosition(theCallingElement);

	callingElementLeftPos=callingElementLeftPos+5;

	theCallingElementWidth=theCallingElement.style.width;
	theCallingElementWidth=theCallingElementWidth.replace("px","");

	if(theCallingElementWidth =="") {
		theCallingElementWidth=0;
	}

	if(! isNaN(theCallingElementWidth)) {
		callingElementLeftPos=callingElementLeftPos+parseInt(theCallingElementWidth);
	}
	callingElementLeftPos=callingElementLeftPos+5;

	callingElementLeftPos=callingElementLeftPos+"px";
	callingElementTopPos=callingElementTopPos+"px";


	/* Create A Virual Div */

	raaCalendarDiv = document.createElement('DIV');
	raaCalendarDiv.id = "raaCalendarDiv";

	raaCalendarDiv.style.zIndex = 1000;
	raaCalendarDiv.style.position = "absolute";
	raaCalendarDiv.style.display = "block";
	raaCalendarDiv.style.left = callingElementLeftPos;
	raaCalendarDiv.style.top = callingElementTopPos;

	document.body.appendChild(raaCalendarDiv);
}

/**********************************************************************************/

/* Define Left Position Of Calling Element */

function defineLeftPosition(theElement) {
  	var leftPosition = theElement.offsetLeft;
  
	while((theElement = theElement.offsetParent) != null) {
				leftPosition+=theElement.offsetLeft;
	}
	return leftPosition;
}

/**********************************************************************************/

/* Define Top Position Of Calling Element */

function defineTopPosition(theElement) {
  	var topPosition = theElement.offsetTop;
  
	while((theElement = theElement.offsetParent) != null) {
				topPosition += theElement.offsetTop;
	}

	return topPosition;
}

/**********************************************************************************/

/* Move Calendar Through Months Via Scroll Arrows */

function moveRaaCalendar(inboundMonth,inboundYear,checkoutMode,theNonDeliveryDateCache) {

	var raaCalendarTargetInput=document.getElementById("RAACALENDARTARGET");
	var raaCalendarTargetInputValueCache=raaCalendarTargetInput.value; /* Cache Target Cell */

	var raaCalendarContent=buildRaaCalendarContent(inboundMonth,inboundYear,raaCalendarTargetInputValueCache,checkoutMode,theNonDeliveryDateCache);
	var raaCalendarDiv = document.getElementById('raaCalendarDiv');
	raaCalendarDiv.innerHTML=raaCalendarContent;
}

/**********************************************************************************/

/* Move Calendar Through Months Via Select Lists */

function moveRaaCalendarBySelectLists(checkoutMode,theNonDeliveryDateCache) {

	var theMonthSelectList=document.getElementById("RAACALENDARMONTHSELECT");
	var theYearSelectList=document.getElementById("RAACALENDARYEARSELECT");
	moveRaaCalendar(theMonthSelectList.value,theYearSelectList.value,checkoutMode,theNonDeliveryDateCache);
}


/**********************************************************************************/

/* Select Date */

function raaCalendarSelectDate(dateSelected) {

	var theTargetInputSourceInput=document.getElementById("RAACALENDARTARGET");
	var theTargetInput=document.getElementById(theTargetInputSourceInput.value);
	theTargetInput.value=dateSelected;
	
	removeRaaCalendar();
}

/**********************************************************************************/

/* Calendar Timed Removal - Mouse Over */

var raaCalenderTimedRemovalObject;	/* Initialise Timeout Object */

function raaCalendarTimedRemoval() {
	clearTimeout(raaCalenderTimedRemovalObject);
	raaCalenderTimedRemovalObject=window.setTimeout("removeRaaCalendar()",1000);
}

function raaCalendarTimedRemovalCancel() {
	clearTimeout(raaCalenderTimedRemovalObject);
}

/**********************************************************************************/

/* Build RAA Calendar */

function buildRaaCalendarContent(inboundMonth,inboundYear,inboundTargetElement,checkoutMode,theNonDeliveryDateCache) {

	/* Cache Server Time */

	var theCurrentDate=new Date();	/* Initialise Current Date */
	
	if(checkoutMode==1) {

		updateCheckoutPageServerTime(); /* Update Server Page Time Via Ajax Function In Checkout */

		var theServerDateTimeInput=document.getElementById("CHECKOUTPAGESERVERTIME");
		var theServerDateTime=theServerDateTimeInput.value;

		if(theServerDateTime !="") {
			var serverDateTimeArray=theServerDateTime.split(" ");
			var serverDateArray=serverDateTimeArray[0].split("-");
			var serverTimeArray=serverDateTimeArray[1].split(":");
	
			for (var i=0; i<serverDateTimeArray.length; i++) {
				serverDateTimeArray[i]=parseInt(serverDateTimeArray[i]);
			}	
			if(!isNaN(serverDateArray[0]) && !isNaN(serverDateArray[1]) && !isNaN(serverDateArray[2])) {
					theCurrentDate=new Date(serverDateArray[0],serverDateArray[1],serverDateArray[2]);
			} else {
				theCurrentDate=new Date();
			}
		} else {
			theCurrentDate=new Date();
		}
	}
	
	/* Define Calendar Month/Year To Render */

	if(inboundMonth>0 && inboundYear>0) {
		var raaCalendarDate = new Date(inboundYear, inboundMonth, 0);

		if(raaCalendarDate < theCurrentDate && checkoutMode==1) {
			raaCalendarDate=theCurrentDate;
		}
	} else {
			var raaCalendarDate = theCurrentDate;
	}

	/* Test If In Checkout Mode */

	var theNonDeliveryDateArray=new Array;	/* None delivery Dates Array Generated Server Side */

	if(checkoutMode==1) {
		if(raaCalendarDate < theCurrentDate) {
			raaCalendarDate=theCurrentDate;
		}

		var theNonDeliveryDateCacheInput=document.getElementById(theNonDeliveryDateCache);
		theNonDeliveryDateArrayTemp=theNonDeliveryDateCacheInput.value.split("|");

		/* Index On Non Delivery Date */

		var theNonDeliveryDateArray=new Array;

		for(var i=0; i<theNonDeliveryDateArrayTemp.length; i++) {
			theNonDeliveryDateArray[theNonDeliveryDateArrayTemp[i]]=1;
		}
	}

	var weekday = raaCalendarDate.getDay();
	var today = raaCalendarDate.getDate();
	var month = raaCalendarDate.getMonth();
	var year = raaCalendarDate.getFullYear();	/* getYear() Not Y2K Compliant! Required For Firefox Compatibility */

	/* Define Current Date */

	var currentToday = theCurrentDate.getDate();
	var currentMonth = theCurrentDate.getMonth();
	var currentYear = theCurrentDate.getFullYear();	/* getYear() Not Y2K Compliant! Required For Firefox Compatibility */

	/* Define Max Date Month & Year */

	var maxDateYear=currentYear+1;
	var maxDateMonth=currentMonth;

	if(checkoutMode==1) {
		if(year >maxDateYear) {
			year=currentYear;
			month=maxDateMonth; /* Rolls Back To Starting Month */
		}

		if(year==maxDateYear) {
			if(month > maxDateMonth) {
				year=currentYear;
				month=currentMonth;
			}
		}
	}


	/* Define Days In Month */

	var thisCalendarDate = new Date(year, month+1, 0);
	var daysInMonth = thisCalendarDate.getDate();

	/* Define Days Of Week & Months Of Year */

	var daysOfWeek = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 
	var monthsOfYear = ['January','February','March','April','May','June','July','August','September','October','November','December'];  


	/* Build Month Select List */

	var monthSelectList="";
	monthSelectList="<select style=\"width: 80px;\" onmouseOut=\"raaCalendarTimedRemoval()\" onMouseOver=\"raaCalendarTimedRemovalCancel()\" onchange=\"moveRaaCalendarBySelectLists("+checkoutMode+",'"+theNonDeliveryDateCache+"')\" id=\"RAACALENDARMONTHSELECT\" name=\"RAACALENDARMONTHSELECT\">";

	for (var i=0; i<monthsOfYear.length; i++) {
		var optionSelected=""; var thisMonthNumber=i+1;
		if(i==month) {optionSelected="selected";}
		monthSelectList+="<option value=\""+thisMonthNumber+"\" "+optionSelected+">"+monthsOfYear[i]+"</option>";
	}

	monthSelectList+="</select>";

	/* Build Year Select List */

	var yearSelectList="";
	yearSelectList="<select style=\"width: 60px;\" onmouseOut=\"raaCalendarTimedRemoval()\" onMouseOver=\"raaCalendarTimedRemovalCancel()\" onchange=\"moveRaaCalendarBySelectLists("+checkoutMode+",'"+theNonDeliveryDateCache+"')\" id=\"RAACALENDARYEARSELECT\" name=\"RAACALENDARYEARSELECT\">";

	
	if(checkoutMode==1) {

		var yearsToRender=2;
		if(currentMonth==0) {yearsToRender=1;}
		
		for (var i=currentYear; i<currentYear+yearsToRender; i++) {
			var optionSelected="";
			if(i==year) {optionSelected="selected";}
			yearSelectList+="<option value=\""+i+"\" "+optionSelected+">"+i+"</option>";
		}
	} else {
		for (var i=year-10; i<year+10; i++) {
			var optionSelected="";
			if(i==year) {optionSelected="selected";}
			yearSelectList+="<option value=\""+i+"\" "+optionSelected+">"+i+"</option>";
		}
	}

	yearSelectList+="</select>";

	/* Render Calendar Output */
	
	var raaCalendarOutput="<div border=\"0\" id=\"raaCalendar\" onmouseOut=\"raaCalendarTimedRemoval()\" onMouseOver=\"raaCalendarTimedRemovalCancel()\">";

	/* Define Next Month & Previous Month */
	
	var lastmonth=month; var lastYear=year;
	if(lastmonth==0) {lastmonth=12; lastYear=lastYear-1;}

	var nextmonth=month+2; var nextYear=year;
	if(nextmonth==13) {nextmonth=1; nextYear++;}

	/* Test If In Checkout Mode */

	var lastMonthLink="<a class=\"raaCalendarHeader\" href=\"javascript:moveRaaCalendar('"+lastmonth+"','"+lastYear+"','"+checkoutMode+"','"+theNonDeliveryDateCache+"')\">&lt;&lt;</a>";
	var nextMonthLink="<a class=\"raaCalendarHeader\" href=\"javascript:moveRaaCalendar('"+nextmonth+"','"+nextYear+"','"+checkoutMode+"','"+theNonDeliveryDateCache+"')\">&gt;&gt;</a>";

	if(checkoutMode==1) {
		if(year==currentYear) {
			if(month==currentMonth) {
				lastMonthLink="";
			}
		}

		if(year==maxDateYear) {
			if(month==maxDateMonth) {
				nextMonthLink="";
			}
		}
	}	


	/* Build Header Bar */

	raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarRowContainerHeader\" style=\"height:25px; padding-top:4px;\">";
	raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarCellHeader\"><input type=\"hidden\" id=\"RAACALENDARTARGET\" name=\"RAACALENDARTARGET\" value=\""+inboundTargetElement+"\">"+lastMonthLink+"</div>";
	raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarCellHeader\" style=\"width: 90px\">"+monthSelectList+"</div>";
	raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarCellHeader\" style=\"width: 60px\">"+yearSelectList+"</div>";
	raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarCellHeader\">"+nextMonthLink+"</div>";
	raaCalendarOutput=raaCalendarOutput+"</div>";
	
	raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarRowContainer\">";
	for (var i=0; i<daysOfWeek.length; i++) {
		raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarCellDOTW\">"+daysOfWeek[i]+"</div>";
	}
	raaCalendarOutput=raaCalendarOutput+"</div>";

	/* Define Current Week Day - Pad Month Start */

	var thisCalendarDate = new Date(year, month, 1);
	var thisWeekDay=thisCalendarDate.getDay();	

	if(thisWeekDay !=0) {
		for(i=0; i<thisWeekDay; i++) {
			raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarPadder\">&nbsp;</div>";
		}
	}

	/* Build Calendar Content */

	var calendarRowCounter=0;
	
	for (i=1; i<=daysInMonth; i++) {
		var thisCalendarDate = new Date(year, month, i);
		var thisWeekDay=thisCalendarDate.getDay();

		/* Format Date To Return */

		var thisFormattedDate="";
		var thisFormattedDay="";
		var thisFormattedMonth="";
		var thisFormattedYear="";

		thisFormattedDay=i;
		thisFormattedMonth=month+1;
		thisFormattedYear=year;

		if(thisFormattedDay <10) {
			thisFormattedDay="0"+""+thisFormattedDay;
		}
		if(thisFormattedMonth <10) {
			thisFormattedMonth="0"+""+thisFormattedMonth;
		}	

		thisFormattedDate=thisFormattedDay+"/"+thisFormattedMonth+"/"+thisFormattedYear;

		if(checkoutMode==1) {

			var dateIsSelectable=1;

			var thisRaaCalendarOutput="<div class=\"raaCalendarCellAvailableDate\"><a class=\"raaCalendar\" href=\"javascript:raaCalendarSelectDate('"+thisFormattedDate+"')\">"+i+"</a></div>";

			if(thisCalendarDate <theCurrentDate) {
				thisRaaCalendarOutput="<div class=\"raaCalendarUnavailableDate\">"+i+"</div>";
				dateIsSelectable=0;
			}

			/* Test For Non Delivery Date Status */
	
			var thisNonDeliveryDateFormatDate=thisFormattedYear+""+thisFormattedMonth+""+thisFormattedDay;
		
			if(theNonDeliveryDateArray[thisNonDeliveryDateFormatDate]) {
				thisRaaCalendarOutput="<div class=\"raaCalendarUnavailableDate\">"+i+"</div>";
				dateIsSelectable=0;
			}

		/*	if(i==currentToday && month==currentMonth && year==currentYear) {
				if(dateIsSelectable==0) {
					thisRaaCalendarOutput="<div class=\"raaCalendarToday\">"+i+"</div>";
				} else {
					thisRaaCalendarOutput="<div class=\"raaCalendarToday\"><a class=\"raaCalendar\" href=\"javascript:raaCalendarSelectDate('"+thisFormattedDate+"')\">"+dateIsSelectable+" - "+i+"</a></div>";
				}
			}
		*/
		
			raaCalendarOutput=raaCalendarOutput+thisRaaCalendarOutput;

	
		} else {
			raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarCellAvailableDate\"><a class=\"raaCalendar\" href=\"javascript:raaCalendarSelectDate('"+thisFormattedDate+"')\">"+i+"</a></div>";
		}

		if(thisWeekDay==6) {
			calendarRowCounter++;
		}
	}

	/* Pad Month End */

	var thisCalendarDate = new Date(year, month, daysInMonth);
	var thisWeekDay=thisCalendarDate.getDay();
		
	if(thisWeekDay !=6) {
		for(i=thisWeekDay+1; i<=6; i++) {
			raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarPadder\">&nbsp;</div>";
		}
		calendarRowCounter++;
	}

	/* Pad Extra Row If Required */

	if(calendarRowCounter !=6) {
		for(var i=calendarRowCounter; i<6; i++) {

			raaCalendarOutput+="<div>";

			for(var p=0; p<=6; p++) {
				raaCalendarOutput+="<div class=\"raaCalendarPadder\">&nbsp;</div>";
			}	
		
			raaCalendarOutput+="</div>";

			calendarRowCounter++;

		}
	}			
	
	/* Build Footer Bar */

	raaCalendarOutput=raaCalendarOutput+"<div class=\"raaCalendarRowContainerFooter\"><div class=\"raaCalendarTitle\"><a class=\"raaCalendarHeader\" href=\"javascript:removeRaaCalendar()\">[Close]</a></div></div>";


	var raaCalendarOutput=raaCalendarOutput+"</div>";

	/* Return Rendered Calendar To Calling Routine */

	return raaCalendarOutput;

}

/**********************************************************************************/

/* Top Navigation Menu Scripts */

var topNavigationHaltMouseOut=0;
var topNavigationDelayedMouseOut="";

/* Header Navigation */

function mainPageHeaderNavigator(callingElementId,eventType,subElementCalling) {

	haltMouseOut=0;

	var theEventType=eventType.toUpperCase();
	var theCallingElement=document.getElementById(callingElementId);

	var headerElementNameArray=theCallingElement.id.split("_");	/* Calling Header Element */
	var theTargetSubElement=document.getElementById("mainPageHeaderNavigationSubElementContainer_"+headerElementNameArray[1]); /* Sub Menu Container */
	var numberOfHeaderElementsInput=document.getElementById("MAINPAGEHEADERNAVIGATIONELEMENTCOUNTER");
	var numberOfHeaderElements=numberOfHeaderElementsInput.value;
	
	var menuTopPadding=19;

	if(Mozilla || Opera) {
		if(MSIE) {
			menuTopPadding=25;
		} else {
			menuTopPadding=24;
		}
	}

	var headerElementTopPos=defineTopPosition(theCallingElement); 	/* Header Top Position */
	var headerElementLeftPos=defineLeftPosition(theCallingElement);	/* Header Left Position */

	if(headerElementNameArray[1] <=numberOfHeaderElements) {
		if(theTargetSubElement.style.left !=headerElementLeftPos+"px") {
			theTargetSubElement.style.left=headerElementLeftPos+"px";
		}
	}

	if(headerElementNameArray[1]==numberOfHeaderElements) {
		
		if(MSIE) {
			headerElementLeftPos=headerElementLeftPos-117;
		} else {
			headerElementLeftPos=headerElementLeftPos-117;
		}
		

		if(theTargetSubElement.style.left !=headerElementLeftPos+"px") {
			theTargetSubElement.style.left=headerElementLeftPos+"px";
		}

	}

	if(theTargetSubElement.style.top !=headerElementTopPos+menuTopPadding+"px") {
		theTargetSubElement.style.top=headerElementTopPos+menuTopPadding+"px";
	}

	/* Menu Activate */
	
	if(theEventType=="MOUSEOVER") {

		/* Reset All Elements */


		for (var i=1; i<=numberOfHeaderElements; i++) {

			var thisHeaderElement=document.getElementById("mainPageHeaderNavigationElement_"+i);
			
			if(thisHeaderElement !=null) {
				if(thisHeaderElement.className !="mainPageHeaderNavigationElementHoverFixed") {	
						thisHeaderElement.className="mainPageHeaderNavigationElement";
				}
			}

			var thisSubElement=document.getElementById("mainPageHeaderNavigationSubElementContainer_"+i);

			if(thisSubElement !=null) {
				thisSubElement.style.visibility="hidden";
			}
		}

		/* Clear Delay Sub Element Hide Timeout */

		clearTimeout(topNavigationDelayedMouseOut);

		/* Set Current Element To Display Sub Elements And Highlight Menu */

		if(theCallingElement.className !="mainPageHeaderNavigationElementHoverFixed") {
				if(subElementCalling !=1) {
					theCallingElement.className="mainPageHeaderNavigationElementHover";
				}
		} else {
			if(subElementCalling !=1) {
				theCallingElement.className="mainPageHeaderNavigationElementHoverFixedHover";
			}
		}
		
		theTargetSubElement.className="mainPageHeaderNavigationSubElementContainerVisible"; /* RA 18/02/09 - SEO Work */	
		theTargetSubElement.style.visibility="";
	}

	/* Menu De-Activate */

	if(theEventType=="MOUSEOUT" && topNavigationHaltMouseOut==0) {
		if(theCallingElement.className=="mainPageHeaderNavigationElementHoverFixedHover") {
						theCallingElement.className="mainPageHeaderNavigationElementHoverFixed";
		} else {
			if(theCallingElement.className !="mainPageHeaderNavigationElementHoverFixed") {
					theCallingElement.className="mainPageHeaderNavigationElement";
			}
		}
		theTargetSubElement.style.visibility="hidden";
		theTargetSubElement.className="mainPageHeaderNavigationSubElementContainer";  /* RA 18/02/09 - SEO Work */
	}

	if(topNavigationHaltMouseOut==1) {
			topNavigationHaltMouseOut=0;
			var theAction="mainPageHeaderNavigator('"+callingElementId+"','"+eventType+"')";
			topNavigationDelayedMouseOut=window.setTimeout('mainPageHeaderNavigator("'+callingElementId+'","'+eventType+'")',0);
	}

}

/**********************************************************************************/

/* Top Navigation Sub Element Highlight */

function mainPageHeaderNavigatorSubElementHighlight(callingElementId,eventType) {

	var theEventType=eventType.toUpperCase();
	var theTargetSubElement=document.getElementById(callingElementId);

	/* Menu Activate */
	
	if(theEventType=="MOUSEOVER") {
		if(theTargetSubElement.className !="mainPageHeaderNavigationElementHoverFixed") {
					theTargetSubElement.className="mainPageHeaderNavigationSubElementHover";
		}
	}

	/* Menu De-Activate */


	if(theEventType=="MOUSEOUT") {
		if(theTargetSubElement.className !="mainPageHeaderNavigationSubElementHoverOut") {
					topNavigationHaltMouseOut=1;
					theTargetSubElement.className="mainPageHeaderNavigationSubElement";
		}
	}

}

/**********************************************************************************/

/* Catalogue Add To Basket */

function catalogueAddToBasket(theTargetFormId) {

	var theTargetForm=document.getElementById(theTargetFormId);
	var theTargetRequestInput=theTargetForm.CATALOGUEITEMREQUEST;
	var theSortationInput=document.getElementById("CATEGORYSORTATION");

	theTargetRequestInput.value="CATALOGUEADDITEM";

	if(theSortationInput) {
		if(theSortationInput.value !="") {
			theTargetRequestInput.value+="~"+theSortationInput.value;
		}
	}	

	theTargetForm.submit();
}


/**********************************************************************************/

/* Catalogue Sortation */

function catalogueResortCategorySkuList() {

	var theSortationInput=document.getElementById("CATEGORYSORTATION");
	var theTargetForm=document.getElementById("CATALOGUEITEMFORM_X");
	var theTargetRequestDataInput=document.getElementById("CATALOGUEITEMREQUESTDATA_X");

	theTargetRequestDataInput.value=theSortationInput.value;	
	theTargetForm.submit();
}

/**********************************************************************************/

/* Catalogue Pagination */

function changeCategoryPage(pageOffset) {

	var theTargetForm=document.getElementById("CATALOGUEITEMFORM_X");
	var theTargetRequestDataInput=document.getElementById("PAGEOFFSET");

	theTargetRequestDataInput.value=pageOffset;	
	theTargetForm.submit();
}

/**********************************************************************************/

/* Show Sku Information Tabs */

function showSkuInformation(theElementToDisplay) {

	var informationElements=new Array;
	
	informationElements[0]="SKUINFORMATIONTASTE";
	informationElements[1]="SKUINFORMATIONBREW";
	informationElements[2]="SKUINFORMATIONINGREDIENTS";

	for (var i=0; i<informationElements.length; i++) {
		var theTargetTitleElement=document.getElementById(informationElements[i]+"_TITLE");
		var theTargetElement=document.getElementById(informationElements[i]);
		theTargetElement.className="catalogueSkuDetailTabTopData";
		theTargetTitleElement.className="catalogueSkuDetailTabTopElement";
	
	}

	var theTargetElement=document.getElementById(theElementToDisplay);
	var theTargetTitleElement=document.getElementById(theElementToDisplay+"_TITLE");
	theTargetElement.className="catalogueSkuDetailTabTopDataSelected";
	theTargetTitleElement.className="catalogueSkuDetailTabTopElementSelected";
}

/**********************************************************************************/

/* Show Sku Zoom Image */

function showSkuZoomImage(direction) {

	var theTargetZoomDiv=document.getElementById("CATALOGUEIMAGEZOOM");

	if(direction==1) {
		theTargetZoomDiv.style.display="";

	} else {
		theTargetZoomDiv.style.display="none";
	}
}

/**********************************************************************************/

/* Show Tea Zone Popup */

function showTeaZonePopUp(direction,targetUrl) {
	var theTargetDiv=document.getElementById("TEAZONEPOPUP");
	var theTargetIframe=document.getElementById("TEAZONEPOPUPIFRAME");


	if(direction==1) {
		theTargetDiv.style.display="";
		theTargetIframe.src=targetUrl;

	} else {
		theTargetDiv.style.display="none";
		theTargetIframe.src="";
	}

}

/**********************************************************************************/

/* Print Current Page */

function printCurrentPage() {
			window.print(); 
}

/**********************************************************************************/

/* Site Search Validation */

function validateSiteSearch(theSearchInput,theSearchForm) {

	var theSiteSearchForm=document.getElementById(theSearchForm);
	var theSiteSearchInput=document.getElementById(theSearchInput);

	if(theSiteSearchInput.value=="" || theSiteSearchInput.value=="Enter Search Word(s)") {
		theSiteSearchInput.className="mainPageHeaderSearchBoxError";
		theSiteSearchInput.value="Enter Search Word(s)";
		theSiteSearchInput.focus();
	} else {
		theSiteSearchForm.submit();
	}
}

/**********************************************************************************/

/* Reset Site Search Input - Following Error */	

function resetSiteSearchInput(theSearchInput,theSearchForm) {

	var theSiteSearchForm=document.getElementById(theSearchForm);
	var theSiteSearchInput=document.getElementById(theSearchInput);

	if(theSiteSearchInput.value=="Enter Search Word(s)") {
					theSiteSearchInput.className="mainPageHeaderSearchBox";
					theSiteSearchInput.value="";
	}
}

/**********************************************************************************/

/* Email Sign Up Validation */

function validateEmailSignUp(theSignUpInput,theSignUpForm) {

	var theSignUpForm=document.getElementById(theSignUpForm);
	var theSignUpInput=document.getElementById(theSignUpInput);

	/* Validate Email Address */

	var emailAddressValid=validateEmailAddress(theSignUpInput.value);

	if(emailAddressValid==1) {
		theSignUpForm.submit();
	} else {
		alert("Please enter a valid email address");
		theSignUpInput.focus();
	}
}

/**********************************************************************************/

/* Reset Email Sign Up */

function resetEmailSignUp(theSignUpInput) {

	var theSignUpInput=document.getElementById(theSignUpInput);
	
	if(theSignUpInput.value=="enter your e-mail address here") {
			theSignUpInput.value="";
	}

}

/**********************************************************************************/

/* Email Address Validation */

function validateEmailAddress(emailAddressToTest) {

		var emailAddressIsValid=1; /* Assume Address Valid */

		var at="@";
		var dot=".";
		var lat=emailAddressToTest.indexOf(at); 	/* Position Of '@' */
		var lstr=emailAddressToTest.length;		/* Email Address Length */
		var ldot=emailAddressToTest.indexOf(dot)	/* Position Of '.' */
	
		if (emailAddressToTest.indexOf(at)==-1){
		    emailAddressIsValid=1;
		}

		if (emailAddressToTest.indexOf(at)==-1 || emailAddressToTest.indexOf(at)==0 || emailAddressToTest.indexOf(at)==lstr-1){
		    emailAddressIsValid=0;
		}

		if (emailAddressToTest.indexOf(dot)==-1 || emailAddressToTest.indexOf(dot)==0 || emailAddressToTest.indexOf(dot)==lstr-1){
		     emailAddressIsValid=0;
		}

		if (emailAddressToTest.indexOf(at,(lat+1))!=-1){
		   	emailAddressIsValid=0;
		}

		if (emailAddressToTest.substring(lat-1,lat)==dot || emailAddressToTest.substring(lat+1,lat+2)==dot){
		     emailAddressIsValid=0;
		}

		if (emailAddressToTest.indexOf(dot,(lat+2))==-1){
		   emailAddressIsValid=0;
		}

		if (emailAddressToTest.indexOf(" ")!=-1){
		    	 emailAddressIsValid=0;
		}

		return emailAddressIsValid;
}

/**********************************************************************************/

/* Remove Discount From Basket */

function removeBasketDiscount(theDiscountId) {

	var theTargetForm=document.getElementById("QUICKORDERENTRYFORM");
	var theTargetRequestInput=document.getElementById("BASKETREQUEST");
	var theTargetRequestDataInput=document.getElementById("BASKETREQUESTDATA");
	
	theTargetRequestInput.value="REMOVEDISCOUNT";
	theTargetRequestDataInput.value=theDiscountId;
	
	theTargetForm.submit();
}

/**********************************************************************************/

/* What Do These Letters Mean */

var wdtlmTimeOut;

function showWdtlmContent(theWdtlmContent,theWdtlmAnchor,direction) {

	var theWdtlmContentDiv=document.getElementById(theWdtlmContent);

	if(direction==1) {
		var theWdtlmAnchorIcon=document.getElementById(theWdtlmAnchor);
		var theAnchorElementTopPos=defineTopPosition(theWdtlmAnchorIcon)+5; 	/* Anchor Top Position */
		var theAnchorElementLeftPos=defineLeftPosition(theWdtlmAnchorIcon)+15;	/* Anchor Left Position */
	}
	if(direction==1) {
		clearTimeout(wdtlmTimeOut);
		theWdtlmContentDiv.style.top=theAnchorElementTopPos+"px";
		theWdtlmContentDiv.style.left=theAnchorElementLeftPos+"px";
		theWdtlmContentDiv.style.display='';
	} else {
		wdtlmTimeOut=window.setTimeout('hideWdtmlContent('+theWdtlmContent+')',100);
	}
}

/**********************************************************************************/

/* TMAIL message popup on mouseover */

function toggleDiv(id,flagit) {
if (flagit=="1"){
if (document.layers) document.layers[''+id+''].visibility = "show"
else if (document.all) document.all[''+id+''].style.visibility = "visible"
else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "visible"
}
else
if (flagit=="0"){
if (document.layers) document.layers[''+id+''].visibility = "hide"
else if (document.all) document.all[''+id+''].style.visibility = "hidden"
else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "hidden"
}
}

/**********************************************************************************/




function hideWdtmlContent(theWdtlmContent) {

	theWdtlmContent.style.display='none';
	theWdtlmContent.style.left="0px";
	theWdtlmContent.style.top="0px";
}

/**********************************************************************************/

function persistWdtlm(theWdtlmContent) {
		clearTimeout(wdtlmTimeOut);
}

/**********************************************************************************/

/* CCBA Address PopUp */


function showCCBAAddressPopUp(direction) {

	var theTargetDiv=document.getElementById("CCBAADDRESSPOPUP");
	var theTargetIframe=document.getElementById("CCBAADDRESSPOPUPIFRAME");

	if(direction==1) {

		var theTargetAddressLine1Input=document.getElementById("ADDRESS1");
		var theTargetPostCodeInput=document.getElementById("POSTCODE");	

		var theAddressSearchString="";
	
		if(theTargetAddressLine1Input.value !="") {
			theAddressSearchString=theTargetAddressLine1Input.value;
		}

		if(theTargetPostCodeInput.value !="") {
			if(theAddressSearchString=="") {
				theAddressSearchString=theTargetPostCodeInput.value;
			} else {
				theAddressSearchString=theAddressSearchString+","+theTargetPostCodeInput.value;
			}
		}

		/* Pre-Submit Address Search Form */
		
		if(theAddressSearchString !="" && direction !=0) {
			var theTargetAddressSearchForm=window.frames['CCBAADDRESSPOPUPIFRAME'].document.getElementById("ADDRESSLOOKUPFORM")
			var theTargetAddressSearchInput=window.frames['CCBAADDRESSPOPUPIFRAME'].document.getElementById("ADDRESSSEARCHSTRING");
			theTargetAddressSearchInput.value=theAddressSearchString;
			theTargetAddressSearchForm.submit();
		}
	}
	
	
	if(direction==0) {
		theTargetDiv.style.display="none";
		theTargetIframe.src=theTargetIframe.src;	/* Reload Page To Reset */
	} else {
		theTargetDiv.style.display="";
	}


}

/**********************************************************************************/

/* Store Locator Form Submission */

function storeLocatorSubmit() {

	var theTargetForm=document.getElementById("STORELOCATORFORM");
	var theSourceInput=document.getElementById("STORESEARCHPOSTCODETEMP");
	var theTargetInput=document.getElementById("STORESEARCHPOSTCODE");
	
	theTargetInput.value=theSourceInput.value;
	theTargetForm.submit();

}

/**********************************************************************************/
