/*******************************************************************
*
* File    : xUtil.js
*
* Created : 04/10/2006 14:52
*
* Author  : Barry Jones (barry.jones@screenpages.com)
*
* Purpose : To create a javascript library of common functionality
*
* History
* Date         		Version		Description
*
* 04/10/2006 14:52	1.0		Initial version
*
* version note [1.1] 19/09/2008 Tony Sanson:	Replaced Rico code with jQuery.
*
***********************************************************************/

function xUtil() {



	var mousex 			= 0;
	var mousey 			= 0;

	var _defaultTab			= "tab_ChocolateBox";
	var _lastTab			= "tab_ChocolateBox";

	var iScrollAmount		= 25;
	var iBaseopacity		= 30;
	var sBrowserDetect		= "";

	this.getObject 			= getObject;
	this.getMouseX 			= getMouseX;
	this.getMouseY 			= getMouseY;
	this.trackMouseXY 		= trackMouseXY;
	this.displayAjaxPopUp 		= displayAjaxPopUp;
	this.displayPopUp 		= displayPopUp;
	this.displayPopUpMessage	= displayPopUpMessage;
	this.closeWindow		= closeWindow;
	this.Left			= Left;
	this.Right			= Right;
	this.showObj			= showObj;
	this.hideObj			= hideObj;
	this.toggleObj			= toggleObj;

	this.setUpConfirmation		= _setUpConfirmation;
	this.setUpAlphabetConfirmation	= _setUpAlphabetConfirmation;

	this.FormatDisplayMessage	= FormatDisplayMessage;

	this.returnFormFieldsExclude	= returnFormFieldsExclude;
	this.changeTab			= changeTab;
	this.pausecomp			= pausecomp;
	this.round_decimals		= round_decimals;

	this.addLoadEvent		= addLoadEvent;


	this.Debug			= function(sMsg) {alert(sMsg);};

	this.highlightImg		= _highlightImg;
	this.gradualfade		= gradualfade;
	this.instantset			= instantset;
	this.cleartimer			= cleartimer;

	this.OpenCorrectCMPage		= OpenCorrectCMPage;
	this.writeCookie		= writeCookie;
	this.readCookie			= readCookie;

	this.displayMoney		= DisplayMoney;

	function OpenCorrectCMPage()
	{
		if (getObject('oAlphabetTrufflesMenuContainer').style.display == "block")
			xUtil.displayAjaxPopUp('oInfo', 'getCMS.asp?sCCPage=servery_Truffles_WhatDoIDo', 520, 480)
		else
			xUtil.displayAjaxPopUp('oInfo', 'getCMS.asp?sCCPage=servery_WhatDoIDo', 520, 480);
	}

	// ------------------------------------------------------------------------------- instantset()
	function instantset(iDegree){
		if (sBrowserDetect=="mozilla")
			oImg.style.MozOpacity = iDegree/100
		else if (sBrowserDetect=="ie")
			oImg.filters.alpha.opacity = iDegree
	}

	// ------------------------------------------------------------------------------- cleartimer()
	function cleartimer(){
		if (window.highlighting) clearInterval(highlighting)
	}

	// ------------------------------------------------------------------------------- gradualfade()
	function gradualfade(oObj){
		if (sBrowserDetect=="mozilla" && oObj.style.MozOpacity<1) {
			oObj.style.MozOpacity=Math.min(parseFloat(oObj.style.MozOpacity)+0.08, 0.99)
		} else if (sBrowserDetect=="ie" && oObj.filters.alpha.opacity<100) {
			oObj.filters.alpha.opacity+=8
		} else if (window.highlighting) {
			clearInterval(highlighting)
		}
	}


	// ------------------------------------------------------------------------------- _highlightImg()
	function _highlightImg(id) {

		if (getObject('oChocolateMenuContainer').style.display == "block")
		{
			oImg = getObject(id);
			oImg.className = 'gradualshine';

			sBrowserDetect = oImg.filters? "ie" : typeof oImg.style.MozOpacity=="string"? "mozilla" : "";
			instantset(iBaseopacity);

			highlighting=setInterval(function() {gradualfade(oImg)},100);
		}
	}


	// ------------------------------------------------------------------------------- _setUpConfirmation()
	function _setUpConfirmation() {
		getObject('orderBoxImage').src = '/PUBLIC/PICTURES/SERVERY/BOX/MEDIUM/' + oOrderOptions.returnBoxProductID() + oOrderOptions.returnBoxSize() + '.jpg';
		getObject('iOrderBoxSize').innerHTML = oOrderOptions.returnBoxSize() + ' ';
		getObject('iOrderBoxPrice').innerHTML = oOrderOptions.returnBoxPrice() + ' ';

		// REMOVED TO SHOW WEIGHTS
		//getObject('iOrderBoxName').innerHTML = oOrderOptions.returnBoxName() + ' ';

		// TEMP CODE TO SHOW WEIGHTS
		var sWeight;
		if(oOrderOptions.returnBoxSize() == '8') {
			sWeight = '72g';
		} else if(oOrderOptions.returnBoxSize() == '16') {
			sWeight = '144g';
		} else if(oOrderOptions.returnBoxSize() == '32') {
			sWeight = '288g';
		} else if(oOrderOptions.returnBoxSize() == '64') {
			sWeight = '576g';
		}

		getObject('iOrderBoxName').innerHTML = oOrderOptions.returnBoxName() + ' design<br/>(Minimum weight: ' + sWeight + ')';
		// END TEMP CODE

		getObject('iOrderBoxSize_Summary').innerHTML = oOrderOptions.returnBoxSize() + ' ';
		getObject('iOrderBoxPrice_Summary').innerHTML = oOrderOptions.returnBoxPrice() + ' ';

		//getObject('iOrderTotal').innerHTML = '&#163;' + xUtil.round_decimals(parseFloat(oOrderOptions.returnBoxPrice() + oOrderOptions.returnTotalPrice()),2) ;


		// We only display the Chocolate collection box if it has been added to the basket.
		var aSelection = oOrderOptions.returnChocolateCollectionInfo().split(",");
		if (aSelection[0] == "true")
		{
			getObject('divBasketChocolateCollectionBox').style.display = "block";
			getObject('divBasketChocolateCollectionBox_Summary').style.display = "block";
		}
		else
		{
			getObject('divBasketChocolateCollectionBox').style.display = "none";
			getObject('divBasketChocolateCollectionBox_Summary').style.display = "none";
		}
	}

	// ------------------------------------------------------------------------------- _setUpAlphabetConfirmation()
	function _setUpAlphabetConfirmation()
	{
		getObject('divBoxSplit').style.display = "none";

		var aSelection = oOrderOptions.returnAlphabetTruffleInfo().split(",");

		if (aSelection[0] == "true")
		{
			getObject('divBasketAlphabetTruffleBox').style.display = "block";

			getObject('imgBasketAlphabetTruffleBox').src = '/PUBLIC/PICTURES/SERVERY/BOX/MEDIUM/' + aSelection[8];
			getObject('spnBasketAlphabetTruffleBoxSize').innerHTML = aSelection[5];
			getObject('spnBasketAlphabetTruffleBoxPrice').innerHTML = DisplayMoney(parseFloat(aSelection[3]), 2, "0.00");

			var sWeight = aSelection[9] + "g";
			//var sDisplayMessage = aSelection[6].replace(/_Gold_/g, "_Small_");
			var sDisplayMessage = InsertNecessarySpacing(aSelection[6]);
			sDisplayMessage = FormatDisplayMessage(sDisplayMessage);
			getObject('spnBasketAlphabetTruffleBoxName').innerHTML = "Message - " + sDisplayMessage + "<br/>(Minimum weight: " + sWeight + ")";

			getObject('divBasketAlphabetTruffleBox_Summary').style.display = "block";
			getObject('spnBasketAlphabetTruffleBoxSize_Summary').innerHTML = aSelection[5];
			getObject('spnBasketAlphabetTruffleBoxPrice_Summary').innerHTML = DisplayMoney(parseFloat(aSelection[3]), 2, "0.00");

			// if both Boxes are added to basket then display a dotted line between them.
			if (oOrderOptions.return_ChocolateBoxAddedToBasket() == true)
				getObject('divBoxSplit').style.display = "block";
		}
		else
		{
			getObject('divBasketAlphabetTruffleBox').style.display = "none";
			getObject('divBasketAlphabetTruffleBox_Summary').style.display = "none";
		}
	}

	function InsertNecessarySpacing(sMessage)
	{
		//var sSpacerHtml = "<br/>";
		var sSpacerHtml = " ";
		var sReturnMessage = sMessage;
		var i, k;
		var nBreakCount = 0;
		var lSkipSymbol = false;
		var nPosition = 0;
		for (i = 0; i < sMessage.length; i++)
		{
			if (lSkipSymbol == true && sMessage.substr(i,1) == "]")
			{
				lSkipSymbol = false;
			}
			else
			{
				if (sMessage.substr(i,1) == "[")
				{
					lSkipSymbol = true;
					nPosition = 0;
				}
				else if (sMessage.substr(i,1) !== " ")
				{
					nPosition++;
				}
				else if (sMessage.substr(i,1) == " ")
				{
					nPosition = 0;
				}
			}

			if (nPosition == 11)
			{
				k = ((i + 1) + (nBreakCount * sSpacerHtml.length));
				sReturnMessage = sReturnMessage.substr(0, k) + sSpacerHtml + sReturnMessage.substr(k);
				nPosition = 0;
				nBreakCount++;
			}
		}

		if (sReturnMessage.substr(sReturnMessage.length-sSpacerHtml.length) == sSpacerHtml)
			sReturnMessage = sReturnMessage.substr(0, sReturnMessage.length-sSpacerHtml.length);

		return sReturnMessage;
	}

	function FormatDisplayMessage(sMessage)
	{
		var sReturnValue = sMessage.replace(/\[SMILEY\]/g, "<IMG src='/PUBLIC/IMAGES/SERVERY/ALPHABET/Text_Small_[SMILEY].jpg' border='0'>");
		sReturnValue = sReturnValue.replace(/\[HEART\]/g, "<IMG src='/PUBLIC/IMAGES/SERVERY/ALPHABET/Text_Small_[HEART].jpg' border='0'>");
		sReturnValue = sReturnValue.replace(/\[SAD\]/g, "<IMG src='/PUBLIC/IMAGES/SERVERY/ALPHABET/Text_Small_[SAD].jpg' border='0'>");
		sReturnValue = sReturnValue.replace(/\[STAR\]/g, "<IMG src='/PUBLIC/IMAGES/SERVERY/ALPHABET/Text_Small_[STAR].jpg' border='0'>");

		return sReturnValue;
	}

	// ------------------------------------------------------------------------------- changeTab()
	function changeTab(ix, sPage, sName) {

		xUtil.closeWindow('oInfo');

		oImg = getObject('img_' + _lastTab)
		oImg.src = oImg.src.replace('_on','_off');

		oImg = getObject('img_' + sName)
		oImg.src = oImg.src.replace('_off','_on');

		switch (ix) {
			case 0: // Chocolate Box

				_sLastTabSelected = "ChocolateCollection";
				getObject('imgPageTitle').src = "/PUBLIC/IMAGES/SERVERY/page_title.gif";
				getObject('oCMSContainer').style.display = "none";

				getObject('oChocolateSelectionContainer').style.visibility = "visible";
				getObject('chocolate_selection_grid').style.visibility = "visible";
				getObject('brown_selection_bar_choc_filter').style.visibility = "visible";
				getObject('brown_selection_bar_chocolatier_selection').style.visibility = "visible";


				getObject('oChocolateSelectionContainer').style.display = "block";
				getObject('oChocolateMenuContainer').style.display = "block";
				getObject('chocolate_selection_grid').style.display = "block";

				getObject('lyr1').style.display = "block";
				getObject('wn').style.display = "block";
				getObject('hold').style.display = "block";
				getObject('scrollbar').style.display = "block";

				getObject('lyr2').style.display = "block";
				getObject('wn2').style.display = "block";
				getObject('hold2').style.display = "block";
				getObject('scrollbar2').style.display = "block";

				getObject('oFinishingTouchesContainer').style.display = "none";
				getObject('oFinishingTouchesMenuContainer').style.display = "none";
				getObject('finishingTouches_selection_grid').style.display = "none";

				wndo[0].setUpScrollbar("dragBar", "track", "v", 1, 1);
				wndo[1].setUpScrollbar("dragBar2", "track2", "v", 1, 1);

				var oForm = document.forms['frmFilter'];
				if (oForm.elements['master_choice'].checked) {
					getObject('brown_selection_bar_choc_filter').style.display = "none";
					getObject('brown_selection_bar_chocolatier_selection').style.display = "block";
				} else {
					getObject('brown_selection_bar_choc_filter').style.display = "block";
					getObject('brown_selection_bar_chocolatier_selection').style.display = "none";
				}

				getObject('brown_selection_bar_content_selection').style.display = "none";
				getObject('brown_selection_bar_finishing_touches').style.display = "none";

				getObject('brown_selection_bar').style.display = "block";
				getObject('oAlphabetTrufflesContainer').style.display = "none";
				getObject('oAlphabetTrufflesMenuContainer').style.display = "none";
				getObject('oPrefilledTrufflesContainer').style.display = "none";

				var lBoxAddedToBasket = oOrderOptions.return_ChocolateBoxAddedToBasket();
				if (lBoxAddedToBasket == true)
				{
					oBox.resetPageVars(true);
				}
				else
				{
					oBox.resetPageVars(false);
				}

				if (_onPageLoadTrufflesTabSelected == true)
				{
					_onPageLoadTrufflesTabSelected = false;
					wndo[1].scrollToBox("down", oBox.scrollToBox(_productid), oBox.iBoxPosition(_productid), _productid);
				}

			break;

			case 1: // Finishing Touches

				getObject('oCMSContainer').style.display = "none";

				getObject('oChocolateSelectionContainer').style.display = "none";
				getObject('oChocolateMenuContainer').style.display = "none";
				getObject('chocolate_selection_grid').style.display = "none";

				getObject('lyr1').style.display = "none";
				getObject('wn').style.display = "none";
				getObject('hold').style.display = "none";
				getObject('scrollbar').style.display = "none";

				getObject('lyr2').style.display = "none";
				getObject('wn2').style.display = "none";
				getObject('hold2').style.display = "none";
				getObject('scrollbar2').style.display = "none";


				getObject('oFinishingTouchesContainer').style.display = "block";
				getObject('oFinishingTouchesMenuContainer').style.display = "block";
				getObject('finishingTouches_selection_grid').style.display = "block";


				_setUpConfirmation();
				_setUpAlphabetConfirmation();

				if (oOrderOptions.returnExtrasLen()==0)
				{
					getObject('noextras').style.display = "block";
				} else {
					getObject('noextras').style.display = "none";
				}
				oOrderOptions.showItems();

				// Display to Total Cost
				getObject('iOrderTotal').innerHTML = '&#163;' + xUtil.round_decimals(parseFloat(oOrderOptions.returnBoxPrice()) + parseFloat(oOrderOptions.returnTotalPrice()) + oOrderOptions.returnAT_BoxPrice(),2);

				getObject('brown_selection_bar_choc_filter').style.display = "none";
				getObject('brown_selection_bar_chocolatier_selection').style.display = "none";
				getObject('brown_selection_bar_content_selection').style.display = "none";
				getObject('brown_selection_bar_finishing_touches').style.display = "block";

				getObject('brown_selection_bar').style.display = "block";
				getObject('oAlphabetTrufflesContainer').style.display = "none";
				getObject('oAlphabetTrufflesMenuContainer').style.display = "none";
				getObject('oPrefilledTrufflesContainer').style.display = "none";

				if (_sLastTabSelected == "AlphabetTruffles")
				{
					getObject('brown_selection_bar_fintouch_section1').style.display = "none";
					getObject('brown_selection_bar_fintouch_section2').style.display = "block";
				}
				else
				{
					getObject('brown_selection_bar_fintouch_section2').style.display = "none";
					getObject('brown_selection_bar_fintouch_section1').style.display = "block";
				}

			break;

			case 3: // Alphabet Truffles

				_sLastTabSelected = "AlphabetTruffles";
				getObject('imgPageTitle').src = "/PUBLIC/IMAGES/SERVERY/page_title_alphabetTruffles.jpg";
				getObject('oCMSContainer').style.display = "none";

				getObject('oChocolateSelectionContainer').style.display = "none";
				getObject('oChocolateMenuContainer').style.display = "none";
				getObject('chocolate_selection_grid').style.display = "none";

				getObject('lyr1').style.display = "none";
				getObject('wn').style.display = "none";
				getObject('hold').style.display = "none";
				getObject('scrollbar').style.display = "none";

				getObject('lyr2').style.display = "none";
				getObject('wn2').style.display = "none";
				getObject('hold2').style.display = "none";
				getObject('scrollbar2').style.display = "none";

				getObject('oFinishingTouchesContainer').style.display = "none";
				getObject('oFinishingTouchesMenuContainer').style.display = "none";
				getObject('finishingTouches_selection_grid').style.display = "none";

				getObject('brown_selection_bar_choc_filter').style.display = "none";
				getObject('brown_selection_bar_chocolatier_selection').style.display = "none";
				getObject('brown_selection_bar_content_selection').style.display = "none";
				getObject('brown_selection_bar_finishing_touches').style.display = "none";

				//getObject('brown_selection_bar').style.display = "none";
				getObject('oAlphabetTrufflesMenuContainer').style.display = "block";
				getObject('oAlphabetTrufflesContainer').style.display = "block";
				getObject('oPrefilledTrufflesContainer').style.display = "none";

				// problem with Mozilla and extending DIV height when a larger box is selected.
				var oImg = getObject('imgSelectionSpacer');
				var sBrowser = oImg.filters? "ie" : typeof oImg.style.MozOpacity=="string"? "mozilla" : "";
				if (sBrowser == "mozilla")
					getObject('oSelectionSpacer').style.minHeight = "70px";

				wndo[2] = new dw_scrollLayer('wn3', 'lyr3');
				//wndo[2].setUpScrollbar("dragBar3", "track3", "v", 1, 1);

				var lBoxAddedToBasket = oOrderOptions.returnAT_BoxAddedToBasket();
				if (lBoxAddedToBasket == true)
				{
					var sBoxType = oOrderOptions.returnAT_BoxType();
					if (sBoxType == "B")
					{
						// Bespoke Box
						window.setTimeout("oAlphabetTruffleBox.resetOccasionsDropdown(true, false, true);", 300);
					}
					else if (sBoxType == "P")
					{
						getObject('oAlphabetTrufflesContainer').style.display = "none";
						// Prefilled Box
						window.setTimeout("oAlphabetTruffleBox.resetOccasionsDropdown(false, true, true);", 300);
					}
				}
				else
				{
					// Default tab page to Bespoke Box Entry
					window.setTimeout("oAlphabetTruffleBox.resetOccasionsDropdown(true, false, false);", 300);
				}

				var sCookieValue = this.readCookie("Thorntons_AlphabetTruffles_DisableMsg");
				if (sCookieValue !== null)
					_lFirstTimeTrufflesTabSelected = new Boolean(eval(sCookieValue));

				if (_lFirstTimeTrufflesTabSelected == false)
				{
					_lFirstTimeTrufflesTabSelected = true;
					this.displayPopUp('oBoxFirstTimeInMsg', 420, 290);
				}

			break;

			case 2: // CMS Content

				var sURL = "getCMS.asp?sCCPage=" + sPage
				this.getObject('cms_title').src = '/PUBLIC/IMAGES/SERVERY/' + sName  + '_title.gif'

				var oAJAXCMSContent = new AjaxDelegate(sURL, _AJAX_DisplayCMSArea);
				oAJAXCMSContent.Fetch();

			break;

		}

		_lastTab = sName;
	}
	// ------------------------------------------------------------------------------- _AJAX_DisplayCMSArea()
	function _AJAX_DisplayCMSArea(url, sHTML)
	{
		getObject('oChocolateSelectionContainer').style.display = "none";
		//getObject('oChocolateMenuContainer').style.display = "block";
		getObject('chocolate_selection_grid').style.display = "none";

		//getObject('lyr1').style.display = "block";
		//getObject('wn').style.display = "block";
		//getObject('hold').style.display = "block";
		//getObject('lyr2').style.display = "block";
		//getObject('wn2').style.display = "block";
		//getObject('hold2').style.display = "block";

		getObject('oFinishingTouchesContainer').style.display = "none";
		//getObject('oFinishingTouchesMenuContainer').style.display = "none";
		getObject('finishingTouches_selection_grid').style.display = "none";

		getObject('oCMSContainer').innerHTML = sHTML;
		getObject('oCMSContainer').style.display = "block";

		getObject('brown_selection_bar_choc_filter').style.display = "none";
		getObject('brown_selection_bar_chocolatier_selection').style.display = "none";
		getObject('brown_selection_bar_finishing_touches').style.display = "none";
		getObject('brown_selection_bar_content_selection').style.display = "block";

		getObject('oAlphabetTrufflesContainer').style.display = "none";
		//getObject('oAlphabetTrufflesMenuContainer').style.display = "none";
		getObject('oPrefilledTrufflesContainer').style.display = "none";

		if (getObject('oAlphabetTrufflesMenuContainer').style.display == "block")
		{
			getObject('brown_selection_bar_content_section1').style.display = "none";
			getObject('brown_selection_bar_content_section2').style.display = "block";
			window.location.href = '#alphabet_truffles';
		}
		else if (getObject('oFinishingTouchesMenuContainer').style.display == "block")
		{
			if (_sLastTabSelected == "AlphabetTruffles")
			{
				getObject('brown_selection_bar_content_section1').style.display = "none";
				getObject('brown_selection_bar_content_section2').style.display = "block";
			}
			else
			{
				getObject('brown_selection_bar_content_section2').style.display = "none";
				getObject('brown_selection_bar_content_section1').style.display = "block";
			}
			window.location.href = '#finishing_touches';
		}
		else
		{
			getObject('brown_selection_bar_content_section2').style.display = "none";
			getObject('brown_selection_bar_content_section1').style.display = "block";
			window.location.href = '#chocolate_collection';
		}
	}


	// ------------------------------------------------------------------------------- displayPopUp()
	function displayPopUp(sDiv, iWidth, iHeight)
	{
		getObject('divDisableOverlay').style.display = "block";
		getObject('divDisableOverlay').style.height = xBrowser.getMaxY() + 'px';
		getObject('divDisableOverlay').style.width = xBrowser.getMaxX() + 'px';
		getObject('imgDisableBackground').style.height = xBrowser.getMaxY() + 'px';
		getObject('imgDisableBackground').style.width = xBrowser.getMaxX() + 'px';

		oDiv = this.getObject(sDiv);

		// Safari problems using FadeTo function - not enough time to investigate this core function
		//new Rico.Effect.FadeTo(sDiv, 0, 1, 1 );

		oDiv.style.display = "none";

		oDiv.style.width = iWidth + "px";

		oDiv.style.left = ((xBrowser.centerX() - 80) - (parseFloat(iWidth) / 2)) + "px";
		oDiv.style.top = xBrowser.centerY() - parseFloat(iHeight)/2 + "px";

		oDiv.style.display = "block";
		var i;
		for (i = 0; i < 10; i++)
		{
			setTimeout("document.getElementById('" + sDiv + "').style.opacity = '0." + i + "';", 50 * i);
			setTimeout("document.getElementById('" + sDiv + "').style.filter = 'alpha(opacity=" + 10 * i + ")';", 50 * i);
		}
		setTimeout("document.getElementById('" + sDiv + "').style.opacity = '1';", 50 * i);
		setTimeout("document.getElementById('" + sDiv + "').style.filter = 'alpha(opacity=100)';", 50 * i);

		// Safari problems using FadeTo function - not enough time to investigate this core function
		//new Rico.Effect.FadeTo(sDiv, 1, 400, 10 );
	}

	// ------------------------------------------------------------------------------- displayPopUp()
	function displayPopUpMessage(sDiv)
	{
		oDiv = this.getObject(sDiv);
		oDiv.style.display = "block";
		var i;
		for (i = 0; i < 10; i++)
		{
			setTimeout("document.getElementById('" + sDiv + "').style.opacity = '0." + i + "';", 50 * i);
			setTimeout("document.getElementById('" + sDiv + "').style.filter = 'alpha(opacity=" + 10 * i + ")';", 50 * i);
		}
		setTimeout("document.getElementById('" + sDiv + "').style.opacity = '1';", 50 * i);
		setTimeout("document.getElementById('" + sDiv + "').style.filter = 'alpha(opacity=100)';", 50 * i);

		setTimeout("xUtil.closeWindow('" + sDiv + "');", 15000);
	}

	// ------------------------------------------------------------------------------- displayAjaxPopUp()
	function displayAjaxPopUp(sDiv, sURL, iWidth, iHeight) {

		oDiv = this.getObject(sDiv)

		// [1.1] Start
		//new Rico.Effect.FadeTo(sDiv, 0, 1, 1 );
		jQuery('#' + sDiv).fadeTo(1, 0);
		// [1.1] End

		oDiv.style.display = "none";

		oDiv.style.width = iWidth + "px";

		if (Left(sURL,22)=='AJAX_ServeryChocDetail' || Left(sURL,16)=='getProductDetail')
		{
			//if (xUtil.getMouseX() > 500) {
			//	oDiv.style.left = (xUtil.getMouseX()- 350) + "px";
			//} else {
			//	oDiv.style.left = xUtil.getMouseX() + "px";
			//}
			//oDiv.style.top = (xUtil.getMouseY() - 130) + xBrowser.getYOffSet() + "px";

			sURL = sURL + "&ran=" + Math.floor(Math.random()*1001);

		} else {
			oDiv.style.left = xBrowser.centerX() - parseFloat(iWidth)/2 + "px";
			oDiv.style.top = xBrowser.centerY() - parseFloat(iHeight)/2 + "px";
		}

		oDiv.style.display = "block";
		oDiv.innerHTML = "<br/><br/><br/><div align='center' class='loading'><img src='/PUBLIC/IMAGES/SERVERY/indicator.gif' style='margin:5px 0px 10px 0px;'/><br/><strong>Loading...</strong></div><br/><br/><br/>"
		// [1.1] Start
		//new Rico.Effect.FadeTo(sDiv, 1, 400, 10 );
		jQuery('#' + sDiv).fadeTo(400, 1);
		// [1.1] End
		var oAJAXPopUp = new AjaxDelegate(sURL, _AJAX_DisplayPopUp);
		oAJAXPopUp.Fetch();

	}

	function _AJAX_DisplayPopUp(url, sHTML) {
		oDiv.innerHTML = sHTML;
	}

	// ------------------------------------------------------------------------------- closeWindow()
	function closeWindow(sDiv) {

		oDiv = this.getObject(sDiv)
		if (oDiv.style.display=='block') {
			// [1.1] Start
			//new Rico.Effect.FadeTo(sDiv, 0, 200, 10, {complete:function() {hideObj(sDiv)}});
			jQuery('#' + sDiv).fadeTo(400, 0, function() {hideObj(sDiv)} );
			// [1.1] End
			pausecomp(100);
		}

		if (getObject('divDisableOverlay').style.display == "block")
		{
			getObject('divDisableOverlay').style.display = "none";
			getObject('imgDisableBackground').style.height = '10px';
			getObject('imgDisableBackground').style.width = '10px';
		}

	}

	function pausecomp(millis)  {
		var date = new Date();
		var curDate = null;

		do { curDate = new Date(); }
		while(curDate-date < millis);
	}


	// ------------------------------------------------------------------------------- Left()
	function Left(str, n){
		if (n <= 0)
			return "";
		else if (n > String(str).length)
		    	return str;
		else
		    	return String(str).substring(0,n);
	}

	// ------------------------------------------------------------------------------- Right()
	function Right(str, n){
		if (n <= 0)
			return "";
		else if (n > String(str).length)
			return str;
		else {
			var iLen = String(str).length;
			return String(str).substring(iLen, iLen - n);
		}
	}





	// ------------------------------------------------------------------------------- addLoadEvent()
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		}
		else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	}



	// ------------------------------------------------------------------------------- trackMouseXY()
	function trackMouseXY(e) {
	  	if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event)

	  	if (e) {
			if (e.pageX || e.pageY) { // this doesn't work on IE6!! (works on FF,Moz,Opera7)
	      			mousex = e.pageX;
	      			mousey = e.pageY;
	    		} else if (e.clientX || e.clientY) { // works on IE6,FF,Moz,Opera7
	      			mousex = e.clientX + xBrowser.getMinX();
	      			mousey = e.clientY + xBrowser.getMinY();
	    		}
	  	}
	}

	function getMouseX() {
		return mousex;
	}
	function getMouseY() {
		return mousey;
	}

	// ------------------------------------------------------------------------------- getElementsByClass()
	function getElementsByClass(searchClass,node,tag) {
		/*
			searchClass: 	required
			node: 		optional
			tag: 		optional
		*/
		var classElements = new Array();
		if ( node == null )
			node = document;
		if ( tag == null )
			tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
		for (i = 0, j = 0; i < elsLen; i++) {
			if ( pattern.test(els[i].className) ) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	}



	// ------------------------------------------------------------------------------- toggleObj()
	function toggleObj(obj) {
		var el = getObject(obj);
		if ( el.style.display != 'none' ) {
			el.style.display = 'none';
		}
		else {
			el.style.display = '';
		}
	}

	function showObj(obj) {
		var el = getObject(obj);
		el.style.display = '';
	}

	function hideObj(obj) {
		var el = getObject(obj);
		el.style.display = 'none';
	}

	// ------------------------------------------------------------------------------- getObject()
	function getObject(nameStr) {
		var ie  = (document.all);
		var ns4 = document.layers? true : false;
		var dom = document.getElementById && !document.all ? true : false;

		if (dom) {
		    return document.getElementById(nameStr);
		} else if (ie) {
		    return document.all[nameStr];
		} else if (ns4) {
		    return document.layers[nameStr];
		}
	}




	// ------------------------------------------------------------------------------- getCookie()
	function getCookie( name ) {
		var start = document.cookie.indexOf( name + "=" );
		var len = start + name.length + 1;
		if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
			return null;
		}
		if ( start == -1 ) return null;
		var end = document.cookie.indexOf( ';', len );
		if ( end == -1 ) end = document.cookie.length;
		return unescape( document.cookie.substring( len, end ) );
	}

	// ------------------------------------------------------------------------------- setCookie()
	function setCookie( name, value, expires, path, domain, secure ) {
		var today = new Date();
		today.setTime( today.getTime() );
		if ( expires ) {
			expires = expires * 1000 * 60 * 60 * 24;
		}
		var expires_date = new Date( today.getTime() + (expires) );
		document.cookie = name+'='+escape( value ) +
			( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
			( ( path ) ? ';path=' + path : '' ) +
			( ( domain ) ? ';domain=' + domain : '' ) +
			( ( secure ) ? ';secure' : '' );
	}

	// ------------------------------------------------------------------------------- deleteCookie()
	function deleteCookie( name, path, domain ) {
		if ( getCookie( name ) ) document.cookie = name + '=' +
				( ( path ) ? ';path=' + path : '') +
				( ( domain ) ? ';domain=' + domain : '' ) +
				';expires=Thu, 01-Jan-1970 00:00:01 GMT';
	}



	// ----------------------------------------------------------------------------- returnFormFieldsExclude()
	function returnFormFieldsExclude(oForm, sExclude) {
	/* Used to gather all the form fields in the incoming form object
	*/
		sExcludesArray = new Array
		sExcludesArray = sExclude.split("|");

		var sMsg = '';
		var sFormParams = '';
		var bAdd = false;

		for(i=0; i<oForm.elements.length; i++) {

			if( (oForm.elements[i].type=="radio" || oForm.elements[i].type=="checkbox") && !(oForm.elements[i].checked)) {
				bAdd = false;
			} else {
				bAdd = true;
			}

			if (bAdd) {
				for (s in sExcludesArray) {
					if (oForm.elements[i].name.indexOf(sExcludesArray[s]) == 0){
						bAdd = false;
					}
				}

				if (bAdd == true) {
					sMsg = sMsg + (oForm.elements[i].name + " = " + oForm.elements[i].value + "\n");
					sFormParams = sFormParams + ("&" + oForm.elements[i].name + "=" + oForm.elements[i].value);
				}
			}
		}

		return sFormParams
	}



	// ----------------------------------------------------------------------------- round_decimals()
	function round_decimals(original_number, decimals) {
	    var result1 = original_number * Math.pow(10, decimals)
	    var result2 = Math.round(result1)
	    var result3 = result2 / Math.pow(10, decimals)
	    return pad_with_zeros(result3, decimals)
	}


	// ----------------------------------------------------------------------------- pad_with_zeros()
	function pad_with_zeros(rounded_value, decimal_places) {

	    // Convert the number to a string
	    var value_string = rounded_value.toString()

	    // Locate the decimal point
	    var decimal_location = value_string.indexOf(".")

	    // Is there a decimal point?
	    if (decimal_location == -1) {

	        // If no, then all decimal places will be padded with 0s
	        decimal_part_length = 0

	        // If decimal_places is greater than zero, tack on a decimal point
	        value_string += decimal_places > 0 ? "." : ""
	    }
	    else {

	        // If yes, then only the extra decimal places will be padded with 0s
	        decimal_part_length = value_string.length - decimal_location - 1
	    }

	    // Calculate the number of decimal places that need to be padded with 0s
	    var pad_total = decimal_places - decimal_part_length

	    if (pad_total > 0) {

	        // Pad the string with 0s
	        for (var counter = 1; counter <= pad_total; counter++)
	            value_string += "0"
	        }
	    return value_string
	}

	// ----------------------------------------------------------------------------- DisplayMoney()
	// nPrec defines our precision and the no. of trailing 0's
	function DisplayMoney(nNumber, nPrec, sWhenNothing)
	{
		// sWhenNothing is what we return if nNumber evals to zero.
		if (sWhenNothing == null)
			sWhenNothing = "0.00";

		if (isNaN(nPrec) == true)
			nPrec = 0;

		if ((isNaN(nNumber) == true) || (nNumber == null))
			return sWhenNothing;
		else
		{
			if (nNumber == 0.0)
				return sWhenNothing;
			else
			{
				if (nPrec !== 0)
				{
					// Precision involved.
					nNumber = (nNumber * Math.pow(10,nPrec));
					nNumber = Math.round(nNumber);
					nNumber = (nNumber / Math.pow(10,nPrec));
					var sNumber = new String(nNumber);

					// Attach on the correct number of trailing zeros (if any are needed)
					var i = 0;
					var nLength = sNumber.length;
					var nDecimalPoint = sNumber.indexOf(".");
					if (nDecimalPoint == -1)
					{
						sNumber = sNumber + ".";
						for(i=0; i<nPrec; i++)
							sNumber = sNumber + "0";
					}
					else
					{
						var nDigits = nLength - (nDecimalPoint+1);
						var nZerosNeeded = nPrec - nDigits;
						if (nZerosNeeded > 0)
							for (i=0; i<nZerosNeeded; i++)
								sNumber = sNumber + "0";
					}
				}
				else
				{
					// No precision involved.
					nNumber = Math.round(nNumber);
					var sNumber = new String(nNumber);
				}
				return sNumber;
			}
		}
	}

	function writeCookie(cookieName, cookieValue, expires)
	{
		if (cookieName)
		{
			var cookieDetails = cookieName + "=" + escape(cookieValue);
			cookieDetails += (expires ? "; expires=" + expires.toGMTString() : "");
			document.cookie = cookieDetails;
		}
	}

	function readCookie(cookieName)
	{
		var cookieValue = document.cookie;
		var cookieRegExp = new RegExp("\\b" + cookieName + "=([^;]*)");
		cookieValue = cookieRegExp.exec(cookieValue);
		if (cookieValue != null)
		{
			cookieValue = cookieValue[1];
		}
		return cookieValue;
	}



}
/*** End  - xUtil ***/