function Round (dPrice, nDecimal)
{	
	var dPowerOfTen = Math.pow(10, nDecimal);

	var dTempPrice = dPrice * dPowerOfTen;
	var dRoundedPrice = Math.floor (dTempPrice);
	var dFloorRemainder = dTempPrice - dRoundedPrice;

	if (dFloorRemainder > 0.5 || (dFloorRemainder == 0.5 && dRoundedPrice % 2 != 0))
		dRoundedPrice += 1;

	return dRoundedPrice / dPowerOfTen;
}

function RoundPrice (dPrice, nDecimal)
{		
	dPrice = Round (dPrice, nDecimal);
	var sDig = "000000000";
	var sTempValue = dPrice.toString();	
	if (nDecimal > 0) {
		var nPos = sTempValue.indexOf(".");
		if (nPos == -1) {
			sTempValue += ".";
			nPos = sTempValue.length - 1;
		}		
		var nDec = sTempValue.length - nPos - 1;	
		sTempValue += sDig.substr(0, nDecimal - nDec);
	}					
	return sTempValue;	
}

function FormatCurrency (nValue, sCurrencyFormat)
{	
	var sTempValue = RoundPrice (Math.abs (nValue), 2);	
	var sRemainder = "";
	if (sTempValue.match (/\./) != null) {
		sRemainder = sTempValue.replace (/^.*\./, '');
		sTempValue = sTempValue.replace (/\..*$/, '');
	}		

	var sThousands = "";	
	if (sTempValue.length > 3)
		sThousands = sTempValue.replace (/^(\d+)(\d\d\d)$/, '$1');		
	var sHundreds = sTempValue.substr (sThousands.length, sTempValue.length);		
	if (!sThousands.length)
		sCurrencyFormat = sCurrencyFormat.replace (/XXX.*YYY/, "YYY");
				
	sCurrencyFormat = sCurrencyFormat.replace (/XXX/, sThousands);			
	sCurrencyFormat = sCurrencyFormat.replace (/YYY/, sHundreds);			
	sCurrencyFormat = sCurrencyFormat.replace (/ZZ/,  sRemainder);
	
	if (nValue < 0)
		sCurrencyFormat = "-" + sCurrencyFormat;		
	return sCurrencyFormat;			
}

function GetObjRef(form, objname) 
{
	var objref = null;	
	for (i=0; i < form.elements.length; i++) {
		if (form.elements[i].name.indexOf(objname) != -1) {
			objref = form.elements[i];
			break;
		}		
	}
	return objref;
}

function GetDocumentObject (sId) {       
    var statement = '';	
    
    if (document.all) 
	  statement = "var obj = document.all['" + sId + "']";	     
    else if (document.getElementById)           
	  statement = "var obj = document.getElementById('" + sId + "')"; 
    
	try {
	    eval(statement); 
	    return obj;
	} catch(e) {
	} 
	
    return null;	
}

function CalculateFinancePrice (dPrice, dAPR, nMonths) {
	var nMinValue = Round (dPrice * 3 / 100, 0);
    //var nMonthlyAmount = Math.round (dPrice * ((dAPR / 1200) / (1 - (1 / (Math.pow (1 + (dAPR / 1200), nMonths))))));                          	        
    //nMonthlyAmount = Math.max (nMonthlyAmount, nMinValue);
    //return nMonthlyAmount.toString();
    return nMinValue.toString();
}

