(function($){
	$.fn.artistempm = function (opts) {
		var frame = $(this);
		var main_frame = null;
		var left_btn = null;
		var right_btn = null;
		var photo_frame = null;
		var animating = false;
		var rotate_interval = null;
		var default_opts = {
			curPos : 0,
			pervPos : 0,
			motionDuration : 800,
			motionType : "easeOutBack",
			rotateInterval : 5000,
			withRotate: true
		}
		
		var opt = $.extend(default_opts, opts);

		function autoRotateAction ()
		{
			endRotate();
			next();
			startRotate();
		}
		
		function startRotate ()
		{
			rotate_interval = setTimeout(autoRotateAction, opt.rotateInterval);
		}
		
		function endRotate ()
		{
			if(rotate_interval != null)
				clearTimeout(rotate_interval);
		}
		
		function check ()
		{
			//alert("1");
			//if( (opt.items == null || typeof(opt.items) == "undefined" || opt.items.length == 0) && ($(photo_frame).html() == ""))
			//alert(opt.items);
			//if( (opt.items == null || typeof(opt.items) == "undefined" || opt.items.length == 0))
			// 	return false;
			 
			frame.css("position", "relative");
			frame.css("width", "645px");
			frame.css("height", "250px");
			//alert("2");
			var tmp = frame.children(".artiste-mpm-main-container");
			if(tmp.length < 1)
				return false
			else
			{
				main_frame = tmp[0];
				$(main_frame).css("position", "relative");
			}
			//alert("3");
			var tmp = $(main_frame).children(".artiste-mpm-main-left-button");

			if(tmp.length < 1)
				return false;
			else
				left_btn = tmp[0];

			tmp = $(main_frame).children(".artiste-mpm-main-right-button");
			if(tmp.length < 1)
				return false;
			else
				right_btn = tmp[0];

			tmp = $(main_frame).children(".artiste-mpm-main-photo-container");
			if(tmp.length < 1)
				return false;
			else
				photo_frame = tmp[0];
			//alert("4");
			return true;
		}
		function motionComplete ()
		{
			animating = false;
		}
		function _selectByIndex (idx, move)
		{
			if(animating)
				return false;
				
			var kids = $(photo_frame).children("a");	
			var moveto = "left";
			var cur_obj = $(kids[idx]).children("img")[0];
			var perv_obj = $(kids[opt.pervPos]).children("img")[0];
			
			if(move != null)
				moveto = move;			
			else if(idx < opt.pervPos)
				moveto = "right";
			else
				moveto = "left";
			
			var tmp_img = null;
			for(var i=0; i < kids.length; i++)
			{
				if(i == idx || i == opt.pervPos)
				{
					tmp_img = $(kids[i]).children("img")[0];
					$(tmp_img).css("display", "block");
				}
				else
				{
					tmp_img = $(kids[i]).children("img")[0];
					$(tmp_img).css("display", "none");
				}
			}

			if(moveto == "left")
			{
				$(cur_obj).css("left", "650px");
				$(cur_obj).css("top", "0px");
				$(cur_obj).css("opacity", "1");
				$(cur_obj).css("zIndex", "2");
				$(perv_obj).css("left", "0px");
				$(perv_obj).css("top", "0px");
				$(perv_obj).css("zIndex", "1");

	    		$(perv_obj).animate({ 
	    			opacity : "0"
	    		}, opt.motionDuration );	    		
	    		animating = true;
	   			$(cur_obj).animate({ 
	   				left : "0px"
	   			}, opt.motionDuration, opt.motionType, motionComplete);
	   		}
	   		else
	   		{
				$(cur_obj).css("left", "-650px");
				$(cur_obj).css("top", "0px");
				$(cur_obj).css("opacity", "1");
				$(cur_obj).css("zIndex", "2");
				$(perv_obj).css("left", "0px");
				$(perv_obj).css("top", "0px");
				$(perv_obj).css("zIndex", "1");

	    		$(perv_obj).animate({ 
	    			opacity : "0"
	    		}, opt.motionDuration );
	    		animating = true;
	   			$(cur_obj).animate({ 
	   				left : "0px"
	   			}, opt.motionDuration, opt.motionType, motionComplete);	   			
	   		}
   			    							
			opt.curPos = idx;
		}
		function next ()
		{
			var tmp = opt.curPos+1;
			var kids = $(photo_frame).children("a");
			if(tmp > kids.length-1)
				tmp = 0;
			
			opt.pervPos = opt.curPos;
			opt.curPos = tmp;
			
			_selectByIndex(opt.curPos, "right");
		}
		
		function pervious ()
		{
			var tmp = opt.curPos-1;
			var kids = $(photo_frame).children("a");
			
			if(tmp < 0)
				tmp = kids.length-1;
			
			opt.pervPos = opt.curPos;
			opt.curPos = tmp;
			
			_selectByIndex(opt.curPos, "left");				
		}
		function rightClickListener (){

			if(animating)
				return false;

			next();
		}
		
		function leftClickListener (){

			if(animating)
				return false;

			pervious();
		}
		this.getSelectedIndex = function (){
			return opt.curPos;
		}
		this.selectByIndex = function (idx){
			if(idx == opt.curPos)
				return false;
			_selectByIndex(idx);
		}
		this.nextItem = function (){
			next();
		}
		this.perviousItem = function (){
			pervious();
		}
		function init ()
		{
			frame.css("position", "relative");
			frame.css("height", "256px");
			frame.css("width", "651px");

			$(left_btn).css("cursor", "pointer");
			$(left_btn).css("zIndex", "2");
			$(left_btn).css("position", "absolute");
			$(left_btn).css("left", "10px");
			$(left_btn).css("top", "100px");
			$(left_btn).css("width", "40px");
			$(left_btn).css("height", "40px");
			$(left_btn).click(leftClickListener);
			
			$(right_btn).css("cursor", "pointer");
			$(right_btn).css("zIndex", "2");
			$(right_btn).css("position", "absolute");
			$(right_btn).css("left", "607px");
			$(right_btn).css("top", "100px");
			$(right_btn).css("width", "40px");
			$(right_btn).css("height", "40px");
			$(right_btn).click(rightClickListener);
			$(right_btn).css("opacity", 0.3);
			$(left_btn).css("opacity", 0.3);	
			$(right_btn).css("display", "block");
			$(left_btn).css("display", "block");						
			$(photo_frame).css("overflow", "hidden");
			$(photo_frame).css("position", "relative");
			$(photo_frame).css("left", "3px");
			$(photo_frame).css("top", "3px");
			$(photo_frame).css("zIndex", "1");
//alert($(photo_frame));
			if($(photo_frame).html() == "" && opt.items.length > 1)
			{
				for(var i=0; i < opt.items.length; i++)
				{
					if(opt.items[i].img != null)
					{
						opt.items[i].idx = i;
						opt.items[i].img_obj = document.createElement("IMG");
						opt.items[i].img_obj.src = opt.items[i].img;
						$(photo_frame).append(opt.items[i].img_obj);
						if(i==opt.curPos)
							$(opt.items[i].img_obj).css("display", "block");
						else
							$(opt.items[i].img_obj).css("display", "none");
						$(opt.items[i].img_obj).css("width", "645px");
						$(opt.items[i].img_obj).css("height", "250px");
						$(opt.items[i].img_obj).css("position", "absolute");
						$(opt.items[i].img_obj).css("zIndex", "1");
						$(opt.items[i].img_obj).attr("idx", i);
					}
				}	
			}

			var kids = $(photo_frame).children("a");

			if(kids.length < 2)
			{
				$(right_btn).css("display", "none");
				$(left_btn).css("display", "none");
			}
			else
			{
				$(right_btn).css("display", "block");
				$(left_btn).css("display", "block");				
			}
			if(opt.withRotate && kids.length > 1)
			{
				$(frame).mouseout(function(){
					$(right_btn).css("opacity", 0.3);
					$(left_btn).css("opacity", 0.3);					
					startRotate();
				});
				$(frame).mouseover(function(){
					$(right_btn).css("opacity", 0.8);
					$(left_btn).css("opacity", 0.8);					
					endRotate();
				});
				startRotate();
			}			
		}
		
		if(check())
			init();
			
		return (this);
	}
})(jQuery);
