﻿/// <reference path="jquery-1.3.1-vsdoc.js" />

// Detecting browser version.
// [MB]
var isFF = (navigator.userAgent.indexOf("Firefox") > 0);
var isChrome = (navigator.userAgent.indexOf("Chrome") > 0);
var isIE6 = false;
var isIE7 = false;
var isIE8 = false;

// Matching MSIE string for IE version detection.
// [MB]
if (!isFF && !isChrome) {
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
        var ieversion = new Number(RegExp.$1)
        if (ieversion >= 8) {
            isIE7 = true; // Use IE7 behavior for IE8 [MB]
            isIE8 = true;
        }
        else if (ieversion >= 7) {
            isIE7 = true;
        }
        else if (ieversion >= 6) {
            isIE6 = true;
        }
    }
}

// OnLoad events.
// [MB]
$(document).ready(function() {
    $(".NoPropagationLink").click(function(e) {
        e.stopPropagation();
    });

    $(".TableBack tr").each(function(idx, e) {
        if ((idx != 0) && ((idx % 2) == 0))
            $("td", e).addClass("Alternative");
    });

    $("#GrayOverlay").css("opacity", 0);

    $(".TeaserContainer .SlideshowItem").each(function(idx, e) {
        $(e).attr("idx", idx);
    });

    $(".TeaserContainer .SlideshowItem").click(function(e) {
        var idx = $(GetBrowserSpecificTarget(e)).attr("idx");

        if (idx)
            containerFader.GoToFade(idx);

        e.preventDefault();
        e.stopPropagation();
    });
});



var attached = [];
function AttachToFirstGuest(itemId) {
    var item = $("#" + itemId).get(0);
    
    if (item)
    {
        attached[attached.length] = item;

        $(item).keypress(function() { RefreshFirstGuest() });
        $(item).keyup(function() { RefreshFirstGuest() });
        $(item).blur(function() { RefreshFirstGuest() });
    }
}

function RefreshFirstGuest() {
    var firstGuest = $("#GuestName_0").get(0);

    if (firstGuest) {
        $(firstGuest).removeClass("InactiveTextbox");
        var newValue = "";
        for (var num = 0; num < attached.length; num++) {
            newValue += attached[num].value + " ";
        }
        firstGuest.value = newValue.substr(0, newValue.length - 1);
    }
}

