var xmlRequest;
function GetXml(url)
{
	xmlRequest = null;
	
	// Branch for native XMLHttpRequest object
	if (window.XMLHttpRequest)
	{
		try
		{
			xmlRequest = new XMLHttpRequest();
		}
		catch(e)
		{
			xmlRequest = null;
		}
    // branch for IE/Windows ActiveX version
	}
	else if (window.ActiveXObject)
	{
		try
		{
			xmlRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				xmlRequest = null;
			}
		}
	}
	if (xmlRequest != null)
	{
		xmlRequest.onreadystatechange = ProcessQuote;
		xmlRequest.open("GET", url, true);
		xmlRequest.send(null);
	}
}

var getNextQuote = true;
var alreadyViewed = null;

function ProcessQuote()
{
	try
	{
		if (xmlRequest.readyState == 4)
		{
			if (xmlRequest.status == 200)
			{
				for (var i=0; i<xmlRequest.responseXML.childNodes.length; i++)
				{
					if (xmlRequest.responseXML.childNodes[i].nodeName == "ArrayOfString")
					{
						var resultsNodes = xmlRequest.responseXML.childNodes[i].childNodes;
						var validNodeArray = new Array();
						for (var j=0; j<resultsNodes.length; j++)
						{
							if (resultsNodes[j].nodeType == 1 && resultsNodes[j].nodeName == "string")
							{
								validNodeArray[validNodeArray.length] = resultsNodes[j];
							}
						}
						
						if (validNodeArray.length > 0)
						{
							var quoteID = validNodeArray[0].childNodes[0].nodeValue;
							var quote = validNodeArray[1].childNodes[0].nodeValue;
							var author = validNodeArray[2].childNodes[0].nodeValue;
							var resetAlreadyViewed = (validNodeArray.length == 4 && validNodeArray[3].childNodes[0].nodeValue == "true") ? true : false;
							if (resetAlreadyViewed)
							{
								alreadyViewed = quoteID;
							}
							else
							{
								alreadyViewed = (alreadyViewed == null) ? quoteID : alreadyViewed + "," + quoteID;
							}

							// move to outside-right of container
							quoteHolder.style.left = quoteContainerStyle.width;

							// set the text
							quoteHolder.innerHTML = quote + " - <em>" + author + "</em>";

							// scroll it
							Scroll();
						}
					}
				}
			}
		}
	}
	catch(e)
	{
		getNextQuote = true;
	}
}

function Scroll()
{
	if (parseInt(quoteHolderStyle.left) + GetObjectWidth(quoteHolder) > 0)
	{
		quoteHolder.style.left = (parseInt(quoteHolderStyle.left) - 1) + "px";
		setTimeout("Scroll()", 20);
	}
	else
	{
		getNextQuote = true;
	}
}

var quoteHolder;
var quoteHolderStyle;
var quoteContainer;
var quoteContainerStyle;

function GetQuote()
{
	if (document.getElementById("ScrollingQuotes") && getNextQuote && (document.getElementById("ScrollingQuotes").currentStyle || (document.defaultView && document.defaultView.getComputedStyle)))
	{
		quoteHolder = document.getElementById("ScrollingQuotesInner");
		quoteHolderStyle = (quoteHolder.currentStyle) ? quoteHolder.currentStyle : document.defaultView.getComputedStyle(quoteHolder, "");
		quoteContainer = document.getElementById("ScrollingQuotes");
		quoteContainerStyle = (quoteContainer.currentStyle) ? quoteContainer.currentStyle : document.defaultView.getComputedStyle(quoteContainer, "");
		getNextQuote = false;
		GetXml("WebSvc/Quotes.asmx/GetRandomQuote?alreadyViewed=" + (alreadyViewed == null ? "" : alreadyViewed));
	}
}

window.setInterval("GetQuote()", 1000);


function GetObjectWidth(obj)
{
	var result = 0;
	if (obj.offsetWidth)
		result = obj.offsetWidth;
	else if (obj.clip && obj.clip.width)
		result = obj.clip.width;
	else if (obj.style && obj.style.pixelWidth)
		result = obj.style.pixelWidth;
	return parseInt(result);
}
