﻿//Show RssFeed (Make Request For Get RSS)
function RssFeed_Show(txtXmlRss,lblRssFeed,btnRssFeedRefresh,lblRssFeedMessage,rssFeedView,message)
{
    RssFeed_Refresh(btnRssFeedRefresh,lblRssFeedMessage,message);
    txtXmlRss = document.getElementById(txtXmlRss);
    lblRssFeed = document.getElementById(lblRssFeed);
    if(txtXmlRss && lblRssFeed)
    {
        if(txtXmlRss.value)
        {
            var rssXml = txtXmlRss.value.replace(/&gt;/ig,">").replace(/&lt;/ig,"<");
            RssFeed_Send(rssXml,lblRssFeed,btnRssFeedRefresh,lblRssFeedMessage,rssFeedView); //IE
        }
    }
    //Enable RssFeed Refresh Button After 10000 ms For Timeout Ajax And Not Return Result
    setTimeout(function(){RssFeed_Disable(btnRssFeedRefresh,false);RssFeed_Message(lblRssFeedMessage,"");},10000);
}

//Send Request
function RssFeed_Send(rssXml,lblRssFeed,btnRssFeedRefresh,lblRssFeedMessage,rssFeedView)
{
    var doCallBack = {RssFeedObject: lblRssFeed,RssFeedRefresh: btnRssFeedRefresh, RssFeedMessage: lblRssFeedMessage, RssFeedLoader: "../RssFeed/RssFeedShowAsync.ashx", RssFeedXml: rssXml, RssFeedResult: "", RssFeedView: rssFeedView};
    CallBack_Send(doCallBack);
}

//Get Response And Transform Xslt And Generate Html
function RssFeed_Result(callBack)
{
    if(!callBack || !callBack.RssFeedObject || !callBack.RssFeedResult)
        return;

	var xsldoc = CallBack_XMLDomDocument();    
    if(!xsldoc)
        return;

	xsldoc.async = false;
	var rssXsltFile;
	var rssFeedView = callBack.RssFeedView;
	if(rssFeedView != null && rssFeedView != "")
	    rssXsltFile = "../RssFeed/" + rssFeedView; 
	else
        rssXsltFile = "../RssFeed/RssXslt.xslt";
	xsldoc.load(rssXsltFile);
	//Transform Xml And Xslt
	if (window.ActiveXObject)
		callBack.RssFeedObject.innerHTML = callBack.RssFeedResult.transformNode(xsldoc); //IE
	else if(document.implementation && document.implementation.createDocument)
	{
	    //FireFox Xml And Xslt Transform
        if(callBack.RssFeedResult.firstChild.tagName.toLowerCase() == "error")
            callBack.RssFeedObject.innerHTML = callBack.RssFeedResult.firstChild.textContent;
        else
        {
            var xsltProc = new XSLTProcessor();
            xsltProc.importStylesheet(xsldoc);
            var resultDoc = xsltProc.transformToDocument(callBack.RssFeedResult);
            var xmlSerial = new XMLSerializer;
            var serialized = xmlSerial.serializeToString(resultDoc);
            serialized = serialized.replace(/&gt;/ig,">").replace(/&lt;/ig,"<");
            callBack.RssFeedObject.innerHTML = serialized;
        }
 	}
 	//Enable RssFeed Refresh Button And Clear Please Wait...
	RssFeed_Disable(callBack.RssFeedRefresh,false);
    RssFeed_Message(callBack.RssFeedMessage,"");
}

//Refresh RssFeed (Make Request Again)
function RssFeed_Refresh(btnRssFeedRefresh,lblRssFeedMessage,message)
{
    RssFeed_Disable(btnRssFeedRefresh,true);
    RssFeed_Message(lblRssFeedMessage,message);
}

//Show Message in During Or Another Event Example(Please Wait...)
function RssFeed_Message(lblRssFeedMessage,message)
{
    lblRssFeedMessage = document.getElementById(lblRssFeedMessage);
    if(lblRssFeedMessage)
        lblRssFeedMessage.innerHTML = message;
}

//Disable RssFeed Refresh When Make Request And Response
function RssFeed_Disable(btnRssFeedRefresh,disabled)
{
    btnRssFeedRefresh = document.getElementById(btnRssFeedRefresh);
    if(btnRssFeedRefresh)
    {
        btnRssFeedRefresh.disabled = disabled;
        if(disabled)
        {
            //Disable RssFeed Button
            btnRssFeedRefresh.src = "../Images/Refresh_Disabled.gif";
            btnRssFeedRefresh.style.cursor = "default";
        }
        else
        {
            //Enable RssFeed Button
            btnRssFeedRefresh.src = "../Images/Refresh.gif";
            btnRssFeedRefresh.style.cursor = "pointer";
        }
    }
}

//Create XmlHTTPRequest Object -> Make Request And Response
function CallBack_XMLHttpRequest()
{
	if(window.XMLHttpRequest) //FireFox
		return new XMLHttpRequest();
	else 
	{
		if(window.XMLHttpRequestProgID)
			return new ActiveXObject(window.XMLHttpRequestProgID); //IE And IE7
		else
		{
			var progIDs = ["Microsoft.XMLHTTP"];
			//var progIDs = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
			for(var i = 0; i < progIDs.length; ++i) 
			{
				var progID = progIDs[i];
				try
				{
					window.XMLHttpRequestProgID = progID;
					return new ActiveXObject(progID);
				}
				catch(e){}
			}
		}
	}
	return null;
};

//Create XMLDomDocument Object -> Make Ttransform And Show Html
function CallBack_XMLDomDocument()
{
    if(document.implementation && document.implementation.createDocument)
        return document.implementation.createDocument("", "", null); //FireFox
    else
    {
	    if(window.XMLDomDocumentProgID)
		    return new ActiveXObject(window.XMLDomDocumentProgID); //IE
	    else
	    {
		    var progIDs = ["Microsoft.XMLDOM"];
		    //var progIDs = ["MSXML2.DOMDocument","Microsoft.XMLDOM"];
		    for(var i = 0; i < progIDs.length; ++i) 
		    {
			    var progID = progIDs[i];
			    try
			    {
				    window.XMLDomDocumentProgID = progID;
				    return new ActiveXObject(progID);
			    }
			    catch(e){}
		    }
	    }
    }
	return null;
};

//Make Send Request
function CallBack_Send(doCallBack)
{
    var x = CallBack_XMLHttpRequest();
    var result = null;
    if(!x)
	    return result;
    var action = doCallBack.RssFeedLoader;
    x.open("POST",action,true);
    x.setRequestHeader("Content-Type","text/xml");
    x.setRequestHeader("Accept-Encoding","gzip,deflate");
    x.onreadystatechange = function()
    {
	    if(x.readyState != 4)
		    return;
		doCallBack.RssFeedResult = CallBack_Result(x);
        RssFeed_Result(doCallBack);
    }
    x.send(doCallBack.RssFeedXml);
	return result;
};

//Make Receice Response
function CallBack_Result(result)
{
    if(!result)
        return "";
    if(!result.responseXML)
        return "";
    if(result.status != 200)
        return "";
    return result.responseXML;
};


