
	
function printWindow(){
	browserVersion = parseInt(navigator.appVersion)
	if (browserVersion >= 4) window.print()
	// only v 4 and up print
}
				
function alignMenu(alignment)
{
	var linkCell = getElement('menuLinkCell');
	var spanMenu = getElement('menuSpan');
	var cellY = getElementPosition('menuLinkCell').top;
	var cellX = getElementPosition('menuLinkCell').left;
	var adjustedY = cellY + linkCell.offsetHeight + 3;
	var adjustedX = cellX;
	if (alignment)
	{
		if (alignment.toLowerCase() == "center")
		{
			adjustedX = cellX - (0.5 * (spanMenu.offsetWidth - linkCell.offsetWidth));
		}
		else if (alignment.toLowerCase() == "right")
		{
			adjustedX = cellX - (spanMenu.offsetWidth - linkCell.offsetWidth - 3);
		}
	}
	
	getElement('menuSpan').style.left = adjustedX;
	getElement('menuSpan').style.top = adjustedY;
}

function preloadImage(src)
{
	var img = new Image();
	img.src = src;
}

function showMenu(alignment)
{
	if (alignment)
		alignMenu(alignment);
	else
		alignMenu("left");
		
	var spanMenu = getElement('menuSpan');
	var openMenu = getElement('hidMenuOpen');
	if(spanMenu)
	{
		spanMenu.style.visibility = "visible";
		openMenu.value = 1;
	}
	else
	{
		openMenu.value = 0;
	}
	
	setTimeout("tryMenuClose();", 1);
}

function setMenuOpen(isOpen)
{
	var openMenu = getElement('hidMenuOpen');
	if (isOpen == true)
	{
		openMenu.value = 1;
	}
	else
	{
		openMenu.value = 0;
	}
}

function hideMenu()
{
	var openMenu = getElement('hidMenuOpen');
	var spanMenu = getElement('menuSpan');
	openMenu.value = 0;
	spanMenu.style.visibility = "hidden";			
}

function getElement(elementID)
{
	if (document.getElementById)
		return document.getElementById(elementID);
	else if (document.all)
		return document.all(elementID);
	else
		return null;
}

function addToBasket(textBoxID, targetUrl)
{
	var textBox = getElement(textBoxID);
	var quantity = "1";
	
	if (textBox)
	{
		if (textBox.value != null && parseInt(textBox.value) != NaN)
			quantity = textBox.value;
	}
		
	window.location = targetUrl + '&Quantity=' + quantity;
}

function toggleMenuVisibility()
{
	var openMenu = getElement('hidMenuOpen');
	if (openMenu)
	{
		if (openMenu.value == 1)
		{
			hideMenu();
		}
		else
			showMenu();
	}
	else
	{
		hideMenu();
	}
}

function tryMenuClose()
{
	var openMenu = getElement('hidMenuOpen');
	if (openMenu)
	{
		if (openMenu.value == 0)
		{
			hideMenu();
		}
		else
		{
			setTimeout("tryMenuClose();", 500);
		}
	}
	else
	{
		hideMenu();
	}
}

function getElementPosition(id) 
{
	var offsetElement = getElement(id);
	var offsetLeft = 0;
	var offsetTop = 0;
	while (offsetElement) 
	{
		offsetLeft += offsetElement.offsetLeft;
		offsetTop += offsetElement.offsetTop;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetLeft += document.body.leftMargin;
		offsetTop += document.body.topMargin;
	}
	
	return {left:offsetLeft, top:offsetTop};
}

function getElementDimensions(id) 
{
	var element = getElement(id);
	var myWidth = -1;
	var myHeight = -1;
	
	if (element)
	{
		myWidth = element.offsetWidth;
		myHeight = element.offsetHeight;
	}
	
	return {width:myWidth, height:myHeight};
}

var	requiredVersion = 8;
var	maxVersion = 10;
var	actualVersion = 0;

var activeXDetectRules = [
        {
            "name":"ShockwaveFlash.ShockwaveFlash.7",
            "version":function(obj){
                return getActiveXVersion(obj);
            }
        },
        {
            "name":"ShockwaveFlash.ShockwaveFlash.6",
            "version":function(obj){
                var version = "6,0,21";
                try{
                    obj.AllowScriptAccess = "always";
                    version = getActiveXVersion(obj);
                }catch(err){}
                return version;
            }
        },
        {
            "name":"ShockwaveFlash.ShockwaveFlash",
            "version":function(obj){
                return getActiveXVersion(obj);
            }
        }
    ];

