﻿/*  - - - - - - - - - - - - - - - - - - - - - - - -
- - 
- -     MENU FUNCTIONS
- - 
- - - - - - - - - - - - - - - - - - - - - - - - - -*/



var selectedNumber;
var selectedItem = "loop_item_core_default";
var picDefault = "0px 0px";
var picOver = "-142px 0px";
var picDown = "-284px 0px";
var totalItems = 0;

function setTotalItems(number) {
    totalItems = number;
}

function allowMenuToMove(bool) {
    if (bool) {
        $("#air_nonclickable").hide();
    } else {
        $("#air_nonclickable").show();
    }
}



function mouseActionsForMenu() {
    //mouseover
    $(".loop_item_core").mouseover(function() { mouseOverMenu($(this)); });
    //mouseout
    $(".loop_item_core").mouseout(function() { mouseOutMenu($(this)); });
    //mousedown
    $(".loop_item_core").mousedown(function() { mouseDownMenu($(this)); });
    //click original: $(".loop_item_core").click(function() { clickMenu($(this)); });
    $(".loop_item_core").click(function() {
        document.location = "/#/" + $(this).parent().attr("id") + "/"; 
    });
    
}
function mouseActionsForMenuIPAD() {
    //mousedown
    $(".loop_item_core").mousedown(function() { mouseDownMenu($(this)); });
    //click original: $(".loop_item_core").click(function() { clickMenu($(this)); });
    $(".loop_item_core").click(function() {
        document.location = "/#/" + $(this).parent().attr("id") + "/";
    });
}

//MOUSEFUNCTIONS
function mouseOverMenu(Object) {
    if (selectedItem != Object.attr("id")) {
        $("." + Object.attr("id")).css("top", "2px");
        $("." + Object.attr("id") + "_icon").css("top", "2px");
        $("." + Object.attr("id")).css("background-position", picOver);
        //Toon titel en inleiding
        showIntroduction(Object.attr("id") + "_content");
    }
}
function mouseOutMenu(Object) {
    if (selectedItem != Object.attr("id")) {
        setIconDeselected(Object.attr("id"));
        hideIntroduction(Object.attr("id") + "_content");
    }
}
function mouseDownMenu(Object) {
    Object.css("background-position", picDown);
    $("." + Object.attr("id")).css("top", "4px");
    $("." + Object.attr("id") + "_icon").css("top", "4px");
}
function clickMenu(Object) {
    if (selectedItem != Object.attr("id")) {
        //vorige deselecteren als er een vorige is
        if (selectedItem != "") { setIconDeselected(selectedItem, picDefault, picOver, picDown); }
        //huidige instellen als geselecteerd
        selectItem(Object.attr("id"));
    }
}

function selectItem(domElement) {
    //huidige instellen als geselecteerd
    selectedItem = domElement;
    selectedNumber = selectedItem.replace("loop_item_core_", "");
    
    checkArrows();
    showIntroduction(domElement + "_content");

    var fadeInSpeed = 0;
    if (!IsIE8Browser()) { fadeInSpeed = 500; }
    if (domElement != "loop_item_core_NaN") { $("#loop_item_lees_meer, #loop_item_realisaties").fadeIn(fadeInSpeed); }

    
    //dirt container weer toedoen!
    if (allowTransitions()) {
        $("#dirt_container").slideUp(500, function() { deselectInclickableButtons("0px 0px", "0px"); });
    } else {
        $("#dirt_container").hide();
        deselectInclickableButtons("0px 0px", "0px");
    }
    hideEarthCloseBar();

    //change landscape
    changeLandscape(getNumberSelected());
}

var selectedType = "";
function showMoreContent(type,tabNumber) {

    var timeToSlide = 0
    var wasVisible = false;
    if ($("#dirt_container").is(":visible")) {
        if (allowTransitions()) {
            $("#dirt_container").slideUp(500);
            timeToSlide = 500;
        } else {
            $("#dirt_container").hide()
            timeToSlide = 0;
        }
        wasVisible = true;
    }

    //eerst tab selecteren
    setTimeout(function() {
        selectedType = type;
        $(".contentTab").hide(); //+++niet op klasse maar op idee selecteren
        $("#tab_" + selectedItem + "_" + type).show();
        
        //selectedNumber = selectedItem.replace("loop_item_core_", "").replace("_" + type, "").replace("#", "");
        var tabId = "tabs" + selectedNumber + "_tab" + tabNumber + "_" + type;
        selectTab(tabId);

        numberOfTabsCheck(selectedNumber, type);

        //openen
        if (allowTransitions()) {
            $("#dirt_container").slideDown(1500, function() {
                if (!wasVisible) { showEarthCloseBar(); }
            });
        } else {
            $("#dirt_container").show()
            if (!wasVisible) { showEarthCloseBar(); }
        }



    }, timeToSlide);
    
    //Scrollen naar de 'earth-content'
    if (allowTransitions()) {
        $(getScrollElement()).animate({scrollTop: 650}, 500);
    } else {
        $(getScrollElement()).scrollTop(650);
    }

}

