/*
bxCarousel v1.0
Plugin developed by: Steven Wanderski
http://bxcarousel.com
http://stevenwanderski.com

Released under the GPL license:
http://www.gnu.org/licenses/gpl.html

customized by InterLake
*/

(function($){

	$.fn.bxCarousel = function(options){

		var defaults = {
			move: 4,
			speed: 500,
			margin: 0,
			next_text: 'next',
			next_image: '',
			next_image_disabled: '',
			prev_text: 'prev',
			prev_image: '',
			prev_image_disabled: '',
			controls: true,
			container_width: 0
		};

		var options = $.extend(defaults, options);

		return this.each(function() {
			var $this = $(this);                
			var li = $this.find('li');
			var first = 0;
			var fe = 0;
			var is_working = false;
			var j = '';
			var clicked = false;		

			li.css({'float':'left','listStyle':'none', 'marginRight':options.margin});
			var ow = li.outerWidth(true);
			wrap_width = options.width;
			slider_width = ow*li.size();
			var seg = ow*options.move;
			var seg_init = ow*options.move;
			$this.wrap('<div class="bx_container"></div>').width(slider_width);
			if(options.controls){
				if(options.next_image != '' || options.prev_image != ''){var controls = '<div class="prev"></div><div class="next"></a></div>';}
				else{var controls = '<a href="" class="prev">'+options.prev_text+'</a><a href="" class="next">'+options.next_text+'</a>';}	
			}
			$this.parent('.bx_container').wrap('<div class="bx_wrap"></div>').css({'position':'relative', 'width':options.container_width,'overflow':'hidden'}).before(controls);
			$this.css({'position':'relative', 'left':(0)});
			set_controls();
						
			$this.parent().siblings('.next').click(function(){
				slide_next();
				clearInterval(j);
				clicked = true;
				return false;
			});				
			$this.parent().siblings('.prev').click(function(){
				slide_prev();
				clearInterval(j);
				clicked = true;
				return false;
			});

			function slide_next(){
				if(!is_working){
					is_working = true;
					seg = seg_init;
					/* set step width of sliding, check if the slider ends */
					isLeft = $this.position().left;
					//alert("isLeft " + isLeft + " slider_width " + slider_width + " options.container_width " + options.container_width + "\ndiff " + Number(slider_width-options.container_width+isLeft) + " seg " + seg);
					if(seg > Number(slider_width-options.container_width+isLeft)) 
						seg = Number(slider_width-options.container_width+isLeft-options.margin);
					//alert("seg " + seg);
					if(seg > 0) {
						$this.animate({left:'-='+seg}, options.speed, function(){
							is_working = false;
							set_controls();
						});
					} else {
						is_working = false;
					}
				}
			}
			
			function slide_prev(){
				if(!is_working){
					is_working = true;
					if(seg < seg_init) seg = seg+seg_init;
					else seg = seg_init;
					/* set step width of sliding, check if the slider ends */
					isLeft = $this.position().left;
					//alert("isLeft " + isLeft + " slider_width " + slider_width + " options.container_width " + options.container_width + "\ndiff " + Number(slider_width-options.container_width-isLeft) + " seg " + seg);
					if(isLeft == 0) seg = 0;
					else if(seg > Math.abs(isLeft)) 
						seg = Math.abs(isLeft);
					else if(seg > Number(slider_width-options.container_width-isLeft)) 
						seg = Number(slider_width-options.container_width-isLeft);
					//alert("seg " + seg);
					if(seg > 0) {
						$this.animate({left:'+='+seg}, options.speed, function(){
							is_working = false;
							set_controls();
						});
					} else {
						is_working = false;
					}
				}
			}
			
			function set_controls() {
				isLeft = $this.position().left;
				//alert("isLeft " + isLeft + " diff " + Number(slider_width-options.container_width-options.margin+isLeft));
				$this.parent().siblings('.next').empty();
				$this.parent().siblings('.prev').empty();
				if(isLeft == 0) {
					
					$this.parent().siblings('.prev').append('<img src="'+options.prev_image_disabled+'" style="border:0; padding: 2px;"/>');
					$this.parent().siblings('.next').append('<a href=""><img src="'+options.next_image+'" style="border:0; padding: 2px;"/></a>');
				
				} else {
					
					if(Number(slider_width-options.container_width-options.margin+isLeft) <= 0) {
						
						$this.parent().siblings('.next').append('<img src="'+options.next_image_disabled+'" style="border:0; padding: 2px;"/>');
						$this.parent().siblings('.prev').append('<a href=""><img src="'+options.prev_image+'" style="border:0; padding: 2px;"/></a>');
					
					} else if(Number(slider_width-options.container_width-options.margin+isLeft) > 0) {
						
						$this.parent().siblings('.next').append('<a href=""><img src="'+options.next_image+'" style="border:0; padding: 2px;"/></a>');
						$this.parent().siblings('.prev').append('<a href=""><img src="'+options.prev_image+'" style="border:0; padding: 2px;"/></a>');
					
					}
				}
			}
		});			
	}    
})(jQuery);
