/*

    To init just write:
    
    $(function(){

        $('.Tabs').myTabs();
        
    });

*/

jQuery.fn.myTabs = function(options){
    
    var defaults = {
        'defaultTabs': [], // массив табов, которые активны по дефолту, например ['#tab1', '#r8']
        'hash' : true // принимать ли параметр активной панели из урл ?
    }

    var settings = $.extend({}, defaults, options);
    
    
    var activeState = 'ActiveState';
    var hiddenState = 'HiddenState';
    var disabledState = 'DisabledState';//TODO: Сделать disable состояние
    
    

    // on domready
    $(this).each(function(){
        
        var $this = $(this);
        var navElements = $this.find('ul:first li');
        var panels = $this.find('.Panel');

        navElements.find('a').click(function(e){
            e.preventDefault();
            this.blur();
            var $this = $(this);
            var panelToActivate = $( $this.attr('href') );
            if(panelToActivate.length){// если существет такая панель
                // деактивируем предыдущую панель
                panels.filter('.'+activeState).removeClass(activeState).addClass(hiddenState);
                // активируем панель 
                panelToActivate.removeClass(hiddenState).addClass(activeState);
                // активируем элемент навигации(li)
                navElements.filter('.'+activeState).removeClass(activeState);
                $this.parents('li:first').addClass(activeState);
                
                if ( settings.hash ) {
                    window.location.hash = $this.attr('href')+'!'; // также добавляем хак-символ '!'
                }
                
                
            }else{
                alert('Ошибка в myTabs:\n Элемент '+$this.attr('href')+' не существует')
            }
        });


        // прячем все панели
        panels.addClass(hiddenState);
        var panel_activated = false; // ниодна панель не активирована

        // активируем панель, если ее передали по url (#a1!)
        var hash = window.location.hash.replace('!', ''); // убираем хак-символ
        var target = navElements.find('a[href='+ hash +']');
        if (target.length && settings.hash) {
            target.click();
            panel_activated = true;
        }
        
        if ( !panel_activated ) { // если нет панели по урл
            // активируем табы подефолту
            for (var i = 0; i < settings.defaultTabs.length; i++) {
                var default_target = navElements.find('a[href='+ settings.defaultTabs[i] +']');
                if (default_target.length > 0) { // если есть линк для активации деф. панели
                    default_target.click(); //активируем панель
                    panel_activated = true; // дефолтная панель активирована
                }
                
            }
        }
        
        if ( !panel_activated ){ // если нет панели по ни по урл, ни по дефолту
            navElements.filter(':first').find('a').click(); // активируем первыую панель
        }
            
    });
    

}
