YAHOO.namespace("apt");

YAHOO.apt.slideshow = function (container) {
	this.container = YAHOO.util.Dom.get(container);

	this.frames=[];
	cached_frames = YAHOO.util.Dom.getElementsByClassName("yahoo-slide-frame", null, this.container);
	
	this.slide_index = Math.floor(Math.random()*cached_frames.length);
	
	for (var i=0; i< cached_frames.length; i++)
	{
		this.frames[i] = { id: i, value: cached_frames[i]};
	}
	
	this.init();
}

YAHOO.apt.slideshow.prototype = {
	init : function() {
			YAHOO.util.Dom.replaceClass(this.frames[this.slide_index].value, "yahoo-slide-frame", "yahoo-slide-frame-active");
	},
	callback_next : function(e, obj) {
	    obj.slide_next();
    },
	slide_next : function()
	{
		this.next_slide_index = this.slide_index + 1;
		if (this.next_slide_index >= this.frames.length) {
		    this.next_slide_index = 0;
		}
		this.active_frame = this.frames[this.slide_index];
		this.next_frame = this.frames[this.next_slide_index];
		this.transition();
		return false;
	},	
    callback_previous : function(e, obj) {
	    obj.slide_previous();
    },
	slide_previous : function(e, obj)
		{
			this.next_slide_index = this.slide_index - 1;
			if (this.next_slide_index < 0) {
			    this.next_slide_index = this.frames.length - 1;
			}
			this.active_frame = this.frames[this.slide_index];
			this.next_frame = this.frames[this.next_slide_index];
			this.transition();
			return false;
		},
    add_previous_control : function(id) {
        var elements = YAHOO.util.Dom.getElementsByClassName(id);
        for (var i=0; i< elements.length; i++)
	    {
	        element = elements[i];
		    YAHOO.util.Event.addListener(element, "click", this.callback_previous, this);
	    }
    },
    add_next_control : function(id) {
        var elements = YAHOO.util.Dom.getElementsByClassName(id);
        for (var i=0; i< elements.length; i++)
	    {
	        element = elements[i];
		    YAHOO.util.Event.addListener(element, "click", this.callback_next, this);
	    }
    },
	transition: function()
		{
            YAHOO.util.Dom.replaceClass(this.active_frame.value, "yahoo-slide-frame-active", "yahoo-slide-frame");
			YAHOO.util.Dom.replaceClass(this.next_frame.value, "yahoo-slide-frame", "yahoo-slide-frame-active");
			this.slide_index = this.next_slide_index; 
		}
 }	