function getActiveXVersion(activeXObj){
        var version = -1;
        try{
            version = activeXObj.GetVariable("$version");
        }catch(err){}
        return version;
    };
    
function getActiveXObject(name){
        var obj = -1;
        try{
            obj = new ActiveXObject(name);
        }catch(err){
            obj = {activeXError:true};
        }
        return obj;
    };

function parseActiveXVersion(str){
        var versionArray = str.split(",");//replace with regex
        return {
            "raw":str,
            "major":parseInt(versionArray[0].split(" ")[1], 10),
            "minor":parseInt(versionArray[1], 10),
            "revision":parseInt(versionArray[2], 10),
            "revisionStr":versionArray[2]
        };
    };


function parseStandardVersion(str){
        var descParts = str.split(/ +/);
        var majorMinor = descParts[2].split(/\./);
        var revisionStr = descParts[3];
        return {
            "raw":str,
            "major":parseInt(majorMinor[0], 10),
            "minor":parseInt(majorMinor[1], 10), 
            "revisionStr":revisionStr,
            "revision":parseRevisionStrToInt(revisionStr)
        };
    };

var parseRevisionStrToInt = function(str){
        return parseInt(str.replace(/[a-zA-Z]/g, ""), 10);
    };

function hasFlash()
{		
	if(navigator.plugins && navigator.plugins.length>0){
            var type = 'application/x-shockwave-flash';
            var mimeTypes = navigator.mimeTypes;
            if(mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && mimeTypes[type].enabledPlugin.description){
                var version = mimeTypes[type].enabledPlugin.description;
                var versionObj = parseStandardVersion(version);
                
                actualVersion = parseInt(versionObj.major);
            }
        }else if(navigator.appVersion.indexOf("Mac")==-1 && window.execScript){
            var version = -1;
            for(var i=0; i<activeXDetectRules.length && version==-1; i++){
                var obj = getActiveXObject(activeXDetectRules[i].name);
                if(!obj.activeXError){
                
                    version = activeXDetectRules[i].version(obj);
                    if(version!=-1){
                        var versionObj = parseActiveXVersion(version);
                        actualVersion = parseInt(versionObj.major);
                    }
                }
            }
        }

	return (actualVersion >= requiredVersion);
}

function showElement(id)
{
	if (document.getElementById)
	{
		if (document.getElementById(id).style.display == 'none')
			document.getElementById(id).style.display = '';
			
		if (document.getElementById(id).style.visibility == 'hidden')
			document.getElementById(id).style.visibility = 'visible';
	}
	else if (document.layers)
	{
		document.layers[id].display = '';
	}
	else if (document.all)
	{
		eval("document.all." + id + ".style.display = ''");
	}
}

function confirmAction(msg)
{
	if (!msg)
		msg = "Are you sure you wish to do this?";
		
	var agree=confirm(msg);
	if (agree)
		return true ;
	else
		return false ;
}

function hideElement(id)
{
	if (document.getElementById)
	{
		document.getElementById(id).style.display = 'none';
		document.getElementById(id).style.visibility = 'hidden';
	}
	else if (document.layers)
	{
		document.layers[id].display = 'none';
	}
	else if (document.all)
	{
		eval("document.all." + id + ".style.display = 'none'");
	}
	
}

function getWindowDimensions() 
{
	var myWidth = 0
	var myHeight = 0;
	
	if(typeof(window.innerWidth) == 'number') 
	{
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} 
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) 
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} 
	else if (document.body && (document.body.clientWidth || document.body.clientHeight))
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
  
  return {width:myWidth, height:myHeight};
}

function horizontalAlignElement(id, alignment)
{
	var elementToAlign = getElement(id);

	var elementWidth = elementToAlign.offsetWidth;
	var screenWidth = getWindowDimensions().width;
	if (elementToAlign)
	{
		switch (alignment)
		{
			case 'center':
				var left = 0.5 * (screenWidth - elementWidth);
				elementToAlign.style.left = left + 'px';
				break;
			case 'right':
				var left = screenWidth - elementWidth - 3;
				elementToAlign.style.left = left + 'px';
				break;
			default:
				elementToAlign.style.left = '0px';
				break;
		}
	}
}

var settingsVisible = false;

function alignSettings(idMySettings, idMySettingsPopup)
{
    horizontalAlignElement(idMySettingsPopup, 'right');
    
    var mySettingsPosition = getElementPosition(idMySettings);
    var mySettingsDimensions = getElementDimensions(idMySettings);
    
    var top = mySettingsPosition.top + mySettingsDimensions.height + 3;
    
    var elementToAlign = getElement(idMySettingsPopup);
    elementToAlign.style.top = top + 'px';
}

