// Moormann configurator

var pop = null;

function popup(obj, w, h) {
    var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
    if (!url) return true;
    w += 20;
    h += 25;
    var args = 'width=' + w + ',height=' + h + ',resizable';
    popdown();
    pop = window.open(url + '&nc=' + new Date().getTime(), 'regalbaukasten', args);
    return !pop;
}

function popdown() {
    if (pop && !pop.closed) pop.close();
}

function toBasket(rid, price, rtyp, title, sid) {
    window.location.href =
        resourceUrl + "index.php?cl=moormann&rid=" + rid + "&sid=" + sid + "&price=" + price + "&rtyp=" + rtyp +
            "&title=" + title;
}


// Random articles

$(document).ready(function() {
    var html = '<table border="0"><tr>';
    for (var i = 0; i < 10; i++) {
        html += '<td width="180" height="150" valign="middle" align="center" id="random-article-' + i + '"></td>';
        if (i == 4) {
            html += '</tr><tr>';
        }
    }
    html += '</table>';
    $('#random-articles').append(html);
    $("#random-articles-trigger").click(function() {
        COMMONS.tk("s", "1");
        onRandomArticlesReloadClicked();
    });
    $("#random-articles-trigger").hover(function() {
        $("#random-articles-trigger").addClass("over");
    }, function() {
        $("#random-articles-trigger").removeClass("over");
    });
    onRandomArticlesReloadClicked();
});

var onRandomArticlesReloadClicked = function() {
    $(".random-article").fadeOut(800);
    window.setTimeout(function() {
        $(".random-article").remove();
        $.getJSON(resourceUrl + 'artr.php', {lang:lang, nc:new Date().getTime()}, function(jo) {
            onRandomArticlesLoaded(jo);
        });
    }, 1000);
};

var onRandomArticlesLoaded = function(jo) {
    if (jo.error)return;
    $.each(jo.result, function(index, article) {
        var el = $('<a style="display:none;" class="random-article" href="' + resourceUrl +
            'index.php?cl=details&anid=' + article.id + '"><img src="' + resourceUrl + "out/pictures/0/" +
            article.thumb + '" alt="" border="0"/></a>');
        $('#random-article-' + index).append(el);
        el.bind('mouseover', {article: article}, onRandomArticleOver);
        el.bind('mouseout', onRandomArticleOut);
        el.bind('mousemove', onRandomArticleMouseMove);
    });
    $(".random-article").fadeIn(1000);
};

var onRandomArticleOver = function(ev) {
    var article = ev.data.article;
    var pics = [article.pic1,article.pic2,article.pic3,article.pic4,article.pic5,article.pic6,article.pic7];
    var iconCounter = 0;
    var icons = '';
    $.each(pics, function(index, pic) {
        if (pic != "") {
            iconCounter++;
            var src = pic.substr(0, pic.length - 4);
            icons += '<img src="' + resourceUrl + 'out/pictures/' + (index + 1) + '/' + src + '_ico.jpg">';
            if (iconCounter == 4) {
                return false;
            }
        }
    });
    var designer = article.designer;
    if (designer != '') {
        designer = '<br>' + (lang == "0" ? 'von ' : 'by ') + designer;
    }
    $('body').append('<p id="random-article-tooltip">' + article.vendor + '<br><em>' + article.title + '</em>' +
        designer + '<br>' + icons + '</p>');
    $('#random-article-tooltip').css('top', (ev.pageY + 20) + 'px').css('left', (ev.pageX - 35) + 'px').fadeIn('fast');
};

var onRandomArticleOut = function() {
    $('#random-article-tooltip').remove();
};

var onRandomArticleMouseMove = function(ev) {
    $('#random-article-tooltip').css('top', (ev.pageY + 20) + 'px').css('left', (ev.pageX - 35) + 'px');
};


// Rotation

var articleData = [
    ["Vitra", "Panton Chair", true, "201,00", "19c48bd6d75e09fc2.45877838"],
    ["Thonet", "S 43 Outdoor", false, "367,00", "e8ed7d39649efd5b7d9d40fd3e579d44"],
    ["Cobb", "Cobb Pro", true, "119,00", "49c819feca36308e27d3a0db6d738d18"],
    ["Vitra", ".05", false, "441,00", "19c48bd6d782a5470.61581920"],
    ["Droog", "Shadylace", true, "215,00", "49c4a3249e5baf88051b463cc02d9f1b"],
    ["Cobb", "Cobb Premier", true, "139,00", "49c99e9ead0b5c2f9f31dcc3a663f259"],
    ["Thonet", "S 40 Outdoor", false, "439,00", "e8edcd6e05612301c9c555aac90f67e0"],
    ["Moormann", "Kampenwand Bank", true, "697,00", "1819fb155b6fd0edefd6ee566c746d5b"],
    ["Montana", "Tivoli Chair", false, "391,00", "b6b49b03b3b78cd07.30584559"]
];

