(function() {
    const i18n = {
        en: {
            allRoomsUrl: 'https://www.scandichotels.com/hotelreservation/select-rate?hotel=340&cmpid=pa_grandnobooking',
            roomDetailsUrl: 'https://www.scandichotels.com/hotelreservation/details?hotel=340&cmpid=pa_grandnobooking'
        },
        no: {
            allRoomsUrl: 'https://www.scandichotels.no/hotelreservation/select-rate?hotel=340&cmpid=pa_grandnobooking',
            roomDetailsUrl: 'https://www.scandichotels.no/hotelreservation/details?hotel=340&cmpid=pa_grandnobooking'
        }
    };

    const formKeys = {
        from: 'from',
        to: 'to',
        adults: 'adults',
        children: 'children',
        promocode: 'promocode',
        roomtype: 'roomtype'
    };

    function submit(e, url) {
        let formData = new FormData(e.target);

        if (!url) {
            let roomType = formData.get(formKeys.roomtype);
            let lang = window.language;
            if (roomType) {
                url = i18n[lang].roomDetailsUrl + '&room[0].roomtype=' + roomType;
            } else {
                url = i18n[lang].allRoomsUrl;
            }
        }

        let from = formData.get(formKeys.from);
        let to = formData.get(formKeys.to);
        let adultsStr = formData.get(formKeys.adults);
        let adults = parseInt(adultsStr, 10);
        let childrenStr = formData.get(formKeys.children);
        let children = parseInt(childrenStr, 10);
        let promocode = formData.get(formKeys.promocode);
        
        if (from && to) {
            url += '&fromdate=' + from + '&todate=' + to;
        }
        if (adults) {
            url += '&room[0].adults=' + adults;
        }
        for (let i = 0; i < children; i++) {
            url += '&room[0].child[' + i + ']=';
        }
        if (promocode) {
            url += '&bookingcode=' + promocode;
        }

        // add ratecode for /details url
        if (url.indexOf('/details') !== -1) {
            url += '&room[0].ratecode=FLEX';
        }

        openInNewTab(url);
    }

    function openInNewTab(url) {
        let win = window.open(url, '_blank');
        win.focus();
    }

    window.bookingForm = {
        submit: submit
    };
})();
