(function($){	
	$.slidepics_app_id = 1;
	$.fn.slidepics = function(settings) {		
		if(!this[0]) return;
		settings =  jQuery.extend({
			activeImage: 0,
			picArray: [],
			name: "slidepics_box",
			thumbnail: "slidepics_thumbbox",
			autoPlay: true,
			interval: 6000,
			eventName: "hover",
			target:  "_blank",			
			showThumb: false,
			showTitle: true,
			showNum: true,
			thumbOpacity: 0.6,
			mainWidth: 0,
			mainHeight: 0,			
			maxNum: 6,
			max_interval:30
		},settings);		
		var container =  this;
		var _play = null;  
		this.times =  0;
		function _init() {				
			_set_interface();						
			$(container.container_name + " .slide_menu .thumb_menu >a[rel]").each(function(i){			
				var curSlideThu =  this;
				settings.picArray.push(new Array(this.href,this.rel,this.title));
				if(settings.showThumb) {
					if(i > settings.maxNum - 1) return;
					$(this).hover(function(){
						//_active_index(i);
						_set_image_to_view(i);						
						$(curSlideThu).children().css("opacity",1);
						playToggle();
					},playToggle);					
				} 
			});				
		
			_show_menu();
			_set_image_to_view(settings.activeImage);
			playToggle();		
			return container;
		}
		
		
		function _set_interface(){
			var mainPicHtml = $("<div class='slide_container'><div class='slide_main_pic'><a><img src=''   style='FILTER: progid:DXImageTransform.Microsoft.RandomDissolve()' /></a></div><div class='slide_menu'><div class='thumb_menu'/></div></div>");
			//alert(mainPicHtml.html())			
			mainPicHtml.attr("id",container.container_id);
			container.before(mainPicHtml);	
			//init width and height
			settings.mainWidth = (settings.mainWidth) || $(container.container_name).width();
			settings.mainHeight = (settings.mainHeight) || $(container.container_name).height();
			$(container.container_name + " .slide_main_pic").css({width:settings.mainWidth,height:settings.mainHeight});			
			$(container.container_name + " .slide_main_pic img").css({width:settings.mainWidth,height:settings.mainHeight});
			$(container.container_name + " .slide_main_pic a").hover(playToggle,playToggle);
			$(container.container_name).css({width:settings.mainWidth,height:settings.mainHeight});		
			container.children(":lt("+settings.maxNum+")").appendTo(container.container_name + " .slide_menu .thumb_menu");			
			container.hide();
		}
		
		
		
		function _set_image_to_view(index) {	
			_active_index(index);
			//alert(settings.activeImage);
			var mainHref = $(container.container_name + " .slide_main_pic a");
			var mainImg = $(container.container_name + " .slide_main_pic img");
			var curImg = settings.picArray[settings.activeImage];			
			mainHref.attr("href",curImg[0]);
			mainHref.attr("title",curImg[2]);	
			mainHref.attr("target",settings.target);				
			_active_menu();
			   		    			
			_img_animate(curImg[1])
		}
		
		// 
		function _img_animate(str){
			var mainImg = $(container.container_name + " .slide_main_pic img");
			if(!mainImg.attr("src")) {
				mainImg.attr("src",str);
			}else if($.browser.msie) {
				var filterArray=new Array();					
				filterArray[0] = "progid:DXImageTransform.Microsoft.RandomDissolve()";
				filterArray[1] = "progid:DXImageTransform.Microsoft.Iris(irisStyle=, motion=out)";
				filterArray[2] = "progid:DXImageTransform.Microsoft.Iris(irisStyle=diamond, motion=in)";
				filterArray[3] = "progid:DXImageTransform.Microsoft.Iris(irisStyle=cross, motion=)";
				filterArray[4] = "progid:DXImageTransform.Microsoft.Iris(irisStyle=circle, motion=)";
				filterArray[5] = "progid:DXImageTransform.Microsoft.Iris(irisStyle=square, motion=out)";
				filterArray[6] = "progid:DXImageTransform.Microsoft.Iris(irisStyle=plus, motion=in)";
				filterArray[7] = "progid:DXImageTransform.Microsoft.Barn(orientation=vertial motion=in)";
				filterArray[8] = "progid:DXImageTransform.Microsoft.Barn(orientation=vertial motion=out)";
				filterArray[9] = "progid:DXImageTransform.Microsoft.Barn(orientation=horizontal motion=in)";
				filterArray[10] = "progid:DXImageTransform.Microsoft.Barn(orientation=horizontalmotion=out)";
	
				try{						
					var eff_index = Math.floor(Math.random() * filterArray.length );			
					mainImg.css({"filter":filterArray[eff_index]});;
					mainImg[0].filters[0].apply();
					mainImg.attr("src",str);
					mainImg[0].filters[0].play();
				}catch(e){
					/*mainImg.stop().animate({opacity: 0.1},{duration:600,complete:function(){				
						$(this).attr("src",str).animate({opacity: 1},{duration:500});
					}});  */
					mainImg.fadeOut(500).attr("src",str).fadeIn(500);
				}
			} else {
				mainImg.fadeOut(500).attr("src",str).fadeIn(500);   
			}
		}
		
		function _show_menu(){	
			if(!settings.showThumb)  {
				$(container.container_name + " .slide_menu .thumb_menu").hide()
				if(settings.showNum) {	
					if(settings.showTitle) 
						$(container.container_name + " .slide_menu").append("<div class='menu_title'></div>");
					$(container.container_name + " .slide_menu").append("<div class='num_menu'></div>");						
					$(container.container_name + " .slide_menu .num_menu").css({width:settings.mainWidth-10});				
					for(var index = 0;index < settings.picArray.length && index < settings.maxNum;index++) {	
						$(container.container_name + " .slide_menu .num_menu").append("<span title='"+ settings.picArray[index][2]+"'>"+(index+1)+"</span>");
					}					
					$(container.container_name + " .slide_menu .num_menu span").bind("click",function(){
						var activeIndex = parseInt(this.innerHTML) || 0;					
						if(activeIndex == 0 || (activeIndex-1)== settings.activeImage) return;					
						_set_image_to_view(activeIndex-1);	
						container.times = 0;
					}).hover(playToggle,playToggle);						
				}
			}
		}
		
		function _active_menu() {
			if(settings.showThumb)  {
				$(container.container_name + " .slide_menu img").css("opacity",settings.thumbOpacity);
				$(container.container_name + " .slide_menu img").eq(settings.activeImage).css("opacity",1);
			} else if(settings.showNum){
				$(container.container_name + " .slide_menu .num_menu span").removeClass("cur");
				$(container.container_name + " .slide_menu .num_menu span").eq(settings.activeImage).addClass("cur");				
				if(settings.showTitle) 	 {
					
					var menu_title = $(container.container_name + "  .slide_menu .menu_title");
					if(menu_title.html()) 
						menu_title.stop().animate({marginTop:0,height:0},{duration:500,complete:function(){				
							$(this).html(settings.picArray[settings.activeImage][2]).animate({marginTop: -60,height:60},{duration:500});
						}}); 
					else 
						menu_title.html(settings.picArray[settings.activeImage][2]);
					//menu_title.slideUp().html(settings.picArray[settings.activeImage][2]).slideDown();
					//$(container.container_name + "  .slide_menu .menu_title").html(settings.picArray[settings.activeImage][2]);		
				}
			}
		}
		
		// autoplay 
		function playToggle(){
			if(!settings.autoPlay) return;
			if(_play) {		
				clearInterval(_play);
				_play = null;
			}
			else _play = setInterval(function(){_set_image_to_view()},settings.interval);			
			
		}
		
		
		function _active_index(index) {				
			container.times ++ ;			
			if(settings.max_interval > 0 && container.times > settings.max_interval)
				clearInterval(_play);
			if(typeof(index) =="number" && index >= 0 && index < settings.picArray.length) {
				settings.activeImage = index;return;
			}
			settings.activeImage ++ ;		
			if(!settings.picArray[settings.activeImage]) settings.activeImage = 0;	
			
		}
		
		this.app_id = $.slidepics_app_id;
		this.container_id = "slide_container_" + this.app_id;
		this.container_name = "#" + this.container_id;
		$.slidepics_app_id++ ;
		//alert($.slidepics_app_id);
		return _init();
	}
})(jQuery);