var NUMBER_OF_ARTICLES = 9;
var ROTATION_ELEMENT_HEIGHT = 35;
var SPRITE_SCROLL_HEIGHT = NUMBER_OF_ARTICLES * ROTATION_ELEMENT_HEIGHT;
var SPRITE_HEIGHT = (NUMBER_OF_ARTICLES + 1) * ROTATION_ELEMENT_HEIGHT;
var RUN_TIME = 1900;
var MIN_TIME_PER_SPRITE = 500;
var MAX_TIME_PER_SPRITE = 1000;
var STOP_MIN_TIME = 600;
var STOP_MAX_TIME = 1400;
var SIDE_SLIDE_TIME = 1000;

var currentArticleIndex = parseInt(Math.random() * (NUMBER_OF_ARTICLES - 1));

var RotationElement = function(index) {
    var minY = SPRITE_HEIGHT * index;
    var maxY = minY + SPRITE_SCROLL_HEIGHT;
    var el = $("#rotation-slice-" + index);
    el.css({backgroundPosition: "0 -" + minY + "px"});
    //    $("#rotation-bg-" + index).css({backgroundPosition: "0 -" + (38 * index) + "px"});
    var speed;
    var _isRotating = false;
    this.isRotating = function() {
        return _isRotating;
    };
    var resumeRun = function() {
        el.css({backgroundPosition: "0 -" + minY + "px"});
        el.animate({backgroundPosition: "(0 -" + maxY + "px)"}, SPRITE_SCROLL_HEIGHT / speed, "linear", resumeRun);
    };
    var getCurrentY = function() {
        var bp = el.css("backgroundPosition");
        return -parseInt(bp.substr(4, bp.length - 6));
    };
    this.start = function() {
        speed = SPRITE_SCROLL_HEIGHT /
            (MIN_TIME_PER_SPRITE + parseInt((MAX_TIME_PER_SPRITE - MIN_TIME_PER_SPRITE) * Math.random()));
        var pixels = maxY - getCurrentY();
        _isRotating = true;
        el.animate({backgroundPosition: "(0 -" + maxY + "px)"}, pixels / speed, "linear", resumeRun);
    };
    var finish = function() {
        _isRotating = false;
    };
    var resumeStop = function() {
        el.css({backgroundPosition: "0 -" + minY + "px"});
        el.animate({backgroundPosition: "(0 -" + targetY + "px)"}, restTime, "swing", finish);
    };
    var targetY;
    var restTime;
    this.stop = function() {
        el.stop();
        targetY = minY + currentArticleIndex * ROTATION_ELEMENT_HEIGHT;
        var currentY = getCurrentY();
        var time = STOP_MIN_TIME + parseInt((STOP_MAX_TIME - STOP_MIN_TIME) * Math.random());
        if (currentY <= targetY) {
            el.animate({backgroundPosition: "(0 -" + targetY + "px)"}, time, "swing", finish);
        } else {
            var pixelsToBottom = maxY - currentY;
            var pixelsToTarget = targetY - minY;
            restTime = time * pixelsToTarget / (pixelsToBottom + pixelsToTarget);
            el.animate({backgroundPosition: "(0 -" + maxY + "px)"}, time - restTime, "swing", resumeStop);
        }
    };
};

var rotationElements = [];

var updateArticleData = function() {
    var ad = articleData[currentArticleIndex];
    $("#rotation-bg-1").html('<div style="margin:20px 4px 0 0;color:white;font-weight:bold;font-size:15px;text-decoration:none;">' +
        ad[1] + '</div>');
    $("#rotation-bg-2").html('<div style="margin:2px 4px 0 0;color:black;"><span style="font-size:13px;">' +
        (lang == "0" ? 'von ' : 'by ') + ad[0] +
        '</span><br><span style="font-weight:bold;font-size:12px;text-decoration:none;">' +
        (ad[2] ? '' : (lang == "0" ? "ab " : "from ")) + ad[3] + ' &euro;</span></div>');
    $("#rotation-box a").attr("href", resourceUrl + "index.php?cl=details&anid=" + ad[4]);
    $("#rotation-box a").attr("_tkt", "s");
    $("#rotation-box a").attr("_tki", "gc");
    $("#rotation-box a").mouseup(COMMONS.ctk);
};

var isRotating = function() {
    var isRotating = false;
    $.each(rotationElements, function(index, value) {
        if (value.isRotating()) {
            isRotating = true;
        }
    });
    return isRotating;
};

