function showStatus(sMsg) {
    window.status = sMsg ;
    return true ;
} // end showStatus()

function confirmDelete(dMsg) {
    if(confirm(dMsg) == true) {
	    return(true);
	} else {
	    return(false);
	} 
} // end confirmDelete

function formatCurrency(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
} // end formatCurrency()

function formatComma(amount)
{
	var delimiter = ",";
	var a = amount.split('.',2)
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if(d.length < 1) { amount = n; }
	else { amount = n + '.' + d; }
	amount = minus + amount;
	return amount;
} // end formatComma()

function showOrderForm(formId, hideId, showId, buttonId)
{
    var showFormId = formId;
	var showForm = document.getElementById(showFormId);
	showForm.style.visibility = "visible";
	showForm.style.display = "block";
	
	var hideLinkId = hideId;
	var hideLink = document.getElementById(hideLinkId);
	hideLink.style.visibility = "hidden";
	
	var showLinkId = showId;
	var showLink = document.getElementById(showLinkId);
	showLink.style.visibility = "visible";
	
	var focusButtonId = buttonId;
	var focusButton = document.getElementById(focusButtonId);
	focusButton.style.visibility = "visible";
	
	
}

function hideOrderForm(formId, hideId, showId, buttonId)
{
    var showFormId = formId;
	var showForm = document.getElementById(showFormId);
	showForm.style.visibility = "hidden";
	showForm.style.display = "none";
	
	var hideLinkId = hideId;
	var hideLink = document.getElementById(hideLinkId);
	hideLink.style.visibility = "hidden";
	
	var showLinkId = showId;
	var showLink = document.getElementById(showLinkId);
	showLink.style.visibility = "visible";
	
	var focusButtonId = buttonId;
	var focusButton = document.getElementById(focusButtonId);
	focusButton.style.visibility = "hidden";
	
	var showDollarId = dollarId;
	var showDollar = document.getElementById(showDollarId);
	showDollar.style.visibility = "visible";
	
}

function showPrice(basePrice, orderForm, formId)
{	
	if (orderForm.order_option) {
		if (isNaN(orderForm.order_option.length)) {
			var result = parseFloat(basePrice);
			result = formatComma(formatCurrency(result));
		}
		else {
			for ( var i = 0; i < orderForm.order_option.length; i++) {
				if(orderForm.order_option[i].checked) {		
					var modifier = orderForm.order_option[i].value;
					var result = parseFloat(basePrice) + parseFloat(modifier);
					result = formatComma(formatCurrency(result));
				}
			}
		}
	}
	else {
		var result = parseFloat(basePrice);
		result = formatComma(formatCurrency(result));
	}
	/*
	var result = parseFloat(basePrice);
	result = formatComma(formatCurrency(result));
	*/
	orderForm.amount.value = parseFloat(result);
	quantity = orderForm.order_quantity.value;
	if(isNaN(quantity)) { quantity = 1; }
	result = formatComma(formatCurrency(result * quantity));

	orderForm.order_price.value = result;
	orderForm.order_price.style.visibility = "visible";
	orderForm.order_button.style.visibility = "visible";
	var dollarId = "dollar_" + formId;
	var dollar = document.getElementById(dollarId);
	dollar.style.visibility = "visible";

	var focusId = "focusbutton_" + formId;
	var focusB = document.getElementById(focusId);
	focusB.style.visibility = "visible";

} // end showPrice()

function popWinImg(winlocation, imgWidth, imgHeight, padWidth, padHeight)
{
    // recitfy height/width
	imgWidth = imgWidth + padWidth;
	imgHeight = imgHeight + padHeight;
	// window attribs
	var winName = "vpImgViewer";
	var winAttributes = "width=" + imgWidth + ",height=" + imgHeight + ",resizable=yes,scrollbars=yes,location=no";
	// calculate window x,y
	var winX = (screen.availWidth - imgWidth) / 2;
	var winY = (screen.availHeight - imgHeight) / 2;
	// pop window
	var imgWin;
	imgWin = window.open(winlocation, winName, winAttributes);
	// center window
	imgWin.moveTo(winX,winY);
	imgWin.focus();
} // end popWin()

// ************************
// layer utility routines *
// ************************

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} // getStyleObject

function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	return false;
    }
} // changeObjectVisibility