function showSettings(idMySettingsPopup)
{
    settingsVisible = true;
    showElement(idMySettingsPopup);
}

function hideSettings(idMySettingsPopup)
{
    settingsVisible = false;    
    hideElement(idMySettingsPopup);    
}

function toggleSettings(idMySettingsPopup)
{
    if(settingsVisible)
    {
        hideSettings(idMySettingsPopup);
    }
    else
    {
        showSettings(idMySettingsPopup);
    }
}

function alignPaymentOptions(idPaymentOptionsImage, idPaymentOptionsPopup)
{
    var paymentOptionsPosition = getElementPosition(idPaymentOptionsImage);
    var paymentOptionsDimensions = getElementDimensions(idPaymentOptionsImage);
    
    var elementToAlign = getElement(idPaymentOptionsPopup);
    var elementWidth = elementToAlign.offsetWidth;
    	    
    var top = paymentOptionsPosition.top;	   	    	    	    
    var left = paymentOptionsPosition.left - elementWidth - 10;
    
    elementToAlign.style.left = left + 'px';
    elementToAlign.style.top = top + 'px';
}

function showPaymentOptions(idPaymentOptionsPopup)
{
    showElement(idPaymentOptionsPopup);
}

function hidePaymentOptions(idPaymentOptionsPopup)
{
    hideElement(idPaymentOptionsPopup);
}



/**************** Dynamic search functions and variables *********************/

var selectedBrandID = 0;
var selectedCategoryID = 0;

function populateBrandSelect(brandSelectID, allBrandsText)
{
	clearSelect(brandSelectID);
	var brandSelect = getElement(brandSelectID);
	
	brandSelect.options[0] = new Option(allBrandsText, 0, true, false);
	
	if (selectedCategoryID != 0)
	{
		var optionNumber = 1;
		var selected = false;
		for (var i = 0; i < searchSource.length; i++)
		{
			dataObject = searchSource[i];
			if (dataObject[2] == selectedCategoryID)
			{
				brandSelect.options[optionNumber] = new Option(dataObject[1], dataObject[0], false, false);
				if (dataObject[0] == selectedBrandID)
				{
					brandSelect.options[optionNumber].selected = true;
					selected = true;
				}
				optionNumber++;
			}
		}
		
		if (!selected)
			brandSelect.options[0].selected = true;
	}
	else
	{
		// populate with all brands, selecting the current selectedBrandID
		var selected = false;
		var optionNumber = 1;
		for (var i = 0; i < searchSource.length; i++)
		{
			dataObject = searchSource[i];
			brandID = dataObject[0];
			brand = dataObject[1];
			brandSelect.options[optionNumber] = new Option(brand, brandID);
			
			if (brandID == selectedBrandID)
			{
				brandSelect.options[optionNumber].selected = true;
				selected = true;
			}
			
			var dataObject2 = searchSource[i+1];
			while (dataObject2)
			{
				if (dataObject2[0] != brandID)
					break;
					
				i++;
				dataObject2 = searchSource[i+1];
			}
			
			optionNumber++;
		}
		
		if (!selected)
			brandSelect.options[0].selected = true;
			
	}
}

function populateCategorySelect(categorySelectID, allCategoriesText)
{
	clearSelect(categorySelectID);
	var categorySelect = getElement(categorySelectID);
	
	categorySelect.options[0] = new Option(allCategoriesText, 0);
	
	var categoryArray = new Array();
	categoryArray.length = 0;
	
	if (selectedBrandID != 0)
	{
		var selected = false;
		for (var i = 0; i < searchSource.length; i++)
		{
			dataObject = searchSource[i];
			if (dataObject[0] == selectedBrandID)
			{
				var catObject = new Object();
				catObject[0] = dataObject[3];
				catObject[1] = dataObject[2];
				catObject[2] = false;
				
				if (dataObject[2] == selectedCategoryID)
				{
					catObject[2] = 'selected';
					selected = true;
				}
				
				insertIntoSortedArray(categoryArray, catObject);
								
			}
		}
		
		for (var j = 0; j < categoryArray.length; j++)
		{
			var catObject = categoryArray[j];
			k = j+1;
			categorySelect.options[k] = new Option(catObject[0], catObject[1]);
			if (catObject[2] == 'selected')
				categorySelect.options[k].selected = true;
		}
		
		if (!selected)
			categorySelect.options[0].selected = true;
	}
	else
	{
		// populate with all categories, selecting the current selectedCategoryID
		
		var selected = false;
		for (var i = 0; i < searchSource.length; i++)
		{
			dataObject = searchSource[i];
			categoryID = dataObject[2];
			category = dataObject[3];
			var catObject = new Object();
				catObject[0] = category;
				catObject[1] = categoryID;
				catObject[2] = false;
			
			if (categoryID == selectedCategoryID)
			{
				catObject[2] = 'selected';
				selected = true;
			}
			
			insertIntoSortedArray(categoryArray, catObject);
		}
		
		for (var j = 0; j < categoryArray.length; j++)
		{
			var catObject = categoryArray[j];
			k = j+1;
			categorySelect.options[k] = new Option(catObject[0], catObject[1]);
			if (catObject[2] == 'selected')
				categorySelect.options[k].selected = true;
		}
		
		if (!selected)
			categorySelect.options[0].selected = true;
	}
}