$(document).ready(function() {
    for (var i = 0; i < 5; i++) {
        rotationElements.push(new RotationElement(i));
    }
    var stop = function() {
        updateArticleData();
        $.each(rotationElements, function(index, value) {
            value.stop();
        });
    };
    var tkflag = false;
    $("#rotation-trigger").click(function() {
        if (!isRotating()) {
            currentArticleIndex++;
            if (currentArticleIndex == NUMBER_OF_ARTICLES) {
                currentArticleIndex = 0;
            }
            $.each(rotationElements, function(index, value) {
                value.start();
            });
            window.setTimeout(stop, RUN_TIME);
            if (tkflag) {
                COMMONS.tk("s", "g");
            } else {
                tkflag = true;
            }
        }
    });
    $("#rotation-trigger").hover(function() {
        $("#rotation-trigger").css("background-position", "0 -25px");
    }, function() {
        $("#rotation-trigger").css("background-position", "0 0");
    });
    $("#slide-mask-mask").mouseover(function(ev) {
        ev.stopPropagation();
    });
    $("#rotation-box").hover(function() {
        if (!isRotating()) {
            $(".rotation-slice").stop();
            $("#rotation-slice-0").animate({left: "-90px"}, SIDE_SLIDE_TIME);
            $("#rotation-slice-1").animate({left: "-135px"}, SIDE_SLIDE_TIME);
            $("#rotation-slice-2").animate({left: "-160px"}, SIDE_SLIDE_TIME);
            $("#rotation-slice-3").animate({left: "-150px"}, SIDE_SLIDE_TIME);
            $("#rotation-slice-4").animate({left: "-140px"}, SIDE_SLIDE_TIME);
        }
    }, function() {
        if (!isRotating()) {
            $(".rotation-slice").stop();
            $(".rotation-slice").animate({left: "0"}, SIDE_SLIDE_TIME);
        }
    });
    updateArticleData();
    $("#rotation-trigger").trigger("click");
});

// teaser

$(document).ready(function() {

    var data;
    var index;
    var timerId;
    var isFading = false;
    var isLoading = false;
    var loadingIndex;

    var loadTeaserData = function() {
        $.getJSON(resourceUrl + "data/teaser/", {lang:lang}, function(teaserData, textStatus) {
            data = teaserData;
            index = data.length - 1;
            timerElapsed();
        });
    };

    var startTimer = function() {
        window.setTimeout(timerElapsed, 7000);
    };

    var timerElapsed = function() {
        var i;
        $(".teaser-loader").show();
        if (++index == data.length) {
            index = 0;
        }
        var teaserData = data[index];
        var block = $(".teaser").append('<div class="teaser-block hide next-teaser"><a href="' + teaserData.link +
            '"></a></div>');
        var img = document.createElement("img");
        img.onload = imgLoaded;
        var teaserLink = $(".next-teaser a");
        teaserLink.append(img);

        for (i = 0; i < teaserData.over.length; i++) {
            var overData = teaserData.over[i];
            $(".next-teaser a").append('<img class="over-target hide" src="' + resourceUrl + 'img/' + overData.img +
                '" style="position:absolute;top:' + overData.top + 'px;left:' + overData.left + 'px;width:' +
                overData.width + 'px;height:' + overData.height + 'px;">');
        }
        teaserLink.hover(function() {
            teaserLink.children(".over-target").show();
        }, function() {
            teaserLink.children(".over-target").hide();
        });

        if (teaserData.links) {
            for (i = 0; i < teaserData.links.length; i++) {
                var linkData = teaserData.links[i];
                $(".next-teaser").append('<a class="link" href="' + linkData.link + '"' +
                    (linkData.onclick ? ' onclick="' + linkData.onclick + '"' : '') +
                    ' style="position:absolute;display:block;background-image:url(' + resourceUrl + 'img/1x1.gif' +
                    ');top:' + linkData.top + 'px;left:' + linkData.left + 'px;width:' + linkData.width + 'px;height:' +
                    linkData.height + 'px;"><img class="hide" src="' + resourceUrl + 'img/' + linkData.img + '"></a>');
            }
            $(".next-teaser .link").hover(function() {
                $(this).children("img").show();
            }, function() {
                $(this).children("img").hide();
            });
        }


        img.src = resourceUrl + "img/" + teaserData.img;

    };

    var imgLoaded = function() {
        $(".teaser-loader").hide();
        $(".current-teaser").fadeOut(600);
        $(".next-teaser").fadeIn(600, faded);
    };

    var faded = function() {
        $(".current-teaser").remove();
        var teaser = $(".next-teaser");
        teaser.addClass("current-teaser");
        teaser.removeClass("next-teaser");
        startTimer();
    };

    loadTeaserData();

});
