var delay = 2000;
var start_frame = 0;


var generic = generic || {};

generic.RediTemplate = Class.create( Template, {
        initialize: function ( template, pattern ) {
                this.template = template?template:'';
                this.readyState = template?1:0;
                this.pattern = pattern?pattern:Template.Pattern;
                this.queue = new Array();
                return;
        },
        load: function(template) {
            this.template = template.toString();
            this.readyState = 1;
            this.onReadyState();
        },
        evaluateCallback: function (options) {
            this.options = {
              object:       {},
              callback:         function () {}
            };
            Object.extend(this.options, options || { });
            if (this.readyState) {
                        this.options.callback(this.evaluate(this.options.object));
            } else {
                        this.queue.push({
                                qtype: 'callback',
                                obj: this.options.object,
                                fnc: this.options.callback
                        });
             }
             return;
        },
        onReadyState: function () {
                while (q = this.queue.shift()) {
                        var object = q.obj;
                        var qtype = q.qtype;
                        var callback = q.fnc;
                        var elm;
                        callback(this.evaluate(object));
  }
        }
});
generic.TemplateFactory = Class.create( Hash, {
        get: function (params) {
                var key = params.path;
        var query = params.query;
                var forceReload = params.forceReload || false;
                var templateString = params.templateString || false;
                if (typeof this._object[key] != "undefined" && !forceReload && !query) {
                        return this._object[key];
                }

                this._object[key] = new generic.RediTemplate();

                if (templateString) {
                        this._object[key].load(templateString);
                        return this._object[key];
                }

                var url = key;
        if (query) {
            var q = $H(query);
            var queryString = q.toQueryString();
            url += "?" + queryString;
        }
                var tAjax = new Ajax.Request(url, {
                    method: params.method || 'get',
            parameters: params.urlparams,
                    onSuccess: function(transport) {
                        this._object[key].load(transport.responseText);
                    }.bind(this)
                });
                return this._object[key];
        }
});
generic.templatefactory = new generic.TemplateFactory();




function init() {
	generic.templatefactory.get({path:'/templates/whatsnew/index_ipad.tmpl'}).evaluateCallback({
            object: {},
            callback: function(html) {
           $('slide-show').innerHTML = html;
		   var lis = $('slide-images').getElementsByTagName('li');
	
	for( i=0; i < lis.length; i++){
		if(i!=0){
			lis[i].style.display = 'none';
		}
	}
	end_frame = lis.length -1;
	
	start_slideshow(start_frame, end_frame, delay, lis);
			}
        });		
}



function start_slideshow(start_frame, end_frame, delay, lis) {
	setTimeout(fadeInOut(start_frame,start_frame,end_frame, delay, lis), delay);
}


function fadeInOut(frame, start_frame, end_frame, delay, lis) {
	return (function() {
		lis = $('slide-images').getElementsByTagName('li');
		Effect.Fade(lis[frame]);
		if (frame == end_frame) { frame = start_frame; } else { frame++; }
		lisAppear = lis[frame];
		setTimeout("Effect.Appear(lisAppear);", 0);
		setTimeout(fadeInOut(frame, start_frame, end_frame, delay), delay + 2000);
	})
	
}


Event.observe(window, 'load', init, false);
