/*
	# $Id: Common.js,v 1.4 2008/02/15 13:25:15 danielk Exp $
*/


	/*
		This function should be deprecated as functions like this are inside prototype
	*/
	function include_dom(script_filename,id) {
		var html_doc = document.getElementsByTagName('head').item(0);
		var js = document.createElement('script');
		js.setAttribute('language', 'javascript');
		js.setAttribute('type', 'text/javascript');
		js.setAttribute('src', script_filename);
		if (id) {
			js.setAttribute('id', id);
		}
		html_doc.appendChild(js);
		return false;
	}
	
	
	function isMSIE() {
	    return navigator.appName.indexOf("Microsoft Internet Explorer") > -1;
	}
	
	/* Start lightbox.js */
	
	function getPageScroll(){
		var yScroll;
	
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
		}
	
		var arrayPageScroll = new Array('',yScroll) 
		return arrayPageScroll;
	}
	
	
	function getPageSize(){
		var xScroll, yScroll, windowWidth, windowHeight, pageHeight, arrayPageSize;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}
	
		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
		return arrayPageSize;
	}
	
	
	function pause(numberMillis) {
		var now = new Date();
		var exitTime = now.getTime() + numberMillis;
		while (true) {
			now = new Date();
			if (now.getTime() > exitTime)
				return;
		}
	}
		
	
	function showLightbox(doResize) {
		if (arguments.length == 0) {
			doResize = true;
		}
		// prep objects
		var objOverlay = document.getElementById('overlay');
		var objLightbox = document.getElementById('lightbox');
		
		var arrayPageSize = getPageSize();
		var arrayPageScroll = getPageScroll();
		
		// set height of Overlay to take up whole page and show
		objOverlay.style.height = (arrayPageSize[1] + 'px');
		if (isMSIE()) {
			objOverlay.style.width = (arrayPageSize[0] + 'px');
		}
		objOverlay.style.display = 'block';
	
		// Hide select boxes as they will 'peek' through the image in IE
		selects = document.getElementsByTagName("select");
	    for (i = 0; i != selects.length; i++) {
	    	selects[i].style.visibility = "hidden";
	    }
	
		objLightbox.style.display = 'block';
	
		if (doResize) {
			var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - $('lightbox').offsetHeight) / 2);
			var lightboxLeft = (arrayPageSize[0] - $('lightbox').offsetWidth) / 2;
			objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
			objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";
		}
		
		// After div is loaded, update the overlay height as the new div might have increased the overall page height.
		var arrayPageSize = getPageSize();
		objOverlay.style.height = (arrayPageSize[1] + 'px');
			
		return false;
	}
	
	
	function hideLightbox() {
		// get objects
		var objOverlay = document.getElementById('overlay');
		var objLightbox = document.getElementById('lightbox');
	
		// hide lightbox and overlay
		objOverlay.style.display = 'none';
		objLightbox.style.display = 'none';
	
		// make select boxes visible
		selects = document.getElementsByTagName("select");
	    for (var i = 0; i != selects.length; i++) {
			selects[i].style.visibility = "visible";
		}
	}
	/* End lightbox.js */
	
	/* 	
		Returns the number into the monetary format.
		Number.formatMoney([floatPoint: Integer = 2], [decimalSep: String = ","], [thousandsSep: String = "."]): String
	    floatPoint
	        amount of decimal places
	    decimalSep
	        string that will be used as decimal separator
	    thousandsSep
	        string that will be used as thousands separator
	*/
	
	Number.prototype.formatMoney = function(c, d, t){
	    var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t,
	    i = parseInt(n = (+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	    return (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t)
	    + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
	};

	