var isNav4=false;
var isNav6=false;
var isIE4=false;
var isIE40=false;
/*
 * Browser version snooper; determines your browser
 * (Navigator 4, Navigator 6, or Internet Explorer 4/5)
 */
function setBrowser()
{
	if ((navigator.appVersion.indexOf("MSIE 4") >= 0) && (navigator.appName.indexOf("Explorer") >= 0))
	{
		isIE40 = true;
	}
	else {
	    if (navigator.appVersion.charAt(0) == "4")
		{
			if (navigator.appName.indexOf("Explorer") >= 0)
			{
			isIE4 = true;
			}
			else
			{
				isNav4 = true;
			}
		}
		else if (navigator.appVersion.charAt(0) > "4")
		{
			isNav6 = true;
		}
	}
}

/*
 * Given an id and a property (as strings), return
 * the given property of that id.  Navigator 6 will
 * first look for the property in a tag; if not found,
 * it will look through the stylesheet.
 *
 * Note: do not precede the id with a # -- it will be
 * prepended when searching the stylesheets
 */
function getIdProperty( id, property )
{
    if (isNav6)
    {
        var styleObject = document.getElementById( id );
        if (styleObject != null)
        {
            styleObject = styleObject.style;
            if (styleObject[property])
            {
                return styleObject[ property ];
            }
        }
        styleObject = getStyleBySelector( "#" + id );
        return (styleObject != null) ?
            styleObject[property] :
            null;
    }
    else if (isNav4)
    {
        return document[id][property];
    }
    else
    {
        return document.all[id].style[property];
    }
}

/*
 * Given an id and a property (as strings), set
 * the given property of that id to the value provided.
 *
 * The property is set directly on the tag, not in the
 * stylesheet.
 */
function setIdProperty( id, property, value )
{
    if (isNav6)
    {
        var styleObject = document.getElementById( id );
        if (styleObject != null)
        {
            styleObject = styleObject.style;
            styleObject[ property ] = value;
        }
        
        /*
        styleObject = getStyleBySelector( "#" + id );
        if (styleObject != null)
        {
            styleObject[property] = value;
        }
        */
    }
    else if (isNav4)
    {
        document[id][property] = value;
    }
    else if (isIE4)
    {
         document.all[id].style[property] = value;
    }
}

/*
 * Move a given id to position (xValue, yValue)
 */
function moveTo( id, x, y )
{
    generic_move( id, x, y, false );
}

/*
 * Move a given id to (currentX + xValue, currentY + yValue)
 */
function moveBy( id, x, y)
{
    generic_move( id, x, y, true );
}

/*
 * Function used when converting rgb format colors
 * from Navigator 6 to a hex format
 */ 
function hex( n )
{
    var hexdigits = "0123456789abcdef";
    return ( hexdigits.charAt(n >> 4) + hexdigits.charAt(n & 0x0f) );
}

/*
 * Retrieve background color for a given id.
 * The value returned will be in hex format (#rrggbb)
 */ 
function getBackgroundColor( id )
{
    var color;

    if (isNav4)
    {
        color = document[id].bgColor;
    }
    else if (isNav6)
    {
        var parseExp = /rgb.(\d+),(\d+),(\d+)./;
        var rgbvals;
        color = getIdProperty( id, "backgroundColor" );
        if (color)
        {
            rgbvals = parseExp.exec( color );
            if (rgbvals)
            {
                color = "#" + hex( rgbvals[1] ) + hex( rgbvals[2] ) +
                    hex( rgbvals[3] );
            }
        }
        return color;
    }
    else if (isIE4)
    {
        return document.all[id].backgroundColor;
    }
    return "";
}

/*
 * Return a division's document
 */
function getDocument( divName )
{
    var doc;

    if (isNav4)
    {
        doc = window.document[divName].document;
    }
    else if (isNav6)
    {
        doc = document;
    }
    else if (isIE4)
    {
        doc = document;
    }
    return doc;
}


function elementById( elementString ) { 
  if( document.all ) 
    return eval( "document.all." + elementString + ".style" ); 
  if( document.layers ) 
    return eval( "document.layers." + elementString ); 
  if( document.getElementById ) 
    return document.getElementById( elementString ).style; 
}  

function MoveTo(obj,x,y) 
{ 
     if (parseInt(navigator.appVersion) >= 5 || navigator.appVersion.indexOf["MSIE 5"] != -1) 
     { 
         obj.style.position = "absolute";
         var units = (MoveTo.arguments.length > 3) ? MoveTo.arguments[3] : "px";
         obj.style.left = x + units; 
         obj.style.top = y + units; 
     } 
} 

function MoveBy(obj,x,y) 
{ 
     if (parseInt(navigator.appVersion) >= 5 || navigator.appVersion.indexOf["MSIE 5"] != -1) 
     { 
         obj.style.left = parseInt(obj.style.left) + x; 
         obj.style.top = parseInt(obj.style.top) + y; 
     } 
} 

function HideShow(obj) 
{ 
    if (parseInt(navigator.appVersion) >= 5 || navigator.appVersion.indexOf["MSIE 5"] != -1) 
    {
        if (obj.style.display=="none") 
             obj.style.display="";
        else
             obj.style.display="none";
    }
} 

function dynamiccontentNS6(elementid,content){
	if (document.getElementById){
	rng = document.createRange();
	el = document.getElementById(elementid);
	rng.setStartBefore(el);
	htmlFrag = rng.createContextualFragment(content);
	while (el.hasChildNodes())
		el.removeChild(el.lastChild);
		el.appendChild(htmlFrag);
	}
}
