jQuery(function(){
    initSupportLinks();
    initTooltip();
    initPopups();
    _refresh();
    initSlideShow();
    initHeaderLinks();
    initCufon();
    initWhatchHash();
});
$(window).load(function(){
    //    initScrollGallery();
    });

function initSupportLinks(){
    var supportLinks = $("a[href='de/support-forms.php']");
    var variant = $('div.support-form-chooser').text();
    if(supportLinks.size() && variant){
        supportLinks.attr('href','de/support-forms-'+variant +'.php' );
    }

}

function pluginsInit(){
    initSupportLinks();
    initPopups();
    initTooltip();
    
    _refresh();
    initScrollGallery();
    initSlideShow();
    
    $('.home .gallery-holder .slide-list').css('visibility', '');
    
    setTimeout(initContentLinks,100);
    initCufon();
    

}

//init whatch change hash
var flagChange = false;
function initWhatchHash(){	
    // handle history - hash change
    var oldHash = window.location.hash, newHash;
    var main = $('#main');
    var page = $('.page');
    var speed = jQuery.browser.msie && jQuery.browser.version < 9 ? 0 : 500;
    var activeClass = 'activeted';
    setInterval(function(){		
        if (oldHash !== window.location.hash) {
            oldHash = window.location.hash;
            newHash = oldHash.substr(1);
            if (!flagChange) {
                guTrackPageVisit(newHash);
                $.ajax({
                    url: newHash,
                    data: {
                        ajax: true
                    },
                    dataType: 'html',
                    success: function(data){	
                        if (main.children().length) {
                            main.children().fadeOut(speed, function(){
                                main.children().remove();
                                page.removeClass('home');
                                $(data).appendTo(main).hide().fadeIn(speed, function(){
                                    flag = false;
                                });								
                                pluginsInit();
                            });
                        }
                        else {
                            page.removeClass('home');
                            $(data).appendTo(main);
                            pluginsInit();
                            flag = false;
                        }
                        $('a.'+activeClass).removeClass(activeClass);
                        $('a').filter('href="'+newHash+'"').addClass(activeClass);
                    },
                    error: function(){
                        window.location =  window.location.pathname;

                    }	
                });
            }
            else{
                flagChange = false;
            }
        }
    }, 350);
}

function initHeaderLinks(){
    var activeClass = 'activeted';
    var links = $('a.ajax-link');
    var speed = jQuery.browser.msie && jQuery.browser.version < 9 ? 0 : 500;
    var main = $('#main');
    var page = $('.page');
    var flag = false;
    var count = 0;
    links.each(function(){
        var link = $(this);
        if(link.hasClass(activeClass)){
            flagChange = true;
            
            var hash = getHash();
            
            if(hash){
                var dummyLink = $('<a/>').attr('href', hash );
                ajaxGo(dummyLink );        
            } else {
                ajaxGo(link);        
            }
            
        }
        link.click(function(){
            if (!flag) {
                if (!link.hasClass(activeClass)) {
                    flagChange = true;
                    flag = true;
                    links.removeClass(activeClass);
                    link.addClass(activeClass);
                    window.location.hash = link.attr('href');
                    ajaxGo(link);
                }
            }
            return false;
        });
    });
	
    function initLoadedContent(obj){
        pluginsInit();

        flag = false;				
					
        if (obj.hasClass('home-gallery-item')) {	
            $('.home-switcher-gallery a').eq(parseInt(obj.attr('rel') - 1)).trigger('click');						
        }			
					
        if (obj.hasClass('gallery-item')) {								
            $('.switcher-gallery a').eq(parseInt(obj.attr('rel') - 1)).trigger('click');						
        }  
    }
    
    function ajaxGo(obj){
        
        guTrackPageVisit(obj.attr('href'));
        
        $.ajax({
            url: obj.attr('href'),
            data: {
                ajax: true
            },
            dataType: 'html',
            success: function(data){	
                
                if (main.children().length) {
                    main.children().fadeOut(speed, function(){
                        main.children().remove();
                        $('.home').removeClass('home');
                        $(data).appendTo(main).hide().fadeIn(speed, function(){
                            setTimeout(function(){
                                initLoadedContent(obj);
                            }, 150);
                        });					
                        
                                                
                    });
                }
                else {
                    $('.home').removeClass('home');
                    $(data).appendTo(main);													
                    initLoadedContent(obj);	
                // restoreLogoLink();
                }
                count++;
                if (count === 1) {
                    window.location.hash = obj.attr('href');
                }
            },
            error: function(){
                window.location =  window.location.pathname;
            }	
        });
    }
}

function initContentLinks(){
    var activeClass = 'activeted';
    var links = $('a.ajax-inside');
    //$('#sms-stoerer .ajax-inside').removeClass(activeClass);
    var speed = jQuery.browser.msie && jQuery.browser.version < 9 ? 0 : 500;
    var main = $('#main');
    var page = $('.page');
    var flag = false;
	
    links.each(function(){
        var link = $(this);
        link.click(function(){		
            if (!flag) {
                if (!link.hasClass(activeClass)) {
                    flagChange = true;
                    flag = true;
                    $('a.'+activeClass).removeClass(activeClass);
                    link.addClass(activeClass);
                    window.location.hash = link.attr('href');
                    ajaxGo(link);
                }
            }
            return false;
        });
    });
	
    function ajaxGo(obj){
        guTrackPageVisit(obj.attr('href'));
        $.ajax({
            url: obj.attr('href'),
            data: {
                ajax: true
            },
            dataType: 'html',
            success: function(data){
                if(main.children().length){
                    main.children().fadeOut(speed, function(){
                        main.children().remove();						
                        $(data).appendTo(main).hide().fadeIn(speed, function(){
                            flag = false;
                            if (obj.hasClass('effect-item')) {
                                showStrongChart(parseInt(obj.attr('rel')));															
                            }
                            if (obj.hasClass('gallery-item')) {							
                                $('.switcher-gallery a').eq(parseInt(obj.attr('rel') - 1)).trigger('click');
                            }							
                            if (obj.hasClass('logo-link')) {
                                if (!page.hasClass('home')) {
                                    page.addClass('home'); 
                                }
                            }
                            else {
                                $('.home').removeClass('home');
                            }
                        });
                        pluginsInit();
                    });
                }
                else{
                    $(data).appendTo(main);
                    pluginsInit();
                    flag = false;
                    if(obj.hasClass('gallery-item')){
                        $('.switcher-gallery a').eq(parseInt(obj.attr('rel')-1)).trigger('click');						
                    }
                    if (obj.hasClass('logo-link')) {
                        if (!page.hasClass('home')) {
                            page.addClass('home');
                        }
                    }
                    else {
                        page.removeClass('home');
                    }
                }	
            },
            error: function(){
                alert('Ajax error!');
            }
        });
    }
}


