(function($) {
    
    
    var Slider = function (element, options) {
        var settings = $.extend({}, $.fn.slider.defaults, options);
        var slides = $(element).children(".slidertab");
        var slideNum=slides.length;
        var menu = $(".sliderMenu",element).css("z-index",500);
        var menuItems = menu.children();
        
        //temporarily
        slides.bind('click',function() {
        	var themeurl=$(this).find(".texts .more a").attr("href");
	        window.location=themeurl;
        });
        //temporarily end

                
        for (var i=0;i<slideNum;i++) {
            $(slides[i]).css('z-index',200).css('opacity',0);
        }
        
        $(menuItems[0]).addClass('active');
        var current=$(slides[0]).css('opacity',1).css('z-index',201);
        var currentIndex=0;
        var nextIndex=1;
        
        //case, if every item is notinmenu
       if ($(element).children(".notinmenu").length==slideNum) {
            menu.css('display','none');
       }
	
        var hideMenu=function() {
            menu.clearQueue();
            if (menu.css('display')!='none') { 
	    	menu.hide('slide', {direction: 'right'}, settings.menuSlideSpeed);
            }
            
        }
        var showMenu=function() {
            menu.clearQueue();
            if (menu.css('display')=='none') {
            	menu.show('slide', {direction: 'right'}, settings.menuSlideSpeed);
	    }
        }        
        var singleSliding = function(to) {
            if (typeof(slides[to])!='undefined' || currentIndex!=to) {

                menuItems.removeClass('active');
                
                var tabId=$(slides[to]).get(0).id;
                var idParts=tabId.split('-');
                var tabIndex=idParts[1];
                
                if ($(slides[to]).hasClass("notinmenu")) {
                    hideMenu();
                } else {
                    showMenu();
                    $('#sliderMenuItem-'+tabIndex).addClass('active');
                }
                
                for (var j=0;j<slideNum;j++) {
                    $(slides[j]).css('z-index',200);
                    $(slides[j]).clearQueue();
                    $(slides[j]).stop();
                }
                
                $(slides[to]).css('opacity',0).css('z-index',201);
                $('.texts',slides[to]).css('opacity',0);
                $(slides[to]).animate({opacity:1},settings.fadeSpeed,'linear',function(){
                    for (var j=0;j<slideNum;j++) {
                        if (j!=to) $(slides[j]).css('opacity',0);
                    }
                    $('.texts',slides[to]).animate({opacity:1},500,'linear');
                    current=$(slides[to]);
                    currentIndex=to;
                });
                
            }
        }
    
        var autoSliding = function() {
            if (currentIndex>=slideNum-1) nextIndex=0;
            else nextIndex=currentIndex+1;
            singleSliding(nextIndex);
        }
        
        
        menuItems.bind('mouseenter',function() {
            $(this).addClass('active');
            clearInterval(slTimer);
            var idParts=this.id.split('-');
            var menuIndex=idParts[1]-1;
            singleSliding(menuIndex);
        });
        menuItems.bind('mouseleave',function() {
            //$(this).removeClass('active');
        });
        menu.bind('mouseleave',function() {
            slTimer=setInterval(autoSliding,settings.changeSpeed);
        });
        
        slTimer=setInterval(autoSliding,settings.changeSpeed);
        
        
    }
    
    $.fn.slider = function(options) {
        return this.each(function(){
            var element = $(this);
            // Return early if this element already has a plugin instance
            if (element.data('slider')) return;
            // Pass options to plugin constructor
            var slider = new Slider(this, options);
            // Store plugin object in this element's data
            element.data('slider', slider);
        });        
    };
    
    $.fn.slider.defaults = {
        menuSlideSpeed:500,
        fadeSpeed:1000,
        changeSpeed:3000
    };
    
})(jQuery);
