if(typeof API == 'undefined') API = {};

API.carousel = new function(){	
	
	this.create = function(params){
		return new carousel(params);		
	}	

	var carousel = function(params){

	    var instance = this;
	    this.params = {
			interval: 10000,
	        container: '#promo',
	        items: '.rotary .item',       
	        animation: null,
	        clone: false        
	    };
	    
	    $.extend(this.params, params);	
	    
	    var items = null;
	    var pagination = null;
	    var cnt = null;
	    var size = 0; var current = 0;
	    var t = null;
	    
	    this.init = function(){	    
	    	items = $(this.params.container + ' ' + this.params.items);
	    	cnt = $(this.params.container);
	    	size = items.size();
	    	if(size < 2) return false;
	    	if(instance.params.clone){
	    		last = items.filter(':last').clone().addClass('cloned').prependTo(cnt);
		        first = items.filter(':first').clone().addClass('cloned').appendTo(cnt);
		        items = $(this.params.container + ' ' + this.params.items);
	    	}
	        //start();
	        instance.animation({direction: 1, preanimate: true});	
	        //$(this.params.container).mouseover(stop).mouseout(start);	        
	    }
	    this.pagination = function(cur){
	    	
	    	if(pagination == null){
	    		pagination = $('<ul class="pagination">');
	    		page = $('<li class="page-prev">');
    			link = $('<a href="#prev">Previous</a>');
    			link.click(function(){
    				instance.prev();
    				return false;
    			});
    			page.append(link);
    			pagination.append(page);
	    		for(var i = 0; i < size; i++){
	    			page = $('<li class="page-'+i+'">');
	    			link = $('<a href="#'+i+'">'+(i+1)+'</a>');	    			
	    			link.click(function(){
	    				var href = this.href;
	    				href = href.split('#');
	    				var c = parseInt(href[1]);
	    				var li = $(this).parent();
	    				if(!li.hasClass('current')){
	    					instance.animation({direction: 1, current: c});	    					
	    				}	    				 
	    				return false;
	    			});
	    			page.append(link);
	    			pagination.append(page);
	    		}
	    		page = $('<li class="page-next">');
    			link = $('<a href="#next">Next</a>');
    			link.click(function(){
    				instance.next();
    				return false;
    			});
    			page.append(link);	    	
    			pagination.append(page);
    			cnt.append(pagination);
    			Cufon.replace('.carousel li a');
	    	}else{	    		
	    		//update
	    	}
	    	links = pagination.find('li');
	    	links.removeClass('current');
	    	var clink = $(links.get(cur+1));	    	
	    	clink.addClass('current');	    	
	    }
	    var start = function(interval){
	    	//PREANIMATE
	    	stop();	    	
	    	interval = interval || instance.params.interval;
			if(interval == "disable") return;			
	        t = setInterval(instance.next,interval*1000);	
			return t;
	    }
	    var stop = function(){	    	
	        try {
	            clearTimeout(t);
	        } 
	        catch (e) {}
	    }
	    this.start = function(interval){
	    	return start(interval);
	    }
	    this.next = function(){
	    	instance.animation({direction: 1});     
	        return false;
	    }
	    this.prev = function(){
	    	instance.animation({direction: -1});
	        return false;
	    }
	    this.animation = function(aargs){
	    	
	    	var args = {
	    		'size': size,
	    		'items': items,
	    		'current': current,
	    		'direction': 1,
	    		'interval': instance.params.interval
	    	};
	    	
	    	$.extend(args, aargs);

	    	instance.pagination(args.current);
	    	var curr = null;
	    	if(typeof instance.params.animation == 'function'){
	    		curr = instance.params.animation(args);	    		
	    	}else{
	    		args.items.hide();
	    		curr = $(args.items.get(args.current));	    	
	    		curr.fadeIn(Math.round(args.interval/10));	    			
	    	}	    	
	    	current = args.current+args.direction;
	    	
	    	if(current > size-1) current = 0;
	    	if(current < 0 ) current = size-1;
	    	var time = curr.attr('rel');
	    	start(time);
	    	return curr;
	    }
	    $(document).ready(function(){
	    	instance.init();
	    });
	}	
}

C1 = API.carousel.create({
	container: '#carousel .carousel',
    items: '.frame',
    animation: function(args){
		args.items.hide();
		var curr = $(args.items.get(args.current));	    	
		curr.fadeIn(Math.round(args.interval/10));
		return curr;
	}
});

