﻿jQuery(function () {
    initOpenClose();
    initCarusel();
    initPopups();
    initAccordion();
});
function initOpenClose() {
    jQuery('.backet-box').OpenClose({
        activeClass: 'active',
        opener: '.open-close',
        slider: '.slider',
        effect: 'slide',
        animSpeed: 500
    });
};

function initCarusel() {
    jQuery('#carousel').jcarousel({
        vertical: true,
        scroll: 1
    });
    jQuery('#carousel-2').jcarousel({
        vertical: true,
        scroll: 1
    });
};

function initPopups() {
    $('.content-area .item-photo a').each(function () {
        $(this).modalPopup();
    });
};

function initAccordion() {
    $('ul.accordion').accordion({
        active: ".selected",
        autoHeight: false,
        header: ".opener",
        collapsible: false,
        event: "click"
    });
};

/* Open/Close plugin */
jQuery.fn.OpenClose = function (_options) {
    // default options
    var _options = jQuery.extend({
        activeClass: 'active',
        opener: '.opener',
        slider: '.slide',
        animSpeed: 400,
        animStart: false,
        animEnd: false,
        effect: 'fade',
        event: 'click'
    }, _options);

    return this.each(function () {
        // options
        var _holder = jQuery(this);
        var _slideSpeed = _options.animSpeed;
        var _activeClass = _options.activeClass;
        var _opener = jQuery(_options.opener, _holder);
        var _slider = jQuery(_options.slider, _holder);
        var _animStart = _options.animStart;
        var _animEnd = _options.animEnd;
        var _effect = _options.effect;
        var _event = _options.event;
        if (_slider.length) {
            _opener.bind(_event, function () {
                if (!_slider.is(':animated')) {
                    if (typeof _animStart === 'function') _animStart();
                    if (_holder.hasClass(_activeClass)) {
                        _slider[_effect == 'fade' ? 'fadeOut' : 'slideUp'](_slideSpeed, function () {
                            if (typeof _animEnd === 'function') _animEnd();
                        });
                        _holder.removeClass(_activeClass);
                    } else {
                        _holder.addClass(_activeClass);
                        _slider[_effect == 'fade' ? 'fadeIn' : 'slideDown'](_slideSpeed, function () {
                            if (typeof _animEnd === 'function') _animEnd();
                        });
                    }
                }
                return false;
            });
            if (_holder.hasClass(_activeClass)) _slider.show();
            else _slider.hide();
        }
    });
}

