// ----- Popup Control ---------------------------------------------------------

function at_display(x)
{
  var win = window.open();
  for (var i in x) win.document.write(i+' = '+x[i]+'<br>');
}

// ----- Show Aux -----

function at_show_aux(parent, child)
{
	if (document.layers) // NETSCAPE 4+
	{
		var p = document.layers[parent];
		var c = document.layers[child];	
		
		var top  = (c["at_position"] == "y") ? p.offsetHeight+2 : 0;
	  	var left = (c["at_position"] == "x") ? p.offsetWidth +2 : 0;
	
		for (; p; p = p.offsetParent)
		{
			top  += p.offsetTop;
			left += p.offsetLeft;
		}
		
		c.style.position   = "absolute";
		c.style.top        = top +'px';
		c.style.left       = (left-18)+'px';
		c.style.visibility = "visible";		
	}
	else if (document.all) // IE 4+
	{
		var p = document.all[parent];
		var c = document.all[child];
		
		var top  = (c["at_position"] == "y") ? p.offsetHeight+2 : 0;
	  	var left = (c["at_position"] == "x") ? p.offsetWidth +2 : 0;
	
		for (; p; p = p.offsetParent)
		{
			top  += p.offsetTop;
			left += p.offsetLeft;
		}
		
		c.style.position   = "absolute";
		c.style.top        = top +'px';
		c.style.left       = (left-18)+'px';
		c.style.visibility = "visible";		
	}
	else if (document.getElementById)
	{
		var p = document.getElementById(parent);
		var c = document.getElementById(child );	
		
		var top  = (c["at_position"] == "y") ? p.offsetHeight+2 : 0;
		var left = (c["at_position"] == "x") ? p.offsetWidth +2 : 0;
		
		for (; p; p = p.offsetParent)
		{
			top  += p.offsetTop;
			left += p.offsetLeft;
		}
		
		c.style.position   = "absolute";
		c.style.top        = top +'px';
		c.style.left       = (left-17)+'px';
		c.style.visibility = "visible";
	}			
}

// ----- Show -----

function at_show()
{
	if (document.layers) 
	{
		var p = document.layers[parent];
		var c = document.layers[child];	
	
		at_show_aux(p.id, c.id);
		clearTimeout(c["at_timeout"]);
	}
	else if( document.all )
	{
		var p = document.all[this["at_parent"]];
		var c = document.all[this["at_child" ]];
		
		at_show_aux(p.id, c.id);
		clearTimeout(c["at_timeout"]);
	}
	else if( document.getElementById )
	{
		var p = document.getElementById(this["at_parent"]);
		var c = document.getElementById(this["at_child" ]);
		
		at_show_aux(p.id, c.id);
		clearTimeout(c["at_timeout"]);
	}
}

// ----- Hide -----

function at_hide()
{
	if (document.layers) 
	{
		var c = document.layers[this["at_child"]];	
	
		c["at_timeout"] = setTimeout("document.layers['"+c.id+"'].style.visibility = 'hidden'", 333);
	}
	else if( document.all )
	{
		var c = document.all[this["at_child"]];
	
		c["at_timeout"] = setTimeout("document.all['"+c.id+"'].style.visibility = 'hidden'", 333);
	}
	else if( document.getElementById )
	{
		var c = document.getElementById(this["at_child"]);
	
		c["at_timeout"] = setTimeout("document.getElementById('"+c.id+"').style.visibility = 'hidden'", 333);
	}
}

// ----- Click -----

function at_click()
{
	if (document.layers) 
	{
		var p = document.layers[this["at_parent"]];
		var c = document.layers[this["at_child" ]];
	
		if( c.style.visibility != "visible" ) at_show_aux(p.id, c.id);
		else c.style.visibility = "hidden";
	
		return false;
	}
	else if( document.all )
	{
		var p = document.all[this["at_parent"]];
		var c = document.all[this["at_child" ]];
	
		if( c.style.visibility != "visible" ) at_show_aux(p.id, c.id);
		else c.style.visibility = "hidden";
	
		return false;
	}
	else if( document.getElementById )
	{
		var p = document.getElementById(this["at_parent"]);
		var c = document.getElementById(this["at_child" ]);
		
		if( c.style.visibility != "visible" ) at_show_aux(p.id, c.id);
		else c.style.visibility = "hidden";
		
		return false;
	}
}

// ----- Attach -----

// PARAMETERS:
// parent   - id of visible html element
// child    - id of invisible html element that will be dropdowned
// showtype - "click" = you should click the parent to show/hide the child
//            "hover" = you should place the mouse over the parent to show
//                      the child
// position - "x" = the child is displayed to the right of the parent
//            "y" = the child is displayed below the parent
// cursor   - Omit to use default cursor or check any CSS manual for possible
//            values of this field

function at_attach(parent, child, showtype, position, cursor)
{
	if (document.layers) 
	{
		var p = document.layers[this["at_parent"]];
		var c = document.layers[this["at_child" ]];

		p["at_parent"]     = p.id;
		c["at_parent"]     = p.id;
		p["at_child"]      = c.id;
		c["at_child"]      = c.id;
		p["at_position"]   = position;
		c["at_position"]   = position;
		
		c.style.position   = "absolute";
		c.style.visibility = "hidden";
		
		if( cursor != undefined ) p.style.cursor = cursor;
		
		switch( showtype )
		{
			case "click":
				p.onclick     = at_click;
				p.onmouseout  = at_hide;
				c.onmouseover = at_show;
				c.onmouseout  = at_hide;
				break;
			case "hover":
				p.onmouseover = at_show;
				p.onmouseout  = at_hide;
				c.onmouseover = at_show;
				c.onmouseout  = at_hide;
				break;
		}
	}
	if( document.all )
	{
		var p = document.all[parent];
		var c = document.all[child];
		
		p["at_parent"]     = p.id;
		c["at_parent"]     = p.id;
		p["at_child"]      = c.id;
		c["at_child"]      = c.id;
		p["at_position"]   = position;
		c["at_position"]   = position;
		
		c.style.position   = "absolute";
		c.style.visibility = "hidden";
		
		if( cursor != undefined ) p.style.cursor = cursor;
		
		switch( showtype )
		{
			case "click":
				p.onclick     = at_click;
				p.onmouseout  = at_hide;
				c.onmouseover = at_show;
				c.onmouseout  = at_hide;
				break;
			case "hover":
				p.onmouseover = at_show;
				p.onmouseout  = at_hide;
				c.onmouseover = at_show;
				c.onmouseout  = at_hide;
				break;
		}
	}
	else if( document.getElementById )
	{
		var p = document.getElementById(parent);
		var c = document.getElementById(child);

		p["at_parent"]     = p.id;
		c["at_parent"]     = p.id;
		p["at_child"]      = c.id;
		c["at_child"]      = c.id;
		p["at_position"]   = position;
		c["at_position"]   = position;

		c.style.position   = "absolute";
		c.style.visibility = "hidden";

		if( cursor != undefined ) p.style.cursor = cursor;
		switch( showtype )
		{	
			case "click":
				p.onclick     = at_click;
				p.onmouseout  = at_hide;
				c.onmouseover = at_show;
				c.onmouseout  = at_hide;
				break;
			case "hover":
				p.onmouseover = at_show;
				p.onmouseout  = at_hide;
				c.onmouseover = at_show;
				c.onmouseout  = at_hide;
				break;
		}
	}
}
