/*
 * s0lar
 * slider
 */
(function($) {
	jQuery.fn.slider = function(cfg){
		var 
			ui = {
				$btn_prev: 		null,
				$btn_next: 		null,
				$items_holder: 	null,
				$slider_line: 	null,
				$items_size: 	null,
				$items_obj: 	null
			},
			options = {
				step: 1,
				offset: 0,
				offset_def: 0,
				margin_left_corr: 0,
				offset_px: 0
			},
			
			init = function(obj){
				var $obj = $(obj);
				
				if( !$obj.length ) return;
				
				//	Init elements
				ui.$btn_prev 	= $obj.find( ".sl_btn_prev" );
				ui.$btn_next 	= $obj.find( ".sl_btn_next" );
				ui.$items_holder= $obj.find( ".sl_holder" );
				ui.$slider_line	= $obj.find( ".sl_line" );
				ui.$items_size 	= $obj.find( ".sl_width" );
				ui.$items_obj 	= $obj.find( ".sl_item" );
				
				//	if nothing to scrolling than return false!
				if (ui.$items_holder.width() >= ui.$items_size.width()) {
					ui.$btn_prev.click(function(){return false});
					ui.$btn_next.click(function(){return false});
					return false;
				}
				//init default global offset
				var offset = ui.$items_obj.eq(0).offset();
				options.offset_def = offset.left;
				//
				ui.$btn_prev.click(function(){
					//	Current offset
					curr_offset = options.offset;
					//	Calculate new offset
					if (options.offset - options.step >= 0) 
						options.offset -= options.step;
					//	New offset	
					new_offset = options.offset;
					//	Calculate offset in pixels
					options.offset_px += items_obj_offset(new_offset) - items_obj_offset(curr_offset);
					if( options.offset_px < 0 ) options.offset_px = 0;
					slide();
					//
					return false;
				});
				ui.$btn_next.click(function(){
					//	Current offset
					curr_offset = options.offset;
					//	Calculate new offset
					if (options.offset + options.step < ui.$items_obj.length) 
						options.offset += options.step;
					//	New offset	
					new_offset = options.offset;
					//	Calculate offset in pixels
					options.offset_px += items_obj_offset(new_offset) - items_obj_offset(curr_offset);
					if( ui.$items_size.width() - options.offset_px < ui.$items_holder.width() ) options.offset_px = ui.$items_size.width()-ui.$items_holder.width();
					slide();
					//
					return false;
				});
				disable_arrows();
			},
			disable_arrows =  function(){
				var hSize = ui.$items_holder.width();
				var lSize = ui.$items_size.width();
				var mleft = parseInt(ui.$slider_line.css('marginLeft'));
				if ((lSize + mleft) <= hSize ) {
					ui.$btn_next.addClass("r-end");
				}else {
					ui.$btn_next.removeClass("r-end");
				}
				
				if (mleft >= 0) {
					ui.$btn_prev.addClass("l-end");
				}else{
					ui.$btn_prev.removeClass("l-end");
				}
			},
			slide =  function(){
				//alert("sliding");
				ui.$slider_line.animate( 
					{'marginLeft':'-'+(options.offset_px)+'px'}, 
					100, 
					disable_arrows 
				);
			},
			items_obj_offset =  function(i){
				var offset = ui.$items_obj.eq( i ).offset();
				return offset.left;
			}
			
			//
			$.extend(options, cfg);
			
			//
			start = function($obj){
				$obj.each(function(){
					init( $(this) );
				});
			};
		
		start(this);
	};
})(jQuery);