//lightbox plugin
$.fn.modalPopup = function (options) { return new modalPopup($(this).eq(0), options) }
function modalPopup(link, options) { this.init(link, options) }
modalPopup.prototype = {
    init: function (link, options) {
        var el = this;
        //options
        el.options = $.extend({
            fadeSpeed: 400,
            closer: 'a.button-close',
            scroll: false,
            wrapper: '#wrapper',
            IE: true,
            zIndex: false
        }, options);
        //popup & default css styles
        if ($.browser.msie && el.options.IE) el.popup = $(link.attr('href')).css({ visibility: 'hidden' })
        else el.popup = $(link.attr('href')).css({ opacity: 0, visibility: 'hidden' });
        if (el.options.zIndex) el.popup.css({ zIndex: el.options.zIndex });
        el.closer = $(el.popup.find(el.options.closer));
        el.popup.visible = false;
        modalPopup.prototype.activePopup = false;
        if (!modalPopup.prototype.firstRun) {
            modalPopup.prototype.firstRun = 'done';
            if ($.browser.msie && $.browser.version < 7) modalPopup.prototype.selects = $('select');
            //create fader
            if (!$('#fader').length) $('body').append('<div id="fader"></div>');
            modalPopup.prototype.fader = $('#fader');
            modalPopup.prototype.fader.css({ position: 'absolute', zIndex: 100, top: 0, left: 0, background: '#aaa', opacity: 0, display: 'none' });
            if (el.options.zIndex) modalPopup.prototype.fader.css({ zIndex: el.options.zIndex - 1 });
            modalPopup.prototype.wrapper = $(el.options.wrapper);
            //fader click event
            modalPopup.prototype.fader.click(function () {
                if (modalPopup.prototype.activePopup == false) el.hideFader()
                else modalPopup.prototype.activePopup.hidePopup(function () { el.hideFader() });
                return false;
            });
            //esc event
            $(document).keydown(function (e) {
                if (e.keyCode == 27) {
                    if (modalPopup.prototype.activePopup == false) el.hideFader()
                    else modalPopup.prototype.activePopup.hidePopup(function () { el.hideFader() });
                    return false;
                }
            });
        }

        el.wrapper = modalPopup.prototype.wrapper;

        if ($.browser.msie && $.browser.version < 7) {
            el.popupSelects = $('select', el.popup);
            modalPopup.prototype.selects = modalPopup.prototype.selects.not(el.popupSelects);
        }

        //open event
        link.click(function () {
            el.show();
            return false;
        });
        //close event
        el.closer.click(function () {
            el.close();
            return false;
        });
        //resize event
        $(window).resize(function () {
            if (el.popup.visible) el.positioning(false);
        });
        if (el.options.scroll) {
            $(window).scroll(function () {
                el.positioning(true);
            });
        }
    },

    close: function () {
        var el = this;
        el.hidePopup(function () { el.hideFader() });
    },

    show: function () {
        var el = this;
        if (modalPopup.prototype.activePopup == el) { return false; }
        if (modalPopup.prototype.activePopup) {
            modalPopup.prototype.activePopup.hidePopup(function () {
                el.showPopup()
                el.positioning(true);
            });
        } else {
            el.showFader(function () { el.showPopup() });
            el.positioning(true);
        }
    },

    showPopup: function () {
        var el = this;
        el.popup.visible = true;
        modalPopup.prototype.activePopup = el;
        if ($.browser.msie && el.options.IE) el.popup.css({ visibility: 'visible' })
        else el.popup.stop().css({ 'visibility': 'visible' }).animate({ opacity: 1 }, el.options.fadeSpeed)
    },
    hidePopup: function (callback) {
        var el = this;
        if ($.browser.msie && el.options.IE) {
            el.popup.css({ left: '-9999px', top: '-9999px', visibility: 'hidden' });
            el.popup.visible = false;
            modalPopup.prototype.activePopup = false;
            if ($.isFunction(callback)) callback();
        } else {
            el.popup.stop().animate({ opacity: 0 }, el.options.fadeSpeed, function () {
                el.popup.css({ left: '-9999px', top: '-9999px', visibility: 'hidden' });
                el.popup.visible = false;
                modalPopup.prototype.activePopup = false;
                if ($.isFunction(callback)) callback();
            });
        }
    },
    showFader: function (callback) {
        var el = this;
        el.fader.stop().css({ display: 'block' }).animate({ opacity: 0.5 }, el.options.fadeSpeed, function () {
            if ($.isFunction(callback)) callback();
        });
        if ($.browser.msie && $.browser.version < 7) modalPopup.prototype.selects.css({ 'visibility': 'hidden' });
    },
    hideFader: function () {
        var el = this;
        el.fader.stop().animate({ opacity: 0 }, el.options.fadeSpeed, function () {
            el.fader.css({ display: 'none' });
            if ($.browser.msie && $.browser.version < 7) modalPopup.prototype.selects.css({ 'visibility': 'visible' });
        });
    },
    positioning: function (openFlag) {
        var el = this;
        //x offset
        var windowW = $(window).width();
        var popupW = el.popup.outerWidth();
        var wrapperW = el.wrapper.outerWidth();

        if (windowW < wrapperW) {
            el.popup.css({ left: wrapperW / 2 - popupW / 2 })
            el.fader.css({ width: wrapperW });
        } else {
            el.popup.css({ left: windowW / 2 - popupW / 2 });
            el.fader.css({ width: windowW })
        }
        //y offset
        var docH;
        var windowH = $(window).height();
        var wrapperH = el.wrapper.outerHeight();
        if (windowH < wrapperH) docH = wrapperH
        else docH = windowH;

        var popupH = el.popup.outerHeight();
        if (openFlag) {
            var popupH = el.popup.outerHeight();
            if (popupH < windowH) el.popup.css({ top: windowH / 2 - popupH / 2 + $(window).scrollTop() });
            else if ($(window).scrollTop() + popupH > docH) {
                el.popup.css({ top: docH - popupH });
            } else {
                el.popup.css({ top: $(window).scrollTop() });
            }
        }
        el.fader.css({ height: docH });
    }
}

