GenericRemoteProvider = function(sProviderURL) {
	this.ready = false;
	this.isbusy = false;
	this.http = null;
	this.output = null;
	// mozilla, opera and IE7+
	if (typeof(XMLHttpRequest) != "undefined" || typeof(window.XMLHttpRequest) != "undefined") {
		try {
			this.ready = true;
			this.http = new XMLHttpRequest();
		}
		catch (e) {
			this.ready = false;
			this.http = null;
		}
	}
	// Internet Explorer up to v. 6
	if (this.http == null && typeof(ActiveXObject) != "undefined") {
		try {
			this.ready = true;
			this.http = new ActiveXObject("MSXML2.XMLHTTP.3.0");
		}
		catch (e) {
			try {
				this.ready = true;
				this.http = new ActiveXObject("MSXML2.XMLHTTP");
			}
			catch (E) {
				try {
					this.http = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (eE) {
					this.ready = false;
					this.http = null;
				}
			}
		}
	}
	// IceBrowser
	if (this.http == null && typeof(window.createRequest) != "undefined") {
		try {
			this.ready = true;
			this.http = window.createRequest();
		}
		catch (e) {
			this.ready = false;
			this.http = null;
		}
	}
	if (this.http == null) {
		//alert("No XMLHttpRequest object found.\nPlease use another browser, or activate ActiveX if you're using Internet Explorer");
	}
	if (!this.ready) return;
	if (sProviderURL != null && sProviderURL != "") {
		this.ready = true;
		this.providerurl = sProviderURL;
	}
	else {
		//alert("No Provider-URL was provided.\nPlease contact a webmaster or administrator and make sure that an URL gets provided.");
	}
	this.OpenXMLConnection = function(fnReceivingFunction, oInput) {
		if (this.ready) {
			var oThis = this;
			var oHttp = this.http;
			if (oHttp.readyState != 0 && oHttp.readyState != 4) {
				if (oThis.isbusy) oThis.isbusy = false;
				oHttp.onreadystatechange = function () {};
				oHttp.abort();
			}
			var sURL = this.providerurl;
			if (typeof(oInput) != "undefined" && typeof(oInput) == "object" && oInput != null) {
				var iCount = 0;
				for (var i in oInput) {
					if (typeof(oInput[i]) != "function") {
						sURL += (iCount == 0) ? "?" : "&";
						sURL += encodeURIComponent(i) + "=" + encodeURIComponent(oInput[i]);
						iCount++;
					}
				}
			}
			else if (typeof(oInput) == "string") {
				sURL += "?userInput=" + encodeURIComponent(oInput);
			}
			oHttp.open("get", sURL, true);
			// temporarily removed because of incompatibility with IE6
//			if (oHttp.setRequestHeader && oHttp.setRequestHeader != undefined) {
//				oHttp.setRequestHeader("Content-Type", "text/xml");
//			}
			oThis.isbusy = true;
			oHttp.onreadystatechange = function() {
				if (oHttp.readyState == 4 || oHttp.readyState == "complete") {
					// status=200: file found and loaded;
					// status=304: file found, but determined unchanged and loaded from cache
					if (oHttp.status == 200 || oHttp.status == 304) {
						var aReturnValues = null;
						if (typeof(oHttp.responseXML) != "undefined" && oHttp.responseXML != null) {
							aReturnValues = oHttp.responseXML;
						}
						fnReceivingFunction(aReturnValues);
					}
					oThis.isbusy = false;
				}
			}
			oHttp.send(null);
		}
	}
};

// creates a given html element in memory and returns the element
function MakeElement(tag, attrs, text) {
	var e = document.createElement(tag);
	if (attrs) {
		for (var key in attrs) {
			if (typeof(attrs[key]) == "function") continue; // defeat bug caused by adding custom functions to arrays
			if (key == "class") { e.className = attrs[key]; }
			else if (key == "id") { e.id = attrs[key]; }
			else { e.setAttribute(key, attrs[key]); }
		}
	}
	if (text) e.appendChild(document.createTextNode(text));
	return e;
}


// removes any child nodes of the given object
function ClearChildElements(obj) {
	if (obj == null) return;
	if (obj.hasChildNodes()) {
		while (obj.childNodes.length >= 1) {
			obj.removeChild(obj.firstChild);       
		} 
	}
}

function ClearInterval(sInterval) {
	var bIntervalExist = !!window[sInterval];
	if (bIntervalExist) window.clearInterval(window[sInterval]);
}



	// window.onload = Init;
	
	var drSettings = { };
		drSettings.ContentID = "drlist";
		drSettings.AjaxProviderURL = "/drfeed/drfeeds.asp";
		drSettings.NewsTickerInterval = 90;
		drSettings.AjaxProviderObject = null;
		drSettings.CurrentNewsIndex = 0;
		drSettings.IsUpdatingNews = false;
		drSettings.noCache = null;
		drSettings.oNews = new Array();
		drSettings.UpdateNewsTimeout = 6000;
		drSettings.ActualWidth = 0;
		drSettings.TickerSpeed = 1;

	var IterationCounter = 0;
	var AjaxProviderObject = null;
	var CurrentNewsIndex = 0;
	var IsUpdatingNews = false;
	var oNews = new Array();
	var t, iv, drt, driv = null;
	var noCache = null;
	
	function Init() {
		//alert('initting');
		GetNewDRNews();
		setTimeout("keepAessionAlive()", 30000);
	}
	
	function InitDRNewsTicker() {
		driv = setInterval("ShowDRNews()", drSettings.NewsTickerInterval);
	}
	
	function GetNewDRNews() {
		//alert('getting new news');
		drSettings.IsUpdatingNews = true;
		drSettings.noCache = new Object();
		drSettings.noCache["noCache"] = (new Date).getTime() + "." + Math.random()*1234567*Math.random();
		drSettings.AjaxProviderObject = new GenericRemoteProvider(drSettings.AjaxProviderURL, drSettings.noCache);
		drSettings.AjaxProviderObject.OpenXMLConnection(WriteDRNewsItems);
		drSettings.AjaxProviderObject = null;
		drt = null;
	}
	function WriteDRNewsItems(sXmlFile) {
		//alert('writing news');
		var NewsList = document.getElementById(drSettings.ContentID);
		ClearChildElements(NewsList);
		drSettings.oNews = new Array();
		if (typeof(sXmlFile) == "object") {
			var oXmlNews = sXmlFile.documentElement;
			var int = 0;
			var oTickerSpan, oText, oSpan, Parameter = null;
			oSpan = MakeElement("span");
			for (var i = 0; i < oXmlNews.childNodes.length; i++) {
				if (oXmlNews.childNodes[i] != undefined && oXmlNews.childNodes[i].tagName != undefined && oXmlNews.childNodes[i].tagName == "item") {
					var oNode = oXmlNews.childNodes[i];
					drSettings.oNews[int] = new Object();
					var oTitle = oNode.getElementsByTagName("title");
					if (oTitle != null && oTitle.length > 0 && oTitle[0].childNodes != null && oTitle[0].childNodes.length > 0) 
						drSettings.oNews[int].title = oTitle[0].firstChild.nodeValue;
					else 
						drSettings.oNews[int].title = "";
					var oDescription = oNode.getElementsByTagName("description");
					if (oDescription != null && oDescription.length > 0 && oDescription[0].childNodes != null && oDescription[0].childNodes.length > 0) 
						drSettings.oNews[int].description = oDescription[0].firstChild.nodeValue;
					else 
						drSettings.oNews[int].description = "";
					oStrong = MakeElement("strong", null, drSettings.oNews[int].title);
					oText = MakeElement("em", null, drSettings.oNews[int].description);
					Parameter = new Array();
						Parameter["class"] = "tickeritem";
					oTickerSpan = MakeElement("span", Parameter, "");
					oTickerSpan.appendChild(oStrong);
					oTickerSpan.appendChild(oText);
					oSpan.appendChild(oTickerSpan);
					int++;
				}
			}
			NewsList.appendChild(oSpan);
		}
	    drSettings.ActualWidth = oSpan.offsetWidth;
		NewsList = null;
		if (drSettings.CurrentNewsIndex >= oNews.length) drSettings.CurrentNewsIndex = oNews.length-1;
		drSettings.IsUpdatingNews = false;
		ClearInterval("driv");
		InitDRNewsTicker();
	}

	function ShowDRNews() {
		var oNewsList = document.getElementById(drSettings.ContentID);
		if (!drSettings.IsUpdatingNews && oNewsList) {
			if (parseInt(oNewsList.style.left) > (drSettings.ActualWidth*(-1) + 58)) {
				oNewsList.style.left = parseInt(oNewsList.style.left) - drSettings.TickerSpeed + "px";
			}
			else {
				oNewsList.style.left = 0 + "px";
				ClearInterval("driv");
				GetNewDRNews();
			}
		}
	}
	
