/**
 * Simple Slider.
 * @author CNPP
 * @requires jquery.easing.js, jquery.cookie.js
 * @version 1.0.0	initial version			
 */
jQuery.fn.slider = function(op) {	
	// defaults
	var defaults =  {
			selectorClip:"#slider_clip",
			selectorContainer:"#slider_container",
			selectorSelector:".slide_selector",
			selectorItem:".slider_item",
			classSelected:"selected",
			sliderWidth:300,
			sliderHeight:75,
			sliderMargin:5,
			timeAnimate:600,
			easingAnimate:"easeOutCubic",
			persistent:true
	};
	jQuery.extend(defaults, op);
	
		
	// self
	var self = this;
	var elClip = jQuery(defaults.selectorClip);
	var elContainer = jQuery(defaults.selectorContainer);
	var elsSelector = jQuery(defaults.selectorSelector);
	var elsItem = jQuery(defaults.selectorItem);

	
	
	// prepare elements
	jQuery(elClip).css({"position":"relative","width":defaults.sliderWidth,"height":defaults.sliderHeight+defaults.sliderMargin*2});
	jQuery(elContainer).css({"position":"absolute","width":(defaults.sliderWidth+defaults.sliderMargin*2) * elsItem.length,"height":defaults.sliderHeight});
	
	
	// init selectors
	for (var i = 0; i < elsSelector.length; i++) {
		// selector
		var sItem = elsSelector[i];
		
		// events
		jQuery(sItem).bind("click",i,slideItem);	
	}
	
	// preselect
	if (defaults.persistent) {
		var index = jQuery.cookie('slider');
		if (index != null & elsItem.length > 1) {
			selectItem(index);	
		}
	}
	
	/**
	* Slides an item.
	*/
	function slideItem(e) {
		
		// selector
		jQuery(elsSelector).removeClass(defaults.classSelected);
		jQuery(this).addClass(defaults.classSelected);
		
		// slide
		var slideOffset = - (e.data * (defaults.sliderWidth+2*defaults.sliderMargin));

		
		// animate
		jQuery(elContainer).animate({"left":slideOffset},defaults.timeAnimate,defaults.easingAnimate,function(){});
		
		// persist
		if (defaults.persistent) {
			jQuery.cookie('slider',e.data,{path: '/'});
		}
		
		// don't bubble
		return false;
	}
	
	/**
	* Selects an item.
	*/
	function selectItem(i) {
		
		// selector
		jQuery(elsSelector).removeClass(defaults.classSelected);
		jQuery(elsSelector[i]).addClass(defaults.classSelected);
		
		// slide
		var slideOffset = - (i * (defaults.sliderWidth+2*defaults.sliderMargin));
		
		// animate
		jQuery(elContainer).css({"left":slideOffset});
		
		// don't bubble
		return false;
	}

	
		  
    // return
    return this;
};