function changeBrand(brandSelectID, categorySelectID, allBrandsText, allCategoriesText)
{
	var brandSelect = getElement(brandSelectID);

	if (brandSelect.selectedIndex >= 0)
	{
		selectedBrandID = brandSelect.options[brandSelect.selectedIndex].value;
		populateBrandSelect(brandSelectID, allBrandsText);
		populateCategorySelect(categorySelectID, allCategoriesText);
	}
	
}

function changeCategory(brandSelectID, categorySelectID, allBrandsText, allCategoriesText)
{
	var categorySelect = getElement(categorySelectID);

	if (categorySelect.selectedIndex >= 0)
	{
		selectedCategoryID = categorySelect.options[categorySelect.selectedIndex].value;
		populateBrandSelect(brandSelectID, allBrandsText);
		populateCategorySelect(categorySelectID, allCategoriesText);
	}
	
}

function clearSelect(selectID)
{
	var oSelect = getElement(selectID);
	
	if (oSelect.options)
	{
		/*for (var i = 0; i < oSelect.options.length; i++)
		{
			oSelect.options[i].text = '';
		}*/
		
		oSelect.options.length = 0;
	}
}

function setInitialSelection(newBrandID, newCategoryID, brandSelectID, categorySelectID, allBrandsText, allCategoriesText)
{
	selectedBrandID = newBrandID;
	selectedCategoryID = newCategoryID;
	populateBrandSelect(brandSelectID, allBrandsText);
	populateCategorySelect(categorySelectID, allCategoriesText);
	
}

function movePayPalElement(elementID, idToAlign)
{
    var cellY = getElementPosition(elementID).top;
	var cellX = getElementPosition(elementID).left;
	
	var element = getElement(idToAlign);	
	var parentElement = getElement(elementID);
	
	elementHeight = cellY;
	elementWidth = cellX - 475;
	
	element.style.left = elementWidth + "px";
	element.style.top = elementHeight + "px";
}

function insertIntoSortedArray(array, object)
{
	if (array.length == 0)
	{
		array[0] = object;
		return;
	}
		
	var i = 0;
	for (i = 0; i < array.length; i++)
	{
		if (object[0] == array[i][0])
			return;
			
		if (object[0] < array[i][0])
		{
			arrLength = array.length;
			for (var j = arrLength - 1; j >= i; j--)
			{
				array[j+1] = array[j];
			}
			
			break;
		}
	}
	
	array[i] = object;
	
}

function setDefaultButtonForEnterKey(buttonName, event)
{
	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
    {
		getElement(buttonName).click();
		return false;
	} 
    else 
    {
		return true;
	}
}

function popUpEmailList(nameElementId, emailElementId)
{
	var nameElement = getElement(nameElementId);
	var emailElement = getElement(emailElementId);
	
	var features = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=480,height=300,top=200,left=200';
	
	var url = 'EmailList.aspx?name=' + nameElement.value + '&emailAddress=' + emailElement.value;
	
	window.open(url, '', features);
	return false;
} 




/******************************************************************************/

/************************ Language Menu Functions *****************************/


var languageMenuOpen = 0;
var languageMenuAligned = false;

