/*
* 	E.T. Slider 1.0 - jQuery plugin
*	written by Engin Terzi	
*   Email : me@enginterzi.com.tr
*	Copyright (c) 2010 Engin Terzi
*/  

/*
*	
*
*/

;(function($) { // secure $ jQuery alias

    // jquery method
    $.fn.Slider = function(options) {
        // default degerler;
        var defaults = {
            stepTime: 3000,
            reStartTime: 5000,
            starIndex: 0,
            bigimage: ".image",
            Animate: false,
            MouseoverAnimate: false,
            MouseclickAnimate: false
        };
        //İslem yapılan html elemanı
        var obj = $(this);
        //Gelenle varsayılan özellikleri birleştirilmesi.
        var opts = $.extend(defaults, options);

        //********** İlke Değişken Ayarları *****************
        var bigimage = opts.bigimage;
        var tempIndex = 0;
        //****************************************************
        //Mouse üstüne gelip çekildikten sonra kaldığı yerden devam etmesi icin indexer

        if (obj.length > 1) {
            if (opts.Animate) {
                var timeout = setTimeout(function() {
                    NextItem(opts.starIndex);
                }, 5000);
            }
        }
        else { opts.Animate = false; }


        //İlk yüklendiğinde listteki ilk nesnedeki resmin yüklenmesi.
        $(this).eq(0).addClass("active");
        var frst_image = $(this).find("a:first").attr("attimg");
        $(bigimage + " img").attr("src", frst_image);

        //Mouse olaylarını yakalayan foksiyonlar
        if (opts.MouseoverAnimate) {
            obj.mouseover(function() {
                clearTimeout(timeout);
                clearBulut();
                var slcItem = $(this);
                if (!slcItem.hasClass("active")) {
                    slcItem.addClass("active");
                }
                var imgname = $("a", slcItem).attr("attimg");
                $(bigimage + " img").attr("src", imgname);
            }).mouseout(function() {
                tempIndex = obj.index(this);

                if (opts.Animate) {
                    timeout = setTimeout(function() {
                        NextItem(tempIndex);
                    }, opts.reStartTime);
                }
            });
        }

        if (opts.MouseclickAnimate) {
            obj.click(function() {
                clearBulut();
                var slcItem = $(this);
                if (!slcItem.hasClass("active")) {
                    slcItem.addClass("active");
                }
                $(bigimage + " img").hide().fadeIn('slow');
                var imgname = $("a", slcItem).attr("attimg");
                $(bigimage + " img").attr("src", imgname);

                if (opts.Animate) {
                    clearTimeout(timeout);
                    tempIndex = obj.index(this);
                    timeout = setTimeout(function() {
                        NextItem(tempIndex);
                    }, opts.reStartTime);
                }
            });
        }

        ///---------------------------- All Functions ---------------------------------/////////
        //Secici nesneyi temizleyen fonksiyon
        function clearBulut() {
            obj.each(function() {
                if ($(this).hasClass("active")) {
                    $(this).removeClass("active");
                }
            });
        }

        // Sonraki elemana ilerleyen fonksiyon.
        function NextItem(intNextIndex) {
            var itmCount = obj.length - 1;
            var nxtindex = intNextIndex;
            clearBulut();
            if (nxtindex > itmCount) {
                nxtindex = 0;
            }
            tempIndex = nxtindex;
            obj.eq(nxtindex).addClass("active");
            $(bigimage + " img").hide().fadeIn('slow');
            var img = $("a", obj.eq(nxtindex)).attr("attimg");
            $(bigimage + " img").attr("src", img);

            if (opts.Animate) {
                timeout = setTimeout(function() {
                    NextItem(nxtindex + 1);
                }, opts.stepTime);
            }
        }
        ///---------------------------- All Functions End ---------------------------/////////
    }
})(jQuery);                                    // confine scope
