var tip_timer = new Array(null,null);
var tip_current = new Array(null,null);

var tip_idle = 300;
var tip_bottom = -999;
var tip_center = -998;
var tip_right = -996;

function killtip(idx,id)
{
	if(idx==1 && tip_current[0]!=null)
	{
		return;
	}
	if (tip_timer[idx]!=null)
	{
		clearTimeout(tip_timer[idx]);
		tip_timer[idx] = null;
	}
	var thetip = GetElement(id);
	if (thetip) 
	{
		thetip.style.visibility = "hidden";
		thetip.style.display = "none";
		if (id==tip_current[idx]) tip_current[idx] = null;
	} 
}

function untip(idx,id) 
{
	var msg = "killtip(" + idx + ",'" + id + "')";
	tip_timer[idx] = setTimeout(msg, tip_idle);
}

function dotip(idx,id, o, dx, dy, toggle, forced) 
{
	if (!forced && tip_current[idx]==id)
	{
		if (toggle)
			killtip(idx,tip_current[idx]);
		else
			if (tip_timer[idx]!=null)
			{
				clearTimeout(tip_timer[idx]);
				tip_timer[idx] = null;
			}
	} 
	else
	{
		if (tip_current[idx]!=null) killtip(idx,tip_current[idx]);
		tip_current[idx] = id;
		thetip = GetElement(id);
		if (thetip) 
		{
			thetip.style.visibility = "visible";
			thetip.style.display = "block";
		}
		if (dy==tip_bottom) dy = o.offsetHeight;
		if (dy==tip_center) dy = o.offsetHeight/2;
		if (dx==tip_center) dx = o.offsetWidth/2;
		if (dx==tip_right && thetip) dx = o.offsetWidth-thetip.offsetWidth;
		var left = GetLeft(o) + dx;
		var top = GetTop(o) + dy;
		if (thetip) 
		{
			thetip.style.left = left;
			thetip.style.top = top;
		}
	}
}

// -------------------------------------------------------------------

function jsPrefixZero(time)
{
	if (time < 10) {
		time = "0"+time;
	}
	return time;
}

function jsDateEncode(realdate) 
{
	if (realdate.getHours() == 0 && realdate.getMinutes() == 0 && realdate.getSeconds() == 0) {
		output = 
			realdate.getFullYear() + DATEDIVIDER + 
			jsPrefixZero(realdate.getMonth()+1) + DATEDIVIDER + 
			jsPrefixZero(realdate.getDate());
	} else if (realdate.getSeconds() == 0) {
		output = 
			realdate.getFullYear() + DATEDIVIDER + 
			jsPrefixZero(realdate.getMonth()+1) + DATEDIVIDER + 
			jsPrefixZero(realdate.getDate()) + DATEDIVIDER + 
			jsPrefixZero(realdate.getHours()) + DATEDIVIDER + 
			jsPrefixZero(realdate.getMinutes());
	} else {
		output = 
			realdate.getFullYear() + DATEDIVIDER + 
			jsPrefixZero(realdate.getMonth()+1) + DATEDIVIDER + 
			jsPrefixZero(realdate.getDate()) + DATEDIVIDER + 
			jsPrefixZero(realdate.getHours()) + DATEDIVIDER + 
			jsPrefixZero(realdate.getMinutes()) + DATEDIVIDER + 
			jsPrefixZero(realdate.getSeconds());
	}
	return output;
}
	
function jsDateDecode(dCoded) 
{
	var arrDate;
	var dReal;
	arrDate = dCoded.split(DATEDIVIDER)
	dReal = new Date();
		
	if (arrDate.length == 6) {
		dReal.setYear(arrDate['0'])
		dReal.setMonth(arrDate['1']-1)
		dReal.setDate(arrDate['2'])
		dReal.setHours(arrDate['3'])
		dReal.setMinutes(arrDate['4'])
		dReal.setSeconds(arrDate['5'])
	} else if (arrDate.length == 5) {
		dReal.setYear(arrDate['0'])
		dReal.setMonth(arrDate['1']-1)
		dReal.setDate(arrDate['2'])
		dReal.setHours(arrDate['3'])
		dReal.setMinutes(arrDate['4'])
		dReal.setSeconds('0')
	} else if (arrDate.length == 4) {
		dReal.setYear(arrDate['0'])
		dReal.setMonth(arrDate['1']-1)
		dReal.setDate(arrDate['2'])
		dReal.setHours(arrDate['3'])
		dReal.setMinutes('0')
		dReal.setSeconds('0')
	} else if (arrDate.length == 3) {
		dReal.setYear(arrDate['0'])
		dReal.setMonth(arrDate['1']-1)
		dReal.setDate(arrDate['2'])
		dReal.setHours('0')
		dReal.setMinutes('0')
		dReal.setSeconds('0')
	} else if (arrDate.length == 2) {
		dReal.setYear(arrDate['0'])
		dReal.setMonth(arrDate['1']-1)
		dReal.setDate('0')
		dReal.setHours('0')
		dReal.setMinutes('0')
		dReal.setSeconds('0')
	} else if (arrDate.length == 1) {
		dReal.setYear(arrDate['0'])
		dReal.setMonth('0')
		dReal.setDate('0')
		dReal.setHours('0')
		dReal.setMinutes('0')
		dReal.setSeconds('0')
	}
		
	return dReal;
}

// helper Function to get relative left position using parents
function GetLeft(obj)
{
	var curleft = 0;
	if (document.getElementById || document.all)
	{
		while (obj.offsetParent != null)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (document.layers)
		curleft += obj.x;
	return curleft;
}
// helper Function to get relative top using parents
function GetTop(obj)
{
	var curtop = 0;
	if (document.getElementById || document.all)
	{
		while (obj.offsetParent != null)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (document.layers)
		curtop += obj.y;
	return curtop;
}

function GetElement(ename)
{
	if (document.layers && document.layers[ename]) 
		return document.layers[ename];  
	else if (document.all) 
		return document.all[ename];
	else if (document.getElementById) 
		return document.getElementById(ename);
}

function ShowInfo(id)
{
	var sUrl = "show.asp" +
		"?ID=" + escape(id) +
		"&Modeless=on";

	var sOpt = "left=" + (window.screen.width-495) +
		",top=5" +
		",height=420" +
		",width=480" +
		",titlebar=no" +
		",center=no" +
		",help=no" +
		",resizable=yes" +
		",status=no" +
		",location=no" +
		",scrollbars=yes";

	var w = window.open(sUrl, null, sOpt, false);

	w.focus();
}
	