if(Array.prototype.push == null){
	Array.prototype.push = function(){
		for(var i = 0; i < arguments.length; i++){
			this[this.length] = arguments[i];
		};
		return this.length;
	};
};
var isPageLoaded=false;
var _hasXMLHTTP=false;
function getXMLHTTP(){
  var A=null;
  try{
    A=new ActiveXObject("Msxml2.XMLHTTP")
  }catch(e){
    try{
      A=new ActiveXObject("Microsoft.XMLHTTP")
    } catch(oc){
      A=null
    }
  }
  if(!A && typeof XMLHttpRequest != "undefined") {
    A=new XMLHttpRequest()
  }
  return A
}

function escapeURI(La){
  if(encodeURIComponent) {
    return encodeURIComponent(La);
  }
  if(escape) {
    return escape(La)
  }
}

function stripCRFromString(str){
  for(var f=0,newstring="",cr="\n\r"; f<str.length; f++) {
    if (cr.indexOf(str.charAt(f))==-1) {
      newstring+=str.charAt(f);
    } else {
      newstring+=" ";
    }
  }
return newstring
}

if(getXMLHTTP())
{
    _hasXMLHTTP=true
}else{
    _hasXMLHTTP=false
}
function getScrollTop()
{
	var sy = 0;
	if (document.documentElement && document.documentElement.scrollTop)
		sy = document.documentElement.scrollTop;
	else if (document.body && document.body.scrollTop) 
		sy = document.body.scrollTop; 
	else if (window.pageYOffset)
		sy = window.pageYOffset;
	else if (window.scrollY)
		sy = window.scrollY;
	return sy;
}
function calculateOffsetLeft(r){
  return offsetSum(r,"offsetLeft")
}

function calculateWidth(r){
  return r.offsetWidth;
}

function calculateOffsetTop(r){
  return offsetSum(r,"offsetTop")
}

function offsetSum(r,attr){
  var total=0;
  while(r){
    total+=r[attr]; 
    r=r.offsetParent
  }
  return total
}
/*	Event Cache uses an anonymous function to create a hidden scope chain.
	This is to prevent scoping issues. */
var EventCache = function(){
	var listEvents = [];
	
	return {
		listEvents : listEvents,
	
		add : function(node, sEventName, fHandler, bCapture){
			listEvents.push(arguments);
		},
	
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				
				/* From this point on we need the event names to be prefixed with "on" */
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				
				item[0][item[1]] = null;
			};
		}
	};
}();

function addEvent(oEventTarget, sEventType, fDest){
	if(oEventTarget.attachEvent){
		oEventTarget.attachEvent("on" + sEventType, fDest);
	} else if(oEventTarget.addEventListener){
		oEventTarget.addEventListener(sEventType, fDest, true); 
	} else if(typeof oEventTarget[sEventType] == "function"){
		var fOld = oEventTarget[sEventType];
		oEventTarget[sEventType] = function(e){ fOld(e); fDest(e); };
	} else {
		oEventTarget[sEventType] = fDest;
	};
	
	/* Implementing EventCache for all event systems */
	EventCache.add(oEventTarget, sEventType, fDest, true);
};
function PageLoaded(){isPageLoaded=true;}
addEvent(window,"load",PageLoaded);
addEvent(window,"unload",EventCache.flush);
function HideSelects()
{
	if(document.body.currentStyle)
	{
		if(!selectshidden)
		{
			var Nodes = document.getElementsByTagName("select")
			var max = Nodes.length
			var i = 0
			for(i = 0;i < max;i++) 
			{
				var nodeObj = Nodes.item(i)
				nodeObj.PreviousVisibility = nodeObj.currentStyle.visibility;
				nodeObj.style.visibility = "hidden";
			}
			selectshidden = true;
		}
	}
}
function ShowSelects()
{
	if(document.body.currentStyle)
	{
		var Nodes = document.getElementsByTagName("select")
		var max = Nodes.length
		var i = 0
		for(i = 0;i < max;i++) 
		{
			var nodeObj = Nodes.item(i)
			if(nodeObj.PreviousVisibility)nodeObj.style.visibility = nodeObj.PreviousVisibility;
		}
		selectshidden = false;
	}
}
function HideIFrames()
{
	if(document.body.currentStyle)
	{
		if(!iframeshidden)
		{
			var Nodes = document.getElementsByTagName("iframe")
			var max = Nodes.length
			var i = 0
			for(i = 0;i < max;i++) 
			{
				var nodeObj = Nodes.item(i)
				nodeObj.PreviousVisibility = nodeObj.currentStyle.visibility;
				nodeObj.style.visibility = "hidden";
			}
			iframeshidden = true;
		}
	}
}
function ShowIFrames()
{
	if(document.body.currentStyle)
	{
		var Nodes = document.getElementsByTagName("iframe")
		var max = Nodes.length
		var i = 0
		for(i = 0;i < max;i++) 
		{
			var nodeObj = Nodes.item(i)
			if(nodeObj.PreviousVisibility)nodeObj.style.visibility = nodeObj.PreviousVisibility;
		}
		iframeshidden = false;
	}
}