// slideshow init
function initSlideShow() {
    jQuery('div.carousel').fadeGallery({
        slideElements:'>ul > li',
        pagerLinks:'div.pager a',
        btnNext:'a.btn-next',
        btnPrev:'a.btn-prev',
        btnPlayPause:'a.play-pause',
        pausedClass:'paused',
        playClass:'playing',
        activeClass:'active',
        pauseOnHover:false,
        autoRotation:true,
        currentNum:'span.current-item',
        allNum:'span.total-item',
        autoHeight:true,
        switchTime:5000,
        duration: jQuery.browser.msie && jQuery.browser.version < 9 ? 0 : 500,
        event:'click'
    });
}
// Cufon Refresh
function _refresh (){
    $(".links-block").mouseover(function() {
        Cufon.replace('.links-block a strong', {
            fontFamily: 'PlanStorytellingClean', 
            hover: true
        });
    })
}
function initScrollGallery(){
    $('.gallery').galleryScroll({
        holderList: '.gallery-holder',
        duration : 1000,
        btPrev: 'a.prev',
        btNext: 'a.next',
        scrollElParent: '>ul',
        scrollEl: '>li',
        switcher: '.home-switcher-gallery a',
        stepWidth:false
    });
    $('.slide-section').galleryScroll({
        holderList: '.section-frame',
        duration : 1000,
        btPrev: 'a.prev',
        btNext: 'a.next',
        scrollElParent: '>ul',
        scrollEl: '>li',
        autoHeight:true,
        switcher: '.switcher-gallery a',
        stepWidth:false
    });
}
//init tooltip
function initTooltip(){
    var holders = $('.pointer-holder, .info-section .image-holder');
    holders.each(function(){
        var holder = $(this);
        var items = holder.children();
        var tooltipHelper;
        if (!$('.tooltip-helper').length) {
            tooltipHelper = $('<div>').addClass('tooltip-helper').appendTo('body');
        }
        else{
            tooltipHelper = $('.tooltip-helper');
        }
        var t;
        items.each(function(){
            var item = $(this);
            var drop = item.find('.tooltip');
            var clone = drop.show().clone();
            drop.hide();
            if(drop.length){
                item.hover(function(){
                    clearTimeout(t);
                    tooltipHelper.empty();
                    clone.appendTo(tooltipHelper);
                    var _top = item.offset().top - tooltipHelper.outerHeight();
                    var _left = item.offset().left - tooltipHelper.outerWidth()/2 + item.outerWidth()/2;
                    tooltipHelper.css({
                        top: _top, 
                        left: _left
                    });
                },function(){
                    clearTimeout(t);
                    t = setTimeout(hideTooltip,100);
                });
                tooltipHelper.hover(function(){
                    clearTimeout(t);
                },function(){
                    clearTimeout(t);
                    t = setTimeout(hideTooltip,100);
                });
                function hideTooltip(){
                    clearTimeout(t);
                    tooltipHelper.empty();
                }
            }
        });
    });
}