function alignLanguageMenu(id, alignToID)
{
    if (!languageMenuAligned)
    {
        //alert(id);alert(alignToID);
	    var linkCell = getElement(alignToID);
	    var spanMenu = getElement(id);
    	    
	    var cellY = getLanguageElementOffsetTop(linkCell);
	    var cellX = getLanguageElementOffsetLeft(linkCell);
	    var adjustedY = cellY + linkCell.offsetHeight;
	    var adjustedX = cellX + linkCell.offsetWidth - spanMenu.offsetWidth;
    	
	    if (adjustedX < 0)
		    adjustedX = 0;
    	    
	    if (adjustedY < 0)
		    adjustedY = 0;
    		
		    //alert(spanMenu.offsetWidth);
    	    
	    if (spanMenu.style)
	    {
		    spanMenu.style.left = adjustedX + "px";
		    spanMenu.style.top = adjustedY + "px";
	    }
	    
	    languageMenuAligned = true;
	}
}

function getLanguageElementOffsetLeft(offsetElement)
{
	var offsetLeft = 0;
	while (offsetElement) 
	{
		offsetLeft += offsetElement.offsetLeft;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetLeft += document.body.leftMargin;
	}
	
	
	return offsetLeft;
}

function getLanguageElementOffsetTop(offsetElement)
{
	var offsetTop = 0;
	while (offsetElement) 
	{
		offsetTop += offsetElement.offsetTop;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetTop += document.body.topMargin;
	}
	
	return offsetTop;
}

function showLanguageMenu(id, alignToID)
{
	alignLanguageMenu(id, alignToID);
	showElement(id);
	languageMenuOpen = 1;
}

function hideLanguageMenu(id)
{
	languageMenuOpen = 0;
	setTimeout("doLanguageHide('" + id + "')", 500);				
}

function doLanguageHide(id)
{
	if (languageMenuOpen == 0)
		hideElement(id);
}

var doPopup;

function doModelImagePopup()
{
    myWindow = window.open(doPopup, 'imageWindow', 'toolbar=no, location=no, directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=750,height=700,top=200,left=200');
    return false;
}

function clickButton(event, buttonID)
{
	if (event.keyCode == 13)
	{
		var button = getElement(buttonID);
		if (button)
			button.click();
	}
}

function stopEnterKeyPress(evt)
{
	var evt = (evt) ? evt : ((event) ? event : null); 
	  if (evt)
	  {
		if (evt.keyCode == 13) 
		{
			return false;
		} 
	  }
}

function submitFormOnEnter(evt, formID)
{
	var evt = (evt) ? evt : ((event) ? event : null); 
	if (evt)
	{
		if (evt.keyCode == 13)
		{
			var form = document.getElementById(formID);
			form.submit();
		}
	}
}

/******************************************************************************/

function showElementHideLink(id, hLink)
{
	if (document.getElementById)
	{
		if (document.getElementById(id).style.display == 'none')
			document.getElementById(id).style.display = '';
			
		if (document.getElementById(id).style.visibility == 'hidden')
			document.getElementById(id).style.visibility = 'visible';
	}
	else if (document.layers)
	{
		document.layers[id].display = '';
	}
	else if (document.all)
	{
		eval("document.all." + id + ".style.display = ''");
	}
	
	var link = document.getElementById(hLink);
	
	link.style.display='none';	
}

// Hover Functions

function alignHoverMenu(id)
{
    var screenWidth = document.body.clientWidth; 
    
    var linkCell = getHoverElement(id + 'LinkElement');
	var spanMenu = getHoverElement(id);
	    
	var cellY = getHoverElementOffsetTop(id + 'LinkElement');
	var cellX = getHoverElementOffsetLeft(id + 'LinkElement');
	
	if (cellX > (screenWidth / 2))
	{
	    cellX += linkCell.offsetWidth - spanMenu.offsetWidth;
	}
	
	var adjustedY = cellY + linkCell.offsetHeight;
	var adjustedX = cellX;
	//adjustedX = cellX - (0.5 * (spanMenu.offsetWidth - linkCell.offsetWidth));
	
	if (adjustedX < 0)
	    adjustedX = 0;
	    
	if (adjustedY < 0)
	    adjustedY = 0;
	    
	    
	if (spanMenu.style)
	{
	    spanMenu.style.left = adjustedX + "px";
	    spanMenu.style.top = adjustedY + "px";
	}
}

function getHoverElementOffsetLeft(id)
{   
    var offsetElement = getHoverElement(id);   
	var offsetLeft = 0;
	while (offsetElement) 
	{
		offsetLeft += offsetElement.offsetLeft;		
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetLeft += document.body.leftMargin;
	}
		
	return offsetLeft;
}

