﻿// page init
$(function () {
    clearFormFields({
        clearInputs: true,
        clearTextareas: true,
        passwordFieldText: false,
        addClassFocus: "focus",
        filterClass: "default"
    });
    initCustomForms();
    initTabs();
    initCufon();
    initPopups();
    initFadeGallery();
    initButton();   
    $('.artists.all').show();
});


//mailing list submit button
function initButton() {
    $('#mailinglist a.btn-submit').click(function () {
        $('#mailinglist').submit();
        return false;
    });
}

// init fade gallery
function initFadeGallery() {
    $('.gallery').fadeGallery({
        slideElements: '.frame> ul > li',
        autoRotation: true,
        switchTime: 3500,
        pagerLinks: 'ul.switcher li'
    });
}

// init cufon
function _refresh(x, y) { $(x).mouseout(function () { setTimeout(function () { Cufon.refresh(y) }, 10); }); }
function initCufon() {
    Cufon.replace('#nav > div > ul  > li > a, .post h2 a, .news h2, .gallery .text-holder .read-more, #footer .links-holder a', { fontFamily: 'HelveticaNeue-Bd', hover: true });
    Cufon.replace('#content h1, .gallery .text-holder .title, .block .text-holder strong, .lightbox .title', { fontFamily: 'HelveticaNeue-Bd', hover: false });
    Cufon.replace('#nav > div > ul > li > a', { fontFamily: 'HelveticaNeue-Bd', hover: true });
    _refresh('#nav > div > ul > li', '#nav > div > ul > li > a');
}

// 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).stop().animate({ opacity: 0 }, { queue: false, duration: _duration, complete: function () {
                $(this).css({ opacity: 1, display: 'none' })
                _anim = false;
            }
            });
            _slides.eq(_currentIndex).css({ opacity: 0, display: 'block' }).stop().animate({ opacity: 1 }, { queue: false, duration: _duration, complete: 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();
            });
        }
        refreshStatus();
        autoSlide();
    });
    $window.focus(alert(1));
    $window.blur();
}

// 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;

    // 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 (_windowWidth < _minWidth || 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) {
        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;
            });
        }
    }

    // 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);
                        })
                    } 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;
    })
}

// clear inputs function
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";
    }
}

// custom forms script
var maxVisibleOptions = 20;
var all_selects = false;
var active_select = null;
var selectText = "please select";

function initCustomForms() {
    getElements();
    separateElements();
    replaceRadios();
    replaceCheckboxes();
    replaceSelects();

    // hide drop when scrolling or resizing window
    if (window.addEventListener) {
        window.addEventListener("scroll", hideActiveSelectDrop, false);
        window.addEventListener("resize", hideActiveSelectDrop, false);
    }
    else if (window.attachEvent) {
        window.attachEvent("onscroll", hideActiveSelectDrop);
        window.attachEvent("onresize", hideActiveSelectDrop);
    }
}

function refreshCustomForms() {
    // remove prevously created elements
    if (window.inputs) {
        for (var i = 0; i < checkboxes.length; i++) {
            if (checkboxes[i].checked) { checkboxes[i]._ca.className = "checkboxAreaChecked"; }
            else { checkboxes[i]._ca.className = "checkboxArea"; }
        }
        for (var i = 0; i < radios.length; i++) {
            if (radios[i].checked) { radios[i]._ra.className = "radioAreaChecked"; }
            else { radios[i]._ra.className = "radioArea"; }
        }
        for (var i = 0; i < selects.length; i++) {
            var newText = document.createElement('div');
            if (selects[i].options[selects[i].selectedIndex].title.indexOf('image') != -1) {
                newText.innerHTML = '<img src="' + selects[i].options[selects[i].selectedIndex].title + '" alt="" />';
                newText.innerHTML += '<span>' + selects[i].options[selects[i].selectedIndex].text + '</span>';
            } else {
                newText.innerHTML = selects[i].options[selects[i].selectedIndex].text;
            }
            document.getElementById("mySelectText" + i).innerHTML = newText.innerHTML;
        }
    }
}