//initCarusel
function initCarusel(){
    jQuery('div.gallery, div.slide-section').scrollGallery({
        btnPrev:'a.prev',
        btnNext:'a.next',
        sliderHolder: '.gallery-holder, .section-frame',
        slider:'.slide-list',
        pauseOnHover:false,
        autoHeight:true,
        autoRotation:false
    });
}
// scrolling gallery plugin
jQuery.fn.scrollGallery = function(_options){
    var _options = jQuery.extend({
        sliderHolder: '>div',
        slider:'>ul',
        slides: '>li',
        pagerLinks:'div.pager a',
        btnPrev:'a.link-prev',
        btnNext:'a.link-next',
        activeClass:'active',
        disabledClass:'disabled',
        generatePagination:'div.pg-holder',
        curNum:'em.scur-num',
        allNum:'em.sall-num',
        circleSlide:true,
        pauseClass:'gallery-paused',
        pauseButton:'none',
        pauseOnHover:true,
        autoHeight:false,
        autoRotation:false,
        stopAfterClick:false,
        switchTime:5000,
        duration:650,
        easing:'swing',
        event:'click',
        splitCount:false,
        afterInit:false,
        vertical:false,
        step:false
    },_options);
    return this.each(function(){
        // gallery options
        var _this = jQuery(this);
        var _sliderHolder = jQuery(_options.sliderHolder, _this);
        var _slider = jQuery(_options.slider, _sliderHolder);
        var _slides = jQuery(_options.slides, _slider);
        var _btnPrev = jQuery(_options.btnPrev, _this);
        var _btnNext = jQuery(_options.btnNext, _this);
        var _pagerLinks = jQuery(_options.pagerLinks, _this);
        var _generatePagination = jQuery(_options.generatePagination, _this);
        var _curNum = jQuery(_options.curNum, _this);
        var _allNum = jQuery(_options.allNum, _this);
        var _pauseButton = jQuery(_options.pauseButton, _this);
        var _pauseOnHover = _options.pauseOnHover;
        var _pauseClass = _options.pauseClass;
        var _autoHeight = _options.autoHeight;
        var _autoRotation = _options.autoRotation;
        var _activeClass = _options.activeClass;
        var _disabledClass = _options.disabledClass;
        var _easing = _options.easing;
        var _duration = _options.duration;
        var _switchTime = _options.switchTime;
        var _controlEvent = _options.event;
        var _step = _options.step;
        var _vertical = _options.vertical;
        var _circleSlide = _options.circleSlide;
        var _stopAfterClick = _options.stopAfterClick;
        var _afterInit = _options.afterInit;
        var _splitCount = _options.splitCount;
        // gallery init
        if(!_slides.length) return;
        if(_splitCount) {
            var curStep = 0;
            var newSlide = jQuery('<slide>').addClass('split-slide');
            _slides.each(function(){
                newSlide.append(this);
                curStep++;
                if(curStep > _splitCount-1) {
                    curStep = 0;
                    _slider.append(newSlide);
                    newSlide = jQuery('<slide>').addClass('split-slide');
                }
            });
            if(curStep) _slider.append(newSlide);
            _slides = _slider.children();
        }
		
        var _currentStep = 0;
        var _sumWidth = 0;
        var _sumHeight = 0;
        var _hover = false;
        var _stepWidth;
        var _stepHeight;
        var _stepCount;
        var _offset;
        var _timer;
        _slides.each(function(){
            _sumWidth+=jQuery(this).outerWidth(true);
            _sumHeight+=jQuery(this).outerHeight(true);
        });
        // calculate gallery offset
        function recalcOffsets() {
            if(_vertical) {
                if(_step) {
                    _stepHeight = _slides.eq(_currentStep).outerHeight(true);
                    _stepCount = Math.ceil((_sumHeight-_sliderHolder.height())/_stepHeight)+1;
                    _offset = -_stepHeight*_currentStep;
                } else {
                    _stepHeight = _sliderHolder.height();
                    _stepCount = Math.ceil(_sumHeight/_stepHeight);
                    _offset = -_stepHeight*_currentStep;
                    if(_offset < _stepHeight-_sumHeight) _offset = _stepHeight-_sumHeight;
                }
            } else {
                if(_step) {
                    _stepWidth = _slides.eq(_currentStep).outerWidth(true)*_step;
                    _stepCount = Math.ceil((_sumWidth-_sliderHolder.width())/_stepWidth)+1;
                    _offset = -_stepWidth*_currentStep;
                    if(_offset < _sliderHolder.width()-_sumWidth) _offset = _sliderHolder.width()-_sumWidth;
                } else {
                    _stepWidth = _sliderHolder.width();
                    _stepCount = Math.ceil(_sumWidth/_stepWidth);
                    _offset = -_stepWidth*_currentStep;
                    if(_offset < _stepWidth-_sumWidth) _offset = _stepWidth-_sumWidth;
                }
            }
        }
        // gallery control
        if(_btnPrev.length) {
            _btnPrev.bind(_controlEvent,function(){
                if(_stopAfterClick) stopAutoSlide();
                prevSlide();
                return false;
            });
        }
        if(_btnNext.length) {
            _btnNext.bind(_controlEvent,function(){
                if(_stopAfterClick) stopAutoSlide();
                nextSlide();
                return false;
            });
        }
        if(_generatePagination.length) {
            _generatePagination.empty();
            recalcOffsets();
            var _list = jQuery('<ul />');
            for(var i=0; i<_stepCount; i++) jQuery('<li><a href="#">'+(i+1)+'</a></li>').appendTo(_list);
            _list.appendTo(_generatePagination);
            _pagerLinks = _list.children();
        }
        if(_pagerLinks.length) {
            _pagerLinks.each(function(_ind){
                jQuery(this).bind(_controlEvent,function(){
                    if(_currentStep != _ind) {
                        if(_stopAfterClick) stopAutoSlide();
                        _currentStep = _ind;
                        switchSlide();
                    }
                    return false;
                });
            });
        }
        // gallery animation
        function prevSlide() {
            recalcOffsets();
            if(_currentStep > 0) _currentStep--;
            else if(_circleSlide) _currentStep = _stepCount-1;
            switchSlide();
        }
        function nextSlide() {
            recalcOffsets();
            if(_currentStep < _stepCount-1) _currentStep++;
            else if(_circleSlide) _currentStep = 0;
            switchSlide();
        }
        function refreshStatus(ind) {
            if(_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentStep).addClass(_activeClass);
            if(!_circleSlide) {
                _btnPrev.removeClass(_disabledClass);
                _btnNext.removeClass(_disabledClass);
                if(_currentStep == 0) _btnPrev.addClass(_disabledClass);
                if(_currentStep == _stepCount-1) _btnNext.addClass(_disabledClass);
            }
            if(_curNum.length) _curNum.text(_currentStep+1);
            if(_allNum.length) _allNum.text(_stepCount);
			
            // autoHeight
			
            var heightSlide;
			
            if(_autoHeight){
                heightSlide = _slides.eq(_currentStep).outerHeight();
                if(ind != 0){
                    _slider.animate({
                        height: heightSlide
                    }, {
                        queue: false, 
                        duration: _duration
                    });
                }
                else{
                    _slider.css({
                        height: heightSlide
                    });
                }
            }
        }
        function switchSlide() {
            recalcOffsets();
            if(_vertical) _slider.animate({
                marginTop:_offset
            },{
                duration:_duration,
                queue:false,
                easing:_easing
            });
            else _slider.animate({
                marginLeft:_offset
            },{
                duration:_duration,
                queue:false,
                easing:_easing
            });
            refreshStatus();
            autoSlide();
        }
        // autoslide function
        function stopAutoSlide() {
            if(_timer) clearTimeout(_timer);
            _autoRotation = false;
        }
        function autoSlide() {
            if(!_autoRotation || _hover) return;
            if(_timer) clearTimeout(_timer);
            _timer = setTimeout(nextSlide,_switchTime+_duration);
        }
        if(_pauseOnHover) {
            _this.hover(function(){
                _hover = true;
                if(_timer) clearTimeout(_timer);
            },function(){
                _hover = false;
                autoSlide();
            });
        }
        recalcOffsets();
        refreshStatus(0);
        autoSlide();
        // pause buttton
        if(_pauseButton.length) {
            _pauseButton.click(function(){
                if(_this.hasClass(_pauseClass)) {
                    _this.removeClass(_pauseClass);
                    _autoRotation = true;
                    autoSlide();
                } else {
                    _this.addClass(_pauseClass);
                    stopAutoSlide();
                }
                return false;
            });
        }
        if(_afterInit && typeof _afterInit === 'function') _afterInit(_this, _slides);
    });
}