function getHoverElementOffsetTop(id)
{

    var offsetElement = getHoverElement(id);
	var offsetTop = 0;
	while (offsetElement) 
	{
		offsetTop += offsetElement.offsetTop;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetTop += document.body.topMargin;
	}
	
	return offsetTop;
}

function openHoverMenu(id)
{
    var spanMenu = getHoverElement(id);
        
    var menuState = getHoverElement("hid" + id);   
    
    if (menuState.value != 1)
    {
        spanMenu.style.visibility = "visible";
        spanMenu.style.display = '';
        menuState.value = 1
		alignHoverMenu(id);
    }     
    
}

function closeOtherHoverMenus(prefix, currentHoverMenu, numberOfHoverMenus)
{
    for (i = 0; i < numberOfHoverMenus; i++)
    {
        if (i != currentHoverMenu)
        {
            var menu = getHoverElement(prefix + i)
            if (menu)
            {
                menu.style.visibility = 'hidden';
                menu.style.display = 'none';
            }
        }
    }
}

function closeHoverMenu(id)
{    
    var menuState = getHoverElement("hid" + id);
    var spanMenu = getHoverElement(id);
    menuState.value = 0;
	    //spanMenu.style.visibility = "hidden";	
    
    setTimeout("scheduleHoverClose('" + id + "');", 500);
}

function scheduleHoverClose(id) 
{
    
    var spanMenu = getHoverElement(id);
    var menuState = getHoverElement("hid" + id);
    if (menuState.value == 0)
    {
	    spanMenu.style.visibility = "hidden";	
	    spanMenu.style.display = "none";	
    }
    else
        setTimeout("scheduleHoverClose('" + id + "');", 1000);
}

function getHoverElement(elementID)
{
	if (document.getElementById)
		return document.getElementById(elementID);
	else if (document.all)
		return document.all(elementID);
	else
		return null;
}


/*************** Offer of the Day (Basket Offers) ***************/

window.onresize = function()
{		
    if(getElement('basketoffer'))    			
	    centerAlign('basketoffer');
}
					
window.onscroll = function()
{					
    if(getElement('basketoffer'))    
	    centerAlign('basketoffer');
}
					
function fadeInBackGround(endOpacity)
{			
	setOpacity('overlay', 10, 10, endOpacity);
}

function getFullDocumentDimensions()
{
	var pageWidth = 0;
	var pageHeight = 0;
	
	if( window.innerHeight && window.scrollMaxY ) // Firefox 
	{
		pageWidth = window.innerWidth + window.scrollMaxX;
		pageHeight = window.innerHeight + window.scrollMaxY;
	}	
	else if( document.body.scrollHeight > document.body.offsetHeight ) // all but Explorer Mac
	{
		pageWidth = document.body.scrollWidth;
		pageHeight = document.body.scrollHeight;
	}
	else // works in Explorer 6 Strict, Mozilla (not FF) and Safari
	{ 
		pageWidth = document.body.offsetWidth + document.body.offsetLeft; 
		pageHeight = document.body.offsetHeight + document.body.offsetTop; 
	}

	return {width:pageWidth, height:pageHeight};
}

function setOpacity(id, value, increment, maxOpacity)
{
	var element = document.getElementById(id);
	
	if (value > maxOpacity)
		value = maxOpacity;
	
	element.style.opacity = value / 100;
	element.style.filter = 'alpha(opacity=' + value + ')';
		
	if (value < maxOpacity)
	{
		value += increment;
		setTimeout("setOpacity('overlay', " + value + ", " + increment + ", " + maxOpacity + ")", 10);
	}
}

function getWindowDimensions() 
{
	var myWidth = 0
	var myHeight = 0;
	
	if(typeof(window.innerWidth) == 'number') 
	{
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} 
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) 
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} 
	else if (document.body && (document.body.clientWidth || document.body.clientHeight))
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
  
	return {width:myWidth, height:myHeight};
}

function getScrollCoordinates()
{
	var scrollX = 0;
	var scrollY = 0;
	
	if( typeof( window.pageYOffset ) == 'number' ) 
	{
		scrollY = window.pageYOffset;
		scrollX = window.pageXOffset;
	} 
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
	{
		//DOM compliant
		scrollY = document.body.scrollTop;
		scrollX = document.body.scrollLeft;
	} 
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) 
	{
		//IE6 standards compliant mode
		scrollY = document.documentElement.scrollTop;
		scrollX = document.documentElement.scrollLeft;
	}
	
	return { x: scrollX, y: scrollY };
}

