/*******************************************************************
*
* File    : xSPLibrary.js
*
* Created : 16/02/2007 14:07
*
* Author  : Barry Jones (barry.jones@screenpages.com)
*
* Purpose :
*
* History
* Date         		Version		Description
*
* 16/02/2007 14:07	1.0		Initial version
* 01/12/2008 09:51  1.01  Change VAT rate
* 23/01/2009 10:00  1.02	PR - Offset override functionality
* 23/12/2009 16:24  1.03  Change VAT rate back to 17.5%
*
***********************************************************************/

function xSPLibrary() {
	this.removeFrame 			= _removeFrame;
	this.openPopUp				= _openPopUp;
	this.getObject				= _getObject;
	this.centerDiv				= _centerDiv;

	// String Functions
	this.LTrim				= _LTrim;
	this.RTrim				= _RTrim;
	this.Trim				= _Trim;
	this.Left				= _Left;
	this.Right				= _Right;


	// Currency Functions
	this.twoDP				= _twoDP;
	this.convertNumToCurrency		= _convertNumToCurrency;
	this.setCurrency			= _setCurrency;

	this.setVATRate				= _setVATRate;
	this.calVAT				= _calVAT;

	// [1.03] - Start
	// [1.01] - Start
	var iVATRate_p				= 1.175; //default VAT Rate
	//var iVATRate_p				= 1.15; //default VAT Rate
	// [1.01] - End
	// [1.03] - End

	var sCurrency_p				= "&#163;"

	// AJAX Basket
	this.AJAX_refreshBasketHeaderTotal	= _AJAX_refreshBasketHeaderTotal;
	this.updateBasketTotal			= _updateBasketTotal;
	this.bBasketDisplayTotal		= _bBasketDisplayTotal

	var bBasketDisplayTotal_p		= false;

	// [1.02] Start - Offset override values
	var _3DOffSetArray = null;
	this.overRide3DOffSet	= _overRide3DOffSet;

	// ------------------------------------------------------------------------------- _overRide3DPathReturn()
	function _overRide3DOffSet(sOffsetValue) {
		_3DOffSetArray = sOffsetValue.split(',');
	}
	// End - Offset override values


	// ------------------------------------------------------------------------------- _removeFrame()
	function _removeFrame() {
		if(parent.frames.length!=0)parent.location.href=self.location.href;
	}


	// ------------------------------------------------------------------------------- _OpenPopUp()
	function _openPopUp(sURL,iWidth,iHeight,iTop,iLeft,bScroll,bResize) {
		var popUp_win;
		popUp_win = window.open(sURL,'popup','location=no,scrollbars=' + bScroll + ',resizable='+bResize+',width=' + iWidth + ',height=' + iHeight + ',left=50,top=150');

		popUp_win.focus();
	}

	// ------------------------------------------------------------------------------- _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];
		}
	}

	// ------------------------------------------------------------------------------- _centerDiv()
	function _centerDiv(oEL) {
		var iCenterWidth
		var iCenterHeight

		if(navigator.appName.indexOf("Netscape") != -1) {
			iCenterHeight	= parseFloat( parseFloat(pageYOffset) + (parseFloat(innerHeight) / 2 ) )  - parseFloat(oEL.style.height.replace('px','') / 2 );
			iCenterWidth 	= parseFloat(innerWidth) / 2 - parseFloat(oEL.style.width.replace('px','') / 2);
		} else {
			iCenterHeight	= parseFloat( parseFloat(document.documentElement.scrollTop) + parseFloat( document.documentElement.clientHeight / 2 ) ) - parseFloat( oEL.style.height.replace('px','') / 2 );
			iCenterWidth	= parseFloat( document.documentElement.clientWidth / 2  ) - parseFloat(oEL.style.width.replace('px','') / 2);


		}

		// [1.02] Start - Use the Offset override values
		if(_3DOffSetArray) {
			if(!(isNaN(_3DOffSetArray[0]))) {
				iCenterHeight = _3DOffSetArray[0];
			}
			if(!(isNaN(_3DOffSetArray[1]))) {
				iCenterWidth = _3DOffSetArray[1];
			}
		}
		// End

		oEL.style.top = iCenterHeight + 'px';
		oEL.style.left = iCenterWidth + 'px';

	}



	// ******************************************************************************************************
	// S T R I N G    F U N C T I O N S

	// ------------------------------------------------------------------------------- _LTrim()
	function _LTrim(sText){
		return sText.replace( /^\s*/, "" );
	}

	// ------------------------------------------------------------------------------- _RTime()
	function _RTrim(sText){
		return sText.replace( /\s*$/, "" );
	}

	// ------------------------------------------------------------------------------- _Trim()
	function _Trim(sText) {
		return RTrim(LTrim(sText));
	}



	// ----------------------------------------------------------------------------- _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);
		}
	}



	// ******************************************************************************************************
	// C U R R E N C Y    F U N C T I O N S

	// ----------------------------------------------------------------------------- _twoDP()
	function _twoDP(X) {
		var T, S = new String(Math.round(X*100))
		while (S.length<3) {
			S='0'+S
		}
  		return S.substr(0, T=(S.length-2)) + '.' + S.substr(T, 2)
	}


	// ----------------------------------------------------------------------------- _setCurrency()
	function _setCurrency(p_sCurrency) {
		sCurrency_p = p_sCurrency;
	}

	// ----------------------------------------------------------------------------- _twoDP()
	function _convertNumToCurrency( num ) {
		var prefix = sCurrency_p;
	   	var suffix = '';

	   	var iNum = _twoDP(num);

	   	if ( iNum < 0 ) {
	   			prefix = "(&#163;";
	   			suffix = ")";
	   			iNum = - iNum;
	   	}

       		var temp = Math.round( iNum * 100.0 ); // convert to pennies!

       		if ( temp < 10 ) return prefix + "0.0" + temp + suffix;
       		if ( temp < 100 ) return prefix + "0." + temp + suffix;

       		temp = prefix + temp; // convert to string!
       		return temp.substring(0,temp.length-2) + "." + temp.substring(temp.length-2) + suffix;
	}

	// ----------------------------------------------------------------------------- _setVATRate()
	function _setVATRate(p_iVATRate) {
		iVATRate_p = p_iVATRate;
	}

	// ----------------------------------------------------------------------------- _calVAT()
	function _calVAT(iVal) {
		return _convertNumToCurrency(iVal / iVATRate_p);
	}



	// ******************************************************************************************************
	// A J A X    B A S K E T     F U N C T I O N S

	// ----------------------------------------------------------------------------- _AJAX_refreshBasketHeaderTotal()
	function _AJAX_refreshBasketHeaderTotal() {
		var sURL = '/AJAX/runFunction.htm?basketdetail=1';

		var oAJAXBasketTotal = new AjaxDelegate(sURL, _updateBasketTotal);
		oAJAXBasketTotal.Fetch();
	}

	// ----------------------------------------------------------------------------- _updateBasketTotal()
	function _updateBasketTotal(url, sHTML) {
		var aResults = sHTML.split('|');
		var sSuffix = (aResults[0] == 1) ? '' : 's';
		_getObject("oBasketItems").innerHTML = aResults[0] + ' item' + sSuffix;
		_getObject("oBasketPrice").innerHTML = _convertNumToCurrency(aResults[1]);

		if (bBasketDisplayTotal_p) {
			_getObject("oBasketDisplayTotal").innerHTML = _convertNumToCurrency(aResults[1]);
			_getObject("oBasketDisplayVAT").innerHTML = '(' + _calVAT(aResults[1]) + ' ex.VAT)';
		}
	}

	// ----------------------------------------------------------------------------- _bBasketDisplayTotel()
	function _bBasketDisplayTotal(p_bBasketDisplayTotal) {
		bBasketDisplayTotal_p = p_bBasketDisplayTotal
	}


}
