/*	jobdetails.js - Chad Thomas for Ringdale Inc.
 *	Uses prototype.js and some Tooltip.js from Dustin Diaz
 *	
 *	Checks elements with class "jobs" adds mouse events to them uses prototype Ajax to get the job details to display in 
 *	dynamically created div when mouse is hovered over the link, div is destroyed when mouse moves off link or the div
 *	- there is still an issue where the mouse leaves the div but the div is not detroyed
 *	use protoype event to set an onload event to get things. Do that in the page that displays the jobs
*/

var hover = 
{
	xCoord: 0,
	yCoord: 0,
	obj: Object,
	jobInfo: Object,
	
	init: function()
	{
		if(!document.getElementById || !document.createElement || !document.getElementsByTagName)
		{
			return;
		}
		
		//add mouseover and mouseout to all links with specific class
		var i;
		var links = document.getElementsByTagName("a");
		var linksLen = links.length;
		for(i = 0; i < linksLen; i++)
		{
			if(links[i].className == "jobs")
			{
				Event.observe($(links[i]), 'mouseover', info.JobOver.bindAsEventListener(info.DetailsDiv));
				Event.observe($(links[i]), 'mouseout', remove.RemoveDetails.bindAsEventListener());
			}
		}
	},
	
	UpdateCoords: function(e)
	{
		if(document.captureEvents)
		{
			hover.xCoord = e.pageX;
			hover.yCoord = e.pageY;
		}
		else if(window.event.clientX)
		{
			hover.xCoord = window.event.clientX + document.documentElement.scrollLeft;
			hover.yCoord = window.event.clientY + document.documentElement.scrollTop;
		}
	}
};

var info = 
{
	DetailsDiv: Object,
	
	JobOver: function(e)
	{
		var link = Event.element(e);
		var jobref = link.id;
		joID = window.setTimeout("info.JobDetails('" + jobref + "')", 500);
		hover.UpdateCoords(e);
	},
	
	JobDetails: function(jobref)
	{
		//check if there is a div, if so delete it
		if(document.getElementById("jobdetails"))
		{
			$("jobdetails").remove();
		}
		
		//create div to place job details into
		this.DetailsDiv = document.createElement("div");
		this.DetailsDiv.id = "jobdetails";
		document.getElementsByTagName("body")[0].appendChild(this.DetailsDiv);
		this.DetailsDiv.style.top = "0";
		this.DetailsDiv.style.visibility = "hidden";
		//add mouseout event to div
		Event.observe(this.DetailsDiv, 'mouseout', remove.RemoveWait.bindAsEventListener());
			
		timeoutID = window.setTimeout("info.GetDetails('" + jobref + "')", 500);
			
		//now set position of the div
		var srcX = Number(hover.xCoord);
		var srcY = Number(hover.yCoord);
		var Top = parseInt(srcY); //15
		var Left = parseInt(srcX); //10
			
		if(parseInt(document.documentElement.clientWidth + document.documentElement.scrollLeft) < parseInt(this.DetailsDiv.offsetWidth + Left))
		{
			this.DetailsDiv.style.left = parseInt(Left - (this.DetailsDiv.offsetWidth + 10)) + "px";
		}
		else
		{
			this.DetailsDiv.style.left = Left + "px";
		}
			
		if(parseInt(document.documentElement.clientHeight + document.documentElement.scrollTop) < parseInt(this.DetailsDiv.offsetHeight + Top))
		{
			this.DetailsDiv.style.top = parseInt(Top - (this.DetailsDiv.offsetHeight + 10)) + "px";
		}
		else
		{
			this.DetailsDiv.style.top = Top + "px";
		}
			
		//add loading.gif and "Loading..."
		var span = document.createElement("span");
		span.id = "load";
		var img = document.createElement("img");
		img.src = "/images/loading2.gif";
		span.appendChild(img);
		span.appendChild(document.createTextNode("Loading..."));
		this.DetailsDiv.appendChild(span);
		this.DetailsDiv.style.visibility = "visible";
	},
	
	GetDetails: function(jobref)
	{
		//use ajax to get the information needed
		var jobrefID = jobref.split("_");
		var url = "/components/GetJobDetails.asp";
		var pars = "jref=" + jobrefID[1];
		var target = "jobdetails";
		var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
	}
	
};

var remove = 
{
	RemoveWait: function(e)
	{
		//check if mouse coordinates are on the div if so don't delete
		if(document.getElementById("jobdetails"))
		{
			rmID = window.setTimeout("remove.RemoveDetails('" + e + "')", 250);
		}
	},
	
	//delete the div
	RemoveDetails: function(e)
	{
		if(document.getElementById("jobdetails"))
		{
			var x = Event.pointerX(e);
			var y = Event.pointerY(e);
			
			var em = $("jobdetails");
			if(!Position.within(em, x, y))
			{
				$("jobdetails").remove();
			}
			else
			{
				return;
			}
		}
		if(window.rmID)
		{
			window.clearTimeout(rmID);
		}
		if(window.joID)
		{
			window.clearTimeout(joID);
		}
		if(window.tID)
		{
			window.clearTimeout(tID);
		}
	}
};