function centerAlign(id)
{
	var dims = getWindowDimensions();
	var startCoordinates = getScrollCoordinates();
	
	var width = document.getElementById(id).offsetWidth;
	var height = document.getElementById(id).offsetHeight;
	
	var top = ((dims.height - height) / 2) + startCoordinates.y;
	var left = ((dims.width - width) / 2) + startCoordinates.x;
	
	if (top < 0)
		top = 0;
		
	if (left < 0)
		left = 0;
		
	document.getElementById(id).style.left = left + 'px';
	document.getElementById(id).style.top = top + 'px';
}

function showBasketOffer()
{
    var dims2 = getFullDocumentDimensions();
	
	document.getElementById('overlay').style.width = '100%';
	document.getElementById('overlay').style.height = dims2.height + 'px';

	document.getElementById('overlay').style.display = 'block';
	
	setTimeout('fadeInBackGround(65)', 1);
	
	document.getElementById('basketoffer').style.display = 'block';	
	
	centerAlign('basketoffer');
}

/*************** End Offer of the Day (Basket Offers) ***************/

/*************** Recently Viewed Hover *****************************/

function alignRecentlyViewedHoverMenu(id)
{
    var linkCell = getRecentlyViewedHoverElement('RecentlyViewedLink');
	var spanMenu = getRecentlyViewedHoverElement(id);
	    
	var cellY = getRecentlyViewedHoverElementOffsetTop('RecentlyViewedLink');
	var cellX = getRecentlyViewedHoverElementOffsetLeft('RecentlyViewedLink');
	var adjustedY = cellY + linkCell.offsetHeight;
	var adjustedX = cellX + linkCell.offsetWidth - spanMenu.offsetWidth;
	
	if (adjustedX < 0)
		adjustedX = 0;
		       	    
	if (adjustedY < 0)
	    adjustedY = 0;
	    
	if (spanMenu.style)
	{
	    spanMenu.style.left = adjustedX + "px";
	    spanMenu.style.top = adjustedY + "px";
	}
}

function getRecentlyViewedHoverElementOffsetLeft(id)
{
    var offsetElement = getRecentlyViewedHoverElement(id);
	var offsetLeft = 0;
	while (offsetElement) 
	{
		offsetLeft += offsetElement.offsetLeft;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetLeft += document.body.leftMargin;
	}	
	
	return offsetLeft;
}

function getRecentlyViewedHoverElementOffsetTop(id)
{
    var offsetElement = getRecentlyViewedHoverElement(id);
	var offsetTop = 0;
	while (offsetElement) 
	{
		offsetTop += offsetElement.offsetTop;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetTop += document.body.topMargin;
	}
	
	return offsetTop;
}

function openRecentlyViewedHover(id)
{
    var spanMenu = getRecentlyViewedHoverElement(id);
    
    spanMenu.style.visibility = "visible"; 
    spanMenu.style.display = "block";      
    
    alignRecentlyViewedHoverMenu(id);
}

function closeRecentlyViewedHover(id)
{    
    var spanMenu = getHoverElement(id);
    spanMenu.style.visibility = "hidden";
    spanMenu.style.display = "none"; 	
}

function getRecentlyViewedHoverElement(elementID)
{
	if (document.getElementById)
		return document.getElementById(elementID);
	else if (document.all)
		return document.all(elementID);
	else
		return null;
}

/****** Postage Options in Basket ************/
var postageOptionsVisible = false;

function showPostageOptions(id)
{
    postageOptionsVisible = true;
    showElement(id);
}

function hidePostageOptions(id)
{
    postageOptionsVisible = false;    
    hideElement(id);    
}

function togglePostageOptions(id)
{
    if(postageOptionsVisible)
    {
        hidePostageOptions(id);
    }
    else
    {
        showPostageOptions(id);
    }
}

/************** Recommendations Hover ************/

function alignRecommendationsHoverMenu(id)
{
    var linkCell = getRecommendationsHoverElement('RecommendationsLink');
	var spanMenu = getRecommendationsHoverElement(id);
	    
	var cellY = getRecommendationsHoverElementOffsetTop('RecommendationsLink');
	var cellX = getRecommendationsHoverElementOffsetLeft('RecommendationsLink');
	var adjustedY = cellY + linkCell.offsetHeight;
	var adjustedX = cellX + 10;
	
	if (adjustedX < 0)
		adjustedX = 0;
		       	    
	if (adjustedY < 0)
	    adjustedY = 0;
	    
	if (spanMenu.style)
	{
	    spanMenu.style.left = adjustedX + "px";
	    spanMenu.style.top = adjustedY + "px";
	}
}