var currentGuest = 0;
var currentGuestItemCount = 0;
var objCache = {}
function AddGuest(skipRebinding) {
    var guestContainer = $("#GuestContainer").get(0);
    var dummyGuestRow = $("#DummyGuestRow").get(0);

    if (guestContainer && dummyGuestRow) {
        currentGuest++;

        // Duplicate the dummy row.
        // [MB]
        var newRowContainer = document.createElement("div");
        newRowContainer.id = "RowContainerId_" + currentGuest;

        var newRow = dummyGuestRow.innerHTML;
        newRow = newRow.replace(/##GUESTNAME##/, "GuestName_" + currentGuest);
        newRow = newRow.replace(/##GUESTNAME##/, "GuestName_" + currentGuest);
        newRow = newRow.replace(/##GUESTVEGI##/, "GuestVegi_" + currentGuest);
        newRow = newRow.replace(/##GUESTVEGI##/, "GuestVegi_" + currentGuest);
        newRow = newRow.replace(/##GUESTVEGI##/, "GuestVegi_" + currentGuest);
        newRow = newRow.replace(/##BUTTONID##/, "GuestButton_" + currentGuest);
        newRow = newRow.replace(/##ROWID##/, "RowId_" + currentGuest);
        newRow = newRow.replace(/##BUTTONCLASS##/, "ActiveButton");
        newRow = newRow.replace(/##TICKETNUM##/, currentGuest + 1);

        if (isFF || isChrome) {
            newRow = newRow.replace(/##GUESTNAMEVALUE##/, DEFAULT_GUEST_NAME_TEXT);
        }
        else {
            newRow = newRow.replace(/##GUESTNAMEVALUE##/, "\"" + DEFAULT_GUEST_NAME_TEXT + "\"");
        }

        // Attach the new row.
        // [MB]
        newRowContainer.innerHTML = newRow;
        guestContainer.appendChild(newRowContainer);

        var newTextbox = $("#RowId_" + currentGuest + " .Textbox input").get(0);
        if (newTextbox) {
            $(newTextbox).addClass("InactiveTextbox");
            currentGuestItemCount++;
        }

        // Clean-up the button handlers.
        // [MB]
        if (!skipRebinding) {
            RebindVoucherForm();
            RebindGuestForm();
        }
    }
}

// TODO

var currentVoucher = 0;
var currentVoucherItemCount = 0;

function AddVoucher(skipRebinding) {
    var voucherContainer = $("#VoucherContainer").get(0);
    var dummyGVoucherRow = $("#DummyVoucherRow").get(0);

    if (voucherContainer && dummyGVoucherRow) {
        currentVoucher++;

        // Duplicate the dummy row.
        // [MB]
        var newRowContainer = document.createElement("div");
        newRowContainer.id = "RowContainerId_" + currentVoucher;

        var newRow = dummyGVoucherRow.innerHTML;
        newRow = newRow.replace(/##VOUCHERCODE##/, "VoucherCode_" + currentVoucher);
        newRow = newRow.replace(/##VOUCHERCODE##/, "VoucherCode_" + currentVoucher);
        newRow = newRow.replace(/##VOUCHERAMOUNT##/, "VoucherAmount_" + currentVoucher);
        newRow = newRow.replace(/##VOUCHERAMOUNT##/, "VoucherAmount_" + currentVoucher);
        newRow = newRow.replace(/##BUTTONID##/, "VoucherButton_" + currentVoucher);
        newRow = newRow.replace(/##ROWID##/, "VoucherRowId_" + currentVoucher);
        newRow = newRow.replace(/##BUTTONCLASS##/, "ActiveButton");
        newRow = newRow.replace(/##VOUCHERNUM##/, currentVoucher + 1);

        if (isFF || isChrome) {
            newRow = newRow.replace(/##VOUCHERAMOUNTVALUE##/, DEFAULT_VOUCHER_VALUE_TEXT);
            newRow = newRow.replace(/##VOUCHERVALUE##/, DEFAULT_VOUCHER_NAME_TEXT);
        }
        else {
            newRow = newRow.replace(/##VOUCHERAMOUNTVALUE##/, "\"" + DEFAULT_VOUCHER_VALUE_TEXT + "\"");
            newRow = newRow.replace(/##VOUCHERVALUE##/, "\"" + DEFAULT_VOUCHER_NAME_TEXT + "\"");
        }

        // Attach the new row.
        // [MB]
        newRowContainer.innerHTML = newRow;
        voucherContainer.appendChild(newRowContainer);

        var newTextbox = $("#VoucherRowId_" + currentVoucher + " .Textbox input").get(0);
        if (newTextbox) {
            $(newTextbox).addClass("InactiveTextbox");
            currentVoucherItemCount++;
        }

        // Clean-up the button handlers.
        // [MB]
        if (!skipRebinding) {
            RebindVoucherForm();
        }
    }
}

function FocusGuestList() {
    RebindVoucherForm();
    RebindGuestForm();
}

function FocusVoucherList() {
    RebindGuestForm();
    RebindVoucherForm();
}

var DEFAULT_VOUCHER_NAME_TEXT = "Gutscheincode noch nicht eingegeben!";
var DEFAULT_VOUCHER_VALUE_TEXT = "Gutscheinwert noch nicht eingegeben!";
function RebindVoucherForm(newVoucherCount) {
    if (newVoucherCount) {
        currentVoucher = newVoucherCount;
        currentVoucherItemCount = currentVoucher;
    }

    $(".RemoveVoucherButton").unbind("click");
    $(".RemoveVoucherButton").click(function(e) { RemoveVoucher(e) });

    var tc = $("#VoucherCount").get(0);
    if (tc)
        tc.selectedIndex = currentVoucherItemCount - 1;


    var firstVoucher = $("#VoucherCode_0");
    if (firstVoucher) {
        var tbFirstVoucher = firstVoucher.get(0);

        if (tbFirstVoucher && tbFirstVoucher.value == "") {
          
            firstVoucher.addClass("InactiveTextbox");
            tbFirstVoucher.value = DEFAULT_VOUCHER_NAME_TEXT;
        }
    }
    var firstAmountVoucher = $("#VoucherAmount_0");
    if (firstAmountVoucher) {
        var tbFirstAmountVoucher = firstAmountVoucher.get(0);
        if (tbFirstAmountVoucher && tbFirstAmountVoucher.value == "") {
            firstAmountVoucher.addClass("InactiveTextbox");
            tbFirstAmountVoucher.value = DEFAULT_VOUCHER_VALUE_TEXT;
        }
    }

    $(".VoucherRow").each(function(idx, e) {
        if ((idx % 2) == 0) {
            $(e).addClass("Alternative");
        }
        else {
            $(e).removeClass("Alternative");
        }

        $(".VoucherID", e).get(0).innerHTML = "Gutschein " + idx;

        // Updating the text box style.
        // [MB]
        $(".Textbox input").each(function(idx, e) {
            var tb = $(e).get(0);

            if (tb && (tb.id.match('Voucher') != null || tb.id.match('VOUCHER') != null)) {
                if (tb.value == DEFAULT_VOUCHER_NAME_TEXT || tb.value == DEFAULT_VOUCHER_VALUE_TEXT) {
                    $(e).addClass("InactiveTextbox");
                }
                else {
                    $(e).removeClass("InactiveTextbox");
                }
            }
        });

        $(".Textbox input").unbind("focus");
        $(".Textbox input").unbind("blur");
        $(".Textbox input").focus(function(e) {
            $(GetBrowserSpecificTarget(e)).removeClass("InactiveTextbox");

            if ($(GetBrowserSpecificTarget(e)).get(0).value == DEFAULT_VOUCHER_NAME_TEXT || $(GetBrowserSpecificTarget(e)).get(0).value == DEFAULT_VOUCHER_VALUE_TEXT) {
                $(GetBrowserSpecificTarget(e)).get(0).value = "";
            }
        });
        $(".Textbox input").blur(function(e) {
            if ($(GetBrowserSpecificTarget(e)).get(0).value == "") {
                if ($(GetBrowserSpecificTarget(e)).get(0).id.match('VoucherAmount') != null) {
                    $(GetBrowserSpecificTarget(e)).get(0).value = DEFAULT_VOUCHER_VALUE_TEXT;
                 }
                else {
                    $(GetBrowserSpecificTarget(e)).get(0).value = DEFAULT_VOUCHER_NAME_TEXT;
                }
                $(GetBrowserSpecificTarget(e)).addClass("InactiveTextbox");
            }
        });
    });
}
// TODO


function RemoveVoucherRow(rowIDToDelete, skipRebinding) {
    var voucherContainer = $("#VoucherContainer").get(0);

    var rowToDelete = $("#" + rowIDToDelete.replace(new RegExp("VoucherRowId_"), "RowContainerId_")).get(0);
    if (rowToDelete) {
        voucherContainer.removeChild(rowToDelete);
        currentVoucherItemCount--;
    }

    if (!skipRebinding)
        RebindGuestForm();
}

function RemoveVoucher(e) {
    var srcEl = GetBrowserSpecificTarget(e);

    if (srcEl) {
        var srcId = srcEl.id;

        if (currentVoucherItemCount > 1) {
            if (srcId.substr(0, "VoucherButton_".length) == "VoucherButton_") {
                var rowNum = srcId.substr("VoucherButton_".length, srcId.length);

                RemoveVoucherRow("VoucherRowId_" + rowNum);
            }
        }
    }
}

var DEFAULT_GUEST_NAME_TEXT = "Name noch nicht bekannt";
function RebindGuestForm(newGuestCount) {
    if (newGuestCount) {
        currentGuest = newGuestCount;
        currentGuestItemCount = currentGuest;
    }

    $(".RemoveGuestButton").unbind("click");
    $(".RemoveGuestButton").click(function(e) { RemoveGuest(e) });

    var tc = $("#TicketCount").get(0);
    if (tc)
        tc.selectedIndex = currentGuestItemCount - 1;


    var firstGuest = $("#GuestName_0");
    if (firstGuest) {
        var tbFirstGuest = firstGuest.get(0);

        if (tbFirstGuest && tbFirstGuest.value == "") {
            firstGuest.addClass("InactiveTextbox");
            tbFirstGuest.value = DEFAULT_GUEST_NAME_TEXT;
        }
    }


    $(".GuestRow").each(function(idx, e) {
        if ((idx % 2) == 0) {
            $(e).addClass("Alternative");
        }
        else {
            $(e).removeClass("Alternative");
        }

        $(".TicketID", e).get(0).innerHTML = "Ticket " + idx;

        // Updating the text box style.
        // [MB]
        $(".Textbox input").each(function(idx, e) {
            var tb = $(e).get(0);

            if (tb && (tb.id.match('Guest') != null || tb.id.match('GUEST') != null)) {
                if (tb.value == DEFAULT_GUEST_NAME_TEXT) {
                    $(e).addClass("InactiveTextbox");
                }
                else {
                    $(e).removeClass("InactiveTextbox");
                }
            }
        });

        $(".Textbox input").unbind("focus");
        $(".Textbox input").unbind("blur");
        $(".Textbox input").focus(function(e) {
            $(GetBrowserSpecificTarget(e)).removeClass("InactiveTextbox");

            if ($(GetBrowserSpecificTarget(e)).get(0).value == DEFAULT_GUEST_NAME_TEXT) {
                $(GetBrowserSpecificTarget(e)).get(0).value = "";
            }
        });
        $(".Textbox input").blur(function(e) {
            if ($(GetBrowserSpecificTarget(e)).get(0).value == "") {
                $(GetBrowserSpecificTarget(e)).get(0).value = DEFAULT_GUEST_NAME_TEXT;
                $(GetBrowserSpecificTarget(e)).addClass("InactiveTextbox");
            }
        });
    });
}

function RefreshGuestListByCount(newCount) {
    var parsedNewCount = parseInt(newCount);
    var parseGuestItemCount = parseInt(currentGuestItemCount);
    if (parsedNewCount > parseGuestItemCount) {
        for (var i = parseGuestItemCount; i < parsedNewCount; i++) {
            AddGuest(i < (parsedNewCount - 1));
        }

        currentGuestItemCount = parsedNewCount;
    }
    else if ((parsedNewCount < parseGuestItemCount) && (confirm("Sind Sie sicher, dass Sie die Anzahl der Tickets auf " + newCount + " Tickets senken möchten?"))) {
        var guestRows = $(".GuestRow");
        var rowsToDelete = parseGuestItemCount - parsedNewCount;

        for (var i = 1; i <= rowsToDelete; i++) {
            var guestRowToDelete = guestRows.get(guestRows.length - i);

            RemoveGuestRow(guestRowToDelete.id, (i < rowsToDelete));
        }

        currentGuestItemCount = parsedNewCount;
    }
}

function RemoveGuest(e) {
    var srcEl = GetBrowserSpecificTarget(e);

    if (srcEl) {
        var srcId = srcEl.id;

        if (currentGuestItemCount > 1) {
            if (srcId.substr(0, "GuestButton_".length) == "GuestButton_") {
                var rowNum = srcId.substr("GuestButton_".length, srcId.length);

                RemoveGuestRow("RowId_" + rowNum);
            }
        }
    }
}

function RemoveGuestRow(rowIDToDelete, skipRebinding) {
    var guestContainer = $("#GuestContainer").get(0);

    var rowToDelete = $("#" + rowIDToDelete.replace(new RegExp("RowId_"), "RowContainerId_")).get(0);
    if (rowToDelete) {
        guestContainer.removeChild(rowToDelete);
        currentGuestItemCount--;
    }
    
    if (!skipRebinding)
        RebindGuestForm();
}

var unhoverQueue = {};
$(document).ready(function() {
    // Hovering the start page items.
    // [MB]
    $(".EventList .Item").mouseover(function(e) {
        var foundItem = FindParentOrSelfWrapped(e, "Item");

        if (foundItem) {
            unhoverQueue[foundItem.id] = false;
            $(foundItem).addClass("ItemHover");
        }
    });
    $(".EventList .Item").mouseout(function(e) {
        var foundItem = FindParentOrSelfWrapped(e, "Item");

        if (foundItem) {
            unhoverQueue[foundItem.id] = true;

            window.setTimeout("UnhoverItem('" + foundItem.id + "')", 50);
        }
    });
    $(".TeaserItem").mouseover(function(e) {
        var foundItem = FindParentOrSelfWrapped(e, "TeaserItem");

        if (foundItem) {
            unhoverQueue[foundItem.id] = false;
            $(foundItem).addClass("TeaserItemHover");
        }
    });
    $(".TeaserItem").mouseout(function(e) {
        var foundItem = FindParentOrSelfWrapped(e, "TeaserItem");

        if (foundItem) {
            unhoverQueue[foundItem.id] = true;

            window.setTimeout("UnhoverTeaserItem('" + foundItem.id + "')", 50);
        }
    });
});

function UnhoverItem(idToUnhover) {
    if (unhoverQueue[idToUnhover])
        $("#" + idToUnhover).removeClass("ItemHover");
}
function UnhoverTeaserItem(idToUnhover) {
    if (unhoverQueue[idToUnhover])
        $("#" + idToUnhover).removeClass("TeaserItemHover");
}