// JavaScript Document
// Name javascript.browser.js
// Description: Provides browser related functionality
// Compatibility: IE 5-6, Netscape 6 - 7

var IS_IE = (document.all)?true:false;
//Returns a reference to an object by id
function getObject(id) {
	var obj = document.getElementById(id);
	return obj;
}
//Initiates print prompt
function printit() {
    if (window.print) {
        window.print() ;
    } else {
        var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
        document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
        WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";
    }
}
//Returns browser name and version as an array [version, name]
function getVersion() {
	var bro;
	var aVer = navigator.userAgent;
	var verNo = 4.0;
	switch(true) {
		case aVer.indexOf("MSIE") != -1:
			verNo = aVer.substring(aVer.indexOf("MSIE")+4,aVer.indexOf("MSIE")+8);
			verNo = parseFloat(verNo);
			bro = "MSIE";
			break;
		case aVer.indexOf("Netscape") != -1:
			verNo = aVer.substring(aVer.lastIndexOf("/")+1);
			verNo = parseFloat(verNo);
			bro = "Netscape";
			break;
		case aVer.indexOf("Firefox") != -1:
			verNo = aVer.substring(aVer.lastIndexOf("/")+1);
			verNo = parseFloat(verNo);
			bro = "Firefox";
			break;
		default:
			verNo = aVer.substring(aVer.lastIndexOf("/")+1);
			verNo = parseFloat(verNo);
			bro = "Other";
	}
	return [verNo, bro];
}
//Returns correct window height
function getWindowHeight() {
	bdyHght = 0;
	var bwVer = getVersion();
	if(bwVer[1] == "MSIE") {
		var navVer = bwVer[0];
		if(navVer >= 5.5) {
			bdyHght = parseInt(document.documentElement.clientHeight);
		} else {
			bdyHght = parseInt(document.body.clientHeight);
		}
		if(bdyHght == 0) {
			bdyHght = parseInt(document.documentElement.clientHeight) + parseInt(document.body.clientHeight);
		}
	} else {
		bdyHght = window.innerheight;
	}
	return bdyHght;
}
//Returns correct window width
function getWindowWidth() {
	bdyWdth = 0;
	var bwVer = getVersion();
	if(bwVer[1] == "MSIE") {
		var navVer = bwVer[0];
		if(navVer >= 5.5) {
			bdyWdth = parseInt(document.documentElement.clientWidth);
		} else {
			bdyWdth = parseInt(document.body.clientWidth);
		}
		if(bdyWdth == 0) {
			bdyWdth = parseInt(document.documentElement.clientWidth) + parseInt(document.body.clientHeight);
		}
	} else {
		bdyWdth = window.innerwidth;
	}
	return bdyWdth;
}
//Returns correct scroll top position
function getScrollTop() {
	var scrollHeight = 0;
	var bwVer = getVersion();
	if(bwVer[1] == "MSIE") {
		var navVer = bwVer[0];
		if(navVer >= 5.5) {
			scrollHeight = parseInt(document.documentElement.scrollTop);
		} else {
			scrollHeight = parseInt(document.body.scrollTop);
		}
	} else {
		scrollHeight = window.pageYOffset;
	}
	return scrollHeight;	
}
//Returns correct scroll left position
function getScrollLeft() {
	var scrollWidth = 0;
	var bwVer = getVersion();
	if(bwVer[1] == "MSIE") {
		var navVer = bwVer[0];
		if(navVer >= 5.5) {
			scrollHeight = parseInt(document.documentElement.scrollLeft);
		} else {
			scrollHeight = parseInt(document.body.scrollLeft);
		}
	} else {
		scrollHeight = window.pageXOffset;
	}
	return scrollHeight;	
}

//Returns an Outer HTML of an object (works in Mozilla browsers)
function getOuterHTML(obj) {
	var out = "";
	if(!IS_IE) {	//Netscape fix for outerHTML (has none);
		var tmpTag = document.createElement("temp");
		tmpTag.appendChild(obj);
		out = tmpTag.innerHTML;
	} else {
		out = obj.outerHTML;
	}
	return out;	
}

String.prototype.trim = function() {
     return this.replace(/^\s+|\s+$/gm,'');
}

String.prototype.clean = function() {
     return this.replace(/\s/gm,' ');
}

String.prototype.capitalize = function() {
     var tStr = this.toLowerCase();
	 return tStr.charAt(0).toUpperCase() + tStr.substring(1);
}
//Date functions
//Increments Year by Value (can be negative)
Date.prototype.incrementYear = function(val) {
		var nDate = new Date((this.getYear()+val), this.getMonth(), this.getDate());
		return nDate;	
}
//Increments Month by Value
Date.prototype.incrementMonth = function(val) {
	var nDate = new Date(this.getYear(), (this.getMonth()+val), this.getDate());
	return nDate;	
}
//Increments Date by Value
Date.prototype.incrementDate = function(val) {
	var nDate = new Date(this.getYear(), this.getMonth(), (this.getDate() + val));
	return nDate;	
}
//Parses Date in a short format (mm/dd/yyyy);
Date.prototype.parseShortDate = function(strDate) {
	var dp = strDate.split("/");
	if(dp.length > 0) {
		return new Date(dp[2],(parseInt(dp[0])-1),parseInt(dp[1]));
	} else {
		return null;
	}
}
//Converts Date to a short format string (mm/dd/yyyy);
Date.prototype.toShortDate = function() {
	var mm = ((this.getMonth()+1) < 10)?"0"+(this.getMonth()+1):(this.getMonth()+1);
	var dd = (this.getDate() < 10)?"0"+this.getDate():this.getDate();
	var yy = this.getFullYear();
	return mm + "/" + dd + "/" + yy;
}
