﻿
// JavaScript Document
firstPass = true;
ttipXslProcessorIsReady = false;
tranformInProgress=false;


function findNode(thisNode,hayStack)
{
	var foundNodes = new Array();
	var errorArray = new Array();
	var nodeIndex = 0;
	for(nodeFinder=0; nodeFinder < hayStack.childNodes.length; nodeFinder++)
	{
		if(hayStack.childNodes[nodeFinder].nodeName == thisNode)
		{
			foundNodes[nodeIndex++] = hayStack.childNodes[nodeFinder];
		}
	}
	if(foundNodes[0]) return foundNodes;
	else return false;
}

function adjustToolTipsWidth()
{
	if((document.getElementById("tool1container").offsetWidth > 299))
	{
		document.getElementById("tool1container").style.width="300px";
		document.getElementById("tool1container").style.display="block";
	}
	if((document.getElementById("tool2container").offsetWidth > 299))
	{
		document.getElementById("tool2container").style.width="300px";
		document.getElementById("tool2container").style.display="block";
	}
	if((document.getElementById("tool3container").offsetWidth > 299))
	{
		document.getElementById("tool3container").style.width="300px";
		document.getElementById("tool3container").style.display="block";
	}
	document.getElementById("tooltipcontainer").style.width = document.getElementById("tool1container").offsetWidth + document.getElementById("tool2container").offsetWidth + document.getElementById("tool3container").offsetWidth + "px";
}


function loadTooltip(loadingText, itemRef,charUrl)
{
	if (!loadingText)
	return;
	showTip(loadingText);
	itemId = (itemRef.mouseover) ? itemRef.id : itemRef;
	if(!document.getElementById("itemBuffer"))
	{
		ttipItemBuffer = document.createElement("div");
		ttipItemBuffer.style.display = "none";
		document.getElementsByTagName("body")[0].appendChild(ttipItemBuffer);
	}
	if(itemId)
	{
		var bufferId = itemId;
		if(document.getElementById(bufferId))
		{
			showTip(document.getElementById(bufferId).innerHTML);
		}
		else
		{
			toolTipTest('item/item-'+ itemId + charUrl + ".xml",bufferId,itemId);
		}
	}
	else
	{
		showTip(itemRef.mouseover);
	}
}

