var scriptURL = "";
var themeURL = "";
var t = new Date().getTime()
var menuitems = new Array();
var loaderIframe = null;

function now() { return new Date().getTime(); }

function findObj(n,d)
{
	var p,i,x;

	if (!d) d = document;

	if ((p = n.indexOf("?")) > 0 && parent.frames.length)
	{
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0,p);
	}

  	if (!(x = d[n]) && d.all) x = d.all[n];

	for (i=0;!x && i < d.forms.length;i++) x = d.forms[i][n];

	for(i=0;!x && d.layers && i < d.layers.length;i++) x = findObj(n,d.layers[i].document);

	if(!x && d.getElementById) x = d.getElementById(n);

	return x;
}

function getAbsoluteLeft(o)
{
	var oParent;
	var oLeft = o.offsetLeft;
	
	while(o.offsetParent!=null)
	{
		oParent = o.offsetParent
		oLeft += oParent.offsetLeft
		o = oParent
	}
	return oLeft
}

function getAbsoluteTop(o)
{
	var oParent;
	var oTop = o.offsetTop;
	
	while(o.offsetParent!=null)
	{
		oParent = o.offsetParent
		oTop += oParent.offsetTop
		o = oParent
	}
	return oTop
}

function getIFrameDocument(frame)
{
	var d;
	
	if (frame)
	{		
		if (!d && frame.contentDocument) d = frame.contentDocument;
		if (!d && frame.contentWindow) d = frame.contentWindow;
		if (!d && frame.contentWindow) d = frame.contentWindow.document;
		if (!d && frame.document) d = frame.document;
		
	}
	
	return d;
}

function getMouseXY(e) {
	if (!e) e = window.event;
	if (e.target) tempTarg = e.target;
	else if (e.srcElement) tempTarg = e.srcElement;
	// defeat Safari bug
	if (tempTarg.nodeType == 3) tempTarg = tempTarg.parentNode;
	
	if (document.all) // grab the x-y pos.s if browser is IE
	{
	    tempX = e.clientX + document.body.scrollLeft;
	    tempY = e.clientY + document.body.scrollTop;
	}
	else // grab the x-y pos.s if browser is NS
	{  
		tempX = e.pageX
		tempY = e.pageY
	}  
	// catch possible negative values in NS4
	if (tempX < 0) tempX = 0;
	if (tempY < 0) tempY = 0;
  
	return true
}

function getKeyCode(e)
{
	var keycode;
	
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else keycode = 0;
	
	return keycode;
}

function highLightElement(element)
{
	// set row style to highLighted	style
	element.style.backgroundColor = "#4477AA";
	element.style.color = "#FFFFFF";
	element.style.cursor = "default";
}

var ns			=	(window.navigator.appName.toLowerCase() == "netscape");
var ie			=	(window.navigator.appName.toLowerCase() == "microsoft internet explorer");
var agt			=	navigator.userAgent.toLowerCase();
var is_major	=	parseInt(navigator.appVersion);
var is_ie4up	=	(ie && (is_major >= 4));

function visibleDivCentered(lyrname,lyrwidth,lyrheight,doc)
{
	getwindowdims();
	// to center the window we need to know the window width and height	
	
	starty = getpagescrolly() + ((w_y / 2) - (lyrheight /2));
	startx = getpagescrollx() + ((w_x / 2) - (lyrwidth /2));


	visibleDiv(lyrname,startx,starty,doc);	
}

function getpagescrollx()
{
	if(is_ie4up)return document.documentElement.scrollLeft;
	else return window.pageXOffset;
}

function getpagescrolly()
{
	if(is_ie4up)return document.documentElement.scrollTop;
	else return window.pageYOffset;
}


function getwindowdims()
{	
	w_y=(is_ie4up)?document.documentElement.clientHeight:window.innerHeight;
	w_x=(is_ie4up)?document.documentElement.clientWidth:window.innerWidth;
}

function visibleDiv(divname,x,y,doc)
{
	if (doc == null) doc = document;
	
	if (doc.getElementById(divname))
	{
    	if(x != null) doc.getElementById(divname).style.left = x + "px";
    	if(y != null)  doc.getElementById(divname).style.top = y + "px";

		doc.getElementById(divname).style.visibility = 'visible';
	}
}

function removeArrayItem(arr,arritem)
{
	var i = 0;
	
	while (i < arr.length)
	{
		if (arr[i] == arritem) arr.splice(i,1);
		else i++;
	}
}

