﻿var categoryPrice = new Object();
var returnTrip = new Object();

var currencySymbol;

var campaignDiscount;
var campaignDiscountUnit;
var campaignFromPrice;
var campaignToPrice;
var campaignPriceToTripKey = '';
var campaignPriceReturnTripKey = '';

var campaignRelationLimit = new Object();
var campaignRelationLimitCount;
var campaignDepartureLimit = new Object();
var campaignDepartureLimitCount;

var extraFeeAmount;
var extraFeeLimit;
var extraFeeEnabled;
var extraFeeIsPercentage;

var toTripPrices = new Object();
var returnTripPrices = new Object();
var isRoundTrip = false;
var toTripDivs = new Array();
var toTripDivsTripId = new Array();

var selectedToTripPrice = null;
var selectedReturnTripPrice = null;
var selectedToTrip = "";
var selectedReturnTrip = "";

function updatePrice()
{
    var priceContainers = document.getElementsByTagName("span");
    var ccLists;
    var tripId;
    var departureId;
    var departureId2;
    var departureId3;
    var relationId;
    var relationId2;
    var relationId3;
    var selValue;
    var price;
    var noSelectedTickets;
    var isReturnTrip;
    var tripKey;

    toTripPrices = new Object();
    returnTripPrices = new Object();        
    
    for (i = 0; i < priceContainers.length; i++)
    {    
        var isPriceContainer = false;
        var IDs;
        
        if (priceContainers[i].id.indexOf("departurePriceContainer") > -1 && priceContainers[i].id.indexOf("Disabled") == -1) {
            IDs = priceContainers[i].id.substr(23).split("|");
            isPriceContainer = true;
        }
        
        if (isPriceContainer) {
            tripId = IDs[0];
            departureId = IDs[1];
            relationId = IDs[2];
            departureId2 = IDs[3];
            relationId2 = IDs[4];
            departureId3 = IDs[5];
            relationId3 = IDs[6];
            price = 0;

            ccLists = document.getElementsByTagName("select");
            
            var relIDs = new Array();
            relIDs[0] = relationId;
            relIDs[1] = relationId2;
            relIDs[2] = relationId3;

            var depIDs = new Array();
            depIDs[0] = departureId;
            depIDs[1] = departureId2;
            depIDs[2] = departureId3;

            noSelectedTickets = 0;
            tripKey = tripId + "_" + departureId + "_" + relationId + "_" + departureId2 + "_" + relationId2 + "_" + departureId3 + "_" + relationId3
            isReturnTrip = returnTrip["dep_" + tripKey];

            if (!isReturnTrip) {
                toTripDivs[toTripDivs.length] = priceContainers[i];
                toTripDivsTripId[toTripDivsTripId.length] = tripKey;
            }            
            
            for (j = 0; j < ccLists.length; j++) {
                if (ccLists[j].id.indexOf("CustomerCategories") > -1 && ccLists[j].id.indexOf("Tickets") > -1) {
                    
                    selValue = ccLists[j].options[ccLists[j].selectedIndex].value.split("|")

                    if (selValue[1] > 0) {
                        try {
                            price += selValue[1] * categoryPrice["dep_" + tripKey]["cc_" + selValue[0]];
                        } catch (e) {
                            alert("err: dep_" + tripKey);
                        }
                        noSelectedTickets += selValue[1];
                    }
                }
            }
            
            if (price > 0 || (price == 0 && noSelectedTickets > 0)) {
                var oldPrice = price;
                price = calcPrice(price, relIDs, depIDs, isReturnTrip, tripKey);

                if (price != oldPrice && (!isReturnTrip && campaignPriceToTripKey == tripKey || isReturnTrip && campaignPriceReturnTripKey == tripKey)) {
                    priceContainers[i].innerHTML = '<span class="campaignPrice">' + price + ' ' + currencySymbol + '</span>';
                } else {
                    priceContainers[i].innerHTML = price + ' ' + currencySymbol;
                }
            } else if (priceContainers[i].innerHTML != 'Fullbokad' && priceContainers[i].innerHTML != 'Ej valbar') {
                priceContainers[i].innerHTML = '-';
            }
        }
    }

    updateSelectedPrices();
    addExtraFee();
}

function updateSelectedPrices() {
    if (selectedToTrip != '') {
        selectedToTripPrice = toTripPrices[selectedToTrip];
    }

    if (selectedReturnTrip != '') {
        selectedReturnTripPrice = returnTripPrices[selectedReturnTrip];
    }
}

function recalcSelectedPrices(button, isReturnTrip) {
    if (!isReturnTrip) {
        selectedToTrip = button.value.replace(/\|/g, "_");
    } else {
        selectedReturnTrip = button.value.replace(/\|/g, "_");
    }
}

