
    var max = 10;
    var url = 'endless-download.php';
    var ae;
    var display = false;
    var clock, counterElement, startTime, stopBtn, resetBtn, counter = 0, clockTimer, responseCount = 0;
    var globalIndex = 0;
    function init() {
        ae = new AsyncExecutioner([], { onExecution : handleExecution, deferTime : 25, onStop : handleStop, onStart : startClock });
        display = $('display');
        clock = $('duration').down('.clock');
        counterElement = $('duration').down('.count');
	message = $('duration').down('.message');
	
        startTime = (new Date()).getTime();
        
        for (var i = 0; i < 50; i++)
            fetchFeed({ index: i });
        
    }
   
    function startClock() {        
        clockTimer = setInterval(handleClock, 1000);
    }
    function handleClock() {
	
        var curTime = (new Date()).getTime();
        var dif = Math.floor((curTime - startTime) / 1000);
        clock.innerHTML = dif;
    }
    function fetchFeed(data) {
        if (data.index == 30) {
            service.setSynchronous(true); //after 10 lets cool it and let them become synchronous.
	    
	}
	
        service.send(data);        
    }
    function handleFeedFetch(xhr) {
        var data = $A(xhr.responseXML.getElementsByTagName("item"));
        ae.merge(data);
        if(++responseCount > 30){
		ae.start();
	}
    }
    function handleExecution(obj){
        try {
            
            var anchor = new Element('a', { href: obj.getElementsByTagName('link').item(0).firstChild.nodeValue });
            anchor.innerHTML = obj.getElementsByTagName('title').item(0).firstChild.nodeValue
            var body = new Element('p');
            body.innerHTML = obj.getElementsByTagName('description').item(0).firstChild.nodeValue;
            var container = new Element('div');
            container.appendChild(anchor);
            container.appendChild(body);
            try {
                display.insertBefore(container, display.firstChild)
            }
            catch (e) {
                display.appendChild(container);
            }
            counterElement.innerHTML = ++counter;
        }
        catch (e) {
            //heyyy no big deal, forget about it!!
        }
    }
    function handleStop(obj) {
	
	$('duration').addClassName("finished");
	message.show();
        clearInterval(clockTimer);
    }
    function handleFailure(){
        console.log("Request has failed %o", arguments);
    }
    var service = new AjaxService(url);
    
    service.on('success', handleFeedFetch);
    service.on('failure', handleFailure);
    
    window.onload = init;