function toolTipTest(thisUrl,thisBufferId,itemId)
{
//  showTip("loading...");
	if(!(_SARISSA_IS_SAFARI || window.opera))
	{
		if(firstPass)
		{
			firstPass = false;
			ttipXsltProcessor = new XSLTProcessor();
			var xslDoc = Sarissa.getDomDocument();
			//xslDoc.async = true;
			//if(is_ie) 
			//needs to be async for all browsers, otherwise unformatted responsetext will appear in Firefox for the first item that's moused over
			xslDoc.async = false;
			xslDoc.load("layout/item-tooltip.xsl");
			ttipXsltProcessor.importStylesheet(xslDoc);         
			ttipXslProcessorIsReady = true;
		}
	}
	var safariXmlRequest = new XMLHttpRequest;
	var safariXmlRequest2 = new XMLHttpRequest;
	function safariReadystateHandler()
	{
		if(safariXmlRequest.readyState == 4)
		{
			var preBufferedItemContainer = document.createElement("div");
			if(_SARISSA_IS_SAFARI || window.opera)
			{
				preBufferedItemContainer.innerHTML = safariXmlRequest.responseText;
			}
			else
			{
				var newItemHtml = ttipXsltProcessor.transformToFragment(safariXmlRequest.responseXML,window.document);
				preBufferedItemContainer.innerHTML = "";
				preBufferedItemContainer.appendChild(newItemHtml);
			}
			// begin vivisection //
			var nonAjaxTable = findNode("TABLE",preBufferedItemContainer)[0];
			var nonAjaxTbody = findNode("TBODY",nonAjaxTable)[0];
			var nonAjaxTr = findNode("TR",nonAjaxTbody)[0];
			var nonAjaxTooltips = findNode("TD",nonAjaxTr);
			// end vivisection //

			var bufferedItemContainer = document.createElement("div");
			bufferedItemContainer.id = thisBufferId;
			document.getElementById("tooltipcontainer").style.width = "300px";
			
			if(isShowing == true)
			{
				showTip(nonAjaxTooltips[0].innerHTML);
			}
			var bufferedItemTable = document.createElement("table");
			var bufferedItemRow = document.createElement("tr");
			bufferedItemRow.appendChild(nonAjaxTooltips[0]);
			bufferedItemTable.appendChild(bufferedItemRow);
			bufferedItemContainer.appendChild(bufferedItemTable);
			/*if(nonAjaxTooltips[1])
			{
				document.getElementById("tooltipcontainer").style.width = "650px";
				var bufferedItemTableTwo = document.createElement("table");
				var bufferedItemRowTwo = document.createElement("tr");
				bufferedItemRowTwo.appendChild(nonAjaxTooltips[1]);
				bufferedItemTableTwo.appendChild(bufferedItemRowTwo);
				bufferedItemContainer.appendChild(bufferedItemTableTwo);
			}
			if(nonAjaxTooltips[2])
			{
				document.getElementById("tooltipcontainer").style.width = "1000px";
				showTipThree(nonAjaxTooltips[2].innerHTML);
				var bufferedItemTableThree = document.createElement("table");
				var bufferedItemRowThree = document.createElement("tr");
				bufferedItemRowThree.appendChild(nonAjaxTooltips[2]);
				bufferedItemTableThree.appendChild(bufferedItemRowThree);
				bufferedItemContainer.appendChild(bufferedItemTableThree);
			}*/
			if(safariXmlRequest.responseText == "")
			{
				document.getElementById("toolBox").innerHTML = "Data not available";
				bufferedItemContainer.innerHTML = "Data not available";
			}
			else
			{
				document.getElementById("toolBox").innerHTML += safariXmlRequest2.responseText;
				bufferedItemContainer.innerHTML += safariXmlRequest2.responseText;
				ttipItemBuffer.appendChild(bufferedItemContainer);
			}
		}
	}
	function safariReadystateHandler2()
	{
		if(safariXmlRequest2.readyState == 4)
		{
			var preBufferedItemContainer = document.createElement("div");
			if(_SARISSA_IS_SAFARI || window.opera)
			{
				preBufferedItemContainer.innerHTML = safariXmlRequest.responseText;
			}
			else
			{
				var newItemHtml = ttipXsltProcessor.transformToFragment(safariXmlRequest.responseXML,window.document);
				preBufferedItemContainer.innerHTML = "";
				preBufferedItemContainer.appendChild(newItemHtml);
			}
			// begin vivisection //
			var nonAjaxTable = findNode("TABLE",preBufferedItemContainer)[0];
			var nonAjaxTbody = findNode("TBODY",nonAjaxTable)[0];
			var nonAjaxTr = findNode("TR",nonAjaxTbody)[0];
			var nonAjaxTooltips = findNode("TD",nonAjaxTr);
			// end vivisection //

			var bufferedItemContainer = document.createElement("div");
			bufferedItemContainer.id = thisBufferId;
			document.getElementById("tooltipcontainer").style.width = "300px";
			if(isShowing == true)
			{
				showTip(nonAjaxTooltips[0].innerHTML);
			}
			var bufferedItemTable = document.createElement("table");
			var bufferedItemRow = document.createElement("tr");
			bufferedItemRow.appendChild(nonAjaxTooltips[0]);
			bufferedItemTable.appendChild(bufferedItemRow);
			bufferedItemContainer.appendChild(bufferedItemTable);
			/*if(nonAjaxTooltips[1])
			{
				document.getElementById("tooltipcontainer").style.width = "650px";
				showTipTwo(nonAjaxTooltips[1].innerHTML);
				var bufferedItemTableTwo = document.createElement("table");
				var bufferedItemRowTwo = document.createElement("tr");
				bufferedItemRowTwo.appendChild(nonAjaxTooltips[1]);
				bufferedItemTableTwo.appendChild(bufferedItemRowTwo);
				bufferedItemContainer.appendChild(bufferedItemTableTwo);
			}
			if(nonAjaxTooltips[2])
			{
				document.getElementById("tooltipcontainer").style.width = "1000px";
				showTipThree(nonAjaxTooltips[2].innerHTML);
				var bufferedItemTableThree = document.createElement("table");
				var bufferedItemRowThree = document.createElement("tr");
				bufferedItemRowThree.appendChild(nonAjaxTooltips[2]);
				bufferedItemTableThree.appendChild(bufferedItemRowThree);
				bufferedItemContainer.appendChild(bufferedItemTableThree);
			}*/
			if(safariXmlRequest.responseText == "")
			{
				document.getElementById("toolBox").innerHTML = "Data not available";
				bufferedItemContainer.innerHTML = "Data not available";
			}
			else
			{
				document.getElementById("toolBox").innerHTML += safariXmlRequest2.responseText;
				bufferedItemContainer.innerHTML += safariXmlRequest2.responseText;
				ttipItemBuffer.appendChild(bufferedItemContainer);
			}
		}
	}
	safariXmlRequest.onreadystatechange = safariReadystateHandler;
	safariXmlRequest.open("GET", thisUrl, true);
	safariXmlRequest.send(null);
	safariXmlRequest2.onreadystatechange = safariReadystateHandler2;
	safariXmlRequest2.open("GET", "iteminfo.php?id="+itemId, true);
	safariXmlRequest2.send(null);
}

jsLoaded=true;//needed for ajax script loading
