/*
###########################################################################
Quote Scroller Script Begin
###########################################################################
*/

var headline_count;
var headline_interval;
var old_headline = 0;
var current_headline = 0;

var quotesId;
var quotesHTML;
var seiXmlDB_Root;
var userBrowser;
var xmlDoc;
var quotesArray;

var displayFormat = null;
var displayClass = null;

/* Configuration for Scrolling */
var rotateOrder;

/* Object Builder Variables */
var lineBreakHTML;
var lineBreakText;
var pageTabText;

function QuoteScroller(id, rotateOrder, customClass, displayType)
{
	if ((id != null) && (id != ""))
	{
		quotesId = id;
		
		if ((displayType != null) && (displayType != ""))
		{
		    displayFormat = displayType;
		}
		
		if ((customClass != null) && (customClass != ""))
		{
		    displayClass = customClass;
		}
		
		else
		{
		    displayClass = "QuotesContainer";
		}
		
		InitObjects();
		ParseXMLQuotes();
		GetContainer();
		document.write(quotesHTML);
	}
}

function InitObjects()
{
	if ((quotesId != null) && (quotesId != ""))
	{
		seiXmlDB_Root = "/QuoteXML/"
		quotesArray = new Array();

		/* User's Browser */
		userBrowser = CheckBrowser();
		lineBreakHTML = "<br />";
		lineBreakText = "\n";
		pageTabText = "\t";
		htmlSpacerText = "<!-- &#160; -->";
	}
}

function GetContainer()
{
	if ((quotesId != null) && (quotesId != ""))
	{		
		quotesHTML = "<div class='" + displayClass + "' id='QuotesMainContainer_" + displayClass + "'>";
		quotesHTML += lineBreakText;
		for (var i=0; i<quotesArray.length; i++)
		{
			quotesHTML += pageTabText + "<!-- ArrayIndexI: " + i + "-->" + quotesArray[i] + lineBreakText;
		}
		quotesHTML += lineBreakText;
		quotesHTML += "</div>";
	}
}

function headline_rotate()
{
	current_headline = (old_headline + 1) % headline_count;
	$("div[id*='" + displayClass + "'] div.QuoteContainer:eq(" + old_headline + ")").animate({top: -205},"slow", function() {                                                                                            $(this).css('top','210px');
	                                                                                       });
	$("div[id*='" + displayClass + "'] div.QuoteContainer:eq(" + current_headline + ")").show().animate({top: 0},"slow");
	old_headline = current_headline;
}

/*
###########################################################################
Quote Scroller Script End
###########################################################################
*/

/*
###########################################################################
Parse XML file Script Begin
###########################################################################
*/

function GetXMLDoc()
{
	var fullXMLFile = seiXmlDB_Root + quotesId + ".xml";

	try
	{
		// Internet Explorer
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.load(fullXMLFile);
	}
	
	catch(e)
	{

		try
		{
			//Firefox, Mozilla, Opera, etc.
			xmlDoc = document.implementation.createDocument("","",null);
			xmlDoc.async = false;

			xmlDoc.load(fullXMLFile);
	  	}
		
		catch(e)
		{
			try
			{
				//chrome
				var xmlhttp = new window.XMLHttpRequest();
				var file = fullXMLFile;
				xmlhttp.open("GET",file,false);
				xmlhttp.send(null);
				xmlDoc = xmlhttp.responseXML;
			}

			catch(e)
			{
				alert(e)
			}
		}
		
	}
}

function ParseXMLQuotes()
{
	GetXMLDoc();

	var quoteId = null;
	var quoteText = null;
	var quoteBy = null;
	var quoteCompany = null;

    try
    {
	    var array = new Array();
	    array = xmlDoc.documentElement.childNodes;
	}
	
	catch (e)
	{
	    alert("System was unable to retrieve the Quote Elements");
	}
		
	var tempCounter = 0;

	if (xmlDoc.documentElement != null)
	{
		for (var i=0; i<array.length; i++)
		{
			if (array[i].nodeType == 1)
			{
				var array2 = array[i].childNodes;

				for (var x=0; x<array2.length; x++)
				{
					if (array2[x].nodeType == 1)
					{
						var array3 = array2[x].childNodes;

						for (var z=0; z < array3.length; z++)
						{
							if (array3[z].nodeType == 1)
							{
								if (array3[z].nodeName == "quotetext")
								{
									quoteText = array3[z].childNodes[0].nodeValue;
								}

								else if (array3[z].nodeName == "author")
								{
									if (array3[z].childNodes[0] != null)
									{
										quoteBy = array3[z].childNodes[0].nodeValue;
									}
								}

								else if (array3[z].nodeName == "organisation")
								{
									if (array3[z].childNodes[0] != null)
									{
										quoteCompany = array3[z].childNodes[0].nodeValue;
									}
								}
							}
						}

						var quoteHTML = "<div id='QuoteContainer" + x + "' class='QuoteContainer'>"
						
						
						if (displayFormat == "Inline")
						{
						    quoteHTML += GetQuoteAsInline(quoteText, quoteBy, quoteCompany);
						}
						
						else if (displayFormat == "Div")
						{
						    quoteHTML += GetQuoteAsDiv(quoteText, quoteBy, quoteCompany);
						}
						
						else
						{
						    quoteHTML += GetQuoteAsTable(quoteText, quoteBy, quoteCompany);
						}
						
						quoteHTML += "</div>";

						quotesArray[tempCounter] = quoteHTML;
						tempCounter = tempCounter +1;
					}
				}
			}
		}
	}
}