// Popups function
function initPopups() {
    var _zIndex = 1000;
    var _fadeSpeed = ($.browser.msie && $.browser.version < 9 ? 0 : 350);
    var _faderOpacity = 0.6;
    var _faderBackground = '#000';
    var _faderId = 'lightbox-overlay';
    var _closeLink = 'a.btn-close, a.close, a.cancel';
    var _fader;
    var _lightbox = null;
    var _ajaxClass = 'ajax-load';
    var _openers = jQuery('a.open-popup');
    var _page = jQuery(document);
    var _minWidth = 980;
    var _scroll = false;
	
    // init popup fader
    _fader = jQuery('#'+_faderId);
    if(!_fader.length) {
        _fader = jQuery('<div />');
        _fader.attr('id',_faderId);
        jQuery('body').append(_fader);
    }
    _fader.css({
        opacity:_faderOpacity,
        backgroundColor:_faderBackground,
        position:'absolute',
        overflow:'hidden',
        display:'none',
        top:0,
        left:0,
        zIndex:_zIndex
    });

    // IE6 iframe fix
    if(jQuery.browser.msie && jQuery.browser.version < 7) {
        if(!_fader.children().length) {
            var _frame = jQuery('<iframe src="javascript:false" frameborder="0" scrolling="no" />');
            _frame.css({
                opacity:0,
                width:'100%',
                height:'100%'
            });
            var _frameOverlay = jQuery('<div>');
            _frameOverlay.css({
                top:0,
                left:0,
                zIndex:1,
                opacity:0,
                background:'#000000',
                position:'absolute',
                width:'100%',
                height:'100%'
            });
            _fader.empty().append(_frame).append(_frameOverlay);
        }
    }

    // lightbox positioning function
    function positionLightbox() {
        if(_lightbox) {
            var _windowHeight = jQuery(window).height();
            var _windowWidth = jQuery(window).width();
            var _lightboxWidth = _lightbox.outerWidth();
            var _lightboxHeight = _lightbox.outerHeight();
            var _pageHeight = _page.height();

            if (_windowWidth < _minWidth) _fader.css('width',_minWidth);
            else _fader.css('width','100%');
            if (_windowHeight < _pageHeight) _fader.css('height',_pageHeight);
            else _fader.css('height',_windowHeight);

            _lightbox.css({
                position:'absolute',
                zIndex:(_zIndex+1)
            });
			

            // vertical position
            if (_windowHeight > _lightboxHeight) {
                if (jQuery.browser.msie && jQuery.browser.version < 7) {
                    _lightbox.css({
                        position:'absolute',
                        top: parseInt(jQuery(window).scrollTop()) + (_windowHeight - _lightboxHeight) / 2
                    });
                } else {
                    _lightbox.css({
                        position:'fixed',
                        top: (_windowHeight - _lightboxHeight) / 2
                    });
					
                    if(_windowWidth < _minWidth) {
                        _lightbox.css({
                            position:'absolute'
                        });
                    }
                }
            } else {
                var _faderHeight = _fader.height();
                if(_faderHeight < _lightboxHeight) _fader.css('height',_lightboxHeight);
                if (!_scroll) {
                    if (_faderHeight - _lightboxHeight > parseInt(jQuery(window).scrollTop())) {
                        _faderHeight = parseInt(jQuery(window).scrollTop())
                        _scroll = _faderHeight;
                    } else {
                        _scroll = _faderHeight - _lightboxHeight;
                    }
                }
                _lightbox.css({
                    position:'absolute',
                    top: _scroll
                });
            }

            // horizontal position
            if (_fader.width() > _lightbox.outerWidth()) _lightbox.css({
                left:(_fader.width() - _lightbox.outerWidth()) / 2
            });
            else _lightbox.css({
                left: 0
            });
        }
    }

    // show/hide lightbox
    function toggleState(_state) {
        if(!_lightbox) return;
        if(_state) {
            _fader.fadeIn(_fadeSpeed,function(){
                _lightbox.fadeIn(_fadeSpeed);
            });
            _scroll = false;
            positionLightbox();
        } else {
            _lightbox.fadeOut(_fadeSpeed,function(){
                _fader.fadeOut(_fadeSpeed);
                _scroll = false;
                $('.lightbox').each(function() {
                    var that = this;
                    if($(this).find('iframe').size()){
                        $(this).find('iframe').each(function() {
                            var temp = $(this).attr('src');
                            $(this).attr('src', '');
                            $(this).attr('src', temp);
                            $(that).hide();
                        });
                    }else {
                        $(this).hide();  
                    }
                    
                });
            });
        }
    }

    // popup actions
    function initPopupActions(_obj) {
        if(!_obj.get(0).jsInit) {
            _obj.get(0).jsInit = true;
            // close link
            _obj.find(_closeLink).click(function(){
                _lightbox = _obj;
                toggleState(false);
                return false;
            });
        }
    }

    // lightbox openers
    _openers.each(function(){
        var _opener = jQuery(this);
        var _target = _opener.attr('href');
        if(_target.indexOf('file') != -1){
            _target = _target.substr(_target.indexOf('#'),_target.length);
        }

        // popup load type - ajax or static
        if(_opener.hasClass(_ajaxClass)) {
            _opener.click(function(){
                // ajax load
                if(jQuery('div[rel*="'+_target+'"]').length == 0) {
                    jQuery.ajax({
                        url: _target,
                        type: "POST",
                        dataType: "html",
                        success: function(msg){
                            // append loaded popup
                            _lightbox = jQuery(msg);
                            _lightbox.find('img').load(positionLightbox)
                            _lightbox.attr('rel',_target).hide().css({
                                position:'absolute',
                                zIndex:(_zIndex+1),
                                top: -9999,
                                left: -9999
                            });
                            jQuery('body').append(_lightbox);

                            // init js for lightbox
                            initPopupActions(_lightbox);

                            // show lightbox
                            toggleState(true);
                        },
                        error: function(msg){
                            alert('AJAX error!');
                            return false;
                        }
                    });
                } else {
                    _lightbox = jQuery('div[rel*="'+_target+'"]');
                    toggleState(true);
                }
                return false;
            });
        } else {
            if(jQuery(_target).length) {
                // init actions for popup
                var _popup = jQuery(_target);
                initPopupActions(_popup);
                // open popup
                _opener.click(function(){
                    if(_lightbox) {
                        _lightbox.fadeOut(_fadeSpeed,function(){
                            _lightbox = _popup.hide();
                            toggleState(true);
                        })
                    } else {
                        _lightbox = _popup.hide();
                        toggleState(true);
                    }
                    return false;
                });
            }
        }
    });

    // event handlers
    jQuery(window).resize(positionLightbox);
    jQuery(window).scroll(positionLightbox);
    jQuery(document).keydown(function (e) {
        if (!e) evt = window.event;
        if (e.keyCode == 27) {
            toggleState(false);
        }
    })
    _fader.click(function(){
        if(!_fader.is(':animated')) toggleState(false);
        return false;
    })
}
/*
 * jQuery galleryScroll v1.5.2
 */