/* clear inputs */
function initPage() {
    clearFormFields({
        clearInputs: true,
        clearTextareas: true,
        passwordFieldText: false,
        addClassFocus: "focus",
        filterClass: "default"
    });

    initBreadcrumbsIndexes()
}
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 () {
                    //check phone field on checkout 
                    var inputObject = $(this);
                    if (inputObject.attr('id') == 'phone' && $("#checkout").length > 0) {
                        var val = inputObject.val().replace(' ', '');
                        if (isNumber(val) && val.length <= 7) {
                            $('#phone-confirm').removeAttr('disabled');
                        }
                        else {
                            $('#phone-confirm').attr('disabled', 'disabled');
                            $('#phone-confirm').removeAttr('checked');
                        }
                    }

                    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";
    }
}
if (window.addEventListener)
    window.addEventListener("load", initPage, false);
else if (window.attachEvent)
    window.attachEvent("onload", initPage);

/* tabs */
function initTabs() {
    var sets = document.getElementsByTagName("ul");
    for (var i = 0; i < sets.length; i++) {
        if (sets[i].className.indexOf("tabset") != -1) {
            var tabs = [];
            var links = sets[i].getElementsByTagName("a");
            for (var j = 0; j < links.length; j++) {
                if (links[j].className.indexOf("tab") != -1) {
                    tabs.push(links[j]);
                    links[j].tabs = tabs;
                    var c = document.getElementById(links[j].href.substr(links[j].href.indexOf("#") + 1));

                    if (c) if (links[j].parentNode.className.indexOf("active") != -1) c.style.display = "block";
                    else c.style.display = "none";

                    links[j].onclick = function () {
                        var c = document.getElementById(this.href.substr(this.href.indexOf("#") + 1));
                        if (c) {
                            for (var i = 0; i < this.tabs.length; i++) {
                                var tab = document.getElementById(this.tabs[i].href.substr(this.tabs[i].href.indexOf("#") + 1));
                                if (tab) {
                                    tab.style.display = "none";
                                }
                                this.tabs[i].parentNode.className = this.tabs[i].parentNode.className.replace("active", "");
                            }
                            this.parentNode.className += " active";
                            c.style.display = "block";
                            return false;
                        }
                    }
                }
            }
        }
    }
}

/* breadcrumbs z-index */
function initBreadcrumbsIndexes() {
    var nav = document.getElementById("breadcrumbs");
    if (nav) {
        var lis = nav.getElementsByTagName("li");
        for (var i = 0; i < lis.length; i++) {
            lis[i].style.zIndex = lis.length - i;
        }
    }
}

function isValidEmail(strEmail) {
    validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
    if (strEmail.search(validRegExp) == -1) {
        return false;
    }
    return true;
}


$(document).ready(function () {
    $('.dropper a.link').click(function () {
        $(this).siblings('.drop').toggle();
    });

    $('#frmContact a#submit').click(function () {
        var name = $('#frmContact #name').val();
        var email = $('#frmContact #email').val();
        var comment = $('#frmContact #comment').val();

        if (name == "" || email == "" || comment == "") {
            alert('Vinsamlegast fylltu út alla reiti');
        }
        else if (!isValidEmail(email)) {
            alert('Vinsamlega sláðu inn gilt netfang');
        }
        else {
            document.frmContact.submit();
        }
        return false;
    });


    var subscribe_mail = function (email, lang) {
        $.ajax({
            type: "POST",
            url: "/resources/ajax/mailinglist.aspx",
            data: "post-netfang=" + email + "&lang=" + lang,
            success: function (msg) {
                $.jGrowl(msg);
                if (lang == 'en')
                    $('#mailinglist #post-netfang').val('Sign up for newsletter');
                else
                    $('#mailinglist #post-netfang').val('Skrá á póstlista');
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(thrownError);
            }
        });
    };

    $('#mailinglist input.submit').click(function () {
        subscribe_mail($('#mailinglist #post-netfang').val(), $('#mailinglist #lang').val());
        return false;
    });

    $('#mailinglist #post-netfang').keypress(function (e) {
        if (e.keyCode == 13) {
            e.preventDefault();
            subscribe_mail($('#mailinglist #post-netfang').val(), $('#mailinglist #lang').val());
            return false;
        }
    });

});

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}


if (window.addEventListener)
    window.addEventListener("load", initTabs, false);
else if (window.attachEvent && !window.opera)
    window.attachEvent("onload", initTabs);

Shadowbox.init();