function calcPrice(basePrice, relationId, departureId, isReturnTrip, tripKey)
{
    var useCampaignPrice = true;
    var returnPrice;
    
    if (typeof(campaignDiscount) != 'undefined') {
        if (campaignRelationLimitCount > 0 && typeof (campaignRelationLimitCount) != 'undefined') {
            for (var i = 0; i < relationId.length && useCampaignPrice; i++) {
                if (relationId[i] != 0 && typeof (campaignRelationLimit[relationId[i]]) == 'undefined') {
                    useCampaignPrice = false;
                }
            }
        }

        if (campaignDepartureLimitCount > 0 && typeof (campaignDepartureLimitCount) != 'undefined') {
            for (var i = 0; i < departureId.length && useCampaignPrice; i++) {
                if (departureId[i] != 0 && typeof (campaignDepartureLimit[departureId[i]]) == 'undefined') {
                    useCampaignPrice = false;
                }
            }        
        }
        
        if (useCampaignPrice) {
            if (basePrice >= campaignFromPrice && basePrice <= campaignToPrice) {
                switch (campaignDiscountUnit) {
                    case 1:
                        //%
                        basePrice = basePrice * (1 - (campaignDiscount / 100));
                        break;
                    case 2:
                        //Kr
                        basePrice = basePrice - campaignDiscount;
                        break;
                }
                
                if (basePrice < 0) {
                    basePrice = 0;
                }

                if (!isReturnTrip) {
                    campaignPriceToTripKey = tripKey;
                } else {
                    campaignPriceReturnTripKey = tripKey;
                }

                returnPrice = Math.ceil(basePrice);
            }
        } else {
            returnPrice = basePrice;
        }
    } else {
        returnPrice = basePrice;
    }

    if (!isReturnTrip) {
        toTripPrices[tripKey] = returnPrice;
    } else {
        returnTripPrices[tripKey] = returnPrice;
    }  
    
    return returnPrice;
}

function addExtraFee() {
    if (extraFeeEnabled) {
        for (var i = 0; i < toTripDivs.length; i++) {
            var selectedPriceTotal = 0;

            selectedToTripPrice = toTripPrices[toTripDivsTripId[i]];

            if (selectedToTripPrice != undefined) {
                selectedPriceTotal = selectedToTripPrice
            }

            if (selectedReturnTripPrice != null) {
                selectedPriceTotal += selectedReturnTripPrice;
            }

            if (selectedPriceTotal > 0 && (extraFeeLimit <= 0 || selectedPriceTotal <= extraFeeLimit)) {
                var newPrice = selectedToTripPrice;

                if (extraFeeIsPercentage) {
                    newPrice = Math.ceil(newPrice + (newPrice * (extraFeeAmount / 100.0)));
                } else {
                    newPrice += extraFeeAmount;
                }
                
                if (campaignPriceToTripKey != '') {
                    toTripDivs[i].innerHTML = '<span class="campaignPrice">' + newPrice + ' ' + currencySymbol + '</span>';
                } else {
                    toTripDivs[i].innerHTML = newPrice + ' ' + currencySymbol;
                }
            }
        }
            
        /*var selectedPriceTotal = 0;

        if (selectedToTripPrice != null) {
            selectedPriceTotal = selectedToTripPrice;
        }

        if (selectedReturnTripPrice != null) {
            selectedPriceTotal += selectedReturnTripPrice;
        }


        if (selectedPriceTotal > 0 && (extraFeeLimit <= 0 || selectedPriceTotal <= extraFeeLimit)) {
            if (campaignPriceToTripKey != '') {
                document.getElementById("departurePriceContainer" + selectedToTrip.replace(/_/g, '|')).innerHTML = '<span class="campaignPrice">' + (selectedToTripPrice + extraFeeAmount) + ' ' + currencySymbol + '</span>';
            } else {
                document.getElementById("departurePriceContainer" + selectedToTrip.replace(/_/g, '|')).innerHTML = (selectedToTripPrice + extraFeeAmount) + ' ' + currencySymbol;
            }
        }*/
    }
}

function toggleBecomeMemberForm(checkbox, div, helpTextDiv, forcedReg)
{
    if (checkbox.checked) {
        try {
            document.getElementById(div).style.display = 'block';
            document.getElementById(isMemberFields).style.display = 'none';
            document.getElementById(nonMemberFields).style.display = 'none';
            document.getElementById(helpTextDiv).style.display = 'none';        
        } catch(e) { }
    } else {
        try {
            document.getElementById(div).style.display = 'none';
            document.getElementById(isMemberFields).style.display = 'block';
            if (!forcedReg) {
                document.getElementById(nonMemberFields).style.display = 'block';
            }

            document.getElementById(helpTextDiv).style.display = 'none';        
        } catch(e) { }
    }        
}

function setSelectedSeats(seats)
{
    document.getElementById(selectedSeatsInput).value = seats;
}

function clearNotMemberFields() {
    try {
        document.getElementById(nonMemberPhoneField).value = "";
        document.getElementById(nonMemberSSNField).value = "";
        document.getElementById(newsletterEmailAddressField).value = "";
    } catch (e) { }
}

