function ismouseinel(e, elName)
{
	var el = document.getElementById(elName);
	if (!el) return false;
	
	var x = YAHOO.util.Event.getPageX(e);
	
	if (x < YAHOO.util.Dom.getX(el)) return false;
	if (x > YAHOO.util.Dom.getX(el)+el.offsetWidth) return false;
	
	var y = YAHOO.util.Event.getPageY(e);
	
	if (y < YAHOO.util.Dom.getY(el)) return false;
	if (y > YAHOO.util.Dom.getY(el)+el.offsetHeight) return false;
	
	return true;
}

function toggle(baseid, urlbase, othername, playerid, otherid, elid, infoType)
{
	dataid = baseid + elid;
	toggleid = "toggle" + elid;
	
	if (YAHOO.util.Dom.hasClass(toggleid, 'expanderclosed'))
	{	
		// Open 
		document.getElementById(dataid).innerHTML = "loading " + infoType + "...";
		var url = urlbase + ".php?p=" + playerid + "&" + othername + "=" + otherid;

		var expandCallback =
		{
			success:function(o){
				if(o.responseText !== undefined){
					document.getElementById(o.argument.dataid).innerHTML = o.responseText;
					YAHOO.util.Dom.replaceClass(o.argument.toggleid, 'expanderclosed', 'expanderopen');
					
				}
			},
			failure:function(o){
				document.getElementById(o.argument.id).innerHTML = "(error loading " + o.argument.infoType + ")";
				YAHOO.util.Dom.replaceClass(o.argument.toggleid, 'expanderclosed', 'expanderopen');
			},
			argument: { dataid: dataid, toggleid: toggleid, infoType: infoType }
		};
		var transaction = YAHOO.util.Connect.asyncRequest('GET', url, expandCallback, null); 
	}
	else
	{
		// Close
		document.getElementById(dataid).innerHTML = "";
		YAHOO.util.Dom.replaceClass(toggleid, 'expanderopen', 'expanderclosed');
	}
}

var glowedEl = null;

function glowhandler(e, o) 
{
	var toGlow			= null;
	var hideGlow		= false;
	var infoBoxParent	= null;
	
	var inInfoBox		= ismouseinel(e, 'infobox');
	var elTarget = YAHOO.util.Event.getTarget(e); 
	while (elTarget.id != o.id) 
	{	
		if(elTarget.nodeName.toUpperCase() == "TR" && elTarget.id.substr(0,3)=="row")
		{ 
			if (e.type=="mouseover")
			{
				toGlow = elTarget;
			}
			else	// mouseout
			{
				if (!inInfoBox)
				{
					hideGlow = true;
				}
			}
			break;
		}
		else if(YAHOO.util.Dom.hasClass(elTarget, "anchorfield") && e.type=="mouseover")
		{
			infoBoxParent = elTarget;	// infobox should be made visible with elTarget as parent.
			elTarget=elTarget.parentNode;	// keep going!
		}
		else
		{
			elTarget=elTarget.parentNode;
		}
	}

	if (infoBoxParent) 
		showinfobox(infoBoxParent, o.infotype, o.urlbase);
	else if (!inInfoBox)
		hideinfobox();
		
	if (inInfoBox)
		stopinfoboxhideproc();
	
	if (toGlow || hideGlow)
	{
		if (glowedEl) 
		{
			YAHOO.util.Dom.removeClass(glowedEl, "glow"); 	// kill any previous glow
		}
	}
	
	if (toGlow)
	{
		YAHOO.util.Dom.addClass(toGlow, "glow"); 
		glowedEl = elTarget;
	}
}

var lastid = 0;
var lastanchorid = 0;
var infoboxhideproc = null;	// no hide pending
var infotransaction = null;

function hideinfobox()
{
	if (infoboxhideproc) return;	// already one pending
	// post hidecallback in 2 seconds
	infoboxhideproc = setTimeout('hideinfoboxnow()', 1000);
}

function hideinfoboxnow()
{
	YAHOO.util.Dom.setStyle('infobox', 'visibility', 'hidden'); 
	targetid = lastid;
	
	infoboxhideproc = null;
	lastid = 0;
}

