/* 
 * @author: Szymon Dudziak - sz.dudziak@gmail.com
 * 
 */
(function($){
    $.fn.extend({
        slider: function(options){
           
            var defaults = {
                duration: 6000,      // duration betweend slides change
                animdur:  900        // slides change animation duration
            };
            options = $.extend(defaults,options);
            var currentImgIndex = 0;

            Array.prototype.myNext = function(_currIndex) {
                var idx = 0;
                if(_currIndex < this.length-1){
                    idx = _currIndex+1;
                } else{
                    idx = _currIndex % (this.length-1);
                }
                return idx;
            }

            Array.prototype.myPrev = function(_currIndex){
                var idx = 0;
                if(_currIndex > 0){
                    idx = _currIndex-1;
                } else{
                    idx = this.length-1;
                }
                return idx;
            }

            var animationLoop = function(objList,curr,ne){

                animationStep(objList,curr,ne);

                var _curr = ne;
                var _next = objList.myNext(ne);
                setTimeout(
                    function(){
                        animationLoop(objList,_curr,_next);
                    },options.duration
                );
            }

            var animationStep = function(obj,curr,next){
                var width = $(obj[curr]).width();
                var start = curr*width;
                var end   = next*width;
                //               alert(start+"\n"+end);
                $(".image-holder").animate({
                    "left": -end
                }, options.animdur, "swing");
                currentImgIndex = next;
            }

            return $(this).each(function(){

                var images = new Array();
                var i = 0;
                $(this).find('.slide').each(function(index){
                    i = index;
                    images.push($(this));
                });
                if (i>0){
                    animationLoop(images,0,images.myNext(0));
                }
                $(".navi-left").click(function(){
                    animationStep(images,currentImgIndex,images.myPrev(currentImgIndex));
                });
                $(".navi-right").click(function(){
                    animationStep(images,currentImgIndex,images.myNext(currentImgIndex));
                });

                $(this).mouseover(function(){
                    $(".navi-left").fadeIn(200);
                    $(".navi-right").fadeIn(200);
                });
                $(this).mouseleave(function(){
                    $(".navi-left").fadeOut(200);
                    $(".navi-right").fadeOut(200);
                });
            });
        }
    });
})(jQuery);
