var isWCE = (navigator.userAgent.toLowerCase().indexOf('windows ce') != -1);

function GetHttpRequestObject()
{
	if (window.ActiveXObject) 
	{
		try {return CreateIEHTTPRequest();}
		catch(e) {return null;}
	}
	else if (window.XMLHttpRequest) 
	{
		try {return new XMLHttpRequest();}
		catch(e) {return null;}
	}
	else
	{
		return null;
	}	
}

function CreateIEHTTPRequest()
{
	var versions = [ 'MSXML2.XMLHTTP.5.0', 
					 'MSXML2.XMLHTTP.4.0',
					 'MSXML2.XMLHTTP.3.0',
					 'Microsoft.XMLHTTP' ];
	for (var i = 0; i < versions.length; i++)
	{
		try {return new ActiveXObject(versions[i]);}
		catch (e) {}
	}
	throw "XMLHTTP not found";
}

function SendHttpRequest(webMethod, params)
{
	var httpRequest = GetHttpRequestObject();
	httpRequest.onreadystatechange = function() {eval('callback_' + webMethod)(httpRequest);};
	httpRequest.open('POST', appPath + 'ws/ajax.asmx/' + webMethod, true);
	httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	httpRequest.send(params);
}

function callback_LoadRSS_IE(rssSource, rssID, url, chDesc, chTitle, linkTitle, showDesc, isBasicList)
{
	if (rssSource.readyState == 4) 
	{
		// Load style sheet.
		var xslt = new ActiveXObject("Msxml2.XSLTemplate");
		var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
		var xslProc;
		
		xslDoc.async = false;
		xslDoc.load(appPath + "xslt/rssBasic.xslt");
		xslt.stylesheet = xslDoc;

		xslProc = xslt.createProcessor();
		xslProc.input = rssSource;
		xslProc.addParameter("root", appPath);
		xslProc.addParameter("rssID", rssID);
		xslProc.addParameter("url", url.replace("&amp;", "&"));
		xslProc.addParameter("description", chDesc);
		xslProc.addParameter("title", chTitle);
		xslProc.addParameter("linkTitle", linkTitle);
		xslProc.addParameter("showDescription", showDesc);
		xslProc.transform();
		var test = xslProc.output;
		var test = "";
	}
}

function GetRssFeed(anchor, rssID, url, chDesc, chTitle, linkTitle, showDesc, isBasicList)
{
/*	This technique (allowing the client to load the rss feed directly) causes a security warning in IE.
	if (window.ActiveXObject)
	{
		var rssSource = new ActiveXObject("Microsoft.XMLDOM");
		var dUrl = decodeURIComponent(url).replace(new RegExp("&amp;",'g'), "&");
		rssSource.async = true;
		rssSource.onreadystatechange = function() {eval('callback_LoadRSS_IE')(rssSource, rssID, dUrl, chDesc, chTitle, linkTitle, showDesc, isBasicList);};
		rssSource.load(dUrl);
		return;
	}
*/
	//escape(url).replace('&', '&amp;') used instead of encodeURIComponent for ie 5.0 compatibility
	anchor.blur();
	var img;
	var rssDiv;
	if (!isWCE)
	{
		anchor.onmouseover = null;
		anchor.onmouseout = null;
		img = anchor.firstChild;
		rssDiv = document.getElementById(rssID);
	}
	else
	{
		img = anchor.children(0);
		rssDiv = document.all(rssID);
	}
	
	if (!isWCE) {img.alt = 'loading...';}
	img.src = appPath + 'images/xml_dl_progress.gif';
	if (!rssDiv) return;
	
	var params = 'rssID=' + rssID + 
		'&url=' + escape(url).replace('&', '&amp;') + 
		'&description=' + chDesc + 
		'&title=' + chTitle + 
		'&linkTitle=' + linkTitle + 
		'&showDescription=' + showDesc + 
		'&basic=' + isBasicList;
	try
	{
		SendHttpRequest('GetRssFeed', params);
	}
	catch (e)
	{
		alert(e);
		//msgDiv.innerHTML = '<p class="error-msg">RSS data not available.<br/>' + e + '</p>';
	}
//	rssDiv.appendChild(msgDiv);
}

//IE persistence functions
/*
function rssSave(rssDiv)
{
	rssDiv.setAttribute(rssDiv.id, rssDiv.innerHTML);
}
function rssLoad(rssDiv){
	if (rssExpanded[rssDiv.id])
		rssDiv.innerHTML = rssDiv.getAttribute(rssDiv.id);
}
*/

function callback_GetRssFeed(httpRequest)
{
	if (httpRequest.readyState == 4) 
	{
		if (httpRequest.status == 200) 
		{
			var xmlDoc;
			var re=/(&amp;\#)([0-9]+);/g;
			if (window.ActiveXObject)
			{ 
				xmlDoc = new ActiveXObject('Microsoft.XMLDOM'); 
				xmlDoc.async = false;
				xmlDoc.validateOnParse = false;
				xmlDoc.resolveExternals = false;
				xmlDoc.loadXML(httpRequest.responseText.replace(re, '&#$2;'));
				var htmlstr = "";
				var divNode = xmlDoc.getElementsByTagName('div')[0];
				var rssDiv;
			
				if (!isWCE)
					rssDiv = document.getElementById(divNode.getAttribute('id'));
				else
					rssDiv = document.all(divNode.getAttribute('id')); 
					
				for (var i = 0; i < divNode.childNodes.length; i++)
					htmlstr += divNode.childNodes[i].xml
				rssDiv.innerHTML = htmlstr;
			}
			else if (document.implementation.createDocument)
			{ 			
				var parser = new DOMParser(); 
				xmlDoc = parser.parseFromString(httpRequest.responseText.replace(re, '&#$2;'), 'application\/xhtml+xml'); 
				var divNode = xmlDoc.getElementsByTagName('div')[0];
				var rssDiv = document.getElementById(divNode.getAttribute('id'));
				while (rssDiv.childNodes.length > 0) rssDiv.removeChild(rssDiv.childNodes[0]);
				for (var i = 0; i < divNode.childNodes.length; i++)
				{
					var cNode = divNode.childNodes[i].cloneNode(true);
					
					rssDiv.appendChild(cNode);
				}
			}
		}
		else 
		{
			window.status = httpRequest.statusText;
		}
	}
}
