/* $Id: view-all-models-slider.js 5489 2009-08-03 09:36:24Z bhillebrand $ */
"use strict";
var imageLoadError = 0;
slideTeaserSlider_status = 0;
var slideThumbnailSlider_status = 0;

function getPage(a) {
    var c, b = page;
    if (a > 0) {
        for (c = 0; c < a; c += 1) {
            if (b === numberPages) {
                b = 1;
            } else {
                b += 1;
            }
        }
    } else {
        if (a < 0) {
            for (c = 0; c < a; c += 1) {
                if (b === 1) {
                    b = numberPages;
                } else {
                    b -= 1;
                }
            }
        } else {
            b = page;
        }
    }
    return b;
}
function writeCtaButtons() {
    var b = $("li", ulDatabase).eq(page - 1).find(".button, .cta"),
        a = $("#boxCtaButtons .button").each(function (c) {
            $("span.btnText", this).html(b.eq(c).html());
            $(this).attr("href", b.eq(c).attr("href"));
        });
    if (typeof oCtaButtons === "object" && $.isFunction(oCtaButtons.refreshGroup)) {
        oCtaButtons.refreshGroup(a);
    }
}
function writeModelPrice() {
    var a = ulDatabase.getElementsByTagName("li")[(page - 1)].getElementsByTagName("p")[0].getElementsByTagName("span")[0].innerHTML;
    a = a + "<span class='price'>";
    a = a + ulDatabase.getElementsByTagName("li")[(page - 1)].getElementsByTagName("p")[0].getElementsByTagName("span")[1].innerHTML;
    a = a + "&nbsp;";
    a = a + ulDatabase.getElementsByTagName("li")[(page - 1)].getElementsByTagName("p")[0].getElementsByTagName("span")[2].innerHTML;
    a = a + "</span>";
    $("#modelnameViewer").html(a);
}
function changeSlider(h, b) {
    var f, i, c, a, d, g, e;
    if (slideThumbnailSlider_status === 0) {
        slideThumbnailSlider_status = 1;
        f = $("ul#thumbnails").attr("scrollWidth") - $("div#boxThumbnails").width();
        g = b;
        e = (g / f) * 100;
        a = parseFloat($("ul#thumbnails").css("left"));
        d = parseFloat($("div#contentSlider a").css("left"));
        i = (a + (g * h));
        c = (d + (e * h * -1));
        if (i < (f * -1)) {
            i = (f * -1);
            c = 100;
        }
        if (i > 0) {
            i = 0;
            c = 0;
        }
        if (i <= 0 && i >= (f * -1)) {
            $("ul#thumbnails").animate({
                left: (i + "px")
            }, 200);
            $("div#contentSlider a").css("left", c + "%");
        }
        $(document).ready(function () {
            slideThumbnailSlider_status = 0;
        });
    }
}
function updateModelThumbnailSlider() {
    var b, c, h, d, g, f, j = $("div#boxThumbnails").offset(),
        l, e, a, k;
    for (d = 0; d < ulDatabaseLength; d += 1) {
        g = ulDatabase.getElementsByTagName("li")[d].getElementsByTagName("img")[0].src;
        f = ulDatabase.getElementsByTagName("li")[d].getElementsByTagName("p")[0].getElementsByTagName("span")[0].innerHTML;
        k = g.split(".png");
        a = document.getElementById("thumbnails").getElementsByTagName("li")[d];
        h = k[0] + "-thumbnail-active.jpg";
        a.style.backgroundImage = "url(" + h + ")";
    }
    $("#thumbnails").children("li").children("img").css("visibility", "visible");
    b = document.getElementById("thumbnails").getElementsByTagName("li")[(page - 1)];
    $(b.getElementsByTagName("img")[0]).css("visibility", "hidden");
    e = $(b).offset();
    l = parseInt($("div#boxThumbnails").css("width"), 10);
    c = parseInt($(b.getElementsByTagName("img")[0]).width(), 10);
    if (e.left < j.left) {
        changeSlider(+1, (parseInt(j.left, 10) - parseInt(e.left, 10)));
    } else {
        if (parseInt(e.left + c, 10) > parseInt(j.left + l, 10)) {
            changeSlider(-1, (parseInt(e.left + c, 10) - parseInt(j.left + l, 10)));
        }
    }
}
function handleSliderChange(c, b) {
    var a = $("ul#thumbnails").attr("scrollWidth") - $("div#boxThumbnails").width();
    $("ul#thumbnails").animate({
        left: (b.value * (a / 100)) * (-1)
    }, 200);
}
function handleSliderSlide(c, b) {
    var a = $("ul#thumbnails").attr("scrollWidth") - $("div#boxThumbnails").width();
    $("ul#thumbnails").attr({
        left: (b.value * (a / 100)) * (-1)
    });
}
function handleSlider() {
    $(window).load(function () {
        $("div#boxThumbnails").css("overflow", "hidden");
        $("#contentSlider").slider({
            handle: ".ui-slider-handle",
            change: handleSliderChange,
            slide: handleSliderSlide
        });
        $("#boxContentSlider").append("<div class='buttonLeft' onclick='changeSlider(+1, 20)'></div>");
        $("#boxContentSlider").append("<div class='buttonRight' onclick='changeSlider(-1, 20)'></div>");
    });
}
function generateSliderStageItems(e, d, b) {
    var g, a, f, c, h, i;
    for (g = 0; g < itemsPerPage; g += 1) {
        i = g + (itemsPerPage * (e - 1));
        h = document.createElement("li");
        if (d === "last") {
            h.className = "last";
        }
        h.style.width = widthTeaserElement + "px";
        c = ulDatabase.getElementsByTagName("li")[i].getElementsByTagName(b)[0].cloneNode(true);
        f = parseInt(ulDatabase.getElementsByTagName("li")[i].getElementsByTagName("span")[0].innerHTML, 10);
        a = ((widthTeaserElement - f) / 2) + "px";
        c.getElementsByTagName("img")[0].style.marginLeft = a;
        h.appendChild(c);
        ulTarget.appendChild(h);
    }
}
function checkImageLoad(a, b) {
    imageLoadError = 1;
}
function doModelSlide(c, e, b) {
    var a, d;
    updateModelThumbnailSlider();
    slideTeaserSlider_status = 1;
    $(c).css("overflow", "hidden");
    $(c).animate({
        width: b
    }, 340, "easing", function () {
        if (e === -1) {
            d = ulTarget.getElementsByTagName("li").length;
            a = ulTarget.getElementsByTagName("li")[(d - 1)];
            ulTarget.removeChild(a);
            d -= 1;
        } else {
            if (e === +1) {
                d = ulTarget.getElementsByTagName("li").length;
                a = ulTarget.getElementsByTagName("li")[0];
                ulTarget.removeChild(a);
            } else {
                alert("Unsupported Error.");
            }
        }
        slideTeaserSlider_status += 1;
        if (slideTeaserSlider_status > itemsPerPage) {
            slideTeaserSlider_status = 0;
            updateModelThumbnailSlider();
        }
        slideTeaserSlider_status = 0;
    });
}
function slideModels(m, d) {
    var g, c, b, l, f, e, h, n, k, a = [];
    var pageElements = ulTarget.getElementsByTagName("li");
    var elemWidth = widthTeaserElement;
    if (m === +1 && slideTeaserSlider_status === 0) {
        if (slideTeaserSlider_status === 0) {
            slideTeaserSlider_status += 1;
            for (f = 0; f < (itemsPerPage * d); f += 1) {
                if (f === 0 || f % itemsPerPage === 0) {
                    e = 0;
                    if (page === numberPages) {
                        page = 1;
                    } else {
                        page += 1;
                    }
                    if (page === numberPages) {
                        k = 1;
                    } else {
                        k = page + 1;
                    }
                }
                writeModelPrice();
                writeCtaButtons();
                c = page + 1;
                if (c === numberPages) {
                    c = 0;
                }
                if (c > numberPages) {
                    c = 1;
                }
                a[f] = ulTarget.getElementsByTagName("li")[f];
                n = document.createElement("li");
                n.style.width = widthTeaserElement + "px";
                l = parseInt(ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("span")[0].innerHTML, 10);
                b = ((widthTeaserElement - l) / 2) + "px";
                h = ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("a")[0].cloneNode(true);
                h.getElementsByTagName("img")[0].style.marginLeft = b;
                n.appendChild(h);
                ulTarget.appendChild(n);
                e += 1;
            }
            g = "0px;";
        }
    } else {
        if (m === -1 && slideTeaserSlider_status === 0) {
            slideTeaserSlider_status += 1;
            for (f = ((itemsPerPage * d)); f > 0; f -= 1) {
                if (f === ((itemsPerPage * d)) || f % itemsPerPage === 0) {
                    e = 2;
                    if (page === 1) {
                        page = numberPages;
                    } else {
                        page -= 1;
                    }
                    if (page === 1) {
                        k = numberPages;
                    } else {
                        k = page - 1;
                    }
                }
                writeModelPrice();
                writeCtaButtons();
                c = page - 3;
                if (c === -1) {
                    c = (numberPages - 1);
                }
                if (c === -2) {
                    c = (numberPages - 2);
                }
                n = document.createElement("li");
                l = parseInt(ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("span")[0].innerHTML, 10);
                b = ((widthTeaserElement - l) / 2) + "px";
                h = ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("a")[0].cloneNode(true);
                n.style.width = "0px";
                h.getElementsByTagName("img")[0].style.marginLeft = b;
                n.appendChild(h);
                $(ulTarget).prepend(n);
                a[(f - 1)] = n;
                e -= 1;
            }
            g = "620px;";
        }
    }
    doModelSlide(a, m, g);
}
function slideToModel(b) {
    var d = false,
        e = page,
        c = 0,
        a = 0;
    if (b !== page) {
        while (!d) {
            if (e === 1) {
                e = numberPages;
            } else {
                e -= 1;
            }
            c += 1;
            if (e === b) {
                d = true;
            }
        }
        e = page;
        d = false;
        while (!d) {
            if (e === numberPages) {
                e = 1;
            } else {
                e += 1;
            }
            a += 1;
            if (e === b) {
                d = true;
            }
        }
        if (c > a) {
            slideModels(+1, a);
        } else {
            slideModels(-1, c);
        }
    }
}
function initModelsSlider() {
    var d, b, c, a, f = [],
        e = [];
    itemsPerPage = 1;
    var amountOverflow = itemsPerPage;
    page = 1;
    var itemList = [];
    ulTarget = document.getElementById("displayModelsSlider");
    ulDatabase = document.getElementById("modelsSliderDatabase");
    ulDatabaseLength = ulDatabase.getElementsByTagName("li").length;
    numberPages = Math.ceil(ulDatabaseLength / itemsPerPage);
    amountOverflow = itemsPerPage;
    widthTeaserElement = 620;
    $("div#containerMainContent").append("<div id='loadingOverlay' style='z-index:40;background-color:white;height:550px;width:1000px;position:absolute;top:0;'></div>");
    $("div#containerMainContent").append("<table class='progressIndicator' style='z-index:45;position:absolute;left:490px;top:265px;'><tr><td valign='middle' align='center'><img src='/assets/images/global/preloader-white.gif'/></td></tr></table>");
    $(ulTarget).empty();
    var emptyPageFillers = 0;
    var lastPageStart = ulDatabaseLength - itemsPerPage;
    $(document).ready(function () {
        $("#boxCtaButtons .button").each(function () {
            if (!$("span.btnText", this).length > 0) {
                $(this).append('<span class="btnText">' + $(this).text() + "</span>").contents().not("span").remove();
            }
        });
        if (numberPages > 2) {
            generateSliderStageItems((numberPages - 1), "last", "a");
            generateSliderStageItems(numberPages, "last", "a");
            generateSliderStageItems(page, "", "a");
            generateSliderStageItems(getPage(+1), "", "a");
            generateSliderStageItems(getPage(+2), "", "a");
            $(ulTarget).css("left", "0px");
        } else {
            if (numberPages === 2) {
                generateSliderStageItems(numberPages, "last", "a");
                generateSliderStageItems(page, "", "a");
                generateSliderStageItems(numberPages, "", "a");
                $(ulTarget).css("left", "0px");
            } else {
                if (numberPages === 1) {
                    generateSliderStageItems(page, "", "a");
                    $(ulTarget).css("left", "0px");
                }
            }
        }
    });
    $(window).load(function () {
        if (numberPages > 1) {
            $(ulTarget).animate({
                left: "0px"
            }, 1100);
            $(ulTarget).animate({
                left: "-1055px"
            }, 340, "easing", function () {
                $("ul#displayModelsSlider li.last").css("visibility", "visible");
                writeModelPrice();
                writeCtaButtons();
            });
        }
    });
    $("#boxThumbnails").append("<ul id='thumbnails'></ul>");
    for (c = 0; c < ulDatabaseLength; c += 1) {
        a = ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("img")[0].src;
        b = ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("p")[0].getElementsByTagName("span")[0].innerHTML;
        d = a.split(".png");
        f[c] = new Image();
        f[c].src = d[0] + "-thumbnail.jpg";
        e[c] = new Image();
        e[c].src = d[0] + "-thumbnail-active.jpg";
    }
    for (c = 0; c < ulDatabaseLength; c += 1) {
        a = ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("img")[0].src;
        b = ulDatabase.getElementsByTagName("li")[c].getElementsByTagName("p")[0].getElementsByTagName("span")[0].innerHTML;
        d = a.split(".png");
        $("ul#thumbnails").append("<li onclick='slideToModel(" + (c + 1) + ")'><img src='" + d[0] + "-thumbnail.jpg'/><span>" + b + "</span></li>");
    }
    $(window).load(function () {
        var k = 0,
            j = 20,
            h = $("ul#thumbnails").children("li").children("img"),
            i, g, l;
        $.each(h, function () {
            var m = $(this).width();
            k = k + m;
            $(this).parent("li").css("width", m + "px");
            $(this).parent("li").children("span").css("width", (m - j) + "px");
        });
        $("ul#thumbnails").css("width", k + "px");
        i = $("div#boxThumbnails").width();
        if (k < i) {
            g = i - k;
            l = g / (ulDatabaseLength - 1);
            $("#boxContentSlider").css("display", "none");
            $("#boxThumbnails").after("<div style='position: relative'><div style='position:absolute;z-index:51;top:-3px;left:38px;width:926px;height:3px;background-image:url(/assets/images/global/view-all-models-bottom-outline.gif);background-repeat:no-repeat;overflow:hidden;'>&nbsp;</div></div>");
            $("ul#thumbnails").css("width", i + "px");
            $("ul#thumbnails li").each(function (m) {
                if (m !== 0) {
                    $(this).css("margin-left", l + "px");
                }
            });
        }
        $("ul#thumbnails").ready(function () {
            updateModelThumbnailSlider();
        });
    });
    handleSlider();
    $(window).load(function () {
        if (imageLoadError > 0) {
            $("div#containerMainContent .progressIndicator").empty();
            $("div#containerMainContent").append("<table class='progressIndicator' style='z-index:45;position:absolute;height:550px;width:1000px;left:0;top:0;'><tr><td valign='middle' align='center'>Error: Application couldn't find all images!</td></tr></table>");
        } else {
            $("div.containerViewAllModelsStage").css("visibility", "visible");
            $("div#containerMainContent table.progressIndicator").remove();
            $("#loadingOverlay").fadeOut("slow");
        }
    });
}
