// initPage
$(function() {
    initClear();
    initFadeGallery();
    initPopups();
    initFAQ();
});

function initFAQ() {
    $('.open-close').click(function() {
        if ($('.accordion').is(':hidden')) {
            $(this).html('<span>CLOSE</span>');
        } else {
            $(this).html('<span>OPEN</span>');
        }
        $('.accordion').slideToggle();
        return false;
    });

    $('.opener').click(function() {
        $(this).next().slideToggle();
        return false;
    });

    $('.login-form .text').keypress(function(e) {
        if (e.which == 13) {
            __doPostBack('ctl00$Login', '');
            //            e.preventDefault();
            //            return false;
        }
    });
}

// initClear
function initClear() {
    clearFormFields({
        clearInputs: true,
        clearTextareas: true,
        passwordFieldText: true,
        addClassFocus: "focus",
        filterClass: "text"
    });
}

// initFadeGallery
function initFadeGallery() {
    $('div.gallery').fadeGallery({
        slideElements: '.holder >ul >li',
        pagerLinks: '.switcher li',
        autoRotation: false, // true - start auto rotation
        switchTime: 5000 // delay
    });
}

// clearFormFields
function clearFormFields(o) {
    if (o.clearInputs == null) o.clearInputs = true;
    if (o.clearTextareas == null) o.clearTextareas = true;
    if (o.passwordFieldText == null) o.passwordFieldText = false;
    if (o.addClassFocus == null) o.addClassFocus = false;
    if (!o.filterClass) o.filterClass = "default";
    if (o.clearInputs) {
        var inputs = document.getElementsByTagName("input");
        for (var i = 0; i < inputs.length; i++) {
            if ((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass) > -1) {
                inputs[i].valueHtml = inputs[i].value;
                inputs[i].onfocus = function() {
                    if (this.valueHtml == this.value) this.value = "";
                    if (this.fake) {
                        inputsSwap(this, this.previousSibling);
                        this.previousSibling.focus();
                    }
                    if (o.addClassFocus && !this.fake) {
                        this.className += " " + o.addClassFocus;
                        this.parentNode.className += " parent-" + o.addClassFocus;
                    }
                }
                inputs[i].onblur = function() {
                    if (this.value == "") {
                        this.value = this.valueHtml;
                        if (o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);
                    }
                    if (o.addClassFocus) {
                        this.className = this.className.replace(o.addClassFocus, "");
                        this.parentNode.className = this.parentNode.className.replace("parent-" + o.addClassFocus, "");
                    }
                }
                if (o.passwordFieldText && inputs[i].type == "password") {
                    var fakeInput = document.createElement("input");
                    fakeInput.type = "text";
                    fakeInput.value = inputs[i].value;
                    fakeInput.className = inputs[i].className;
                    fakeInput.fake = true;
                    inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);
                    inputsSwap(inputs[i], null);
                }
            }
        }
    }
    if (o.clearTextareas) {
        var textareas = document.getElementsByTagName("textarea");
        for (var i = 0; i < textareas.length; i++) {
            if (textareas[i].className.indexOf(o.filterClass) == -1) {
                textareas[i].valueHtml = textareas[i].value;
                textareas[i].onfocus = function() {
                    if (this.value == this.valueHtml) this.value = "";
                    if (o.addClassFocus) {
                        this.className += " " + o.addClassFocus;
                        this.parentNode.className += " parent-" + o.addClassFocus;
                    }
                }
                textareas[i].onblur = function() {
                    if (this.value == "") this.value = this.valueHtml;
                    if (o.addClassFocus) {
                        this.className = this.className.replace(o.addClassFocus, "");
                        this.parentNode.className = this.parentNode.className.replace("parent-" + o.addClassFocus, "");
                    }
                }
            }
        }
    }
    function inputsSwap(el, el2) {
        if (el) el.style.display = "none";
        if (el2) el2.style.display = "inline";
    }
}

// initMobile
var mobi = ['opera', 'iemobile', 'webos', 'android', 'iphone', 'ipad'];
var midp = ['blackberry', 'symbian'];
var ua = navigator.userAgent.toLowerCase();
var desktop = '<link rel="stylesheet" href="css/all.css" type="text/css" media="all"/><!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="css/ie.css" media="screen"/><![endif]-->';
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="only screen and (max-device-width: 480px)"/>');
    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"/>');
                document.write('<meta name="viewport" content="width=320,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"/>');
            }
        }
    }
    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) {
                    document.write('<link rel="stylesheet" href="css/' + mobi[i] + '.css" type="text/css"/>');
                    document.write('<meta name="viewport" content="width=device-width"/>');
                    break;
                }
            }
        }
    }
}
else {
    document.write(desktop);
}