function backgroundLoadPage(url,doc)
{
	if (doc == null) doc = document;
	
	if (url.indexOf("&") > -1 || url.indexOf("?") > -1) url = url + "&t=" + now();
	else url = url + "?t=" + now();
	
	if (!loaderIframe)
	{
		loaderIframe = doc.createElement("IFRAME"); 
		loaderIframe.style.display = "none";
		doc.body.appendChild(loaderIframe);		
	}
	
	loaderIframe.setAttribute("src", url);
}

/********************************************************************************
 Cookie functions
********************************************************************************/
function cookiesEnabled()
{
	var enabled = (navigator.cookieEnabled)? true : false;

	//if not IE4+ nor NS6+
	if (typeof navigator.cookieEnabled == "undefined" && !enabled)
	{ 
		setCookie("cookietest","working",1);
		enabled = (getCookie("cookietest") == "working");
		deleteCookie("cookietest");
	}
}

function deleteCookie (name,path,domain)
{
	if (getCookie(name))
	{
		if (!path) path = "/";
		
		document.cookie = name + "=" + 
			((path) ? "; path=" + path : "") + 
			((domain) ? "; domain=" + domain : "") + 
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function getCookie(name)
{
	name += '=';
	var c = document.cookie.split('; ');
	for (var i in c)
	{
		if (c[i].lastIndexOf(name, 0) == 0) return unescape(c[i].substr(name.length));
	}
	return null;
}

function setCookie(name,value,expires,path,domain,secure)
{
	if (!expires)
	{
		expires = new Date();
		expires.setTime(expires.getTime() + (365 * 24 * 60 * 60 * 1000));
	}
	
	if (!path) path = "/";
	
	document.cookie= name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}
/********************************************************************************
 Form field functions
********************************************************************************/
function addSelectItem(element,value,description)
{
	var elOptNew = document.createElement('option');	
	elOptNew.text = description;
  elOptNew.value = value;

  try {
    element.add(elOptNew, null); // standards compliant; doesn't work in IE
  }
  catch(ex) {
    element.add(elOptNew); // IE only
  }
	
	//element.options[element.options.length] = new Option(description,value);
}

function clearSelect(element)
{
	while (element.options.length > 0) element.remove(0);
	element.options.length = 0;	
	element.options[0] = null;	
}

function getRadioSelectedIndex(element)
{
	for (var i = 0; i < element.length; i++) if (element[i].checked) return i;
	
	return -1;
}

function getRadioSelectedValue(element)
{
	if (element.length != null) for (var i = 0; i < element.length; i++) { if (element[i].checked) return element[i].value; }
	else if (element.checked) return element.value;
	
	return "";
}

function getSelectItemTextIndex(element,text)
{
	var index = -1;
	text = text.toUpperCase();
	
	for (var i = 0; i < element.options.length; i++)
	{
		if (element.options[i].text.toUpperCase() == text)
		{
			index = i;
			break;
		}
	}
	
	return index;
}


function getSelectItemValueIndex(element,value)
{
	var index = -1;
	value = value.toUpperCase();
	
	for (var i = 0; i < element.options.length; i++)
	{
		if (element.options[i].value.toUpperCase() == value)
		{
			index = i;
			break;
		}
	}
	
	return index;
}

function setRadioItemIndex(element,value,defvalue)
{
	var defindex = -1,foundit = false;
	
	value = value.toUpperCase();

	if (!defvalue) defvalue = "";
	else defvalue = defvalue.toUpperCase();
	
	for (var i = 0; i < element.length; i++)
	{
		if (element[i].value.toUpperCase() == defvalue) defindex = i;
		
		if (element[i].value.toUpperCase() == value)
		{
			element[i].checked = true;
			return i;
		}
	}
	
	element[defindex].checked = true;
	return defindex;
}

function setSelectItemIndex(element,value,defvalue)
{
	var defindex = -1;
	value = value.toUpperCase();
	element.selectedIndex = -1;

	if (!defvalue) defvalue = "/*-NOMATCH";
	else defvalue = defvalue.toUpperCase();
	
	for (var i = 0; i < element.options.length; i++)
	{
		if (element.options[i].value.toUpperCase() == defvalue) defindex = i;
		
		if (element.options[i].value.toUpperCase() == value)
		{
			element.selectedIndex = i;
			break;
		}
	}
	
	if (element.selectedIndex == -1 && defvalue != "/*-NOMATCH") element.selectedIndex = defindex;
}

function setSelectItemTextIndex(element,text,defvalue)
{
	var defindex;
	text = text.toUpperCase();
	element.selectedIndex = -1;

	if (!defvalue) defvalue = "/*-NOMATCH";
	else defvalue = defvalue.toUpperCase();
	
	for (var i = 0; i < element.options.length; i++)
	{
		if (element.options[i].text.toUpperCase() == defvalue) defindex = i;
		
		if (element.options[i].text.toUpperCase() == text)
		{
			element.selectedIndex = i;
			break;
		}
	}
	
	if (element.selectedIndex == -1 && defvalue != "/*-NOMATCH") element.selectedIndex = defindex;
}


function disableFormFields(form)
{
	for (i = 0; i < form.length; i++)
	{
		t = form.elements[i].type.toUpperCase();

		if (t.indexOf("SELECT") > -1)
		{
			form.elements[i].onfocus = function () { this.blur()};
			form.elements[i].onchange = null;
		}
		else if (t == "CHECKBOX" || t == "RADIO") form.elements[i].disabled = true;
		else form.elements[i].readOnly = true;
	}
}

function showMessage(message,classname,id)
{
	if (message.length > 0)
	{
		if (id == null) id = "messagediv";
		
		var newdiv = document.createElement('div');
  		newdiv.setAttribute('id',id);
  		newdiv.className = classname;
  		newdiv.innerHTML = message;
  		document.body.appendChild(newdiv);
   }
}

function loadXMLDoc(url,callback)
{
	var xmlHttpObj = null;	
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject))
	{
    	try
		{
			xmlHttpObj = new XMLHttpRequest();
        }
		catch(e)
		{
			xmlHttpObj = null;
        }
    // branch for IE/Windows ActiveX version
    }
	else if(window.ActiveXObject)
	{
       	try
		{
        	xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
      	}
		catch(e)
		{
        	try
			{
          		xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
        	}
			catch(e)
			{
          		xmlHttpObj = null;
        	}
		}
    }
	// have we successfully created an request object?
	if(xmlHttpObj)
	{
		xmlHttpObj.onreadystatechange = function () { if (xmlHttpObj.readyState == 4 && callback) callback(xmlHttpObj); };
		xmlHttpObj.open("GET", url, true);
		xmlHttpObj.send("");
	}
	
	return xmlHttpObj;
}