// getting all the required elements
function getElements() {
    // remove prevously created elements
    if (window.inputs) {
        for (var i = 0; i < inputs.length; i++) {
            inputs[i].className = inputs[i].className.replace('outtaHere', '');
            if (inputs[i]._ca) inputs[i]._ca.parentNode.removeChild(inputs[i]._ca);
            else if (inputs[i]._ra) inputs[i]._ra.parentNode.removeChild(inputs[i]._ra);
        }
        for (i = 0; i < selects.length; i++) {
            selects[i].replaced = null;
            selects[i].className = selects[i].className.replace('outtaHere', '');
            selects[i]._optionsDiv._parent.parentNode.removeChild(selects[i]._optionsDiv._parent);
            selects[i]._optionsDiv.parentNode.removeChild(selects[i]._optionsDiv);
        }
    }

    // reset state
    inputs = new Array();
    selects = new Array();
    labels = new Array();
    radios = new Array();
    radioLabels = new Array();
    checkboxes = new Array();
    checkboxLabels = new Array();
    for (var nf = 0; nf < document.getElementsByTagName("form").length; nf++) {
        if (document.forms[nf].className.indexOf("default") < 0) {
            for (var nfi = 0; nfi < document.forms[nf].getElementsByTagName("input").length; nfi++) { inputs.push(document.forms[nf].getElementsByTagName("input")[nfi]); }
            for (var nfl = 0; nfl < document.forms[nf].getElementsByTagName("label").length; nfl++) { labels.push(document.forms[nf].getElementsByTagName("label")[nfl]); }
            for (var nfs = 0; nfs < document.forms[nf].getElementsByTagName("select").length; nfs++) { selects.push(document.forms[nf].getElementsByTagName("select")[nfs]); }
        }
    }
}

// separating all the elements in their respective arrays
function separateElements() {
    var r = 0; var c = 0; var t = 0; var rl = 0; var cl = 0; var tl = 0; var b = 0;
    for (var q = 0; q < inputs.length; q++) {
        if (inputs[q].type == "radio") {
            radios[r] = inputs[q]; ++r;
            for (var w = 0; w < labels.length; w++) {
                if ((inputs[q].id) && labels[w].htmlFor == inputs[q].id) {
                    radioLabels[rl] = labels[w];
                    ++rl;
                }
            }
        }
        if (inputs[q].type == "checkbox") {
            checkboxes[c] = inputs[q]; ++c;
            for (var w = 0; w < labels.length; w++) {
                if ((inputs[q].id) && (labels[w].htmlFor == inputs[q].id)) {
                    checkboxLabels[cl] = labels[w];
                    ++cl;
                }
            }
        }
    }
}

//replacing radio buttons
function replaceRadios() {
    for (var q = 0; q < radios.length; q++) {
        radios[q].className += " outtaHere";
        var radioArea = document.createElement("div");
        if (radios[q].checked) {
            radioArea.className = "radioAreaChecked";
        }
        else {
            radioArea.className = "radioArea";
        }
        radioArea.id = "myRadio" + q;
        radios[q].parentNode.insertBefore(radioArea, radios[q]);
        radios[q]._ra = radioArea;

        radioArea.onclick = new Function('rechangeRadios(' + q + ')');
        if (radioLabels[q]) {
            if (radios[q].checked) {
                radioLabels[q].className += "radioAreaCheckedLabel";
            }
            radioLabels[q].onclick = new Function('rechangeRadios(' + q + ')');
        }
    }
    return true;
}

//checking radios
function checkRadios(who) {
    var what = radios[who]._ra;
    for (var q = 0; q < radios.length; q++) {
        if ((radios[q]._ra.className == "radioAreaChecked") && (radios[q]._ra.nextSibling.name == radios[who].name)) {
            radios[q]._ra.className = "radioArea";
        }
    }
    what.className = "radioAreaChecked";
}

//changing radios
function changeRadios(who) {
    if (radios[who].checked) {
        for (var q = 0; q < radios.length; q++) {
            if (radios[q].name == radios[who].name) {
                radios[q].checked = false;
            }
            radios[who].checked = true;
            checkRadios(who);
        }
    }
}

//rechanging radios
function rechangeRadios(who) {
    if (!radios[who].checked) {
        for (var q = 0; q < radios.length; q++) {
            if (radios[q].name == radios[who].name) {
                radios[q].checked = false;
                if (radioLabels[q]) radioLabels[q].className = radioLabels[q].className.replace("radioAreaCheckedLabel", "");
            }
        }
        radios[who].checked = true;
        if (radioLabels[who] && radioLabels[who].className.indexOf("radioAreaCheckedLabel") < 0) {
            radioLabels[who].className += " radioAreaCheckedLabel";
        }
        checkRadios(who);

        if (window.$ && window.$.fn) {
            $(radios[who]).trigger('change');
        }
    }
}