function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.left = newXCoordinate;
	styleObject.top = newYCoordinate;
	return true;
    } else {
	// we couldn't find the object, so we can't very well move it
	return false;
    }
} // moveObject

// ********************************
// position location functions    *
// ********************************

function getElementLeft(eObj)
{
	var nLeftPos = eObj.offsetLeft;                // initialize var to store calculations
    var eParElement = eObj.offsetParent;           // identify first offset parent element  
    while (eParElement != null)
    {                                              // move up through element hierarchy
        nLeftPos += eParElement.offsetLeft;        // appending left offset of each parent
        eParElement = eParElement.offsetParent;    // until no more offset parents exist
    }
    return nLeftPos;                               // return the number calculated
}

function getElementRight(eObj)
{
    var nRightPos = eObj.offsetWidth;              // init var to store calculations
	nRightPos = nRightPos + getElementLeft(eObj);  // add width to leftOffset
	return nRightPos;                              // return value
}

function getElementTop(eObj)
{
	var nTopPos = eObj.offsetTop;                  // initialize var to store calculations
    var eParElement = eObj.offsetParent;           // identify first offset parent element  
    while (eParElement != null)
    {                                              // move up through element hierarchy
        nTopPos += eParElement.offsetTop;          // appending top offset of each parent
        eParElement = eParElement.offsetParent;    // until no more offset parents exist
    }
    return nTopPos;                                // return the number calculated
}

function getElementBottom(eObj)
{
    var nBottomPos = eObj.offsetHeight;            // init var to store calculations
	nBottomPos = nBottomPos + getElementTop(eObj); // add height to top offset
	return nBottomPos;                             // return value
}

// ********************************
// application-specific functions *
// ********************************
function showMenu(menuNumber, elementObj, eventObj, menuPosition, menuParent, menuGrandParent, menuGreatGrandParent)
//function showMenu(menuNumber, elementObj, eventObj, menuPosition) 
{
	hideAllMenus(menuNumber, menuParent, menuGrandParent, menuGreatGrandParent);
    //hideAllMenus();

	// Calculate Element Id
	var id = elementObj.id;
	// Get reference to Element Obj
	var elementId = document.getElementById(id);
	// Calculate Element Position	
	if (menuParent) {
	    var posLeft   = getElementLeft(elementId.parentNode)   + 'px';
	    var posRight  = getElementRight(elementId.parentNode)  + 'px';
	    var posTop    = getElementTop(elementId.parentNode)    + 'px';
	    var posBottom = getElementBottom(elementId.parentNode) + 'px';
	} else {
	    var posLeft   = getElementLeft(elementId)   + 'px';
	    var posRight  = getElementRight(elementId)  + 'px';
	    var posTop    = getElementTop(elementId)    + 'px';
	    var posBottom = getElementBottom(elementId) + 'px';
	}
	//alert("Left X: " + posLeft + " | " + "Right X: " + posRight + " | " + "Top Y: " + posTop + " | " + "Bottom : " + posBottom);
    
    var menuId = subMenuPrefix + menuNumber;
	
	var menuStyle = getStyleObject(menuId);
	
	// Position Menu Layer
	if (menuPosition == 'vertical') {
	    moveObject(menuId, posRight, posTop);
	}
	if (menuPosition == 'vertleft') {
		var width = (getElementLeft(elementId) - (getElementRight(elementId) - getElementLeft(elementId))) + 'px';
	    moveObject(menuId, width, posTop);
	}
	else if (menuPosition == 'horizontal') {
	    moveObject(menuId, posLeft, posBottom);
	}
	
	if(changeObjectVisibility(menuId, 'visible')) {		
		/*
		var menuTitle = getStyleObject(id);
		menuTitle.backgroundColor = '{color_light}';
		*/
		eventObj.cancelBubble = true;
		return true;
    } else {
		return false;
    }
}

//function hideAllMenus(menuParent, menuGrandParent, menuGreatGrandParent) {
function hideAllMenus(menuNumber, menuParent, menuGrandParent, menuGreatGrandParent) {
    for(counter = 1; counter <= numMenus; counter++) {
		if ( (menuNumber != counter) && (menuParent != counter) && (menuGrandParent != counter) && (menuGreatGrandParent != counter) ) {
		    changeObjectVisibility(subMenuPrefix + counter, 'hidden');	
		}
	}	
}