function getKeyCode(e)
{
	if (!e)
	{
		if (window.event) e = window.event;
		else return 0;
	}
  
	if (typeof(e.keyCode) == 'number') return e.keyCode; //DOM
	else if (typeof(e.which) == 'number') return e.which; //NS 4 compatible
	else if (typeof(e.charCode) == 'number') return e.charCode; //also NS 6+, Mozilla 0.9+
	else return 0; //total failure, we have no way of obtaining the key code
}

// some browser don't implement this functionality. So we will add our own
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement)
{
	HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
	{
		switch (where){
			case 'beforeBegin':
				this.parentNode.insertBefore(parsedNode,this)
				break;
			case 'afterBegin':
				this.insertBefore(parsedNode,this.firstChild);
				break;
			case 'beforeEnd':
				this.appendChild(parsedNode);
				break;
			case 'afterEnd':
				if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling);
				else this.parentNode.appendChild(parsedNode);
				break;
		}
	}

	HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
	{
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML)
	}


	HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
	{
		var parsedText = document.createTextNode(txtStr)
		this.insertAdjacentElement(where,parsedText)
	}
}
// load a web page into a div
function loadPage(url, divID, callback) 
{
  if (!window.buffer) 
  {
    var html = '';
    html += '<IFRAME ID="buffer" NAME="buffer" STYLE="display: none;"><\/IFRAME>';
    document.body.insertAdjacentHTML('beforeEnd', html);
  }
  var frame = window.frames['buffer'];
  var html = '';
  html += '<HTML><BODY ONLOAD="parent.document.getElementById(\'' + divID + '\').innerHTML = window.buffer.document.body.innerHTML;';
  
  if (callback) html += 'if (parent.' + callback + ') parent.' + callback + '();';
  
  html += '"><IFRAME NAME="buffer" SRC="' + url + '"></IFRAME>';
  html += '<\/BODY><\/HTML>';
  frame.document.open();
  frame.document.write(html);
  frame.document.close();    
}