// Support.js - 
// DHTML & Javascript support functions

// Browser Detection
var browserVersion = parseInt(navigator.appVersion);
var isOpera = navigator.userAgent.indexOf("Opera") >= 0;
var isIE = navigator.userAgent.indexOf("MSIE") >= 0;
var isNav = navigator.userAgent.indexOf("Nav") >= 0;
var isNet = navigator.userAgent.indexOf("Net") >= 0;
var isIE4 = isIE && browserVersion>=4;
var isNav4 = isNav && browserVersion>=4;
var isNS = false;
if( isNav || isNet )
	isNS = true;
if( isOpera )
	isIE = false;

// Add innerText for Mozilla
if( typeof HTMLElement != "undefined" )
{
	HTMLElement.prototype.__defineSetter__("innerText",
	function (sText) {
	   this.innerHTML = sText.replace(/\&/g,
	"&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
	});
}

// Whitespace trimmer
function trim( s )
{
	var spc = 0;
	s = new String(s);

	for( var i=0; i<s.length; i++ )
	{
		if( s.charAt(i) == ' ' || s.charAt(i) == '\\n' || s.charAt(i) == '\\r' )
			spc++;
		else
			break;
	}

	var end = s.length;
	for( var i=s.length; i>spc; i-- )
	{
		if( s.charAt(i) == ' ' || s.charAt(i) == '\\n' || s.charAt(i) == '\\r' )
			end--;
		else
			break;
	}

	return s.substring(spc,end);
}
	
//	
function getWindowSize()
{
	var o = new Object();

	if( typeof( window.innerWidth ) == 'number' )
	{
		o.width = window.innerWidth;
    	o.height = window.innerHeight;
  	}
  	else
  	{
		if( document.documentElement && 
			(document.documentElement.clientWidth || document.documentElement.clientHeight ) )
		{
			o.width = document.documentElement.clientWidth;
	      	o.height = document.documentElement.clientHeight;
		}
		else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
		{
			o.width = document.body.clientWidth;
        	o.height = document.body.clientHeight;
      	}
	}

	return o;
}

//
function getScrollPos()
{
	var o = new Object();

	o.x = 0;
	o.y = 0;

	if( typeof( window.pageYOffset ) == 'number' )
	{
		o.x = window.pageXOffset;
		o.y = window.pageYOffset;
	}
	else
	{
		if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
		{
			o.x = document.body.scrollLeft;
			o.y = document.body.scrollTop;
		}
		else
		{
			if( document.documentElement &&
					( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
				{
					o.x = document.documentElement.scrollLeft;
					o.y = document.documentElement.scrollTop;
				}
		}
	}

	return o;
}

//
function displaceLayer( sName, sAxis, nFactor)
{
	var sAccessor = 'top';
	var nValue = 0;
	var oLayer = getLayerProperties(sName);

	sAxis = new String(sAxis);
	sAxis = sAxis.toUpperCase();

	if( sAxis == 'X' )
	{
		nValue = oLayer.left + nFactor;
		sAccessor = 'left'; 
	}

	if( sAxis == 'Y' )
		nValue = oLayer.top + nFactor;

	if( document.getElementById && document.getElementById(sName) != null )
	{
		eval( 'document.getElementById("' + sName + '").' + sAccessor + '="' + nValue + 'px"' );
	}
	else if( document.layers && document.layers[sName] != null )
	{
		eval( 'document.layers[sName].style.' + sAccessor + '="' + nValue + 'px"' );
	}
	else if( document.all && document.all[sName] != null )
	{
		eval( 'document.all[sName].style.' + sAccessor + '="' + nValue + 'px"' );
	}
}

//
function setVisibility( sName, bShow )
{
	sSetVis = 'visible';
	if( bShow == false )
		sSetVis = 'hidden';

	if( document.getElementById && document.getElementById(sName) != null )
		document.getElementById(sName).style.visibility = sSetVis;
	else if( document.layers && document.layers[sName] != null )
		document.layers[sName].visibility = sSetVis;
	else if( document.all && document.all[sName] != null )
		document.all[sName].style.visibility = sSetVis;
}

//
function setLayerPos( sName, nX, nY )
{
	if( document.getElementById && document.getElementById(sName) != null )
	{
		if( nX != null )
			document.getElementById(sName).style.left = nX + 'px';

		if( nY != null )
			document.getElementById(sName).style.top = nY + 'px';
	}
	else if( document.layers && document.layers[sName] != null )
	{
		if( nX != null )
			document.layers[sName].left = nX + 'px';

		if( nY != null )
			document.layers[sName].top = nY + 'px';
	}
	else if( document.all && document.all[sName] != null )
	{
		if( nX != null )
			document.all[sName].style.left = nX + 'px';

		if( nY != null )
			document.all[sName].style.top = nY + 'px';
	}
}

//
function getLayerProperties( sName )
{
	return doGetLayerProperties( sName, -1 );
}

//
function doGetLayerProperties( sName, nInit )
{
	var o = new Object();
	o.left = nInit; 	o.right = nInit; 	o.top = nInit;		
	o.bottom = nInit;	o.offsetHeight = nInit;
	
	if( document.getElementById && document.getElementById(sName) != null )
	{
		if( document.getElementById(sName).style.left != '' )
			o.left = parseInt( document.getElementById(sName).style.left );

		if( document.getElementById(sName).style.right != '' )
			o.right = parseInt( document.getElementById(sName).style.right );

		if( document.getElementById(sName).style.top != '' )
			o.top = parseInt( document.getElementById(sName).style.top );

		if( document.getElementById(sName).style.bottom != '' )
			o.bottom = parseInt( document.getElementById(sName).style.bottom );

		o.offsetHeight = parseInt( document.getElementById(sName).offsetHeight );
	}
	else if( document.layers && document.layers[sName] != null )
	{
		if( document.layers[sName].left != '' )
			o.left = parseInt( document.layers[sName].left );
			
		if( document.layers[sName].right != '' )
			o.right = parseInt( document.layers[sName].right );
			
		if( document.layers[sName].top != '' )
			o.top = parseInt( document.layers[sName].top );
		
		if( document.layers[sName].bottom != '' )
			o.bottom = parseInt( document.layers[sName].bottom );
			
		eval( 'o.offsetHeight = parseInt(document.' + sName + '.document.offsetHeight);' );
	}
	else if( document.all && document.all[sName] != null )
	{
		if( document.all[sName].style.left != '' )
			o.left = parseInt( document.all[sName].style.left );
		
		if( document.all[sName].style.right != '' )
			o.right = parseInt( document.all[sName].style.right );
		
		if( document.all[sName].style.top != '' )
			o.top = parseInt( document.all[sName].style.top );
		
		if( document.all[sName].style.bottom != '' )
			o.bottom = parseInt( document.all[sName].style.bottom );
			
		o.offsetHeight = parseInt( document.all[sName].offsetHeight );
	}
	else
		return null;

	o.width = o.right - o.left;
	o.height = o.bottom - o.top;

	return o;
}

// Window opener
function openWindow( uri, wndName, features )
{
	window.open( uri, wndName, features );
}