/***
**  JQUERY MiniScroller PLUGIN
**	WRITTEN BY TOM ROMBAUT
**  Version 0.1
**  06/2010
**  DEPENDENCIES : JQUERY 1.3.1+ , JQUERY UI 1.7.2+
***/
var MiniScroller = function(element, options) {
	var conf = $.extend({}, $.fn.miniscroller.defaults, options);
	var scroller = $(element);
	var items = {};
	var scrollitem = 0;
	
	var _initialize = function() {
		scroller.addClass();
		scroller.append($("<div class='msc-container'></div>"));
		var itemwidth = scroller.width();
		var totalwidth = 0;
		scroller.children().each(function(){
			if(!$(this).hasClass("msc-container")){
				$(this).wrap($("<div class='msc-item'></div>"));
				var el = $(this).parent(0);
				totalwidth += itemwidth;
				$(".msc-container").width(totalwidth);
				el.clone().css("width",itemwidth).appendTo($('.msc-container',scroller));
				el.remove();
			}
		});
		scroller.css("position","relative");
		_initscrolling();
	};
	
	/** SCROLL WHEN OVERFLOW **/
	var _initscrolling = function(){
		scroller.append("<div class='msc-scrolleft'></div>");
		scroller.append("<div class='msc-scrollright'></div>");
		$(".msc-scrolleft",scroller).click(function(){
			_scroll("left");
		});
		$(".msc-scrollright",scroller).click(function(){
			_scroll("right");
		});
		_checkmargins();
	};
	
	var _scroll = function(type){
		if(type == "left"){
			if(_getmargins().left < 0){
				$("div:first",scroller).animate({"marginLeft": (_getmargins().left + scroller.width())+"px"},conf.scrolltime,conf.easing,function(){_checkmargins();});
			}
		}else if(type == "right"){
			if(_getmargins().right > 0){
				$("div:first",scroller).animate({"marginLeft": (_getmargins().left - scroller.width())+"px"},conf.scrolltime,conf.easing,function(){_checkmargins();});
			}
		}
	};
	
	var _checkmargins = function(){
		if(_getmargins().left < 0)
			$(".msc-scrolleft",scroller).removeClass("msc-hidden");
		else
			$(".msc-scrolleft",scroller).addClass("msc-hidden");
		
		if(_getmargins().right > 0)
			$(".msc-scrollright",scroller).removeClass("msc-hidden");
		else
			$(".msc-scrollright",scroller).addClass("msc-hidden");
	};
	
	var _getmargins = function(){
		var leftm = ($("div:first",scroller).css("marginLeft").replace("px","")*1);
		var rightm = $("div:first",scroller).width() - ((scroller.width() + Math.abs(leftm)));
		return {left: leftm, right:rightm};	
	};
	
	_initialize();
	return scroller;
};



/**
**	JQUERY PLUGIN
**/
(function($) {	
	$.fn.miniscroller = function(options) {
		return this.each(function() {
			var element = $(this);
			if (element.data('miniscroller')) return;
			var w = new MiniScroller(this, options);
			element.data('miniscroller', w);
		});
	};
})(jQuery);

$.fn.miniscroller.defaults = {
		scrolltime : 500,
		easing	   : 'swing'	/* OR swing */
};