///<reference path="jquery-1.6.1-vsdoc.js"/>
$(function () {

    /* Start fade duration */
    var duration = 400;
    if ($.browser.msie && parseInt($.browser.version) < 9) {
        duration = 0;
    }
    /* End fade duration */

    /* General start */
    $('input:checkbox[class!="nojs"], input:radio[class!="nojs"]').uniform();
    
    $('select').selectBox();

    $('.tabs').tabs('.panes > div', { history: false });
    /*
    $('.relatedTabs li').click(function () {
    if (apiTabs.getIndex() == $(this).index()) {
    apiTabs.getCurrentPane().slideToggle();
    apiTabs.getCurrentTab().toggleClass('current');
    }
    });
    */
    $('.relatedTabs').tabs('.relatedPanes > div', { initialIndex: 0, history: false });
    var apiTabs = $('.relatedTabs').data('tabs');

    $('a.new-window').click(function () {
        window.open(this.href);
        return false;
    });

    $("a.print").click(function () {
        window.print();
        return false;
    });

    $('input:text, input:password, input:email, textarea').focus(function () {
        if ($(this).attr('placeholder') != undefined) {
            if ($(this)[0].value == $(this).attr('placeholder')) {
                $(this)[0].value = ''; /*this.select();*/
            }
        }
    }).blur(function () {
        if ($(this).attr('placeholder') != undefined) {
            if ($.trim($(this)[0].value) == '') {
                $(this)[0].value = $(this).attr('placeholder');
            }
        }
    });

    $("#header #friendlyTip").delay(1500).fadeIn("slow");

    $("#friendlyTip #closeTip").live('click', function () {
        $("#friendlyTip").hide();
        return false;
    });

    $('.btnDownload').live('click', function () {
        var obj = $(this);

        $.ajax({
            type: "GET",
            url: CONTENT_SERVICE_URL + "/DownloadInfo",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: {
                productId: obj.attr('data-df-prodGuid'),
                imageId: obj.attr('data-df-imgGuid'),
                useAsHiRes: obj.attr('data-df-hiRes') === "true"
            },
            success: function (response) {
                $('select', '#lbDownload').selectBox('destroy');
                $("#lbDownload").find('.content').empty();
                $("#downloadTemplate").tmpl(response).appendTo($("#lbDownload .content"));
                $("input:checkbox[class!=nojs]", "#lbDownload").uniform();
                $('select', '#lbDownload').selectBox();

                if ($("#favorites").has("#" + response.Guid).length) {
                    $("#pFavourite").addClass("available");
                }

                obj.overlay({
                    target: '#lbDownload',
                    close: '.top a',
                    top: 'center',
                    mask: {
                        opacity: 0
                    },
                    speed: duration,
                    closeSpeed: duration,
                    load: true,
                    fixed: false
                });
            }
        });
        return false;
    });

    $('.selectBox', '#lbDownload').live('change', function () {
        var obj = $(this);
        var cbVal = $('.checked', '#lbDownload').val();
        if (cbVal != null && obj.val() != "") {
            $('.confirmDownload', '#lbDownload').attr('href', obj.val());
        } else if (obj.val() == "") {
            $('.confirmDownload', '#lbDownload').removeAttr("href");
        }
    });

    $('input', '#lbDownload').live('click', function () {
        var btn = $('.confirmDownload', '#lbDownload');
        var selbox = $('.selectBox', '#lbDownload');
        var input = $(this);
        if (input.parent().hasClass('checked') && selbox.val() != "") {
            btn.attr('href', selbox.val());
        } else {
            btn.removeAttr('href');
        }
    });

    function removeFavourite(prodId) {
        $.ajax({
            type: "POST",
            url: CONTENT_SERVICE_URL + "/RemoveFavourite",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: '{"favId":"' + prodId + '"}',
            success: function (response) {
                $("#" + prodId).remove();
                updateGlobalBookmarksIcon();
                $("." + prodId).removeClass("available");
                $("#pFavourite[rel='" + prodId + "']").removeClass("available");
                return true;
            },
            error: function (message) {
                alert(message);
                return false;
            }
        });
    }

    //favourites
    $("#header #favorites a.trash").live('click', function () {
        $li = $(this).parent();
        var prodGuid = $li.attr("id");
        var success = removeFavourite(prodGuid);
        return false;

    });

    function updateGlobalBookmarksIcon() {
        if (!$("#favorites ul").has("li").length) {
            $("#bookmarks").removeClass("available");
        }
        else {
            $("#bookmarks").addClass("available");
        }
    }

    $("#header #favorites #removeAll").click(function () {
        $.ajax({
            type: "DELETE",
            url: CONTENT_SERVICE_URL + "/RemoveAllFavourites",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                $("#header #favorites").find("li").remove();
                updateGlobalBookmarksIcon();
            },
            error: function (message) {
                alert(message);
            }
        });
        return false;
    });

    $("#liveSearchButton, a.btnDisplayAll").click(function () {
        if ($.trim($("#liveSearchInput").val()) != '') {
            var query = $("#liveSearchInput").val();
            console.log(query);
            window.location = SEARCH_PAGE_URL + "?q=" + urlencode(query);
        }
        return false;
    });

    $('#liveSearchInput').keyup(function (e) {
        $this = $(this);
        var characterReg = /^\s*[a-zA-Z0-9,\s]+\s*$/;

        if (characterReg.test($this.val()) && $this.val().length > 2) {
            $.ajax({
                type: "GET",
                url: CONTENT_SERVICE_URL + "/Search",
                dataType: "json",
                data: {
                    page: 0,
                    length: NO_OF_SEARCHHITS_LIVE,
                    query: urlencode($this.val())
                },
                success: function (response) {
                    var output = "";
                    $more = $("#resultMoreUl");
                    var odd = false;
                    var oddClass = ''
                    $.each(response.Results, function (i, val) {

                        var result = "<li class='" + oddClass + "' >";
                        result += "<a href='" + val.Url + "'><img src='" + val.ImgUrl + "' alt='' /></a>";
                        result += "<p class='designers'>" + val.Crumb + "</p>";
                        result += "<a href='" + val.Url + "'><h3>" + val.Name + "</h3>";
                        result += "<p>" + val.Intro + "</p></a></li>";
                        output += result;

                        if (!odd) {
                            oddClass = "odd";
                            odd = true;
                        }
                        else {
                            oddClass = "";
                            odd = false;
                        }

                    });

                    if (response.Count > 0) {
                        var first = response.Count;
                        var last = first;
                        if (response.Count > NO_OF_SEARCHHITS_LIVE) {
                            first = NO_OF_SEARCHHITS_LIVE;
                            last = response.Count;
                            $("a.btnDisplayAll", $more).show();
                        } else {
                            $("a.btnDisplayAll", $more).hide();
                        }
                        $counting = $("p", $more).find("span");
                        $counting.first().html(first);
                        $counting.filter(":last").html(last);

                        $more.show();
                    }
                    else {
                        $more.hide();
                    }
                    $("#resultUl").html(output);
                }
            });
        }
        else {
            $("#resultUl").html("");
            $("#resultMoreUl").hide();
        }
    });

    var urlencode = function (str) {
        str = str.replace("?", "%3F");
        str = str.replace("&", "%26");
        str = str.replace("#", "%23");
        str = str.replace(" ", "%20");
        return str;
    }

    var clearWhitespace = function (str) {
        return str.replace(/^\s*|\s*$/g, '');
    }

    $('#newsletterSignupBtn').live('click', function () {
        var obj = $(this);
        var overlay;
        var elementVal = $.trim($("#newsletterSignupTB").val());
        if (elementVal != '' && elementVal != $('#newsletterSignupTB').attr('placeholder') && validateEmail(elementVal)) {
            $.ajax({
                type: "GET",
                url: CONTENT_SERVICE_URL + "/Signup",
                dataType: "json",
                data: {
                    email: elementVal
                },
                success: function (response) {
                    $('#newsletterStatus').find('.content').empty();
                    $("#successTemplate").tmpl(response).appendTo($('.content', '#newsletterStatus'));
                    $('#newsletterSignupTB').val('');

                    overlay = obj.overlay({
                        target: '#newsletterStatus',
                        close: '.top a',
                        //top: 'center',
                        mask: {
                            opacity: 0
                        },
                        speed: duration,
                        closeSpeed: duration,
                        load: true,
                        fixed: false,
                        onClose: function () {
                            $('#newsletterStatus').find('.content').empty();
                        }

                    });
                },
                error: function () {
                    $('#newsletterStatus').find('.content').empty();
                    $("#errorTemplate").tmpl().appendTo($('.content', '#newsletterStatus'));

                    overlay = obj.overlay({
                        target: '#newsletterStatus',
                        close: '.top a',
                        top: 'center',
                        mask: {
                            opacity: 0
                        },
                        speed: duration,
                        closeSpeed: duration,
                        load: true,
                        onClose: function () {
                            $('#newsletterStatus').find('.content').empty();
                        }
                    });
                },
                complete: function () {
                    overlay = null;
                }
            });
        }
        else {

            $('#newsletterStatus').find('.content').empty();
            $("#errorTemplate2").tmpl().appendTo($('.content', '#newsletterStatus'));

            overlay = obj.overlay({
                target: '#newsletterStatus',
                close: '.top a',
                top: 'center',
                mask: {
                    opacity: 0
                },
                speed: duration,
                closeSpeed: duration,
                load: true,
                onClose: function () {
                    $('#newsletterStatus').find('.content').empty();
                }
            });
        }
        return false;
    });

    function validateEmail(elementValue) {
        var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
        return emailPattern.test(elementValue);
    }
    /* General end */

    /* Start scrollable */

    /* Loader function */
    var loaderCount = 0;
    var loaderTimeout;
    var loaderOn = 0;

    function loader() {
        $('#scrollable').find('.loader').attr('class', 'loader step' + loaderCount);
        loaderCount = loaderCount + 1;
        loaderTimeout = setTimeout(loader, 1000);
    }
    function startLoader() {
        if (!loaderOn) {
            loaderOn = 1;
            loader();
        }
    }
    function stopLoader() {
        clearTimeout(loaderTimeout);
        loaderCount = 0;
        $('#scrollable').find('.loader').attr('class', 'loader step' + loaderCount);
        loaderOn = 0;
    }
    /* Loader function */

    var scrollableObj = $('#scrollable').children();
    var scrollableItems = scrollableObj.children('div').children();
    if (scrollableItems.length > 1) {
        scrollableObj.hover(function () {
            scrollableObj.addClass('hover');
            stopLoader();
        }, function () {
            scrollableObj.removeClass('hover');
            startLoader();
        });

        scrollableObj.scrollable({ circular: true }).autoscroll({ interval: 7000 });
        var scrollableApi = scrollableObj.data('scrollable');
        if (scrollableApi != undefined) {

            scrollableApi.onBeforeSeek(function () {
                scrollableItems.find('.col div').fadeOut(duration);
                stopLoader();
            }).onSeek(function () {
                scrollableItems.eq(this.getIndex()).find('.col div').fadeIn(duration);
                startLoader();
            });
        }
        scrollableObj.find('.prev, .next').show().click(function () {
            return false;
        });
    }
    else {
        scrollableItems.children('div').fadeIn(duration);
    }
    scrollableItems.eq(0).find('.col div').fadeIn(duration);

    startLoader();
    /* End scrollable */

    /* Menu start */
    $('#menu').children().children('a:not(#home)').click(function () {
        var obj = $(this);
        var objTarget = obj.next();
        if (!objTarget.hasClass('active')) {
            $.mask.close();
            $('#header').find('.active').hide().removeClass('active');
            $('#header').find('.open').removeClass('open');
            obj.addClass("open");
            objTarget.show().addClass('active').expose({
                opacity: 0,
                loadSpeed: 0,
                closeSpeed: 0,
                onClose: function () {
                    objTarget.hide().removeClass('active');
                    obj.removeClass("open");
                }
            });

            if (obj.attr('id') == 'search') {
                $('#liveSearch').find('input[type="text"]').focus();
            }
        }
        else {
            $.mask.close();
            objTarget.hide().removeClass('active');
            obj.removeClass("open");
        }
        if (obj.attr('id') != 'home') {
            return false;
        }
    });
    $('#tools').children().children('a').click(function () {
        var obj = $(this);
        var objTarget = obj.next().next();
        var spanArrow = obj.next();
        if (!objTarget.hasClass('active')) {
            $.mask.close();
            $('#header').find('.active').hide().removeClass('active');
            $('#header').find('.open').removeClass('open');
            spanArrow.addClass("open");
            objTarget.show().addClass('active').expose({
                opacity: 0,
                loadSpeed: 0,
                closeSpeed: 0,
                onClose: function () {
                    objTarget.hide().removeClass('active');
                    spanArrow.removeClass("open");
                }
            });

            if (obj.attr('id') == 'search') {
                $('#liveSearch').find('input[type="text"]').focus();
            }
        }
        else {
            $.mask.close();
            objTarget.hide().removeClass('active');
            spanArrow.removeClass("open");
        }
        if (obj.attr('id') != 'home') {
            return false;
        }
    });
    /* Menu end */

    /* Searchpage start */
    var page = 0;
    $('#showMore', '#searchresult').click(function () {
        //var length = $('#searchresult #main li').length;
        page += 1;

        $.ajax({
            type: "GET",
            url: CONTENT_SERVICE_URL + "/Search",
            dataType: "json",
            data: {
                page: page,
                length: NO_OF_SEARCHHITS,
                query: urlencode($("#main input[type=text]").val())
            },
            success: function (data) {
                var output = '';
                if (data.HideMore) {
                    $('#showMore').remove();
                }
                $("#resultTemplate").tmpl(data).appendTo('#result');
            }
        });
        return false;
    });
    /* Searchpage end */

    /* Contactpage start */
    function getAgents(noScroll) {
        var selectedValue = $('select', '#t-contactpage').val();
        var root = $('#agents').data('root');
        var sales = $('#agents').data('sales');
        var customer = $('#agents').data('customer');
        $.ajax({
            type: "GET",
            url: CONTENT_SERVICE_URL + "/GetContacts",
            cache: false,
            data: {
                market: selectedValue,
                root: root,
                salesGroup: sales,
                customerGroup: customer
            },
            success: function (data) {
                $('#contacts').empty();
                $('#headOfficeContent').empty();
                $("#headOfficeTemplate").tmpl(data).appendTo('#headOfficeContent');
                $("#salesContactsTemplate").tmpl(data).appendTo('#contacts');
                $("#customerServiceContactsTemplate").tmpl(data).appendTo('#contacts');
            }
        });
        return false;
    }
    if ($('#t-contactpage').length) {
        getAgents(true);
    }

    $('select', '#t-contactpage').change(function () {
        var obj = $(this);
        getAgents();
    });

    $('#btnContact').click(function () {

        var valid = true;
        var name = $("#lightboxContact .name").val();
        var company = $("#lightboxContact .company").val();
        var email = $("#lightboxContact .email").val();
        $("#lightboxContact .name, #lightboxContact .company, #lightboxContact .email").removeClass("error");
        if (name == "") {
            $("#lightboxContact .name").addClass("error");
            valid = false;
        }
        if (company == "") {
            $("#lightboxContact .company").addClass("error");
            valid = false;
        }
        if (email == "") {
            $("#lightboxContact .email").addClass("error");
            valid = false;
        }
        if (!validateEmail(email)) {
            $("#lightboxContact .email").addClass("error");
            valid = false;
        }

        if (!valid) { return false; }

        $("#btnContact").hide();
        $("#contactLoader").show();
        $.ajax({
            url: CONTENT_SERVICE_URL + "/SendEmail",
            cache: false,
            data: $("#contactForm input, #contactForm textarea ").serialize() + "&country=" + $("select.selectBox").val(),
            success: function (data) {
                $("#contactLoader").hide();
                $("#contactForm .form").hide();
                $("#contactSuccess").show();
            },
            error: function (data) {
                $("#contactLoader").hide();
                $("#btnContact").show();
                alert("An error occurred, no message was sent.");
            }
        });
    });

    /* Contactpage end */

    /* Standardpage start */
    $('aside', '#standardpage').height($('article').height());
    /* Standardpage end */

    /* Categorypage start */
    $('#properties, #images', '#t-productgroupmarkspelle, #t-productgroupsvensson').find('input:checked').parent().addClass('active');
    $('#properties', '#t-productgroupmarkspelle, #t-productgroupsvensson').find('label.active').closest('ul').parent().addClass('filter');

    function getProducts(data, append) {
        var urlTemplate = "/Products/smp";
        if ($("body").attr("id") == "t-productgroupsvensson") {
            urlTemplate = "/Products/s";
        }
        $.ajax({
            type: "GET",
            url: CONTENT_SERVICE_URL + urlTemplate,
            dataType: "json",
            data: data,
            success: function (data) {
                if (append == null) {
                    append = false;
                }

                var btnShowMore = $('#showMore');
                var lstProducts = $('#main').find('ul');
                var itemLast = lstProducts.find('li:last-child');

                if (!append) {
                    lstProducts.empty();
                    page = 0;
                }

                var currentLength = $("li", lstProducts).length;

                if (data.NextCount == 0) {
                    btnShowMore.hide();
                }
                else {
                    //btnShowMore.children().text(data.NextCount);
                    btnShowMore.show();
                }

                if (data.Products.length + currentLength < 5) {
                    lstProducts.attr('class', 'col2');
                }
                else if (data.Products.length + currentLength < 10) {
                    lstProducts.attr('class', 'col3');
                } else {
                    lstProducts.attr('class', 'col4');
                }

                $("#template").tmpl(data).appendTo('#main ul');

                if (append) {
                    if (itemLast.next().offset() != null) {
                        var destination = itemLast.next().offset().top - 20;
                        $('html').animate({ scrollTop: destination }, duration);
                    }
                }
            }
        });
    }

    $('#reset', '#t-productgroupmarkspelle, #t-productgroupsvensson').click(function () {
        $('#properties').children().removeClass('filter').find('input:checked').removeAttr('checked').parent().removeClass('active');

        if ($("body").attr("id") == "t-productgroupsvensson") {
            getProducts($.param({
                slide1: $('#slide1').slider('value'),
                slide2: $('#slide2').slider('value')
            }) + '&' + $('#properties, #categories, #additional').find('input:checked').serialize());
        } else {
            getProducts($('#properties, #categories, #additional').find('input:checked').serialize());
        }
        $("#spacer").height(8);
        return false;
    });

    $('.reset', '#t-productgroupmarkspelle, #t-productgroupsvensson').click(function () {
        var obj = $(this);
        var objParent = obj.closest('li');

        objParent.removeClass('filter').find('input:checked').removeAttr('checked').parent().removeClass('active');
        if ($("body").attr("id") == "t-productgroupsvensson") {
            getProducts($.param({
                slide1: $('#slide1').slider('value'),
                slide2: $('#slide2').slider('value')
            }) + '&' + $('#properties, #categories, #additional').find('input:checked').serialize());
        } else {
            getProducts($('#properties, #categories, #additional').find('input:checked').serialize());
        }
        $("#spacer").height(8);
        return false;
    });

    $('#properties', '#t-productgroupmarkspelle, #t-productgroupsvensson').find('a:first-child').click(function () {
        var obj = $(this);
        var objTarget = obj.parent().children('ul');
        if (!obj.hasClass('active')) {
            $.mask.close();
            $('#properties').find('a.active').removeClass('active').next().hide();
            obj.addClass('active');

            var height = obj.parent().find("ul").height();
            $("#spacer").height(height + 8);

            objTarget.show().expose({
                opacity: 0,
                loadSpeed: 0,
                closeSpeed: 0,
                onClose: function () {
                    obj.removeClass('active');
                    objTarget.hide();
                    $("#spacer").height(8);
                }
            });
        }
        else {
            $.mask.close();
            obj.removeClass('active');
            objTarget.hide();
            $("#spacer").height(8);
        }
        return false;
    });

    $('#properties', '#t-productgroupmarkspelle, #t-productgroupsvensson').find('input').change(function () {
        var obj = $(this);
        var objLabel = obj.parent();
        var objTarget = objLabel.closest('ul').parent();
        var parentUl = objLabel.closest('ul');

        $("label.active", parentUl).each(function () {
            $(this).removeClass("active")
        });

        if (obj.attr('checked')) {
            objLabel.addClass('active');
            objTarget.addClass('filter');
        }
        else {
            objLabel.removeClass('active');
        }

        if (objTarget.find('input:checked').length == 0) {
            objTarget.removeClass('filter');
        }

        if ($("body").attr("id") == "t-productgroupsvensson") {
            getProducts($.param({
                slide1: $('#slide1').slider('value'),
                slide2: $('#slide2').slider('value')
            }) + '&' + $('#properties, #categories, #additional').find('input:checked').serialize());
        } else {
            getProducts($('#properties, #categories, #additional').find('input:checked').serialize());
        }
    });

    $('#images', '#t-productgroupmarkspelle, #t-productgroupsvensson').find('a').click(function () {
        var obj = $(this);
        var objTarget = obj.next();
        if (!obj.hasClass('active')) {
            $.mask.close();
            $('#properties').find('a.active').removeClass('active').next().hide();
            obj.addClass('active');
            objTarget.show().expose({
                opacity: 0,
                loadSpeed: 0,
                closeSpeed: 0,
                onClose: function () {
                    obj.removeClass('active');
                    objTarget.hide();
                }
            });
        }
        else {
            $.mask.close();
            obj.removeClass('active');
            objTarget.hide();
        }
        return false;
    });

    $('#categories', '#t-productgroupsvensson').find('input').click(function () {
        getProducts($.param({
            slide1: $('#slide1').slider('value'),
            slide2: $('#slide2').slider('value')
        }) + '&' + $('#properties, #categories, #additional').find('input:checked').serialize());
    });

    $('#categories', '#t-productgroupmarkspelle').find('input').click(function () {
        getProducts($('#properties, #categories, #additional').find('input:checked').serialize());
    });

    $('#images', '#t-productgroupmarkspelle, #t-productgroupsvensson').find('input').change(function () {
        var obj = $(this);
        var objLabel = obj.parent();

        if (obj.attr('checked')) {
            objLabel.addClass('active');
        }
        else {
            objLabel.removeClass('active');
        }
    });

    var page = 0;
    $('#showMore', '#t-productgroupmarkspelle, #t-productgroupsvensson').click(function () {
        getProducts('page=' + (page += 1) + '&' + $('#properties, #categories, #additional').find('input:checked').serialize(), true);
        return false;
    });

    $("#slide1, #slide2", '#t-productgroupsvensson').slider({
        value: 50,
        min: 0,
        max: 100,
        step: 50,
        change: function (event, ui) {
            getProducts($.param({
                slide1: $('#slide1').slider('value'),
                slide2: $('#slide2').slider('value')
            }) + '&' + $('#properties, #categories, #additional').find('input:checked').serialize());
        }
    });

    /* Categorypage end */

    /* Productpage start */
    $('li a:first-child', '#colours').overlay({
        close: 'a',
        top: 'center',
        mask: {
            opacity: 0
        },
        speed: duration,
        closeSpeed: duration
    });

    /* 
    $('#relatedMaterials > ul > li > a').click(function () {
    var obj = $(this);
    var objTarget = obj.next();
    if (!objTarget.hasClass('active')) {
    $('#relatedMaterials').find('.active').hide().removeClass('active');
    $.mask.close();
    objTarget.show().addClass('active').expose({
    opacity: 0,
    loadspeed: 0,
    onClose: function () {
    objTarget.hide().removeClass('active');
    }
    });
    }
    else {
    objTarget.hide().removeClass('active');
    }
    return false;
    }); 
    */

    $('#relatedContent a.showMore').click(function () {

        var defaultHeight = 239;
        var relatedPanes = $('#relatedContent .relatedPanes');
        if (!relatedPanes.hasClass("open")) {
            var height = $('#relatedContent .relatedPanes > div ').height() + 5;
            relatedPanes.addClass("open");
            relatedPanes.animate({ "height": height }, { duration: "slow" });
            $(this).addClass("open");

        }
        else {
            relatedPanes.animate({ "height": defaultHeight }, { duration: "slow" });
            relatedPanes.removeClass("open");
            $(this).removeClass("open");
        }
        return false;
    });

    $("#backToFilter").click(function () {
        history.back(-1);
        return false;
    });

    $('#productImages.selectAll ').change(function () {
        var isChecked = $('#productImages.selectAll').is(':checked');
        $('#productImageList input[type="checkbox"]').each(function () {
            $(this).attr("checked", isChecked);
        });
        $.uniform.update();
    });
    $('#referenceImages.selectAll').change(function () {
        var isChecked = $('#referenceImages.selectAll').is(':checked');
        $('#referenceImagesList input[type="checkbox"]').each(function () {
            $(this).attr("checked", isChecked);
        });
        $.uniform.update();
    });
    $('#documents.selectAll').change(function () {
        var isChecked = $('#documents.selectAll').is(':checked');
        $('#documentsList input[type="checkbox"]').each(function () {
            $(this).attr("checked", isChecked);
        });
        $.uniform.update();
    });

    $('#downloads input[type="checkbox"]').change(function () {

        var totalSize = 0;
        var noOfFiles = 0;
        var noOfZipFiles = 0;

        $('#downloads input[name="image"]:checked, #downloads input[name="color"]:checked').each(function () {

            var count = 1;
            if ($(this).data("df-count") != undefined) {
                count = parseFloat($(this).data("df-count").val())
            }

            noOfFiles = noOfFiles + count;

            noOfZipFiles = 1;

            if ($(this).data("df-size") != undefined) {

                var strSize = $(this).data("df-size").toString();

                strSize = strSize.replace(",", ".");

                var size = parseFloat(strSize);

                totalSize = totalSize + size;
            }
        });

        var estimatedSize = totalSize * 0.7;

        $("#totalFilesize").html(estimatedSize.toFixed(2));
        $("#noOfFiles").html(noOfFiles);
        $("#noOfZipFiles").html(noOfZipFiles);

    });

    $('#t-productmarkspelle #btnZipDownlaod, #t-productsvensson #btnZipDownlaod').click(function () {

        if ($('#downloads input[name="image"]:checked, #downloads input[name="color"]:checked').length > 0) {
            if ($('#agreeCb').is(':checked')) {
                $("#btnZipDownlaod").hide();
                $("#downlaodLoader").show();

                $.ajax({
                    type: "get",
                    url: CONTENT_SERVICE_URL + "/CreateDownload",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: getDownlaodFileIds() + "&" + getDownlaodProductId(),
                    success: function (response) {
                        window.location.href = response.Url;
                        $("#btnZipDownlaod").show();
                        $("#downlaodLoader").hide();
                        return false;
                    },
                    error: function (message) {
                        $("#btnZipDownlaod").show();
                        $("#downlaodLoader").hide();
                        alert("Error: " + message);
                    }
                });
            }
        }

        return false;

    });

    function getDownlaodFileIds() {
        return $("input:checkbox[name='image']").serialize();
    };

    function getDownlaodProductId() {
        return $("input:checkbox[name='color']").serialize();
    };

    function checkSelected(container) {
        $('.showHide small span').text($('input:checked', container).length);
    };

    /* Download page */
    $('#t-downloadpage input.selectAll').change(function () {
        var isChecked = $(this).is(':checked');

        var downloads = $(this).parents(".header").siblings(".downloads");

        var cb = $("input:checkbox", downloads);

        $("input:checkbox", downloads).each(function () {
            $(this).attr("checked", isChecked);
        });
        $.uniform.update();
    });

    $('#t-downloadpage input[type="checkbox"]').change(function () {
        var listItem = $(this).parents("li.active");

        var header = $(this).parents(".header");

        var downloads = $("ul.downloads", listItem);

        var count = $("a small span", listItem);
        var noOf = getFileCount(downloads);
        $(count).text(getFileCount(downloads));
    });

    function getFileCount(section) {
        var count = 0;
        $("input:checked", section).each(function () {
            if ($(this).data("df-count") != undefined) {
                count = count + parseFloat($(this).data("df-count"));
            }
            else {
                count = count + 1;
            }
        });
        return count;
    };

    $("#t-downloadpage a.removeItem").live('click', function () {
        var prodGuid = $(this).attr("id");
        $.ajax({
            type: "DELETE",
            url: CONTENT_SERVICE_URL + "/RemoveFavourite",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: '{"favId":"' + prodGuid + '"}',
            success: function (response) {
                $li.remove();
            },
            error: function (message) {
                alert(message);
            }
        });
        return false;
    });

    $('#t-downloadpage #btnZipDownlaod').click(function () {

        if ($('#container input:checked').length > 0) {
            if ($('#agreeCb').is(':checked')) {
                $("#btnZipDownlaod").hide();
                $("#downlaodLoader").show();

                $.ajax({
                    type: "get",
                    url: CONTENT_SERVICE_URL + "/CreateDownload",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: getDownlaodFileIds() + "&" + getDownlaodProductId(),
                    success: function (response) {
                        window.location.href = response.Url;
                        $("#btnZipDownlaod").show();
                        $("#downlaodLoader").hide();
                        return false;
                    },
                    error: function (message) {
                        $("#btnZipDownlaod").show();
                        $("#downlaodLoader").hide();
                        alert("Error: " + message);
                    }
                });
            }
        }

        return false;

    });

    $('#t-downloadpage #container input[type="checkbox"]').change(function () {

        var totalSize = 0;
        var noOfFiles = 0;
        var noOfZipFiles = 0;

        $('#t-downloadpage #container input[type="checkbox"]:checked').not("input[class='selectAll']").each(function () {

            var count = 1;
            if ($(this).data("df-count") != undefined) {
                count = parseFloat($(this).data("df-count"))
            }

            noOfFiles = noOfFiles + count;

            noOfZipFiles = 1;

            if ($(this).data("df-size") != undefined) {

                var strSize = $(this).data("df-size").toString();

                strSize = strSize.replace(",", ".");

                var size = parseFloat(strSize);

                totalSize = totalSize + size;
            }
        });

        var estimatedSize = totalSize * 0.7;

        $("#totalFilesize").html(estimatedSize.toFixed(2));
        $("#noOfFiles").html(noOfFiles);
        $("#noOfZipFiles").html(noOfZipFiles);

        $.uniform.update();
    });


    /*
    $('.downloads').find('input:checkbox').click(function () {
    var obj = $(this);
    var container = obj.closest('.downloads');
    checkSelected(container);
    return false;
    });
    */
    function setFavourite(prodId) {
        $.ajax({
            type: "POST",
            url: CONTENT_SERVICE_URL + "/AddFavourite",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: '{"favId":"' + prodId + '"}',
            success: function (response) {
                if ($("#" + prodId).length === 0) {
                    $("#favTemplate").tmpl(response.AddFavouriteResult).appendTo("#header #favorites ul");
                    updateGlobalBookmarksIcon();
                    $("." + prodId).addClass("available");
                    $("#pFavourite[rel='" + prodId + "']").addClass("available");
                }
            },
            error: function (message) {
                removeFavourite(prodId);
                updateGlobalBookmarksIcon();
            }
        });
    }

    $('a.lnkFavorite').click(function () {
        setFavourite(prodGuid);
        return false;
    });

    $('a.favourite').live('click', function () {
        setFavourite($(this).attr('rel'));
        $(this).toggleClass("available");
        return false;
    });

    $('a.btnCertificate').click(function () {
        $this = $(this);
        $.ajax({
            type: "GET",
            url: CONTENT_SERVICE_URL + "/Certificate",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: {
                productId: $this.attr('data-df-id')
            },
            success: function (response) {
                $("#certContainer").html("");
                $("#certificateTemplate").tmpl(response).appendTo($("#certContainer"));

                $this.overlay({
                    close: '.top a',
                    top: 'center',
                    mask: {
                        opacity: 0
                    },
                    speed: duration,
                    closeSpeed: duration,
                    load: true
                });
            },
            error: function (message) {
                console.log("Fail: " + message);
            }
        });
    });

    $('a.btnWarranty').click(function () {
        $this = $(this);
        $.ajax({
            type: "GET",
            url: CONTENT_SERVICE_URL + "/Certificate",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: {
                productId: $this.attr('data-df-id')
            },
            success: function (response) {
                $("#warrantyContainer").html("");
                $("#warrantyTemplate").tmpl(response).appendTo($("#warrantyContainer"));

                $this.overlay({
                    close: '.top a',
                    top: 'center',
                    mask: {
                        opacity: 0
                    },
                    speed: duration,
                    closeSpeed: duration,
                    load: true
                });
            },
            error: function (message) {
                console.log("Fail: " + message);
            }
        });
    });

    /* Productpage end */

    /* Downloadpage start */

    $('.showHide').click(function () {
        var obj = $(this);
        $(obj).next().slideToggle(duration);

        $(obj).parent().toggleClass('active');

        return false;
    });


    $('.removeItem').click(function () {
        var obj = $(this);
        $(obj).parent().remove();
        return false;
    });


    /*
    $('.downloads').find('input:checkbox').click(function () {
    var obj = $(this);
    obj.closest('label').toggleClass('active');
    return false;
    });
    /*
    /* Downloadpage end */

    /* Screenadvice start */
    $('.lnkContact', '#t-howtoscreen, #t-productsvensson, #t-productgroupsvensson').overlay({
        close: '.top a',
        top: 'center',
        target: '#lightboxContact',
        mask: {
            opacity: 0
        },
        speed: duration,
        closeSpeed: duration,
        fixed: false
    });
    /* Screenadvice end */


    //Product filter: do search
    if ($('#t-productgroupmarkspelle, #t-productgroupsvensson').length) {

        if ($("body").attr("id") == "t-productgroupsvensson") {
            getProducts($.param({
                slide1: $('#slide1').slider('value'),
                slide2: $('#slide2').slider('value')
            }) + '&' + $('#properties, #categories, #additional').find('input:checked').serialize());
        } else {
            getProducts($('#properties, #categories, #additional').find('input:checked').serialize());
        }
        $("#spacer").height(8);
    }

});

function validateEmail(elementValue) {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    return emailPattern.test(elementValue);
}

