/**
* @version      $Id: rss_checker.js
* @package      My RSS Reader
* @copyright    Copyright (C) 2009 FalsinSoft. All rights reserved.
* @license      GNU/GPL
* @website      http://www.falsinsoft.co.nr
* @email        falsinsoft@gmail.com
* 
*/

var RSSList = null;
var MaxFeeds = 10;
var MaxErrors = 3;
var RootPath = "";
var ShowRSSList = true;
var FinalMessage = "";
var ErrorMessage = "";
var CheckProgressBar = null;
var CheckingAnimation = document.createElement("img");
var StatusIconOK = document.createElement("img");
var StatusIconFailed = document.createElement("img");

function CreateXmlHttpReq() 
{
    var XMLHttp = false;
    
    if(window.XMLHttpRequest) 
    {
        XMLHttp = new XMLHttpRequest();
    } 
    else if(window.ActiveXObject) 
    {
        try 
        {
            XMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch(e) 
        {
            try 
            {
                XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch(e) 
            {
                XMLHttp = false;
            }
        }
    }
    
    return XMLHttp;
}

function PreloadImages()
{
	CheckingAnimation.setAttribute("src", RootPath+"components/com_myrssreader/images/checking.gif");
	StatusIconOK.setAttribute("src", RootPath+"components/com_myrssreader/images/ok.gif");
	StatusIconFailed.setAttribute("src", RootPath+"components/com_myrssreader/images/failed.gif");
}

function Countdown(Timer)
{
	var InfoMsg = document.getElementById("info_msg");
	
	InfoMsg.innerHTML = FinalMessage+" "+Timer;		
	
	if(Timer <= 0)
		window.location.reload();
	else
		setTimeout("Countdown("+(Timer-1)+")", 1000);
}

function SetWaitAnimation(RSSIdx)
{
	var RSSCheck = document.getElementById("rss_check"+RSSIdx);
	
	RSSCheck.appendChild(CheckingAnimation);
}

function SetFinalResult(RSSIdx, StatusOK)
{
	var RSSCheck = document.getElementById("rss_check"+RSSIdx);
	var StatusIcon = document.createElement("img");
	
	RSSCheck.removeChild(RSSCheck.lastChild);
	
	if(StatusOK)
		StatusIcon.setAttribute("src", StatusIconOK.src);
	else
		StatusIcon.setAttribute("src", StatusIconFailed.src);
		
	RSSCheck.appendChild(StatusIcon);
}

function CheckNextRSSFeeds(HttpReq, RSSIdx)
{
	if(HttpReq.readyState == 4) 
    {
        if(HttpReq.status == 200)
        {
			if(ShowRSSList)
				SetFinalResult(RSSIdx, (HttpReq.responseText == "OK") ? true : false);
			else
				CheckProgressBar.setValue(parseInt(((RSSIdx+1)*100)/RSSList.length));
		
			RSSIdx++;
			
			if(RSSIdx < RSSList.length)
			{
				var CheckerURL = RootPath+"components/com_myrssreader/js/rss_checker.php";
				
				if(ShowRSSList) SetWaitAnimation(RSSIdx);
				
				HttpReq.onreadystatechange = function() { CheckNextRSSFeeds(HttpReq, RSSIdx); };
				
				CheckerURL += "?id="+escape(RSSList[RSSIdx]);
				CheckerURL += "&maxfeeds="+escape(MaxFeeds);
				CheckerURL += "&maxerrors="+escape(MaxErrors);
				CheckerURL += "&rand="+escape(Math.random());
				
				HttpReq.open("GET", CheckerURL, true);
				HttpReq.send(null);
			}
			else
			{
				Countdown(2);
			}
		}
		else
		{
			var InfoMsg = document.getElementById("info_msg");
			InfoMsg.innerHTML = ErrorMessage;
		}
	}
}

function CheckRSSFeeds()
{
	var CheckerURL = RootPath+"components/com_myrssreader/js/rss_checker.php";
	var HttpReq = CreateXmlHttpReq();
	
	if(ShowRSSList)
	{
		PreloadImages();
		SetWaitAnimation(0);
	}
	else
	{
		var RSSProgressTag = document.getElementById("rss_check_progressbar");
		
		if(CheckProgressBar == null) CheckProgressBar = new ProgressBar(0, {
																		'width':200,
																		'height':20,
																		'darkbg':'#006', // dark background
																		'darkfg':'#fff', // dark foreground
																		'lightbg':'#fff', // light background
																		'lightfg':'#000' // light foreground
																	});
		CheckProgressBar.setValue(0);
		RSSProgressTag.appendChild(CheckProgressBar);
	}

	HttpReq.onreadystatechange = function() { CheckNextRSSFeeds(HttpReq, 0); };
	
	CheckerURL += "?id="+escape(RSSList[0]);
	CheckerURL += "&maxfeeds="+escape(MaxFeeds);
	CheckerURL += "&maxerrors="+escape(MaxErrors);
	CheckerURL += "&rand="+escape(Math.random());
	
	HttpReq.open("GET", CheckerURL, true);
	HttpReq.send(null);
}