// popups function
function initPopups() {
    var _zIndex = 1000;
    var _fadeSpeed = 350;
    var _faderOpacity = 0.65;
    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 = jQuery('body > div:eq(0)').outerWidth();
    var _scroll = false;
    var faderClass = 'fader-bg';

    // 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: '#000',
                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
                    });
                }
            } 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, _opener) {
        if (!_lightbox) return;
        if (_state) {
            if (_opener.hasClass(faderClass)) $('body').addClass(faderClass);
            _lightbox.find('iframe').css({ left: 0, top: 0, position: 'static' })
            _fader.fadeIn(_fadeSpeed, function() {
                _lightbox.fadeIn(_fadeSpeed);
                $('body').trigger('lbshow');
            });
            _scroll = false;
            positionLightbox();
        } else {
            _lightbox.fadeOut(_fadeSpeed, function() {
                _lightbox.find('iframe').css({ left: -99999, top: -99999, position: 'absolute' })
                _lightbox.find('iframe').attr('src', _lightbox.find('iframe').attr('src'));
                _fader.fadeOut(_fadeSpeed, function() {
                    $('body').removeClass(faderClass);
                });
                $('body').trigger('lbhide');
                _scroll = false;
            });
        }
    }

    // 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');

        // 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, _opener);
                        })
                    } else {
                        _lightbox = _popup.hide();
                        toggleState(true, _opener);
                    }
                    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;
    })
}

// slideshow plugin
jQuery.fn.fadeGallery = function(_options) {
    var _options = jQuery.extend({
        slideElements: 'div.slides > div.slide',
        pagerGener: false,
        pagerHold: false,
        pagerLinks: 'ul.nav-list li',
        btnNext: 'a.btn-next',
        btnPrev: 'a.btn-prev',
        btnPlayPause: 'a.play-pause',
        btnPlay: 'a.play',
        btnPause: 'a.pause',
        pausedClass: 'paused',
        disabledClass: 'disabled',
        playClass: 'playing',
        activeClass: 'active',
        currentNum: false,
        allNum: false,
        startSlide: null,
        noCircle: false,
        caption: 'ul.caption > li',
        pauseOnHover: false,
        autoRotation: false,
        autoHeight: false,
        onChange: false,
        switchTime: 3000,
        duration: 650,
        event: 'click'
    }, _options);

    return this.each(function() {
        // gallery options
        var _this = jQuery(this);
        var _slides = jQuery(_options.slideElements, _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 _autoRotation = _options.autoRotation;
        var _activeClass = _options.activeClass;
        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 _pagerGener = _options.pagerGener;
        var _pagerHold = jQuery(_options.pagerHold, _this);
        var _caption = jQuery(_options.caption, _this);
        var _paging = '';
        if (_pagerGener) {
            for (var i = 0; i < _slides.length; i++) {
                _paging += '<li><a href="#">' + (i + 1) + '</a></li>';
            }
            _pagerHold.html('<ul>' + _paging + '</ul>');
        }
        var _pagerLinks = jQuery(_options.pagerLinks, _this);
        // gallery init
        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();
        _caption.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) {
                        _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;
            });
        }
        // gallery animation
        function prevSlide() {
            _prevIndex = _currentIndex;
            if (_currentIndex > 0) _currentIndex--;
            else {
                if (_noCycle) return;
                else _currentIndex = _slideCount - 1;
            }
            switchSlide();
        }
        function nextSlide() {
            _prevIndex = _currentIndex;
            if (_currentIndex < _slideCount - 1) _currentIndex++;
            else {
                if (_noCycle) return;
                else _currentIndex = 0;
            }
            switchSlide();
        }
        function refreshStatus() {
            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, _currentIndex);
            }
        }
        function switchSlide() {
            _slides.eq(_prevIndex).stop().animate({ opacity: 0 }, { duration: _duration, queue: false, complete: function() {
                jQuery(this).css({ display: 'none' });
            }
            })
            _slides.eq(_currentIndex).stop().css({ display: 'block', opacity: 0 }).animate({ opacity: 1 }, { duration: _duration, queue: false, complete: function() {
                jQuery(this).css({ opacity: '' });
            }
            })
            _caption.eq(_prevIndex).fadeOut();
            _caption.eq(_currentIndex).fadeIn();
            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();
            });
        }
        refreshStatus();
        autoSlide();
    });
};