function SetLayerText (sLayerId, sText) 
{       		
	sText = sText.replace (/\n/g, "<BR>");
	sText = sText.replace (/\'/g, "\\\'");
			
    var sStatement;
    if (document.all) 
	  sStatement = "document.all['" + sLayerId + "'].innerHTML = '" + sText + "';";	     
    else if (document.getElementById)           
	  sStatement = "document.getElementById('" + sLayerId + "').innerHTML = '" + sText + "';"; 
                        
	try {	    
	    eval (sStatement); 	    	    
	} catch (e) {
		
	}
}

/*********************************************************************************/
/* NETSCAPE FIX RESIZE BUG NS4 */
/*********************************************************************************/
function WM_netscapeCssFix() {
  if (document.WM.WM_netscapeCssFix.initWindowWidth != window.innerWidth ||
        document.WM.WM_netscapeCssFix.initWindowHeight != window.innerHeight) {
     document.location = document.location;
    }
}

function WM_netscapeCssFixCheckIn() {
  if ((navigator.appName == 'Netscape') && (parseInt(navigator.appVersion) == 4)) {
    if (typeof document.WM == 'undefined'){
       document.WM = new Object;
       }
    if (typeof document.WM.WM_scaleFont == 'undefined') {
       document.WM.WM_netscapeCssFix = new Object;
       document.WM.WM_netscapeCssFix.initWindowWidth = window.innerWidth;
       document.WM.WM_netscapeCssFix.initWindowHeight = window.innerHeight;
       }
    window.onresize = WM_netscapeCssFix;
  }
}

WM_netscapeCssFixCheckIn();

function stopError() { return true; }
window.onerror=stopError;

//--------------------------------------------------------------------------------------------
function TInfo ()
{
	this.setupTotal = 0;
	this.monthlyTotal = 0;
	this.sCurrencyFormat0Decimal = '$XXX,YYY';
	this.sCurrencyFormat2Decimal = '$XXX,YYY.ZZ';
	this.format2Decimal = 'XXX,YYY.ZZ';
}

function TC (nCatId, sCatName, sCatCode, sMInfo, nHidden)
{
	this.nCatId = nCatId;
	this.sCatName = sCatName;
	this.sCatCode = sCatCode;
	this.sMInfo = sMInfo;
	this.nHidden = nHidden;
	this.pIL = new Array();
	this.pCL = new Array();
}

function TI (nItemId, sItemDesc, setupPrice, monthlyPrice, nDefaultItem )
{
	this.nItemId = nItemId;
	this.sItemDesc = sItemDesc;
	this.setupPrice = setupPrice;
	this.monthlyPrice = monthlyPrice;
	this.nDefaultItem = nDefaultItem;
	this.pSIL = new Array();
}

//--------------------------------------------------------------------------------------------
function RepaintDefaultPrice () 
{
    GetDefaultPrice ();

    SetLayerText('Total_Setup_Label', FormatCurrency (pInfo.setupTotal, pInfo.sCurrencyFormat2Decimal));
    SetLayerText('Total_Monthly_Label', FormatCurrency (pInfo.monthlyTotal, pInfo.sCurrencyFormat2Decimal));
    SetLayerText('Total_Bottom_Setup_Label', FormatCurrency (pInfo.setupTotal, pInfo.sCurrencyFormat2Decimal));
    SetLayerText('Total_Bottom_Monthly_Label', FormatCurrency (pInfo.monthlyTotal, pInfo.sCurrencyFormat2Decimal));

}

//--------------------------------------------------------------------------------------------

function GetDefaultPrice() {
	var setupTotal = 0;
	var monthlyTotal = 0;

	for (nCatId in pC) {
		var nDefaultItemIndex = GetDefaultItemIndex (pC[nCatId].pIL);

		setupTotal += pC[nCatId].pIL[nDefaultItemIndex].setupPrice;
		monthlyTotal += pC[nCatId].pIL[nDefaultItemIndex].monthlyPrice;

	}

	pInfo.setupTotal = setupTotal;
	pInfo.monthlyTotal = monthlyTotal;
}


function GetDefaultItemIndex (arrIL) {
	for (var i=0; i < arrIL.length; i++) {
		if (arrIL[i].nDefaultItem == 1) return i;
	}		
	
	return -1;
}

function GetDefaultItem (arrIL) 
{
	var nDefaultItemIndex = GetDefaultItemIndex(arrIL);		
	return arrIL[nDefaultItemIndex];		
}

function SetDefaultItem (arrIL, nItemId) 
{	
	for (var i=0; i < arrIL.length; i++)				
		arrIL[i].nDefaultItem = (arrIL[i].nItemId == nItemId) ? 1 : 0;			
}

function GetItemIndex (arrIL, nItemId) 
{
	for (var i=0; i < arrIL.length; i++) {
		if (arrIL[i].nItemId == nItemId)
			return i;
	}		
	
	return -1;
}

function OnClickItem (nCatId, nItemId) {
	SetDefaultItem (pC[nCatId].pIL, nItemId);

	var nDefaultItemIndex = GetDefaultItemIndex (pC[nCatId].pIL);
	UpdateMenu(nCatId, nDefaultItemIndex, pC[nCatId].pIL);

    if (pC[nCatId].pIL[nDefaultItemIndex].nHasSubItems > 0) {				
		var nDefaultSubItemIndex = GetDefaultItemIndex (pC[nCatId].pIL[nDefaultItemIndex].pSIL); 
		
		UpdateMenu(nCatId, nDefaultSubItemIndex, pC[nCatId].pIL[nDefaultItemIndex].pSIL);
	}

	RepaintDefaultPrice ();		

}

//--------------------------------------------------------------------------------------------
function UpdateMenu (nCatId, nDefaultItemIndex, arrIL)
{
	var priceText;
	var defaultSetup = arrIL[nDefaultItemIndex].setupPrice;
	var defaultMonthly = arrIL[nDefaultItemIndex].monthlyPrice;

	for (i=0; i < arrIL.length; i++) {
		priceText = "";
		if (i != nDefaultItemIndex) {
			var sPriceDiff = arrIL[i].setupPrice - defaultSetup;
			var mPriceDiff = arrIL[i].monthlyPrice - defaultMonthly;

			priceText = "&nbsp;[setup <b>";
			if (sPriceDiff >= 0 ) priceText += "+" + Round( sPriceDiff, 2 ) + "&nbsp;";
			else priceText += Round( sPriceDiff, 2 ) + "&nbsp;";

			priceText += "</b>monthly <b>";

			if (mPriceDiff >= 0 ) priceText += "+" + Round( mPriceDiff, 2 ) + "&nbsp;";
			else priceText += Round( mPriceDiff, 2 ) + "&nbsp;";

			priceText += "</b>]";	
		}	    	   

		SetLayerText ("PriceLabel_" + nCatId + "_" + arrIL[i].nItemId, priceText); 

	}	

} 

//-----------------------------------------------------------------------------------------------
// Init Function
//-----------------------------------------------------------------------------------------------
function Init () {
	for (nCatId in pC) {
		var nDefaultItemIndex = GetDefaultItemIndex (pC[nCatId].pIL);
		UpdateMenu(nCatId, nDefaultItemIndex, pC[nCatId].pIL);

	}

	RepaintDefaultPrice();
}

//-----------------------------------------------------------------------------------------------
// Event Functions
//-----------------------------------------------------------------------------------------------
function __doPostBack(eventTarget, eventArgument) {
	var theform;
	if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
		theform = document.forms["PageControlForm"];
	}
	else {
		theform = document.PageControlForm;
	}
	theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
	theform.__EVENTARGUMENT.value = eventArgument;
	theform.submit();
}


