//handy functions in javascript

//what part of page is visible w h
function getVisibleWindowSize() {
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [myWidth, myHeight]
}

//full page size w h
function getPageSize() {
	var xScroll, yScroll, windowWidth, windowHeight;
	var windowSize = getVisibleWindowSize();
	
	windowWidth = windowSize[0];
	windowHeight = windowSize[1];
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		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;
	}
	
	// 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 = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
	return [pageWidth, pageHeight];
}

//how many scrolled pixels x y
function getScrollOffsets() {
	var xScroll, yScroll;
	
	if (window.innerWidth) {
		//GOOD browsers
		xScroll=window.pageXOffset;
		yScroll=window.pageYOffset;
	} else {
		//the one and only BAD browser: IE
		var iebody=(document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
		xScroll=document.all? iebody.scrollLeft : pageXOffset;
		yScroll=document.all? iebody.scrollTop : pageYOffset;
	}
	
	return [xScroll, yScroll];
}

//show, hide element
function PopUpWin(strURL,strInstance,strParameters)
	{
	window.open(strURL,strInstance,strParameters);
	}
	
function ShowElementById(Id)
	{
	document.getElementById(Id).style.visibility = 'visible';
	}
	
function HideElementById(Id)
	{
	document.getElementById(Id).style.visibility = 'hidden';
	}
	
function ShowHideElementById(Id)
	{
	if (document.getElementById(Id).style.visibility == 'hidden')
		{
		ShowElementById(Id);
		}
	else
		{
		HideElementById(Id);
		}
	}
			

function str_rpl(str_searchfor, str_replacewith, str_target) {
	var str_result = str_target.replace(str_searchfor, str_replacewith);
	return str_result;
}

//for jquery ui checkbox-label combinations
function strChkToggle(chkElementId, lblElementId, strSearch, strReplaceChecked, strReplaceUnchecked) {
	var str_toggle = document.getElementById(lblElementId).innerHTML;
	
	if (document.getElementById(chkElementId).checked) {
		document.getElementById(lblElementId).innerHTML = str_toggle.replace(strSearch, strReplaceChecked);
	} else {
		document.getElementById(lblElementId).innerHTML = str_toggle.replace(strSearch, strReplaceUnchecked);
	}
}
												