function getRecommendationsHoverElementOffsetLeft(id)
{
    var offsetElement = getRecommendationsHoverElement(id);
	var offsetLeft = 0;
	while (offsetElement) 
	{
		offsetLeft += offsetElement.offsetLeft;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetLeft += document.body.leftMargin;
	}	
	
	return offsetLeft;
}

function getRecommendationsHoverElementOffsetTop(id)
{
    var offsetElement = getRecommendationsHoverElement(id);
	var offsetTop = 0;
	while (offsetElement) 
	{
		offsetTop += offsetElement.offsetTop;
		offsetElement = offsetElement.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") 
	{
		offsetTop += document.body.topMargin;
	}
	
	return offsetTop;
}

function openRecommendationsHover(id)
{
    var spanMenu = getRecommendationsHoverElement(id);       
    
    alignRecommendationsHoverMenu(id);
    
    spanMenu.style.visibility = "visible";       
}

function closeRecommendationsHover(id)
{    
    var spanMenu = getHoverElement(id);
    spanMenu.style.visibility = "hidden";	
}

function getRecommendationsHoverElement(elementID)
{
	if (document.getElementById)
		return document.getElementById(elementID);
	else if (document.all)
		return document.all(elementID);
	else
		return null;
}

function bankersRound(input)
{
	if (!isNaN(input))
	{
		var multiple = 1;
		if (input < 0)
			multiple = -1;
			
		var abs = Math.abs(input);
		var fullFigure = abs * 100;
		var floor = Math.floor(fullFigure);
		
		if (fullFigure - floor != 0.5)
			return Math.round(input * 100) / 100;
		else
		{
			if (Math.round(fullFigure) % 2 == 1) // 0.5, 2.5, 4.5, 6.5, 8.5 should round down
				return Math.floor(fullFigure) / 100 * multiple;
			else
				return Math.round(fullFigure) / 100 * multiple;
		}
		
	}
	else
		throw "bankersRound(" + input + "): input is not a number";
}

function deleteAllNonIRPCookies(returnUrl)
{	
	var reservedCookieNames = new Array();
	reservedCookieNames[0] = 'UserSettings';
	reservedCookieNames[1] = 'AdminSettings';
	
	var allCookies = document.cookie.split( ';' );
	var tempCookie = '';
	var cookieName = '';
	var isReservedCookie = false; 

	for ( i = 0; i < allCookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		tempCookie = allCookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookieName = tempCookie[0].replace(/^\s+|\s+$/g, '');
		
		isReservedCookie = false;
		
		for (j = 0; j < reservedCookieNames.length; j++)
		{
			if (cookieName == reservedCookieNames[j])
			{
				isReservedCookie = true;
				break;
			}
		}

		if (!isReservedCookie) {
			deleteCookie(cookieName, '/');
		}
		
		tempCookie = null;
		cookieName = '';
	}
	
	if (returnUrl != null && returnUrl != '')
	{
		// Redirect after one second
		setTimeout("window.location = '" + returnUrl + "';", 1000);
	}
}


function deleteAllCookies(returnUrl)
{		
	var allCookies = document.cookie.split( ';' );
	var tempCookie = '';
	var cookieName = '';

	for ( i = 0; i < allCookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		tempCookie = allCookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookieName = tempCookie[0].replace(/^\s+|\s+$/g, '');

		deleteCookie(cookieName, '/');
		
		tempCookie = null;
		cookieName = '';
	}
	
	if (returnUrl != null && returnUrl != '')
	{
		setTimeout("window.location = '" + returnUrl + "';", 1000);
	}
}

function setCookie( name, value, expires, path, domain, secure )
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	
	var expiresDate = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expiresDate.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function getCookie( cookieName ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var allCookies = document.cookie.split( ';' );
	var tempCookie = '';
	var cookieName = '';
	var cookieValue = '';
	var cookieFound = false; // set boolean t/f default f

	for ( i = 0; i < allCookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		tempCookie = allCookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookieName = tempCookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed cookieName
		if ( cookieName == cookieName )
		{
			cookieFound = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( tempCookie.length > 1 )
			{
				cookieValue = unescape( tempCookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookieValue;
			break;
		}
		tempCookie = null;
		cookieName = '';
	}
	if ( !cookieFound )
	{
		return null;
	}
}

function deleteCookie( name, path, domain ) {
	document.cookie = name + "=" +
		( ( path ) ? ";path=" + path : "") +
		( ( domain ) ? ";domain=" + domain : "" ) +
		";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}