jQuery.fn.galleryScroll = function(_options){
    // defaults options	
    var _options = jQuery.extend({
        btPrev: 'a.link-prev',
        btNext: 'a.link-next',
        holderList: 'div.frame',
        scrollElParent: 'ul',
        scrollEl: 'li',
        slideNum: false,
        duration : 1000,
        step: false,
        circleSlide: true,
        disableClass: 'disable',
        funcOnclick: null,
        autoSlide:false,
        innerMargin:0,
        autoHeight:false,
        switcher: '.swicher a',
        stepWidth:false
    },_options);

    return this.each(function(){
        var _this = jQuery(this);

        var _holderBlock = jQuery(_options.holderList,_this);
        var _gWidth = _holderBlock.width();
        var _animatedBlock = jQuery(_options.scrollElParent,_holderBlock);
        var _liWidth = jQuery(_options.scrollEl,_animatedBlock).outerWidth(true);
        var _liSum = jQuery(_options.scrollEl,_animatedBlock).length * _liWidth;
        var _margin = -_options.innerMargin;
        var _autoHeight = _options.autoHeight;
        var f = 0;
        var _step = 0;
        var curInd = 0;
        var _autoSlide = _options.autoSlide;
        var _timerSlide = null;
        var _switcher = jQuery(_options.switcher,_this);
        if (!_options.step) _step = _gWidth; else _step = _options.step*_liWidth;
        if (_options.stepWidth) _step = _options.stepWidth;
		
        if (!_options.circleSlide) {
            if (_options.innerMargin == _margin)
                jQuery(_options.btPrev,_this).addClass('prev-'+_options.disableClass);
        }
        if (_options.slideNum && !_options.step) {
            var _lastSection = 0;
            var _sectionWidth = 0;
            while(_sectionWidth < _liSum)
            {
                _sectionWidth = _sectionWidth + _gWidth;
                if(_sectionWidth > _liSum) {
                    _lastSection = _sectionWidth - _liSum;
                }
            }
        }
        if (_autoSlide) {
            _timerSlide = setTimeout(function(){
                autoSlide(_autoSlide);
            }, _autoSlide);
            _animatedBlock.hover(function(){
                clearTimeout(_timerSlide);
            }, function(){
                _timerSlide = setTimeout(function(){
                    autoSlide(_autoSlide)
                }, _autoSlide);
            });
        }
		
        //_holderBlock.css('width',_holderBlock.width());
        var list = _holderBlock.find('>ul');
        var items = list.find('>li');
        if(!list.hasClass('initendlesslide')){
            var first = items.first().clone(true) 
            first.appendTo(list);
            first.attr('next-step-switch', 0);
            list.addClass('initendlesslide')
            items = list.find('>li');
            items.first().attr('prev-step-switch', items.size()-1);
            
        }
                
                
                
        items.css('width',_holderBlock.width());
		
        if(_autoHeight){
            list.css('height',items.eq(curInd).height());
        }
	
        // next slide
        function nextSlide() {
            jQuery(_options.btPrev,_this).removeClass('prev-'+_options.disableClass);
            var switchIndex = parseInt(list.find('>li:eq('+curInd+')').attr('next-step-switch'));
            if(switchIndex || switchIndex == 0){
                curInd = switchIndex;
                _margin = -_holderBlock.width()*curInd;
                _animatedBlock.css('margin-left' , _margin +"px");
                return  nextSlide();
            }
            
            if (!_options.circleSlide) {
                if (_margin + _step  > _liSum - _gWidth - _options.innerMargin) {
                    if (_margin != _liSum - _gWidth - _options.innerMargin) {
                        _margin = _liSum - _gWidth  + _options.innerMargin;
                        jQuery(_options.btNext,_this).addClass('next-'+_options.disableClass);
                        _f2 = 0;
                    } 
                } else {
                    _margin = _margin + _step;
                    if (_margin == _liSum - _gWidth - _options.innerMargin) {
                        jQuery(_options.btNext,_this).addClass('next-'+_options.disableClass);
                        _f2 = 0;
                    } 					
                }
            } else {
                if (_margin + _step  > _liSum - _gWidth + _options.innerMargin) {
                    if (_margin != _liSum - _gWidth + _options.innerMargin) {
                        curInd++;
                        if(curInd > items.length-1){
                            curInd= 0;
                        }
                        _margin = -_holderBlock.width()*curInd;
						
                    } else {
                        curInd = 0;
                        _f2 = 1;
                        _margin = -_holderBlock.width()*curInd;
                    }
                } else {
                    curInd++;
                    if(curInd > items.length-1){
                        curInd= 0;
                    }
                    if(curInd > items.length-1){
                        curInd= 0;
                    }
                    _margin = -_holderBlock.width()*curInd;
                    _f2 = 0;
                }
            } 
            _animatedBlock.animate({
                marginLeft: _margin+"px"
            }, {
                queue:false,
                duration: _options.duration
            });
            
            if(_autoHeight){
                list.css('height',items.eq(curInd).height());
            }
			
            if (_timerSlide) {
                clearTimeout(_timerSlide);
                _timerSlide = setTimeout(function(){
                    autoSlide(_options.autoSlide)
                }, _options.autoSlide);
            }
			
            if (_options.slideNum && !_options.step) jQuery.fn.galleryScroll.numListActive(_margin,jQuery(_options.slideNum, _this),_gWidth,_lastSection);		
            if (jQuery.isFunction(_options.funcOnclick)) {
                _options.funcOnclick.apply(_this);
            }

            return false;
        }
	
        function prevSlide() {
            jQuery(_options.btNext,_this).removeClass('next-'+_options.disableClass);
            var switchIndex = parseInt(list.find('>li:eq('+curInd+')').attr('prev-step-switch'));
            if(switchIndex || switchIndex == 0){
                curInd = switchIndex;
                _margin = -_holderBlock.width()*curInd;
                _animatedBlock.css('margin-left' , _margin +"px");
                return prevSlide();
                
            }            
            
            if (_margin - _step >= -_step - _options.innerMargin && _margin - _step <= -_options.innerMargin) {
                if (_f2 != 1) {
                    curInd--;
                    if(curInd < 0){
                        curInd= items.length-1;
                    }
                    _margin = -_holderBlock.width()*curInd;
                    _f2 = 1;
                } else {
                    if (_options.circleSlide) {
                        curInd = items.length-1;
                        _margin = -_holderBlock.width()*curInd;
                        f=1;
                        _f2=0;
                    } else {
                        curInd = items.length-1;
                        _margin = -_holderBlock.width()*curInd;
                    }
                }
            } else if (_margin - _step < -_step + _options.innerMargin) {
                curInd--;
                _margin = -_holderBlock.width()*curInd;
                f=0;
            }
            else {
                curInd--;
                _margin = -_holderBlock.width()*curInd;
                f=0;
            };
			
            if (!_options.circleSlide && _margin == _options.innerMargin) {
                jQuery(this).addClass('prev-'+_options.disableClass);
                _f2=0;
            }
			
            if (!_options.circleSlide && _margin == -_options.innerMargin) jQuery(this).addClass('prev-'+_options.disableClass);
            _animatedBlock.animate({
                marginLeft: _margin + "px"
            }, {
                queue:false, 
                duration: _options.duration
            });
            if(_autoHeight){
                list.css('height',items.eq(curInd).height());
            }
			
            if (_options.slideNum && !_options.step) jQuery.fn.galleryScroll.numListActive(_margin,jQuery(_options.slideNum, _this),_gWidth,_lastSection);
			
            if (_timerSlide) {
                clearTimeout(_timerSlide);
                _timerSlide = setTimeout(function(){
                    autoSlide(_options.autoSlide)
                }, _options.autoSlide);
            }
			
            if (jQuery.isFunction(_options.funcOnclick)) {
                _options.funcOnclick.apply(_this);
            }
            return false;
        }
		
        function switchSlide() {
            _margin = -_holderBlock.width()*curInd;
            _animatedBlock.animate({
                marginLeft: _margin+"px"
            }, {
                queue:false,
                duration: _options.duration
            });
            if(_autoHeight){
                list.css('height',items.eq(curInd).height());
            }
			
            if (_timerSlide) {
                clearTimeout(_timerSlide);
                _timerSlide = setTimeout(function(){
                    autoSlide(_options.autoSlide)
                }, _options.autoSlide);
            }
        }
	
        // click button 'Next'
        jQuery(_options.btNext,_this).bind('click', nextSlide);
        // click button 'Prev'
        var _f2 = 1;
        jQuery(_options.btPrev, _this).bind('click', prevSlide);
		
        _switcher.each(function(ind){
            var item = $(this);
            item.click(function(){
                if(curInd != ind){
                    curInd = ind;
                    switchSlide();
                }
                return false;
            });
        });
		
        if (_liSum <= _gWidth) {
            jQuery(_options.btPrev,_this).addClass('prev-'+_options.disableClass).unbind('click');
            jQuery(_options.btNext,_this).addClass('next-'+_options.disableClass).unbind('click');
        }
        // auto slide
        function autoSlide(autoSlideDuration){
            //if (_options.circleSlide) {
            nextSlide();
        //}
        };
        // Number list
        jQuery.fn.galleryScroll.numListCreate = function(_elNumList, _liSumWidth, _width, _section){
            var _numListElC = '';
            var _num = 1;
            var _difference = _liSumWidth + _section;
            while(_difference > 0)
            {
                _numListElC += '<li><a href="">'+_num+'</a></li>';
                _num++;
                _difference = _difference - _width;
            }
            jQuery(_elNumList).html('<ul>'+_numListElC+'</ul>');
        };
        jQuery.fn.galleryScroll.numListActive = function(_marginEl, _slideNum, _width, _section){
            if (_slideNum) {
                jQuery('a',_slideNum).removeClass('active');
                var _activeRange = _width - _section-1;
                var _n = 0;
                if (_marginEl != 0) {
                    while (_marginEl > _activeRange) {
                        _activeRange = (_n * _width) -_section-1 + _options.innerMargin;
                        _n++;
                    }
                }
                var _a  = (_activeRange+_section+1 + _options.innerMargin)/_width - 1;
                jQuery('a',_slideNum).eq(_a).addClass('active');
            }
        };
        if (_options.slideNum && !_options.step) {
            jQuery.fn.galleryScroll.numListCreate(jQuery(_options.slideNum, _this), _liSum, _gWidth,_lastSection);
            jQuery.fn.galleryScroll.numListActive(_margin, jQuery(_options.slideNum, _this),_gWidth,_lastSection);
            numClick();
        };
        function numClick() {
            jQuery(_options.slideNum, _this).find('a').click(function(){
                jQuery(_options.btPrev,_this).removeClass('prev-'+_options.disableClass);
                jQuery(_options.btNext,_this).removeClass('next-'+_options.disableClass);
				
                var _indexNum = jQuery(_options.slideNum, _this).find('a').index(jQuery(this));
                _margin = (_step*_indexNum) - _options.innerMargin;
                f=0;
                _f2=0;
                if (_indexNum == 0) _f2=1;
                if (_margin + _step > _liSum) {
                    _margin = _margin - (_margin - _liSum) - _step + _options.innerMargin;
                    if (!_options.circleSlide) jQuery(_options.btNext, _this).addClass('next-'+_options.disableClass);
                }
                _animatedBlock.animate({
                    marginLeft: -_margin + "px"
                }, {
                    queue:false, 
                    duration: _options.duration
                });
				
                if (!_options.circleSlide && _margin==0) jQuery(_options.btPrev,_this).addClass('prev-'+_options.disableClass);
                jQuery.fn.galleryScroll.numListActive(_margin, jQuery(_options.slideNum, _this),_gWidth,_lastSection);
				
                if (_timerSlide) {
                    clearTimeout(_timerSlide);
                    _timerSlide = setTimeout(function(){
                        autoSlide(_options.autoSlide)
                    }, _options.autoSlide);
                }
                return false;
            });
        };
        jQuery(window).resize(function(){
            if(_autoHeight){
                list.css('height',items.eq(curInd).height());
            }
            list.css('marginLeft',-_holderBlock.width()*curInd);
            items.css('width',_holderBlock.width());
            _gWidth = _holderBlock.width();
            _liWidth = jQuery(_options.scrollEl,_animatedBlock).outerWidth(true);
            _liSum = jQuery(_options.scrollEl,_animatedBlock).length * _liWidth;
            if (!_options.step) _step = _gWidth; else _step = _options.step*_liWidth;
            if (_options.slideNum && !_options.step) {
                var _lastSection = 0;
                var _sectionWidth = 0;
                while(_sectionWidth < _liSum)
                {
                    _sectionWidth = _sectionWidth + _gWidth;
                    if(_sectionWidth > _liSum) {
                        _lastSection = _sectionWidth - _liSum;
                    }
                };
                jQuery.fn.galleryScroll.numListCreate(jQuery(_options.slideNum, _this), _liSum, _gWidth,_lastSection);
                jQuery.fn.galleryScroll.numListActive(_margin, jQuery(_options.slideNum, _this),_gWidth,_lastSection);
                numClick();
            };
            //if (_margin == _options.innerMargin) jQuery(this).addClass(_options.disableClass);
            if (_liSum - _gWidth  < _margin - _options.innerMargin) {
                if (!_options.circleSlide) jQuery(_options.btNext, _this).addClass('next-'+_options.disableClass);
                _animatedBlock.animate({
                    marginLeft: -(_liSum - _gWidth + _options.innerMargin)
                }, {
                    queue:false, 
                    duration: _options.duration
                });
            };
        });
    });
}