function clearLoginFields() {
    try {
        document.getElementById(loginUsernameField).value = "";
        document.getElementById(loginPasswordField).value = "";
    } catch (e) { }
}

var visibleProductCategory = '';

function toggleProductCategory(id)
{
    var div = document.getElementById(id);
    
    if (div.style.display != 'block') {
        document.getElementById(visibleProductCategory).style.display = 'none';
        document.getElementById(id).style.display = 'block';
        visibleProductCategory = id;
    }
}

function reloadDepartureList() 
{
    document.getElementById("ReloadDepartureList").value = "1";
    document.forms[0].submit();
}

function enableSeatSelectFlash()
{
    document.getElementById('placebookingflash_flashcontainer').style.display = 'block';
    document.getElementById('disabledSeatSelection').style.display = 'none';
}

function disableSeatSelectFlash()
{
    document.getElementById('placebookingflash_flashcontainer').style.display = 'none';
    document.getElementById('disabledSeatSelection').style.display = 'block';
}

function confirmReturnTripDate()
{    
    if (toTripDepartureDate == returnTripDepartureDate) {
        showPopWin(document.getElementById('popupConfirmReturnTripDialogContent'), 'Bekräfta datum för återresa', 400, 300, function() { __doPostBack("ctl00$MainContent$Booking1$StepChooseDepartureNextButton", ""); });
    } else {
        __doPostBack("ctl00$MainContent$Booking1$StepChooseDepartureNextButton", "");
    }
}
function toggleReturnTripDate(dateId, dateLabelId, show)
{            
    if (show) {
        document.getElementById(dateLabelId).style.display = 'block';
        document.getElementById(dateId).style.display = 'block';
    } else {
        document.getElementById(dateLabelId).style.display = 'none';
        document.getElementById(dateId).style.display = 'none';
    }
}

function onSeatFlashLoaded(sender, args)
{
    try
    {
        if (sender._postBackSettings.panelID.indexOf('FlashUpdatePanel') > 0)
        {
            if (document.getElementById("ctl00_MainContent_Booking1_placebookingflash_container").style.display != 'none')
            {
                writeFlashTag('http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0', '466', '98', 'middle', 'transparent', 'ctl00_MainContent_Booking1_placebookingflash', 'transparent', 'sameDomain', flashUrl, 8, 0, 0, 'placebookingflash_ac', false, true);
            }
        }
    }
    catch (e) { }
}
function selectBoxSetSelectedValue(id, value)
{
    var select = document.getElementById(id);
    
    for (i = 0; i < select.options.length; i++)
    {
        if (select.options[i].value == value)
        {
            select.options[i].selected = true;
            return;
        }
    }
}

function disableReturnDate(day, month, year, returnDay, returnMonth, returnYear)
{
    document.getElementById(returnDay).selectedIndex = document.getElementById(day).selectedIndex;
    document.getElementById(returnMonth).selectedIndex = document.getElementById(month).selectedIndex;
    document.getElementById(returnYear).selectedIndex = document.getElementById(year).selectedIndex;
    
    document.getElementById(returnDay).disabled = true;
    document.getElementById(returnMonth).disabled = true;
    document.getElementById(returnYear).disabled = true;
}

function enableReturnDate(day, month, year)
{
    document.getElementById(day).disabled = false;
    document.getElementById(month).disabled = false;
    document.getElementById(year).disabled = false;
}

function checkDayTrip(day, month, year, returnDay, returnMonth, returnYear, daytrip, returnTrip)
{
    if (!document.getElementById(daytrip).checked)
    {
        var enableDayTripWarning = true;

        if (document.getElementById(returnTrip).checked
            && document.getElementById(returnDay).selectedIndex == document.getElementById(day).selectedIndex
            && document.getElementById(returnMonth).selectedIndex == document.getElementById(month).selectedIndex
            && document.getElementById(returnYear).selectedIndex == document.getElementById(year).selectedIndex)
        {
            if (confirm('Du har valt att resa tillbaka samma dag. Genom att att boka en dagstur kan du resa billigare. Vill du boka en dagstur?'))
            {
                document.getElementById(daytrip).checked = true;
                disableReturnDate(day, month, year, returnDay, returnMonth, returnYear);
                enableDayTripWarning = false;
            }
        }

        if (enableDayTripWarning && isChangingBooking && oldBookingIsDayTrip)
        {
            if (document.getElementById(returnTrip).checked)
            {
                alert('Du har valt att boka om en dagstur. Det innebär att både utresa och återresa kommer att bokas om.');
            }
            else
            {
                alert('Du har valt att boka om en dagstur. Det innebär att återresan kommer att avbokas.');
            }            
        }
    }
    
    return true;
}

function showBigProductImage(id) {
    document.getElementById(id).style.display = 'block';
}

function hideBigProductImage(id) {
    document.getElementById(id).style.display = 'none';
}