jQuery.fn.SWHeadImgSlider=function(d){
	var menuItemsLimit=6;
	
	var controlState="hide";
	if(d.onChangeItem==null)
		d.onChangeItem=function(){};
	jQuery.fn.SWHeadImgSlider.rebuildMenu=function(){
		var html='';
		var start=Math.max(Math.min(Math.max(jQuery.fn.SWHeadImgSlider.currentItem-menuItemsLimit/2+1,1),jQuery.fn.SWHeadImgSlider.items.length-menuItemsLimit+1),1);
		var active='';
		
		menuItemsLimit=Math.min(menuItemsLimit,jQuery.fn.SWHeadImgSlider.items.length);
		
		for(var i=start;i<start+menuItemsLimit;i++)
		{
			active='';
			if(i==jQuery.fn.SWHeadImgSlider.currentItem)
				active=' class="active"';
			html+='<li'+active+'><a href="#" onclick="jQuery.fn.SWHeadImgSlider.show('+i+',0); return false;">'+i+'</a></li>';
		}
		
		if(jQuery.fn.SWHeadImgSlider.items.length==1){
			$("#sw-img-slider-nav-up").hide();
			$("#sw-img-slider-nav-down").hide();
		}else{
			$("#sw-img-slider-nav-up").show();
			$("#sw-img-slider-nav-down").show();
		}
		
		jQuery("#sw-img-slider-nav ul").html(html);
	};
	
	this.SWHeadImgSlider.menuEnabled=d.menu==null?(this.SWHeadImgSlider.menuEnabled==null?false:this.SWHeadImgSlider.menuEnabled):d.menu;
	
	jQuery.fn.SWHeadImgSlider.show=function(num,nTimeOut){
		if(nTimeOut==0){
			clearTimeout(jQuery.fn.SWHeadImgSlider.slideTimeOut);
		}
		
		jQuery.each(jQuery.fn.SWHeadImgSlider.items,function(i,v){
			if(i+1==num){
				var img=new Image();
				jQuery(img).addClass("current-item").load(function(){
					jQuery(this).hide();
					
					jQuery('#sw-img-slider').removeClass('loading').append(this);
					
					jQuery(this).fadeIn();
					jQuery(this).wrap("<a href=\""+v.link+"\""+(v.target!=''?' target="'+v.target+'"':'')+"></a>");
					
					$(this).hover(function(){
						if(controlState=="start-hide" || controlState=="hide"){
							controlState="start-show";
							$("#sw-img-slider-control").stop().show().animate({opacity:0.7},500,function(){
								controlState="show";
							});
						}
					},function(){
						if(controlState=="start-show" || controlState=="show"){
							controlState="start-hide";
							$("#sw-img-slider-control").stop().show().animate({opacity:0},500,function(){
								controlState="hide";
							});
						}
					});
				}).attr('src',v.src);
				jQuery.fn.SWHeadImgSlider.currentItem=i+1;
				
				if(nTimeOut>0){
					var nextImgNum=jQuery.fn.SWHeadImgSlider.currentItem==jQuery.fn.SWHeadImgSlider.items.length?1:jQuery.fn.SWHeadImgSlider.currentItem+1;
					jQuery.fn.SWHeadImgSlider.slideTimeOut=setTimeout("jQuery.fn.SWHeadImgSlider.show("+nextImgNum+","+nTimeOut+");",nTimeOut);
					
					// check control button state
					$("#sw-img-slider-control .button1").addClass("pause");
				}else{
					$("#sw-img-slider-control .button1").removeClass("pause");
				}
				
				if(jQuery.fn.SWHeadImgSlider.menuEnabled){
					jQuery.fn.SWHeadImgSlider.rebuildMenu();
				}
			}
		});
		d.onChangeItem(num,nTimeOut);
	};
	
	if(d.items!=null && d.items.length>0){
		jQuery.fn.SWHeadImgSlider.items=d.items;
		jQuery.fn.SWHeadImgSlider.currentItem=0;
	}
	
	$("#sw-img-slider-control").unbind("mouseover").mouseover(function(){
		$(this).stop().css({opacity:0.7});
		controlState=="show";
	});
	
	$("#sw-img-slider-control .button1").unbind("click").click(function(){
		if($(this).hasClass("pause")){
			$('#sw-img-slider').SWHeadImgSlider({act:'stop'});
			clearTimeout(jQuery.fn.SWHeadImgSlider.slideTimeOut);
			$(this).removeClass("pause");
		}else{
			$('#sw-img-slider').SWHeadImgSlider({act:'start',delay:5000});
			$(this).addClass("pause");
		}
	});
	
	
	
	switch(d.act){
		case'show':
			jQuery.fn.SWHeadImgSlider.show(d.num,0);
		break;
		case'next':
			jQuery.fn.SWHeadImgSlider.show(jQuery.fn.SWHeadImgSlider.currentItem+1,0);
		break;
		case'prev':
			jQuery.fn.SWHeadImgSlider.show(jQuery.fn.SWHeadImgSlider.currentItem-1,0);
		break;
		case'start':
			var nextImgNum=jQuery.fn.SWHeadImgSlider.currentItem==jQuery.fn.SWHeadImgSlider.items.length?1:jQuery.fn.SWHeadImgSlider.currentItem+1;
			jQuery.fn.SWHeadImgSlider.show(nextImgNum,d.delay);
		break;
		case'stop':
			clearTimeout(jQuery.fn.SWHeadImgSlider.slideTimeOut);
		break;
	}
}