function __OnPostBack () 
{		
	var Object = GetObjRef(document.PageControlForm, ":SystemSelection_HtmlInputHidden");				
	Object.value = GetSystemSelection();
	return true;
}

function __OnClick_Details (nCatId) 
{
	var sUrl = "";					
	if (pC[nCatId].sMInfo != '') 
		sUrl = '/Configurator_Pages/Details_Pages/' + pC[nCatId].sMInfo;
	else {
		sUrl = '/Configurator_Pages/Details_Pages/Details_Page.aspx?ItemId=';
				
		var arrItemList = new Array();							
		var nDefaultItemIndex = GetDefaultItemIndex (pC[nCatId].pIL)						
		if (pC[nCatId].nType > 0) {
			for (var i=0; i < pC[nCatId].pIL.length; i++) {
				if (nDefaultItemIndex < 0 || pC[nCatId].pIL[i].nDefaultItem > 0)					
					arrItemList[arrItemList.length] = pC[nCatId].pIL[i].nItemId;
			}						
		} else {		
			var arrSelectedItemId = new Array();						
			if (pC[nCatId].pIL[nDefaultItemIndex].nHasSubItems > 0) 
			{
				var nDefaultSubItemIndex = GetDefaultItemIndex (pC[nCatId].pIL[nDefaultItemIndex].pSIL);					
				arrSelectedItemId[arrSelectedItemId.length] = pC[nCatId].pIL[nDefaultItemIndex].pSIL[nDefaultSubItemIndex].nItemId;
				
				for (var j=0; j < pC[nCatId].pIL[nDefaultItemIndex].pSIL.length; j++) 
					if (nDefaultSubItemIndex != j)
						arrSelectedItemId[arrSelectedItemId.length] = pC[nCatId].pIL[nDefaultItemIndex].pSIL[j].nItemId;												
			} else 
				arrSelectedItemId[arrSelectedItemId.length] = pC[nCatId].pIL[nDefaultItemIndex].nItemId;	
				
			if (arrSelectedItemId[0] != '10000')							
				sUrl += arrSelectedItemId.join('^');								

			for (var i=0; i < pC[nCatId].pIL.length; i++) {
				if (nDefaultItemIndex == i || pC[nCatId].pIL[i].nItemId == '10000')
					continue;
					
				if (pC[nCatId].pIL[i].nHasSubItems > 0) {
					var arrSubItemList = new Array();
					if (pC[nCatId].pIL[i].pSIL.length > 0)
						arrSubItemList[arrSubItemList.length] = pC[nCatId].pIL[i].pSIL[0].nItemId;
						
					for (var j=1; j < pC[nCatId].pIL[i].pSIL.length; j++) 
							arrSubItemList[arrSubItemList.length] = pC[nCatId].pIL[i].pSIL[j].nItemId;
					arrItemList[arrItemList.length] = arrSubItemList.join('^');		
				} else {						
					arrItemList[arrItemList.length] = pC[nCatId].pIL[i].nItemId;
				}		
			}
		}
		
		sUrl += '&ItemIdList=' + arrItemList.join(',');	
	}

	OpenDetailsWindow (sUrl);		
}

