/* ------------------------------------------------------------------------
	s3Slider
	
	Developped By: Boban Karišik -> http://www.serie3.info/
        CSS Help: Mészáros Róbert -> http://www.perspectived.com/
	Version: 1.0
	
	Copyright: Feel free to redistribute the script/modify it, as
			   long as you leave my infos at the top.
------------------------------------------------------------------------- */


(function($){  

    $.fn.s3Slider = function(vars) {       
        
        var element     = this;
        var timeOut     = (vars.timeOut != undefined) ? vars.timeOut : 4000;
        var current     = null;
        var timeOutFn   = null;
        var faderStat   = true;
        var mOver       = false;
        var items       = $("#" + element[0].id + "Content ." + element[0].id + "Image");
        var itemsSpan   = $("#" + element[0].id + "Content ." + element[0].id + "Image span");
        var onA  		= false;
        $("#s3sliderNP").fadeTo("slow", 0);
        
        $('#sliderNext').click(function() {
        	clearTimeout(timeOutFn);
        	makeSlider(1)
        });  
        
        $('#sliderPrev').click(function() {
       
        	clearTimeout(timeOutFn);
        	makeSlider(-1)
        });    
        

   	 $("#s3sliderNP a").hover(function(){
   		 $("#s3sliderNP").stop().fadeTo("fast",1.0); // This sets the opacity to 100% on hover
   		 
   		onA=true;
   	 },function(){
   		onA=false;
   		  });
   	 
        
        items.each(function(i) {
        	
        	
        	 $(items[i]).hover(function(){
        		 $("#s3sliderNP").stop().fadeTo("slow", 1.0); // This sets the opacity to 100% on hover
        	 },function(){
        		if (!onA)
        			$("#s3sliderNP").stop().fadeTo("slow", 0); // This sets the opacity back to 60% on mouseout
        	});
        	
            $(items[i]).mouseover(function() {
               mOver = true;
              
            });
            
            $(items[i]).click(function() {
            	var NewLink= $(this).attr("rel");
            	
            	window.location.href = NewLink;
             });
            
            $(items[i]).mouseout(function() {
                mOver   = false;
                
                fadeElement(true);
            });
            
        });
        
        var fadeElement = function(isMouseOut) {
        	clearTimeout(timeOutFn);
        //	$('#sliderconsole').append("<br>fadeelement"+((isMouseOut)?"mousetru":"mousefalse"));
        	var thisTimeOut = (isMouseOut) ? (timeOut/2) : timeOut;
            thisTimeOut = (faderStat) ? 10 : thisTimeOut;
            if(items.length > 0) {
                timeOutFn = setTimeout(makeSlider, thisTimeOut);
            } else {
                console.log("Poof..");
            }
        }
        
        
        var makeMod= function(currNo,dir,leng)
        {   // $('#sliderconsole').append(" currNo:"+currNo+"dir"+dir);
        	
        	var t= (currNo+dir) % (leng-1);
        	 //$('#sliderconsole').append(" t :"+t +" 	");
        	t=(t<0)?  (leng-2) : t;
        	 //$('#sliderconsole').append(" return :"+t +"<br> -----------<br>");
        	 return t;
        }
        
        
        
        
        
        var makeSlider = function(dir) {
        	if (dir==false || dir == null)
        		dir=1;
        	
        	current = (current != null) ? current : items[(items.length-1)];
    		var currNo      = jQuery.inArray(current, items)+1 
    		//$('#sliderconsole').append(" [Cu:"+currNo);
    		currNo = (currNo == items.length) ? 0 : (currNo-1);
    	
            var newMargin   = $(element).width() * currNo;
            //$('#sliderconsole').append(" margin:"+newMargin+" ");
            if(faderStat == true) {
            	 //$('#sliderconsole').append(" fasdstat:TRUE ");
                if(!mOver) {
                	//$('#sliderconsole').append(" mouse:FALSE ");
                    $(items[currNo]).fadeIn((timeOut/6), function() {
                        if($(itemsSpan[currNo]).css('visibility') != 'visible') {
                            $(itemsSpan[currNo]).fadeOut((timeOut/4), function() {
                            	//$('#sliderconsole').append(" fine fadeOut ");
                                faderStat = false;
                                current = items[currNo];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        } else {
                            $(itemsSpan[currNo]).fadeIn((timeOut/4), function() {
                            	//$('#sliderconsole').append(" fine fadeIn ");
                                
                            	faderStat = false;
                                current = items[currNo];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        }
                    });
                }
            } else {
            	//$('#sliderconsole').append(" fasdstat:FALSE ");
            
                if(!mOver) { 
                	//$('#sliderconsole').append(" mouse:FALSE ");
                	 if($(itemsSpan[currNo]).css('visibility') != 'visible') {
                		 //$('#sliderconsole').append(" visible:FALSE ");
                        $(itemsSpan[currNo]).fadeIn((timeOut/4), function() {
                            $(items[currNo]).fadeOut((timeOut/4), function() {
                                faderStat = true;
                                
                                current = items[makeMod(currNo,dir,(items.length))];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        });
                    } else {

               		 //$('#sliderconsole').append(" visible:TRUE ");
                        $(itemsSpan[currNo]).fadeOut((timeOut/4), function() {
                        $(items[currNo]).fadeOut((timeOut/4), function() {
                                faderStat = true;
                                current = items[makeMod(currNo,dir,(items.length))];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        });
                    }
                }
            }
        }
        
        makeSlider(1);
         
    };  

})(jQuery);  
