/* ------------------------------------------------------------------------
	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 foo()
//{
//  var internalVal = 5;
//
//  function timoutFunc()
//  {
//    alert(internalVal);
//  }
//
//  this.setVal = function(val)
//  {
//    internalVal = val;
//  }
//
//  this.causeTimeout = function()
//  {
//    setTimeout("timoutFunc()", 500);
//  }
//}
//
//var obj  = new foo();
//obj.causeTimeout();
//obj.setVal(9);


(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 itemStart = false;
        
        this.find(".control-str").children("a").click(function(e){
          e.preventDefault();   

				 newNo = $(this).html();
				 newNo = newNo -1;	
         slideTo(newNo);

        });

        this.find(".next").click(function(e){
           e.preventDefault();
           next();
        });
        this.find(".prev").click(function(e){
           e.preventDefault();
           prev();
        });

        items.hover(
          function () {
            $(this).find('div.nav').fadeTo(100, 1);
          },
          function () {
            $(this).find('div.nav').stop().fadeOut(100);
          }
        );

        
        
        var fadeElement = function(isMouseOut) {
            var thisTimeOut = (isMouseOut) ? (timeOut/2) : timeOut;
            thisTimeOut = (faderStat) ? 10 : thisTimeOut;
            if(items.length > 0) {
                clearTimeout(timeOutFn);
                timeOutFn = setTimeout(makeSlider, thisTimeOut);
            } else {
                console.log("Poof..");
            }
        }         

        var makeSlider = function() {
            current = (current != null) ? current : items[(items.length-1)];
            var currNo      = jQuery.inArray(current, items) + 1;
            currNo = (currNo == items.length) ? 0 : (currNo - 1);
            var newMargin   = $(element).width() * currNo;
            if(faderStat == true) {
                if(!mOver) {
                    $(items[currNo]).fadeIn((timeOut/15), function() {
                        if($(itemsSpan[currNo]).css('bottom') == 0) {
                            $(itemsSpan[currNo]).slideUp((timeOut/15), function() {
                                faderStat = false;
                                current = items[currNo];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        } else {
                            $(itemsSpan[currNo]).slideDown((timeOut/15), function() {
                                faderStat = false;
                                current = items[currNo];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        }
                    });
                }
            } else {
                $(items[currNo]).find('div.nav').fadeOut();
                if(!mOver) {
                    if($(itemsSpan[currNo]).css('bottom') == 0) {
                        $(itemsSpan[currNo]).slideDown((timeOut/15), function() {
                            $(items[currNo]).fadeOut((timeOut/15), function() {
                                faderStat = true;
                                current = items[(currNo+1)];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        });
                    } else {
                        $(itemsSpan[currNo]).slideUp((timeOut/15), function() {
                        $(items[currNo]).fadeOut((timeOut/15), function() {
                                faderStat = true;
                                current = items[(currNo+1)];
                                if(!mOver) {
                                    fadeElement(false);
                                }
                            });
                        });
                    }
                }
            }
        }

        var slideTo = function (newNo) {
         
         current = (current != null) ? current : items[(items.length-1)];
         var currNo      = jQuery.inArray(current, items) + 1;
         currNo = (currNo == items.length) ? 0 : (currNo - 1);



					if (newNo != currNo) {

	          //reset everything start with new element by placing number within div
	          clearTimeout(timeOutFn);

	          $(itemsSpan[currNo]).slideUp((timeOut/15),
	          	function(){
	          		$(items[currNo]).fadeOut((timeOut/15),
	          		function() {
			            faderStat = true;
	                current = items[newNo];
	                if(!mOver) {
	    	            fadeElement(false);
	                }

	          		}
	          	)}
	          );
          }
        }

        var next = function() {
         current = (current != null) ? current : items[(items.length-1)];
         var currNo      = jQuery.inArray(current, items) + 1;
         currNo = (currNo == items.length) ? 0 : (currNo - 1);
         slideTo(currNo +1)
        }

        var prev = function () {
         current = (current != null) ? current : items[(items.length-1)];
         var currNo      = jQuery.inArray(current, items) + 1;
         current = (current != null) ? current : items[(items.length-1)];
         currNo = (currNo == items.length) ? 0 : (currNo - 1);

         if (currNo == 0) {
          currNo = items.length-1;
         }

         slideTo(currNo -1)
        }

        makeSlider();

    };

})(jQuery);