// slideshow plugin
jQuery.fn.fadeGallery = function(_options){
    var _options = jQuery.extend({
        slideElements:'div.slideset > div',
        pagerLinks:'div.pager a',
        btnNext:'a.next',
        btnPrev:'a.prev',
        btnPlayPause:'a.play-pause',
        btnPlay:'a.play',
        btnPause:'a.pause',
        pausedClass:'paused',
        disabledClass: 'disabled',
        playClass:'playing',
        activeClass:'active',
        loadingClass:'ajax-loading',
        loadedClass:'slide-loaded',
        dynamicImageLoad:false,
        dynamicImageLoadAttr:'alt',
        currentNum:false,
        allNum:false,
        startSlide:null,
        noCircle:false,
        pauseOnHover:true,
        autoRotation:false,
        autoHeight:false,
        onBeforeFade:false,
        onAfterFade:false,
        onChange:false,
        disableWhileAnimating:false,
        switchTime:3000,
        duration:650,
        event:'click'
    },_options);

    return this.each(function(){
        // gallery options
        if(this.slideshowInit) return; else this.slideshowInit;
        var _this = jQuery(this);
        var _slides = jQuery(_options.slideElements, _this);
        var _pagerLinks = jQuery(_options.pagerLinks, _this);
        var _btnPrev = jQuery(_options.btnPrev, _this);
        var _btnNext = jQuery(_options.btnNext, _this);
        var _btnPlayPause = jQuery(_options.btnPlayPause, _this);
        var _btnPause = jQuery(_options.btnPause, _this);
        var _btnPlay = jQuery(_options.btnPlay, _this);
        var _pauseOnHover = _options.pauseOnHover;
        var _dynamicImageLoad = _options.dynamicImageLoad;
        var _dynamicImageLoadAttr = _options.dynamicImageLoadAttr;
        var _autoRotation = _options.autoRotation;
        var _activeClass = _options.activeClass;
        var _loadingClass = _options.loadingClass;
        var _loadedClass = _options.loadedClass;
        var _disabledClass = _options.disabledClass;
        var _pausedClass = _options.pausedClass;
        var _playClass = _options.playClass;
        var _autoHeight = _options.autoHeight;
        var _duration = _options.duration;
        var _switchTime = _options.switchTime;
        var _controlEvent = _options.event;
        var _currentNum = (_options.currentNum ? jQuery(_options.currentNum, _this) : false);
        var _allNum = (_options.allNum ? jQuery(_options.allNum, _this) : false);
        var _startSlide = _options.startSlide;
        var _noCycle = _options.noCircle;
        var _onChange = _options.onChange;
        var _onBeforeFade = _options.onBeforeFade;
        var _onAfterFade = _options.onAfterFade;
        var _disableWhileAnimating = _options.disableWhileAnimating;
		
        // gallery init
        var _anim = false;
        var _hover = false;
        var _prevIndex = 0;
        var _currentIndex = 0;
        var _slideCount = _slides.length;
        var _timer;
        if(_slideCount < 2) return;

        _prevIndex = _slides.index(_slides.filter('.'+_activeClass));
        if(_prevIndex < 0) _prevIndex = _currentIndex = 0;
        else _currentIndex = _prevIndex;
        if(_startSlide != null) {
            if(_startSlide == 'random') _prevIndex = _currentIndex = Math.floor(Math.random()*_slideCount);
            else _prevIndex = _currentIndex = parseInt(_startSlide);
        }
        _slides.hide().eq(_currentIndex).show();
        if(_autoRotation) _this.removeClass(_pausedClass).addClass(_playClass);
        else _this.removeClass(_playClass).addClass(_pausedClass);

        // gallery control
        if(_btnPrev.length) {
            _btnPrev.bind(_controlEvent,function(){
                prevSlide();
                return false;
            });
        }
        if(_btnNext.length) {
            _btnNext.bind(_controlEvent,function(){
                nextSlide();
                return false;
            });
        }
        if(_pagerLinks.length) {
            _pagerLinks.each(function(_ind){
                jQuery(this).bind(_controlEvent,function(){
                    if(_currentIndex != _ind) {
                        if(_disableWhileAnimating && _anim) return;
                        _prevIndex = _currentIndex;
                        _currentIndex = _ind;
                        switchSlide();
                    }
                    return false;
                });
            });
        }

        // play pause section
        if(_btnPlayPause.length) {
            _btnPlayPause.bind(_controlEvent,function(){
                if(_this.hasClass(_pausedClass)) {
                    _this.removeClass(_pausedClass).addClass(_playClass);
                    _autoRotation = true;
                    autoSlide();
                } else {
                    _autoRotation = false;
                    if(_timer) clearTimeout(_timer);
                    _this.removeClass(_playClass).addClass(_pausedClass);
                }
                return false;
            });
        }
        if(_btnPlay.length) {
            _btnPlay.bind(_controlEvent,function(){
                _this.removeClass(_pausedClass).addClass(_playClass);
                _autoRotation = true;
                autoSlide();
                return false;
            });
        }
        if(_btnPause.length) {
            _btnPause.bind(_controlEvent,function(){
                _autoRotation = false;
                if(_timer) clearTimeout(_timer);
                _this.removeClass(_playClass).addClass(_pausedClass);
                return false;
            });
        }

        // dynamic image loading (swap from ATTRIBUTE)
        function loadSlide(slide) {
            if(!slide.hasClass(_loadingClass) && !slide.hasClass(_loadedClass)) {
                var images = slide.find(_dynamicImageLoad) // pass selector here
                var imagesCount = images.length;
                if(imagesCount) {
                    slide.addClass(_loadingClass);
                    images.each(function(){
                        var img = this;
                        img.onload = function(){
                            img.loaded = true;
                            img.onload = null;
                            setTimeout(reCalc,_duration);
                        }
                        img.setAttribute('src', img.getAttribute(_dynamicImageLoadAttr));
                        img.setAttribute(_dynamicImageLoadAttr,'');
                    }).css({
                        opacity:0
                    });

                    function reCalc() {
                        var cnt = 0;
                        images.each(function(){
                            if(this.loaded) cnt++;
                        });
                        if(cnt == imagesCount) {
                            slide.removeClass(_loadingClass);
                            images.animate({
                                opacity:1
                            },{
                                duration:_duration,
                                complete:function(){
                                    if(jQuery.browser.msie && jQuery.browser.version < 9) jQuery(this).css({
                                        opacity:'auto'
                                    })
                                }
                            });
                            slide.addClass(_loadedClass)
                        }
                    }
                }
            }
        }

        // gallery animation
        function prevSlide() {
            if(_disableWhileAnimating && _anim) return;
            _prevIndex = _currentIndex;
            if(_currentIndex > 0) _currentIndex--;
            else {
                if(_noCycle) return;
                else _currentIndex = _slideCount-1;
            }
            switchSlide();
        }
        function nextSlide() {
            if(_disableWhileAnimating && _anim) return;
            _prevIndex = _currentIndex;
            if(_currentIndex < _slideCount-1) _currentIndex++;
            else {
                if(_noCycle) return;
                else _currentIndex = 0;
            }
            switchSlide();
        }
        function refreshStatus() {
            if(_dynamicImageLoad) loadSlide(_slides.eq(_currentIndex));
            if(_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentIndex).addClass(_activeClass);
            if(_currentNum) _currentNum.text(_currentIndex+1);
            if(_allNum) _allNum.text(_slideCount);
            _slides.eq(_prevIndex).removeClass(_activeClass);
            _slides.eq(_currentIndex).addClass(_activeClass);
            if(_noCycle) {
                if(_btnPrev.length) {
                    if(_currentIndex == 0) _btnPrev.addClass(_disabledClass);
                    else _btnPrev.removeClass(_disabledClass);
                }
                if(_btnNext.length) {
                    if(_currentIndex == _slideCount-1) _btnNext.addClass(_disabledClass);
                    else _btnNext.removeClass(_disabledClass);
                }
            }
            if(typeof _onChange === 'function') {
                _onChange(_this, _slides, _prevIndex, _currentIndex);
            }
        }
        function switchSlide() {
            _anim = true;
            if(typeof _onBeforeFade === 'function') _onBeforeFade(_this, _slides, _prevIndex, _currentIndex);
            _slides.eq(_prevIndex).fadeOut(_duration,function(){
                _anim = false;
            });
            _slides.eq(_currentIndex).fadeIn(_duration,function(){
                if(typeof _onAfterFade === 'function') _onAfterFade(_this, _slides, _prevIndex, _currentIndex);
            });
            if(_autoHeight) _slides.eq(_currentIndex).parent().animate({
                height:_slides.eq(_currentIndex).outerHeight(true)
            },{
                duration:_duration,
                queue:false
            });
            refreshStatus();
            autoSlide();
        }

        // autoslide function
        function autoSlide() {
            if(!_autoRotation || _hover) return;
            if(_timer) clearTimeout(_timer);
            _timer = setTimeout(nextSlide,_switchTime+_duration);
        }
        if(_pauseOnHover) {
            _this.hover(function(){
                _hover = true;
                if(_timer) clearTimeout(_timer);
            },function(){
                _hover = false;
                autoSlide();
            });
        }
        jQuery(window).focus(function(){
            autoSlide();
        }).blur(function(){
            clearTimeout(_timer);
            _slides.stop();
        });
        refreshStatus();
        autoSlide();
    });
}