function stopinfoboxhideproc()
{
	if (infoboxhideproc) clearTimeout(infoboxhideproc);	// call off any previous "hide" operations
	infoboxhideproc = null;
}

function stopprevinfotransaction()
{
	// we don't actually stop the transaction, but we fix the dangling icon
	if (lastanchorid)
		resetanchor(lastanchorid);
}

function showinfobox(elTarget, infoType, urlbase)
{
	stopinfoboxhideproc();
	stopprevinfotransaction();
	
	var infobox = document.getElementById('infobox');
	
	var id = elTarget.id.substr(6);
	
	if (id == lastid) return;
	
	YAHOO.util.Dom.addClass(elTarget.id, 'anchorloading');
	id = id.replace(/--/, '=');
	id = id.replace(/--/, '=');
	id = id.replace(/--/, '=');
	id = id.replace(/-/, '&');
	id = id.replace(/-/, '&');
	id = id.replace(/-/, '&');
	// Make the infobox invisible while we're loading
		hideinfoboxnow();
		
	// Start the loading process
		infobox.innerHTML = "Loading " + infoType + "...";
		var x = YAHOO.util.Dom.getX(elTarget) + 15;
		var y = YAHOO.util.Dom.getY(elTarget) + elTarget.offsetHeight - 2;
		
		if (y + infobox.offsetHeight > YAHOO.util.Dom.getDocumentScrollTop() + YAHOO.util.Dom.getViewportHeight())
		{
			// Put box ABOVE keying item
			y = YAHOO.util.Dom.getY(elTarget) - infobox.offsetHeight;
		}
			
		YAHOO.util.Dom.setX("infobox", x);
		YAHOO.util.Dom.setY("infobox", y); 		

	// Go fetch the data
		lastid 			= id;
		lastanchorid 	= elTarget.id;
		
		var url = urlbase + ".php?id=" + id;
		
		var infoCallback =
		{
			success:function(o) {
				if(o.responseText !== undefined && lastid == o.argument.id)
				{
					document.getElementById("infobox").innerHTML = o.responseText;
					YAHOO.util.Dom.setStyle(infobox, 'visibility', 'visible'); 
				}
				resetanchor(o.argument.anchorid);
			},
			failure:function(o) {
				document.getElementById("infobox").innerHTML = "(error loading " + o.argument.infoType + ")";
				resetanchor(o.argument.anchorid);				
			},
			argument: { id: id, infoType: infoType, anchorid: elTarget.id }
		};

		infotransaction = YAHOO.util.Connect.asyncRequest('GET', url, infoCallback); 
}

function resetanchor(id)
{
	YAHOO.util.Dom.removeClass(lastanchorid, 'anchorloading');
}

function startglowhandlers(e, o)
{
	YAHOO.util.Event.on(o.id, "mouseover", glowhandler, o );
	YAHOO.util.Event.on(o.id, "mouseout", glowhandler, o );
}

function focusfirst(select)
{
	var isIE = (document.all) ? 1 : 0;

	for (var f=0; f < document.forms.length; f++)
	{
		for(var i=0; i < document.forms[f].length; i++)
		{
			if ((document.forms[f][i].type == "textarea" || document.forms[f][i].type == "text") &&
				document.forms[f][i].disabled != true)
				{
					var readonly = isIE ?
									document.forms[f][i].getAttribute("readonly") :
									document.forms[f][i].hasAttribute("readonly");

					if (!readonly)
					{
						document.forms[f][i].focus();
						if (select) document.forms[f][i].select();
						return;
					}
				}
		}
	}
}

function niftycorners(e, o)
{
	NiftyCheck(); 
//	Rounded("div#"+o.id,"all","#FFF","#AAD","smooth");
	Rounded("div#"+o.id,"all",o.outside,o.frame,"smooth");
}

function setcookie(cookieName,cookieValue,nDays) {
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue)+ ";expires="+expire.toGMTString()+";domain=cross-tables.com;path=/";
 
//--------------------------------------------------------

 
}
