(function() {
	
	
	$.slider = [];
	$.fn.picbox = function( s ) {
		
		function jSlider(obj){
			var t = obj;
			var owner = this;
			var settings = {
				speed: 400,
				offset: 0,
				slide_speed: 3000,
				range: 110,
				size: 0,
				cur: 0,
				margin: false,
				show_overlay: true,
				position: 'h',
				preview: true
			};
			owner.settings = $.extend(true, settings, s);
			
			
			owner.settings.size = $('.i-push', t).length;
			
			$('.boxer:first', t).css({
				width: 1000000
			});
			if (owner.settings.offset == 0) {
				$('#prev', t).addClass('disabled');
				$('#home', t).addClass('disabled');
			}
			else 
				if (owner.settings.offset == owner.settings.size - 1) {
					$('#next', t).addClass('disabled');
					$('#end', t).addClass('disabled');
				}
			
			owner.recalc_size = function() {
				$('.i-push', t).each(function(){
					$(this).find('span').width($(this).width() - 8);
				});
			}
			
			
			
			
			
			owner.items_obj_offset = function(i){
				var offset = $('.i-push', t).eq(i).offset();
				return offset.left;
			}
			
			owner.loadWith = function(i){
				

				$('#preload', t).show();
				
				var offset = owner.items_obj_offset(i) - owner.items_obj_offset(0);
				
				var cursor = $('.i-push', t).eq(i);
				owner.set_view_image(cursor, i);
				
				if ($('.i-car .float-box', t).width() > $('.i-car', t).width()) {
					if ($('.i-car .float-box', t).width() - offset < $('.i-car', t).width()) {
						offset = $('.i-car .float-box', t).width() - $('.i-car', t).width();
					}
					$('.i-car .boxer', t).stop().animate({
						marginLeft: -offset
					}, owner.settings.speed);
				}
				
				
				owner.settings.cur = i;
			}
			
			owner.set_view_image = function(cursor, i){
				$('.i-push', t).removeClass('current');
				cursor.addClass('current');
				
				var src_m = cursor.attr('href'), src_b = cursor.attr('rel');
				var im = new Image();
				$(t).find('#b-icon').removeAttr('style');
				
				im.onload = function(){
					$(t).find('#preload').hide();
					
					$(t).find('#b-icon').css('background', 'url(' + src_m + ') center center no-repeat');
					$(t).find('.lightbox').attr('href', src_b).attr('title', cursor.attr('title'));
					
					im.onload = function(){
					};
				};
				im.src = src_m;
			}
			
			owner.set_nav = function(){
				$('#prev:not(.disabled)', t).live('click', function(){
					$('#next.disabled', t).removeClass('disabled');
					$('#end.disabled', t).removeClass('disabled');
					if (owner.settings.cur > 0) {
						owner.loadWith(owner.settings.cur - 1);
					}
					if (owner.settings.cur == 0) {
						$(this).addClass('disabled');
						$('#home', t).addClass('disabled');
					}
					return false;
				});
				
				$('#next:not(.disabled)', t).live('click', function(){
					$('#prev.disabled', t).removeClass('disabled');
					$('#home.disabled', t).removeClass('disabled');
					
					if (owner.settings.cur != owner.settings.size - 1) {
						owner.loadWith(owner.settings.cur + 1);
					}
					
					if (owner.settings.cur >= owner.settings.size - 1) {
						$(this).addClass('disabled');
						$('#end', t).addClass('disabled');
					}
					return false;
				});
				
				$('#home:not(.disabled)', t).live('click', function(){
					owner.loadWith(0);
					$('#end').removeClass('disabled');
					$('#next').removeClass('disabled');
					$('#prev').addClass('disabled');
					$(this).addClass('disabled');
					return false;
				});
				
				$('#end:not(.disabled)', t).live('click', function(){
					owner.loadWith(owner.settings.size - 1);
					$('#home').removeClass('disabled');
					$('#prev').removeClass('disabled');
					$('#next').addClass('disabled');
					$(this).addClass('disabled');
					return false;
				});
			}
			
			var gallery_on = false;
			
			owner.slideShow = function(i){
				if (gallery_on) {
					if (owner.settings.cur >= owner.settings.size - 1) {
						gallery_on = false;
						owner.loadWith(0);
						return false;
					}
					owner.loadWith(i);
					window.setTimeout(function(){
						owner.slideShow(owner.settings.cur + 1);
					}, owner.settings.slide_speed);
				}
			}
			
			
			owner.regAnim = function(){
				$('#play', t).click(function(){
					gallery_on = !gallery_on;
					owner.settings.cur = 0;
					owner.slideShow(0);
					return false;
				});
				
				$('.i-push', t).click(function(){
					var rel = $('.i-push', t).index(this);
					if (rel == owner.settings.size - 1) {
						$('#next', t).addClass('disabled');
						$('#end', t).addClass('disabled');
					}
					else {
						$('#next', t).removeClass('disabled');
						$('#end', t).removeClass('disabled');
					}
					if (rel == 0) {
						$('#prev', t).addClass('disabled');
						$('#home', t).addClass('disabled');
					}
					else {
						$('#prev', t).removeClass('disabled');
						$('#home', t).removeClass('disabled');
					}
					
					owner.loadWith(rel);
					return false;
				})
			}
			
			owner.loadWith(owner.settings.offset);
			owner.regAnim();
			owner.set_nav();
			owner.recalc_size();
			
			
		}
		var $i = 0;
		$(this).each(function(){
			$.slider[$i++] = new jSlider(this);
		});
	}
})();


