var jsAreaShowTime = 800;
var JsAreas = new Object();
var jsFocusControl = null;
var jsCurrentControl = null;

function divBlur() {
//alert('3' + MyObject.mouseOverDiv)
//	if (document.activeElement 
//		&& document.activeElement.id.length > 0 
//		&& (document.getElementById(activeAreaId).contains(document.activeElement))) {
        if (MyObject.mouseOverDiv == 1) {
	} else { RelArea(activeAreaId); }
}


function GetArea(id) { return JsAreas[id] ? JsAreas[id] : (JsAreas[id] = new JsArea(id)); }

// A single popup window
function JsArea(id) { this.AreaId = id; }

// Function to return the DIV Layer
JsArea.prototype.ContentArea= function() {
	var divArea = document.getElementById(this.AreaId);
	if (divArea != null) {	return divArea;	}
	return null;
}

var activeAreaId = null;

function divKeyPress() {
	switch (event.keyCode) {
		case 27: jsAreaClose(activeAreaId);
		break;
		case 9: jsAreaClose(activeAreaId);
		break;
	}
}

function fPX(obj) {
     var curleft = 0;
     if (obj.offsetParent) {
          while (obj.offsetParent) {
               curleft += obj.offsetLeft
               obj = obj.offsetParent;
          }
     } else if (obj.x)
	curleft += obj.x;
     return curleft;
}

function fPY(obj) {
     var curtop = 0;
     if (obj.offsetParent) {
          while (obj.offsetParent) {
               curtop += obj.offsetTop
               obj = obj.offsetParent;
          }
     } else if (obj.y)
          curtop += obj.y;
     return curtop;
}

// Function to show the DIV Layer
JsArea.prototype.popareaup = function(x, y) {
	if (activeAreaId != null) jsAreaClose(activeAreaId);
	var divLayer = this.ContentArea();
	divLayer.style.position = 'absolute';
	divLayer.style.display = 'block';
//	var width = MyObject.staticControl.offsetWidth.toString();
//	var w = fPX(MyObject.staticControl);// + (parseInt(width));
//	var h = fPY(MyObject.staticControl);
//	divLayer.style.left = (w)+ 'px';
//	divLayer.style.top = (h)+ MyObject.staticControl.offsetHeight + 'px';
	divLayer.style.left = '0px';
	divLayer.style.top = '0px';
	divLayer.onmouseover= JsAreaMouseOver;
	divLayer.onmouseout = jsAreaMouseOut;
	divLayer.onblur = divBlur;
	activeAreaId = this.AreaId;
	
//	return false;
}

// Function to hide the DIV Layer
JsArea.prototype.hide = function() {
//return false
	var divLayer = this.ContentArea();
//	if (divLayer != null) divLayer.style.display = 'none';
	if (divLayer != null) { 
		divLayer.innerHTML = '';
		divLayer.style.display = 'none';
	}
//	return false;
}

// Function to be called
// by Web forms to show the Popup Window
//function PopupArea(e, areaId)
function PopupArea(inputControl, areaId,displayX,displayY) {
	jsFocusControl = document.activeElement;
	jsCurrentControl = inputControl;
	posx = displayX;
	posy = displayY;
	var area = GetArea(areaId);
	area.popareaup(posx, posy);
}

// Function to hide the DIV Layer
function jsAreaClose(areaId) {
	GetArea(areaId).hide();
	activeAreaId = divHangTimer = null;	
}

var divHangTimer = null;

// Function to keep the Div Layer
// showing for a "period" of time
// after that period, if the mouse
// has been outside the DIV Layer, 
// it will be hidden automatically
function KeepArea(areaId) {
	if (areaId == activeAreaId && divHangTimer != null) {
		clearTimeout(divHangTimer);
		divHangTimer = null;
	}
}

// Function to release the DIV Layer
function RelArea(areaId) {
	if (areaId == activeAreaId && divHangTimer == null)
		divHangTimer = setTimeout('jsAreaClose(\'' + areaId + '\')', 500);
}

function RelAreaExtend(areaId) { divHangTimer = setTimeout('jsAreaClose(\'' + areaId + '\')', 1000); }



// Function fired when mouse is over the 
// DIV Layer, used to keep the layer showing
function JsAreaMouseOver(e) {
	MyObject.mouseOverDiv = 1;
	if (!e) var e = window.event;
	var targ = e.target ? e.target : e.srcElement;
	KeepArea(activeAreaId);
}

// Function that fires when mouse is out of
// the scope of the DIV Layer
function jsAreaMouseOut(e) {
	jsFocusControl = document.activeElement;
	MyObject.mouseOverDiv = 0;
	if (!e) var e = window.event;
	var targ = e.relatedTarget ? e.relatedTarget : e.toElement;
	var activeAreaView = document.getElementById(activeAreaId);
	if (activeAreaView != null && !jsAreaContains(activeAreaView, targ)) {}
}
function jsAreaContains(parent, child) {
	while(child)
		if (parent == child) return true;
		else child = child.parentNode;
		return false;
}
