/**** $Id: jscripts.js,v 1.4 2007/04/04 19:15:13 apircio Exp $ ****/ 

/**
 * jscript.php
 * Holds a list of useful javascript functions.
 */

function MM_findObj(n, d)
{
	//v4.01
	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 = MM_findObj(n,d.layers[i].document);
	}
	if (!x && d.getElementById)
	{
		x=d.getElementById(n);
	}
	
	return x;
}

function MM_showHideLayers()
{
	//v6.0
	var i,p,v,obj,args = MM_showHideLayers.arguments;

	for (i=0; i<(args.length-2); i+=3)
	{
		if ((obj = MM_findObj(args[i]))!=null)
		{
			v = args[i+2];
			if (obj.style)
			{
				obj = obj.style;
				v = (v=='show') ? 'visible' : (v=='hide') ? 'hidden' : v;
			}
			obj.visibility=v; 
		}
	}
}

function P7_Snap()
{
	var x,y,ox,bx,oy,p,tx,a,b,k,d,da,e,el,args = P7_Snap.arguments;a = parseInt(a);

	for (k=0; k<(args.length-3); k+=4)
	{
		if ((g=MM_findObj(args[k]))!=null)
		{
			el = eval(MM_findObj(args[k+1]));
			a  = parseInt(args[k+2]);
			b  = parseInt(args[k+3]);

			x = 0; y = 0;
			ox = 0; oy = 0;
			p = ""; tx = 1;

			da = "document.all['"+args[k]+"']";

			if (document.getElementById) 
			{
				d = "document.getElementsByName('"+args[k]+"')[0]";
				if (!eval(d))
				{
					d = "document.getElementById('"+args[k]+"')";
					if (!eval(d))
					{
						d = da;
					}
				}
			}
			else if (document.all)
			{
				d = da;
			}
			if (document.all || document.getElementById)
			{
				while (tx==1)
				{
					p += ".offsetParent";
					if (eval(d+p))
					{
						x += parseInt(eval(d+p+".offsetLeft"));
						y += parseInt(eval(d+p+".offsetTop"));
					}
					else
					{
						tx = 0;
					}
				}
				ox = parseInt(g.offsetLeft);
				oy = parseInt(g.offsetTop);
				
				var tw = x + ox + y + oy;

				if(tw==0 || (navigator.appVersion.indexOf("MSIE 4")>-1 && navigator.appVersion.indexOf("Mac")>-1)) 
				{
					ox = 0; oy = 0;
					if (g.style.left)
					{
						x = parseInt(g.style.left);
						y = parseInt(g.style.top);
					}
					else
					{
						var w1 = parseInt(el.style.width);
						bx = (a<0) ? -5-w1 :-10;
						a = (Math.abs(a)<1000) ? 0 : a;
						b = (Math.abs(b)<1000) ? 0 : b;
						x = document.body.scrollLeft + event.clientX + bx;
						y = document.body.scrollTop + event.clientY;
					}
				}
			}
			else if (document.layers)
			{
				x = g.x;
				y = g.y;
				var q0 = document.layers, dd = "";
				for (var s=0;s<q0.length;s++) 
				{
					dd = 'document.'+q0[s].name;
					if (eval(dd+'.document.'+args[k]))
					{
						x += eval(dd+'.left');
						y += eval(dd+'.top');
						break;
					}
				}
			}
			if (el) 
			{
				e = (document.layers) ? el : el.style;
				var xx = parseInt(x+ox+a), yy = parseInt(y+oy+b);
				if (navigator.appName=="Netscape" && parseInt(navigator.appVersion)>4)
				{
					xx += "px";
					yy += "px";
				}

				if (navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1)
				{
					xx += parseInt(document.body.leftMargin);
					yy += parseInt(document.body.topMargin);
					xx += "px";
					yy += "px";
				}
				e.left = xx;
				e.top  = yy;
			}
		}
	}
}


isIE = document.all;
isNN = !document.all&&document.getElementById;
isN4 = document.layers;
isActive = false;

function ddInit(e)
{
	mainBrwsr   = isIE ? "BODY" : "HTML";
	whichBrwsr  = isIE ? document.all.details : document.getElementById("details");
	activeBrwsr = isIE ? event.srcElement : e.target;

	while ((activeBrwsr) && (activeBrwsr.id!="dragArea") && (activeBrwsr.tagName!=mainBrwsr))
	{
		activeBrwsr = isIE ? activeBrwsr.parentElement : activeBrwsr.parentNode;
	}

	if ((activeBrwsr) && (activeBrwsr.id=="dragArea"))
	{
		offsetx = isIE ? event.clientX : e.clientX;
		offsety = isIE ? event.clientY : e.clientY;

		nowX = parseInt(whichBrwsr.style.left);
		nowY = parseInt(whichBrwsr.style.top);

		ddEnabled = true;
		document.onmousemove = dd;
	}
}


function dd(e)
{
	if (!ddEnabled)
	{
		return;
	}

	whichBrwsr.style.left = isIE ? nowX+event.clientX-offsetx : nowX+e.clientX-offsetx;
	whichBrwsr.style.top  = isIE ? nowY+event.clientY-offsety : nowY+e.clientY-offsety;
	return false;
}

function ddN4(whatBrwsr)
{
	if (!isN4) 
	{
		return;
	}

	N4=eval(whatBrwsr);
	N4.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
	N4.onmousedown=function(e)
	{
		N4.captureEvents(Event.MOUSEMOVE);
		N4x=e.x;
		N4y=e.y;
	}

	N4.onmousemove = function(e)
	{
		if (isActive)
		{
			N4.moveBy(e.x-N4x,e.y-N4y);
			return false;
		}
	}

	N4.onmouseup = function()
	{
		N4.releaseEvents(Event.MOUSEMOVE);
	}
}

document.onmousedown = ddInit;
document.onmouseup = Function("ddEnabled=false");

/**
 * Show/Hide a information Layer
 *
 * Creates a temporary div element and assigns the
 * content of the given div to it and pops up the
 * layer and toggles its visibility.
 *
 * @param string div_id		The original div id whose content needs to be popped up. 
 * @param string anchor_id	The id of the anchor element.
 * @param int offset_x		The offset x position of the layer from the anchor element.
 * @param int offset_y		The offset y position of the layer from the anchor element.
 */
function show_info_layer(div_id, anchor_id, offset_x, offset_y)
{
	var div = document.getElementById('details');
	if (!div)
	{
		div = document.createElement('div');
		div.id = "details";
		div.style.position = 'absolute';
		div.style.border = '1px solid #999999';
		div.style.padding = '5px';
		div.style.width = '350px';
		div.style.backgroundColor = '#ffffff';
		div.style.filter = 'progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=135)';
		document.getElementsByTagName('body').item(0).appendChild(div);
	}

	toggleVisibility(div.id);

	div.innerHTML = document.getElementById(div_id).innerHTML;

	link_x = findPosX(document.getElementById(anchor_id));
	if (link_x > 450)
	{
		offset_x = -400;
	}
	else if (link_x < 50)
	{
		offset_x = 50;
	}
	P7_Snap(anchor_id, div.id, offset_x, offset_y);

	div.style.display='block';
	add_event_listener(window,'resize',function()
	    {
		P7_Snap(anchor_id, div.id, 150, -70);
	    }
	    );

	return false;
}

function hide_id(id_to_hide)
{
    var what = document.getElementById(id_to_hide);
    if (what)
    {
        what.style.display='none';
    }
}
