$(document).ready(function(){

    $('div.gallery').gallery({

        duration: 500,

        autoRotation: 5000,

        listOfSlides: '.gallery-holder > ul > li',

        switcher: '.swith>li'

    });

    $('div.news-line').gallery({

        duration: 500,

        autoRotation: 5000,

        listOfSlides: '.text>p',

        effect:true

    });

    initHiglights();

    initMenuTitle();

});



function initHiglights() {

    var _activeClass = 'active';

    var _childrenAcc = '>li';

    var _hold = $('.navigation');

    _hold.each(function(){

        var _menu = $(this);

        var _items = _menu.find(_childrenAcc);

        _items.each(function(){

            var _holder = $(this);

            if((_holder.hasClass(_activeClass) || _holder.find(_activeClass).length) && _holder.find('ul').length){

                _holder.removeClass(_activeClass);

                _holder.addClass('open-active');

            }else if(_holder.find('ul').length){

                _holder.removeClass(_activeClass);

                _holder.addClass('open');

            }

        });

    });

}



function initMenuTitle() {

    var _activeClass = 'active';

    var _childrenAcc = '>li';

    var _hold = $('#nav ul');

    var _title = $('#menu-title');

    if(_title && _hold){

        _hold.each(function(){

            var _menu = $(this);

            var _items = _menu.find(_childrenAcc);

            _items.each(function(){

                var _holder = $(this);

                if(_holder.hasClass(_activeClass)){

                    _title.html(_holder.find('a').html());

                }

            });

        });

    }

}