//replacing checkboxes
function replaceCheckboxes() {
    for (var q = 0; q < checkboxes.length; q++) {
        checkboxes[q].className += " outtaHere";
        var checkboxArea = document.createElement("div");
        if (checkboxes[q].checked) {
            checkboxArea.className = "checkboxAreaChecked";
            if (checkboxLabels[q]) {
                checkboxLabels[q].className += " checkboxAreaCheckedLabel"
            }
        }
        else {
            checkboxArea.className = "checkboxArea";
        }
        checkboxArea.id = "myCheckbox" + q;
        checkboxes[q].parentNode.insertBefore(checkboxArea, checkboxes[q]);
        checkboxes[q]._ca = checkboxArea;
        checkboxArea.onclick = new Function('rechangeCheckboxes(' + q + ')');
        if (checkboxLabels[q]) {
            checkboxLabels[q].onclick = new Function('changeCheckboxes(' + q + ')');
        }
        checkboxes[q].onkeydown = checkEvent;
    }
    return true;
}

//checking checkboxes
function checkCheckboxes(who, action) {
    var what = checkboxes[who]._ca;
    if (action == true) {
        what.className = "checkboxAreaChecked";
        what.checked = true;
    }
    if (action == false) {
        what.className = "checkboxArea";
        what.checked = false;
    }
    if (checkboxLabels[who]) {
        if (checkboxes[who].checked) {
            if (checkboxLabels[who].className.indexOf("checkboxAreaCheckedLabel") < 0) {
                checkboxLabels[who].className += " checkboxAreaCheckedLabel";
            }
        } else {
            checkboxLabels[who].className = checkboxLabels[who].className.replace("checkboxAreaCheckedLabel", "");
        }
    }
    artist_filter(what);
}

//changing checkboxes
function changeCheckboxes(who) {
    setTimeout(function () {
        if (checkboxes[who].checked) {
            checkCheckboxes(who, true);
        } else {
            checkCheckboxes(who, false);
        }
    }, 10);
}

// rechanging checkboxes
function rechangeCheckboxes(who) {
    var tester = false;
    if (checkboxes[who].checked == true) {
        tester = false;
    }
    else {
        tester = true;
    }
    checkboxes[who].checked = tester;
    checkCheckboxes(who, tester);
    if (window.$ && window.$.fn) {
        $(checkboxes[who]).trigger('change');
    }
}

// check event
function checkEvent(e) {
    if (!e) var e = window.event;
    if (e.keyCode == 32) { for (var q = 0; q < checkboxes.length; q++) { if (this == checkboxes[q]) { changeCheckboxes(q); } } } //check if space is pressed
}