//<![CDATA[
var mobi = ['opera', 'iemobile', 'webos', 'android', 'blackberry', 'ipad', 'iphone', 'safari'];
var midp = ['blackberry', 'symbian'];
var ua = navigator.userAgent.toLowerCase();
if ((ua.indexOf('midp') != -1) || (ua.indexOf('mobi') != -1) || ((ua.indexOf('ppc') != -1) && (ua.indexOf('mac') == -1)) || (ua.indexOf('webos') != -1)) {
    document.write('<link rel="stylesheet" href="css/allmobile.css" type="text/css" media="all"/>');
    if (ua.indexOf('midp') != -1) {
        for (var i = 0; i < midp.length; i++) {
            if (ua.indexOf(midp[i]) != -1) {
                document.write('<link rel="stylesheet" href="css/' + midp[i] + '.css" type="text/css"/>');
            }
        }
    }
    else {
        if ((ua.indexOf('mobi') != -1) || (ua.indexOf('ppc') != -1) || (ua.indexOf('webos') != -1)) {
            for (var i = 0; i < mobi.length; i++) {
                if (ua.indexOf(mobi[i]) != -1) {
                    if ((mobi[i].indexOf('blackberry') != -1) && (ua.indexOf('6.0') != -1)) {
                        document.write('<link rel="stylesheet" href="css/' + mobi[i] + '.css" type="text/css"/>');
                    }
                    else {
                        document.write('<link rel="stylesheet" href="css/' + mobi[i] + '.css" type="text/css"/>');
                    }
                    break;
                }
            }
        }
    }
}
//]]>

/*getunik */