/* controleren op welke knop er moet geklikt worden
- knop om de volgende te selecteren
- of knop om de volgende te selecteren EN de carousel te verschuiven */
function checkArrows() {
    //var number = getNumberSelected();
    var number = selectedNumber;
    if (number != "NaN" && number != undefined) {
        //alert("number:" + number + " - first:" + getFirstInLine() + " - last:" + getLastInLine());
        if (number == getFirstInLine()) {
            $("#arrow_left_carousel").removeClass("hidearrow");
            $("#arrow_right_carousel").addClass("hidearrow");
            $("#arrow_left").addClass("hidearrow");
            $("#arrow_right").removeClass("hidearrow");
        } else if (number == getLastInLine()) {
            $("#arrow_left_carousel").addClass("hidearrow");
            $("#arrow_right_carousel").removeClass("hidearrow");
            $("#arrow_left").removeClass("hidearrow");
            $("#arrow_right").addClass("hidearrow");
        } else {
            $("#arrow_left_carousel").addClass("hidearrow");
            $("#arrow_right_carousel").addClass("hidearrow");
            $("#arrow_left").removeClass("hidearrow");
            $("#arrow_right").removeClass("hidearrow");
        }
    }
}

// de click's simuleren door op de pijltjes toets te klikken
//er moet opgelet worden welke knop ie induwt (bv: gewoon naar links, of naar links en 
function simulateLeftOrRightClick(direction) {
    var number = getNumberSelected();
    if (number != "NaN" && number != "") {
        if (number == getFirstInLine()) {
            if (direction == "left") {
                $("#arrow_left_carousel").trigger('click');
            } else {
                $("#arrow_right").trigger('click');
            }
        } else if (number == getLastInLine()) {
            if (direction == "left") {
                $("#arrow_left").trigger('click');
            } else {
                $("#arrow_right_carousel").trigger('click');
            }
        } else {
            if (direction == "left") {
                $("#arrow_left").trigger('click');
            } else {
                $("#arrow_right").trigger('click');
            }
        }
    } else {
        if (direction == "left") {
            $("#arrow_left_carousel").trigger('click');
        } else {
            $("#arrow_right_carousel").trigger('click');
        }
    }
}

//Inleiding tonen & verbergen
function showIntroduction(domElement) {
    $(".loop_item_content").each(function() {
        $(this).css("visibility", "hidden");
        $("#" + domElement).stop().fadeTo("fast", 0);
    });

    $("#" + domElement).css("visibility", "visible");
    $("#" + domElement).stop().fadeTo("fast", 1);
}
function hideIntroduction(domElement) {
    $("#" + domElement).css("visibility", "hidden");
    $("#" + domElement).stop().fadeTo("fast", 0);

    //show selected
    if (selectedItem != "") {
        showIntroduction(selectedItem + "_content");
    }
}
function setIconDeselected(iconId) {

    $("." + iconId).css("background-position", picDefault);
    $("." + iconId).css("top", "0px");
    $("." + iconId + "_icon").css("top", "0px");
}
//Volgend item selecteren
function selectNextItem() {
    var nextNumber = calculateCorrectNumber(parseFloat(getNumberSelected()) + 1, totalItems);
    selectItemByNumber(nextNumber);
}
//Vorige item selecteren
function selectPreviousItem() {
    var nextNumber = calculateCorrectNumber(parseFloat(getNumberSelected()) - 1, totalItems);
    selectItemByNumber(nextNumber);
}

//Selecteer een item via hun nummer
function selectItemByNumber(number) {
    //vorige deselecteren als er een vorige is
    if (selectedItem != "") { setIconDeselected(selectedItem, picDefault, picOver, picDown); }

    //huidige instellen als geselecteerd original:selectItem("loop_item_core_" + number);
    window.location = "/#/" + $(".loop_item_core_" + number).parent().attr("id") + "/";
    
    //alert(number);
    $(".loop_item_core_" + number).css("background-position", picDown);
    $(".loop_item_core_" + number).css("top", "4px");
    $(".loop_item_core_" + number + "_icon").css("top", "4px");
}
function getFirstInLine() {
    var firstInLine = Math.abs(parseFloat($("#ul_carousel").css("left")) / 160) + (totalItems - 4);
    firstInLine = calculateCorrectNumber(firstInLine);
    return firstInLine;
}
function getLastInLine() {
    var firstInLine = getFirstInLine(totalItems);
    var lastInLine = firstInLine + 4;
    lastInLine = calculateCorrectNumber(lastInLine);
    return lastInLine;
}
function getNumberSelected() {
    var numberSelected = ""
    if (selectedItem != "NaN") {
        numberSelected = selectedItem.replace("loop_item_core_", "")
    }
    return numberSelected;
}
//Check als het number correct is. Als het nummer 8 is en er zijn maar 7 items. Moet het nummer 1 worden
// nummers kunnen zo lopen:
//              1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
//              1 2 3 4 5 6 7 1 2 3  4  5  6  7  1  => dit moet het worden
function calculateCorrectNumber(number) {
    if (number > (totalItems * 2)) { number = number - totalItems }
    if (number > totalItems) { number = number - totalItems }
    if (number < 1) { number = number + totalItems; }
    return number;
}