// replace selects
function replaceSelects() {
    for (var q = 0; q < selects.length; q++) {
        if (!selects[q].replaced && selects[q].offsetWidth) {
            selects[q]._number = q;
            //create and build div structure
            var selectArea = document.createElement("div");
            var left = document.createElement("span");
            left.className = "left";
            selectArea.appendChild(left);

            var disabled = document.createElement("span");
            disabled.className = "disabled";
            selectArea.appendChild(disabled);

            selects[q]._disabled = disabled;
            var center = document.createElement("span");
            var button = document.createElement("a");
            var text = document.createTextNode(selectText);
            center.id = "mySelectText" + q;

            var stWidth = selects[q].offsetWidth;
            selectArea.style.width = stWidth + "px";
            if (selects[q].parentNode.className.indexOf("type2") != -1) {
                button.href = "javascript:showOptions(" + q + ",true)";
            } else {
                button.href = "javascript:showOptions(" + q + ",false)";
            }
            button.className = "selectButton";
            selectArea.className = "selectArea";
            selectArea.className += " " + selects[q].className;
            selectArea.id = "sarea" + q;
            center.className = "center";
            center.appendChild(text);
            selectArea.appendChild(center);
            selectArea.appendChild(button);

            //insert select div
            selects[q].parentNode.insertBefore(selectArea, selects[q]);
            //build & place options div

            var optionsDiv = document.createElement("div");
            var optionsList = document.createElement("ul");
            var optionsListHolder = document.createElement("div");

            optionsListHolder.className = "select-center";
            optionsListHolder.innerHTML = "<div class='select-center-right'></div>";
            optionsDiv.innerHTML += "<div class='select-top'><div class='select-top-left'></div><div class='select-top-right'></div></div>";

            optionsListHolder.appendChild(optionsList);
            optionsDiv.appendChild(optionsListHolder);

            selects[q]._optionsDiv = optionsDiv;
            selects[q]._options = optionsList;

            optionsDiv.style.width = stWidth + "px";
            optionsDiv._parent = selectArea;

            optionsDiv.className = "optionsDivInvisible";
            optionsDiv.id = "optionsDiv" + q;

            if (selects[q].className.length) {
                optionsDiv.className += ' drop-' + selects[q].className;
            }

            populateSelectOptions(selects[q]);
            optionsDiv.innerHTML += "<div class='select-bottom'><div class='select-bottom-left'></div><div class='select-bottom-right'></div></div>";
            document.body.appendChild(optionsDiv);
            selects[q].replaced = true;

            // too many options
            if (selects[q].options.length > maxVisibleOptions) {
                optionsDiv.className += ' optionsDivScroll';
            }

            //hide the select field
            if (selects[q].className.indexOf('default') != -1) {
                selectArea.style.display = 'none';
            } else {
                selects[q].className += " outtaHere";
            }
        }
    }
    all_selects = true;
}

//collecting select options
function populateSelectOptions(me) {
    me._options.innerHTML = "";
    for (var w = 0; w < me.options.length; w++) {
        var optionHolder = document.createElement('li');
        var optionLink = document.createElement('a');
        var optionTxt;
        if (me.options[w].title.indexOf('image') != -1) {
            optionTxt = document.createElement('img');
            optionSpan = document.createElement('span');
            optionTxt.src = me.options[w].title;
            optionSpan = document.createTextNode(me.options[w].text);
        } else {
            optionTxt = document.createTextNode(me.options[w].text);
        }

        // hidden default option
        if (me.options[w].className.indexOf('default') != -1) {
            optionHolder.style.display = 'none'
        }

        optionLink.href = "javascript:showOptions(" + me._number + "); selectMe('" + me.id + "'," + w + "," + me._number + ");";
        if (me.options[w].title.indexOf('image') != -1) {
            optionLink.appendChild(optionTxt);
            optionLink.appendChild(optionSpan);
        } else {
            optionLink.appendChild(optionTxt);
        }
        optionHolder.appendChild(optionLink);
        me._options.appendChild(optionHolder);
        //check for pre-selected items
        if (me.options[w].selected) {
            selectMe(me.id, w, me._number, true);
        }
    }
    if (me.disabled) {
        me._disabled.style.display = "block";
    } else {
        me._disabled.style.display = "none";
    }
}

//selecting me
function selectMe(selectFieldId, linkNo, selectNo, quiet) {
    selectField = selects[selectNo];
    for (var k = 0; k < selectField.options.length; k++) {
        if (k == linkNo) {
            selectField.options[k].selected = true;
        }
        else {
            selectField.options[k].selected = false;
        }
    }

    //show selected option
    textVar = document.getElementById("mySelectText" + selectNo);
    var newText;
    var optionSpan;
    if (selectField.options[linkNo].title.indexOf('image') != -1) {
        newText = document.createElement('img');
        newText.src = selectField.options[linkNo].title;
        optionSpan = document.createElement('span');
        optionSpan = document.createTextNode(selectField.options[linkNo].text);
    } else {
        newText = document.createTextNode(selectField.options[linkNo].text);
    }
    if (selectField.options[linkNo].title.indexOf('image') != -1) {
        if (textVar.childNodes.length > 1) textVar.removeChild(textVar.childNodes[0]);
        textVar.replaceChild(newText, textVar.childNodes[0]);
        textVar.appendChild(optionSpan);
    } else {
        if (textVar.childNodes.length > 1) textVar.removeChild(textVar.childNodes[0]);
        textVar.replaceChild(newText, textVar.childNodes[0]);
    }
    if (!quiet && all_selects) {
        if (typeof selectField.onchange === 'function') {
            selectField.onchange();
        }
        if (window.$ && window.$.fn) {
            $(selectField).trigger('change');
        }
    }
}