(function($) {

    $.fn.gallery = function(options) { return new Gallery(this.get(0), options); };

    

    function Gallery(context, options) { this.init(context, options); };

    

    Gallery.prototype = {

        options:{},

        init: function (context, options){

            this.options = $.extend({

                duration: 700,

                slideElement: 1,

                autoRotation: false,

                effect: false,

                listOfSlides: 'ul > li',

                switcher: false,

                disableBtn: false,

                nextBtn: 'a.link-next, a.btn-next, a.next',

                prevBtn: 'a.link-prev, a.btn-prev, a.prev',

                circle: true,

                direction: false,

                event: 'click',

                IE: false

            }, options || {});

            var _el = $(context).find(this.options.listOfSlides);

            if (this.options.effect) this.list = _el;

            else this.list = _el.parent();

            this.switcher = $(context).find(this.options.switcher);

            this.nextBtn = $(context).find(this.options.nextBtn);

            this.prevBtn = $(context).find(this.options.prevBtn);

            this.count = _el.index(_el.filter(':last'));

            

            if (this.options.switcher) this.active = this.switcher.index(this.switcher.filter('.active:eq(0)'));

            else this.active = _el.index(_el.filter('.active:eq(0)'));

            if (this.active < 0) this.active = 0;

            this.last = this.active;

            

            this.woh = _el.outerWidth(true);

            if (!this.options.direction) this.installDirections(this.list.parent().width());

            else {

                this.woh = _el.outerHeight(true);

                this.installDirections(this.list.parent().height());

            }

            

            if (!this.options.effect) {

                this.rew = this.count - this.wrapHolderW + 1;

                if (!this.options.direction) this.list.css({marginLeft: -(this.woh * this.active)});

                else this.list.css({marginTop: -(this.woh * this.active)});

            }

            else {

                this.rew = this.count;

                this.list.css({opacity: 0}).removeClass('active').eq(this.active).addClass('active').css({opacity: 1}).css('opacity', 'auto');

                this.switcher.removeClass('active').eq(this.active).addClass('active');

            }

            

            if (this.options.disableBtn) {

                if (this.count < this.wrapHolderW) this.nextBtn.addClass(this.options.disableBtn);

                if (this.active == 0) this.prevBtn.addClass(this.options.disableBtn);

            }

            

            this.initEvent(this, this.nextBtn, this.prevBtn, true);

            this.initEvent(this, this.prevBtn, this.nextBtn, false);

            

            if (this.options.autoRotation) this.runTimer(this);

            

            if (this.options.switcher) this.initEventSwitcher(this, this.switcher);

        },

        installDirections: function(temp){

            this.wrapHolderW = Math.ceil(temp / this.woh);

            if (((this.wrapHolderW - 1) * this.woh + this.woh / 2) > temp) this.wrapHolderWwrapHolderW--;

        },

        fadeElement: function(){

            if ($.browser.msie && this.options.IE){

                this.list.eq(this.last).css({opacity:0});

                this.list.removeClass('active').eq(this.active).addClass('active').css({opacity:'auto'});

            }

            else{

                this.list.eq(this.last).animate({opacity:0}, {queue:false, duration: this.options.duration});

                this.list.removeClass('active').eq(this.active).addClass('active').animate({

                    opacity:1

                }, {queue:false, duration: this.options.duration, complete: function(){

                    $(this).css('opacity','auto');

                }});

            }

            if (this.options.switcher) this.switcher.removeClass('active').eq(this.active).addClass('active');

            this.last = this.active;

        },

        scrollElement: function(){

            if (!this.options.direction) this.list.animate({marginLeft: -(this.woh * this.active)}, {queue:false, duration: this.options.duration});

            else this.list.animate({marginTop: -(this.woh * this.active)}, {queue:false, duration: this.options.duration});

            if (this.options.switcher) this.switcher.removeClass('active').eq(this.active).addClass('active');

        },

        runTimer: function($this){

            if($this._t) clearTimeout($this._t);

            $this._t = setInterval(function(){

                $this.toPrepare($this, true);

            }, this.options.autoRotation);

        },

        initEventSwitcher: function($this, el){

            el.bind($this.options.event, function(){

                $this.active = $this.switcher.index($(this));

                if($this._t) clearTimeout($this._t);

                if (!$this.options.effect) $this.scrollElement();

                else $this.fadeElement();

                if ($this.options.autoRotation) $this.runTimer($this);

                return false;

            });

        },

        initEvent: function($this, addEventEl, addDisClass, dir){

            addEventEl.bind($this.options.event, function(){

                if($this._t) clearTimeout($this._t);

                if ($this.options.disableBtn &&($this.count > $this.wrapHolderW)) addDisClass.removeClass($this.options.disableBtn);

                $this.toPrepare($this, dir);

                if ($this.options.autoRotation) $this.runTimer($this);

                return false;

            });

        },

        toPrepare: function($this, side){

            if (($this.active == $this.rew) && $this.options.circle && side) $this.active = -$this.options.slideElement;

            if (($this.active == 0) && $this.options.circle && !side) $this.active = $this.rew + $this.options.slideElement;

            for (var i = 0; i < $this.options.slideElement; i++){

                if (side) {

                    if ($this.active + 1 > $this.rew) {

                        if ($this.options.disableBtn && ($this.count > $this.wrapHolderW)) $this.nextBtn.addClass($this.options.disableBtn);

                    }

                    else $this.active++;

                }

                else{

                    if ($this.active - 1 < 0) {

                        if ($this.options.disableBtn && ($this.count > $this.wrapHolderW)) $this.prevBtn.addClass($this.options.disableBtn);

                    }

                    else $this.active--;

                }

            };

            if ($this.active == $this.rew && side) if ($this.options.disableBtn &&($this.count > $this.wrapHolderW)) $this.nextBtn.addClass($this.options.disableBtn);

            if ($this.active == 0 && !side) if ($this.options.disableBtn &&($this.count > $this.wrapHolderW)) $this.prevBtn.addClass($this.options.disableBtn);

            if (!$this.options.effect) $this.scrollElement();

            else $this.fadeElement();

        },

        stop: function(){

            if (this._t) clearTimeout(this._t);

        },

        play: function(){

            if (this._t) clearTimeout(this._t);

            if (this.options.autoRotation) this.runTimer(this);

        }

    }

}(jQuery));