function GetQuoteAsTable(inputText, inputBy, inputCompany)
{
    var returnHtml = "";
    
    returnHtml = "<table class='Quote' cellpadding='0' cellspacing='0' border='0'>";
	returnHtml += lineBreakText;
	returnHtml += "<tbody>";
	returnHtml += lineBreakText + lineBreakText;
	returnHtml += "<tr>";
	returnHtml += lineBreakText;
	returnHtml += pageTabText + "<td class='QuoteText'>";
	returnHtml += lineBreakText;
	returnHtml += pageTabText + pageTabText + "<span class='QuoteBlock'>&#34;</span><span>" + inputText + "</span><span class='QuoteBlock'>&#34;</span>";
	returnHtml += lineBreakText;
	returnHtml += pageTabText + "</td>";
	
	if ((inputBy != null) && (inputBy != ""))
	{
		returnHtml += pageTabText + "<td class='Author'>";
		returnHtml += lineBreakText;
		returnHtml += pageTabText + pageTabText + "<span>" + inputBy + "</span>";
		returnHtml += lineBreakText;
		returnHtml += pageTabText + "</td>";
	}

	if ((inputCompany != null) && (inputCompany != ""))
	{
		returnHtml += pageTabText + "<td class='Organisation'>";
		returnHtml += lineBreakText;
		returnHtml += pageTabText + pageTabText + "<span>" + inputCompany + "</span>";
		returnHtml += lineBreakText;
		returnHtml += pageTabText + "</td>";
	}
	
	returnHtml += lineBreakText;
	returnHtml += "</tr>";
	returnHtml += lineBreakText + lineBreakText;
	returnHtml += "</tbody>";
	returnHtml += lineBreakText;
	returnHtml += "</table>";
    
    return returnHtml;
}

function GetQuoteAsInline(inputText, inputBy, inputCompany)
{
    var returnHtml = "";
    
	returnHtml = "<div class='Quote'>";
	returnHtml += lineBreakText;
	returnHtml += pageTabText + "<span class='QuoteBlock'>&#34;</span><span class='QuoteText'>" + inputText + "</span><span class='QuoteBlock'>&#34;</span>";
	
	if ((inputBy != null) && (inputBy != ""))
	{
		returnHtml += lineBreakText;
	    returnHtml += pageTabText + "<span class='Author'>" + inputBy + "</span>";
	}

	if ((inputCompany != null) && (inputCompany != ""))
	{
		returnHtml += lineBreakText;
	    returnHtml += pageTabText + "<span class='Organisation'>" + inputCompany + "</span>";
	}
    
    returnHtml += lineBreakText;
    returnHtml += "</div>";
    
    return returnHtml;
}

function GetQuoteAsDiv(inputText, inputBy, inputCompany)
{
    var returnHtml = "";
    
    returnHtml = "<div class='Quote'>";
	returnHtml += lineBreakText;
	returnHtml += pageTabText + "<div class='QuoteText'>";
	returnHtml += lineBreakText;
	returnHtml += pageTabText + pageTabText + "<span class='QuoteBlock'>&#34;</span><span>" + inputText + "</span><span class='QuoteBlock'>&#34;</span>";
	returnHtml += lineBreakText;
	returnHtml += pageTabText + "</div>";
	
	if ((inputBy != null) && (inputBy != ""))
	{
		returnHtml += pageTabText + "<div class='Author'>";
	    returnHtml += lineBreakText;
	    returnHtml += pageTabText + pageTabText + "<span>" + inputBy + "</span>";
	    returnHtml += lineBreakText;
	    returnHtml += pageTabText + "</div>";
	}

	if ((inputCompany != null) && (inputCompany != ""))
	{
		returnHtml += pageTabText + "<div class='Organisation'>";
	    returnHtml += lineBreakText;
	    returnHtml += pageTabText + "<span>" + inputCompany + "</span>";
	    returnHtml += lineBreakText;
	    returnHtml += pageTabText + "</div>";
	}
    
    returnHtml += lineBreakText;
    returnHtml += "</div>";
    
    return returnHtml;
}

/*
###########################################################################
Parse XML file Script End
###########################################################################
*/

/*
###########################################################################
Common Functions Begin
###########################################################################
*/

function CheckBrowser()
{
	var browser = null;

	/* If Internet Explorer */
	if (navigator.appName.toLowerCase() == "microsoft internet explorer")
	{
		browser = "ie";
	}

	/* If Firefox, Chrome, Safari */
	else if (navigator.appName.toLowerCase() == "netscape")
	{
		if (navigator.userAgent.toLowerCase().match("firefox") != null)
		{
			browser = "ff";
		}

		else if (navigator.userAgent.toLowerCase().match("chrome") != null)
		{
			browser = "chrome";
		}

		else if (navigator.userAgent.toLowerCase().match("safari") != null)
		{
			browser = "safari";
		}
	}
	
	/* if Opera */
	else if (navigator.appName.toLowerCase() == "opera")
	{
		browser = "opera";
	}

	else 
	{
		browser = "unknown";
	}

	return browser;
}

/*
###########################################################################
Common Functions End
###########################################################################
*/

/*
###########################################################################
Document Load/Ready Begin
###########################################################################
*/

$(document).ready(function(){
	headline_count = $("div.QuoteContainer").size();
	$("div.QuoteContainer:eq("+current_headline+")").css('top','0px');

	headline_interval = setInterval(headline_rotate,10000); //time in milliseconds
	$("div[id*='" + displayClass + "']").hover(function() {
	clearInterval(headline_interval);
	}, function() {
	headline_interval = setInterval(headline_rotate,10000); //time in milliseconds
	headline_rotate();
	});
});

/*
###########################################################################
Document Load/Ready End
###########################################################################
*/