//showing options
function showOptions(g) {
    _elem = document.getElementById("optionsDiv" + g);
    var divArea = document.getElementById("sarea" + g);
    if (active_select && active_select != _elem) {
        active_select.className = active_select.className.replace('optionsDivVisible', ' optionsDivInvisible');
        active_select.style.height = "auto";
    }
    if (_elem.className.indexOf("optionsDivInvisible") != -1) {
        _elem.style.left = "-9999px";
        _elem.style.width = divArea.offsetWidth + 'px';
        _elem.style.top = findPosY(divArea) + divArea.offsetHeight + 'px';
        _elem.className = _elem.className.replace('optionsDivInvisible', '');
        _elem.className += " optionsDivVisible";
        /*if (_elem.offsetHeight > 200)
        {
        _elem.style.height = "200px";
        }*/
        _elem.style.left = findPosX(divArea) + 'px';

        active_select = _elem;
        if (_elem._parent.className.indexOf('selectAreaActive') < 0) {
            _elem._parent.className += ' selectAreaActive';
        }

        if (document.documentElement) {
            document.documentElement.onclick = hideSelectOptions;
        } else {
            window.onclick = hideSelectOptions;
        }
    }
    else if (_elem.className.indexOf("optionsDivVisible") != -1) {
        hideActiveSelectDrop();
    }

    // for mouseout
    /*_elem.timer = false;
    _elem.onmouseover = function() {
    if (this.timer) clearTimeout(this.timer);
    }
    _elem.onmouseout = function() {
    var _this = this;
    this.timer = setTimeout(function(){
    _this.style.height = "auto";
    _this.className = _this.className.replace('optionsDivVisible','');
    if (_elem.className.indexOf('optionsDivInvisible') == -1)
    _this.className += " optionsDivInvisible";
    },200);
    }*/
}

function hideActiveSelectDrop() {
    if (active_select) {
        active_select.style.height = "auto";
        active_select.className = active_select.className.replace('optionsDivVisible', '');
        active_select.className = active_select.className.replace('optionsDivInvisible', '');
        active_select._parent.className = active_select._parent.className.replace('selectAreaActive', '')
        active_select.className += " optionsDivInvisible";
        active_select = false;
    }
}

function hideSelectOptions(e) {
    if (active_select) {
        if (!e) e = window.event;
        var _target = (e.target || e.srcElement);
        if (!isElementBefore(_target, 'selectArea') && !isElementBefore(_target, 'optionsDiv')) {
            hideActiveSelectDrop();
            if (document.documentElement) {
                document.documentElement.onclick = function () { };
            }
            else {
                window.onclick = null;
            }
        }
    }
}
function isElementBefore(_el, _class) {
    var _parent = _el;
    do {
        _parent = _parent.parentNode;
    }
    while (_parent && _parent.className != null && _parent.className.indexOf(_class) == -1)
    return _parent.className && _parent.className.indexOf(_class) != -1;
}

function findPosY(obj) {
    if (obj.getBoundingClientRect) {
        var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
        var clientTop = document.documentElement.clientTop || document.body.clientTop || 0;
        return Math.round(obj.getBoundingClientRect().top + scrollTop - clientTop);
    } else {
        var posTop = 0;
        while (obj.offsetParent) { posTop += obj.offsetTop; obj = obj.offsetParent; }
        return posTop;
    }
}

function findPosX(obj) {
    if (obj.getBoundingClientRect) {
        var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
        var clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;
        return Math.round(obj.getBoundingClientRect().left + scrollLeft - clientLeft);
    } else {
        var posLeft = 0;
        while (obj.offsetParent) { posLeft += obj.offsetLeft; obj = obj.offsetParent; }
        return posLeft;
    }
}


// init tabs when page ready
function initTabs() {
    if (typeof ContentTabs !== 'undefined') {
        ContentTabs.init();
    }
}

// content tabs module
ContentTabs = {
    options: {
        classOnParent: false,
        hiddenClass: 'tab-hidden',
        visibleClass: 'tab-active',
        activeClass: 'active',
        tabsets: 'ul.tabset',
        tablinks: 'a.tab',
        event: 'click'
    },
    init: function () {
        this.createStyleSheet();
        this.getTabsets();
        return this;
    },
    createStyleSheet: function () {
        this.tabStyleSheet = document.createElement('style');
        this.tabStyleSheet.setAttribute('type', 'text/css');
        this.tabStyleRule = '.' + this.options.hiddenClass;
        this.tabStyleRule += '{position:absolute !important;left:-9999px !important;top:-9999px !important;display:block !important}';
        document.getElementsByTagName('head')[0].appendChild(this.tabStyleSheet);
        if (this.tabStyleSheet.styleSheet) {
            this.tabStyleSheet.styleSheet.cssText = this.tabStyleRule;
        } else {
            this.tabStyleSheet.appendChild(document.createTextNode(this.tabStyleRule));
        }
    },
    getTabsets: function () {
        this.tabsets = this.queryElements(this.options.tabsets);
        for (var i = 0; i < this.tabsets.length; i++) {
            this.initTabset(this.tabsets[i]);
        }
    },
    initTabset: function (tabset) {
        var tabLinks = this.queryElements(this.options.tablinks, tabset), instance = this;
        for (var i = 0; i < tabLinks.length; i++) {
            tabLinks[i]['on' + this.options.event] = function () {
                instance.switchTab(this, tabLinks);
                return false;
            }
            if (this.hasClass(this.options.classOnParent ? tabLinks[i].parentNode : tabLinks[i], this.options.activeClass)) {
                this.switchTab(tabLinks[i], tabLinks);
            }
        }
    },
    switchTab: function (link, set) {
        for (var i = 0; i < set.length; i++) {
            var curLink = set[i];
            var curTab = document.getElementById(curLink.href.substr(curLink.href.indexOf('#') + 1));
            if (curLink === link) {
                this.addClass(this.options.classOnParent ? curLink.parentNode : curLink, this.options.activeClass);
                this.addClass(curTab, this.options.visibleClass);
                this.removeClass(curTab, this.options.hiddenClass);
            } else {
                this.removeClass(this.options.classOnParent ? curLink.parentNode : curLink, this.options.activeClass);
                this.removeClass(curTab, this.options.visibleClass);
                this.addClass(curTab, this.options.hiddenClass);
            }
        }
    },
    queryElements: function (selector, holder) {
        var box = holder || document;
        if (box.querySelectorAll) {
            return box.querySelectorAll(selector);
        } else {
            var res = [], selectorData = selector.split('.');
            var tagName = selectorData[0];
            var set = box.getElementsByTagName(tagName);
            if (selectorData.length > 1) {
                for (var i = 0; i < set.length; i++) {
                    if (this.hasClass(set[i], selectorData[1])) res.push(set[i]);
                }
                return res;
            } else {
                return set;
            }
        }
    },
    hasClass: function (obj, cname) {
        return (obj.className ? obj.className.match(new RegExp('(\\s|^)' + cname + '(\\s|$)')) : false);
    },
    addClass: function (obj, cname) {
        if (!this.hasClass(obj, cname)) obj.className += " " + cname;
    },
    removeClass: function (obj, cname) {
        if (this.hasClass(obj, cname)) obj.className = obj.className.replace(new RegExp('(\\s|^)' + cname + '(\\s|$)'), ' ');
    }
};

//artist filtering
function artist_filter(obj) {
    if ($('.check-form .row').size() > 0) {
        var all = false;
        if ($(obj).siblings('input').attr('id') == "all") {
            if ($(obj).hasClass('checkboxAreaChecked')) {
                all = true;
            }
        }
        else {
            $('.check-form .row #all').prop('checked', false);
            $('.check-form .row #all').siblings("div").attr("class", "checkboxArea");
            $('.check-form .row #all').siblings("label").attr("class", "");
        }

        if (all) {
            var inputs = $('.check-form .row:not(.all-genres) input');
            inputs.prop("checked", false);
            inputs.siblings("div").attr("class", "checkboxArea");
            inputs.siblings("label").attr("class", "");
            
            $('.artists').hide();
            $('.artists.all').show();
        }
        else {
            $('.artists').hide();
            $('.check-form .row .checkboxAreaChecked').each(function () {
                $('.artists.' + $(this).siblings('input').attr('id')).show();
            });
        }
    }
}




