﻿function getArrivalDate(arrivalId, totalId, startId, dateFormat, separator) {
    var arrival = document.getElementById(arrivalId);
    var total = document.getElementById(totalId);
    var start = document.getElementById(startId);
    var message = '<p style="margin:0;padding-top:10px;">';
    if (start.value == '') {
        message += start.attributes['errorMessage'].value;
        message += '<br />';
    }
    if (parseInt(total.value).toString() == 'NaN' || parseInt(total.value) < 1) {
        message += total.attributes['errorMessage'].value;
        message += '<br />';
    }
    if (message != '<p style="margin:0;padding-top:10px;">') {
        message += '</p>';
        if (window.parent) {
            window.alert(message.replace('<p style="margin:0;padding-top:10px;">', '')
		        .replace('<br /></p>', '')
		        .replace(/<br \/>/g, '\n'));
        }
        else {
            Sexy.error(message);
        }
        return;
    }
    var items = start.value.split(separator);
    var isMonthBegin = dateFormat.indexOf('MM') == 0;
    var monthString = items[isMonthBegin ? 0 : 1].replace(/^0/, '');
    var dayString = items[isMonthBegin ? 1 : 0].replace(/^0/, '');
    var date = new Date(
        parseInt(items[2]),
        parseInt(monthString) - 1,
        parseInt(dayString));
    start.value = dateFormat.
        replace(/d+/g, date.getDate() > 9 ? date.getDate() : '0' + date.getDate()).
        replace(/M+/g, date.getMonth() > 8 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)).
        replace('yyyy', date.getFullYear());
    date.setDate(date.getDate() + parseInt(total.value));
    arrival.value = dateFormat.
        replace(/d+/g, date.getDate() > 9 ? date.getDate() : '0' + date.getDate()).
        replace(/M+/g, date.getMonth() > 8 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1)).
        replace('yyyy', date.getFullYear());
}

function getResultsUrl(theme, clientId, startId, totalId, arrivalId, accommodationId, adultClass, childrenClass, babyClass, hotelId, dateFormat) {
    var arrival = document.getElementById(arrivalId);
    var total = document.getElementById(totalId);
    var start = document.getElementById(startId);
    var accommodation = document.getElementById(accommodationId);
    var adults = getByClass(document, adultClass);
    var children = getByClass(document, childrenClass);
    var babies = getByClass(document, babyClass);
    var hotel = document.getElementById(hotelId);
    var message = '<p style="margin:0;padding-top:10px;">';
    if (start.value == '') {
        message += start.attributes['errorMessage'].value;
        message += '<br />';
    }
    if (parseInt(total.value).toString() == 'NaN' || parseInt(total.value) < 1) {
        message += total.attributes['errorMessage'].value;
        message += '<br />';
    }
    var adultCounts = '';
    var childCounts = '';
    var babyCounts = '';
    for (i = 0; i < adults.length; i++)
        if ((adults[i].value == '' || parseInt(adults[i].value).toString() == 'NaN') &&
            !message.match(adults[i].attributes['errorMessage'].value)) {
            message += adults[i].attributes['errorMessage'].value;
            message += '<br />';
        }
        else
            adultCounts += (i == 0 ? '' : ',') + adults[i].value;
    for (i = 0; i < children.length; i++)
        if ((children[i].value == '' || parseInt(children[i].value).toString() == 'NaN') &&
            !message.match(children[i].attributes['errorMessage'].value)) {
            message += children[i].attributes['errorMessage'].value;
            message += '<br />';
        }
        else
            childCounts += (i == 0 ? '' : ',') + children[i].value;
    for (i = 0; i < babies.length; i++)
        if ((babies[i].value == '' || parseInt(babies[i].value).toString() == 'NaN') &&
            !message.match(babies[i].attributes['errorMessage'].value)) {
            message += babies[i].attributes['errorMessage'].value;
            message += '<br />';
        }
        else
            babyCounts += (i == 0 ? '' : ',') + babies[i].value;
    if (message != '<p style="margin:0;padding-top:10px;">') {
        message += '</p>';
        if (window.parent) {
            window.alert(message.replace('<p style="margin:0;padding-top:10px;">', '')
		        .replace('<br /></p>', '')
		        .replace(/<br \/>/g, '\n'));
        }
        else {
            Sexy.error(message);
        }
        return;
    }
    getArrivalDate(arrivalId, totalId, startId, dateFormat, '/');
    var replacement = '/Results.aspx?Theme=' + theme +
        '&ClientId=' + clientId +
        '&Start=' + start.value.replace(/\//g, '') +
        '&Total=' + total.value +
        '&Arrival=' + arrival.value.replace(/\//g, '') +
        '&Accomodation=' + accommodation.value +
        '&Adult=' + adultCounts +
        '&Children=' + childCounts +
        '&Baby=' + babyCounts +
        '&Hotel=' + (hotel.value ? hotel.value : hotel.attributes['value'].value);
    var reg = /\/(([^\/]+)\.aspx.*|$)/;
    var location = window.location.toString();
    if (location.match('Results.aspx')) {
        window.location = location.replace(reg, replacement);
    }
    else {
        window.open(location.replace(reg, replacement), '_blank', '');
    }
}

function getByClass(element, name) {
    var result = new Array();
    var items = element.getElementsByTagName("input");
    for (i = 0; i < items.length; i++) {
        if (items[i].className.match(name))
            result.push(items[i]);
    }
    items = element.getElementsByTagName("select");
    for (i = 0; i < items.length; i++) {
        if (items[i].className.match(name))
            result.push(items[i]);
    }
    items = element.getElementsByTagName("span");
    for (i = 0; i < items.length; i++) {
        if (items[i].className.match(name))
            result.push(items[i]);
    }
    return result;
}

function validationBooking3(source, clientside_arguments) {
    var items = getByClass(document, 'required');
    var message = '<p style="margin:0;padding-top:10px;">';
    for (i = 0; i < items.length; i++) {
        if (items[i].value == '') {
            if (!message.match(items[i].attributes['errorMessage'].value)) {
                message += items[i].attributes['errorMessage'].value;
                message += '<br />';
            }
            clientside_arguments.IsValid = false;
            if (items[i].id.match('_txtBirthDay'))
                items[i].className = items[i].className + ' mark';
            else
                items[i].style['borderColor'] = '#ff0000';
        }
        else {
            if (items[i].id.match('_txtBirthDay'))
                items[i].className = items[i].className.replace(/mark/g, "");
            else
                items[i].style['borderColor'] = '#ACACAC';
        }
    } 
    items = getByClass(document, 'valid');
    for (i = 0; i < items.length; i++) {
        var reg = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
        if ((items[i].value == '' || !reg.test(items[i].value)) &&
            items[i].attributes['errorMessage']) {
            items[i].style['borderColor'] = '#ff0000';
            message += items[i].attributes['errorMessage'].value;
            message += '<br />';
            clientside_arguments.IsValid = false;
        }
        else {
            items[i].style['borderColor'] = '#ACACAC';
        }
    }
    items = getByClass(document, 'age');
    for (i = 0; i < items.length; i++) {
        if ((parseInt(items[i].value).toString() == 'NaN' ||
            parseInt(items[i].value) < 18 ||
            parseInt(items[i].value) > 120) &&
            items[i].attributes['errorMessage']) {
            items[i].style['borderColor'] = '#ff0000';
            message += items[i].attributes['errorMessage'].value;
            message += '<br />';
            clientside_arguments.IsValid = false;
        }
        else {
            items[i].style['borderColor'] = '#ACACAC';
        }
    }
    items = getByClass(document, 'month');
    for (i = 0; i < items.length; i++) {
        if ((parseInt(items[i].value).toString() == 'NaN' ||
            parseInt(items[i].value) < 1 ||
            parseInt(items[i].value) > 12) &&
            items[i].parentNode.attributes['errorMessage']) {
            items[i].style['borderColor'] = '#ff0000';
            message += items[i].parentNode.attributes['errorMessage'].value;
            message += '<br />';
            clientside_arguments.IsValid = false;
        }
        else {
            items[i].style['borderColor'] = '#ACACAC';
        }
    } 
    items = getByClass(document, 'year');
    for (i = 0; i < items.length; i++) {
        if ((parseInt(items[i].value).toString() == 'NaN' ||
            parseInt(items[i].value) < 0 ||
            parseInt(items[i].value) > 99) &&
            items[i].parentNode.attributes['errorMessage']){
            if (!message.match(items[i].parentNode.attributes['errorMessage'].value)) {
                message += items[i].parentNode.attributes['errorMessage'].value;
                message += '<br />';
            }
            items[i].style['borderColor'] = '#ff0000';
            clientside_arguments.IsValid = false;
        }
        else {
            items[i].style['borderColor'] = '#ACACAC';
        }
    }
    items = getByClass(document, 'digit');
    for (i = 0; i < items.length; i++) {
        var reg = /\d+/;
        if ((items[i].value == '' || !reg.test(items[i].value)) &&
            items[i].parentNode.attributes['errorMessage']) {
            if (!message.match(items[i].parentNode.attributes['errorMessage'].value)) {
                message += items[i].parentNode.attributes['errorMessage'].value;
                message += '<br />';
            }
            items[i].style['borderColor'] = '#ff0000';
            clientside_arguments.IsValid = false;
        }
        else {
            items[i].style['borderColor'] = '#ACACAC';
        }
    }
    items = getByClass(document, 'adult');
    for (i = 0; i < items.length; i++) {
        if ((items[i].value != '') &&
            items[i].attributes['errorMessage']) {
            var dateFormat = items[i].attributes['dateformat'].value;
            var values = items[i].value.split('/');
            var isMonthBegin = dateFormat.indexOf('MM') == 0;
            var monthString = values[isMonthBegin ? 0 : 1].replace(/^0/, '');
            var dayString = values[isMonthBegin ? 1 : 0].replace(/^0/, '');
            var date = new Date(
                parseInt(values[2]),
                parseInt(monthString) - 1,
                parseInt(dayString));
            var valid = new Date().getFullYear() - date.getFullYear() > 18 ||
                new Date().getFullYear() - date.getFullYear() == 18 &&
                new Date().getMonth() - date.getMonth() > 0 ||
                new Date().getFullYear() - date.getFullYear() == 18 &&
                new Date().getMonth() - date.getMonth() == 0 &&
                new Date().getDate() - date.getDate() >= 0;
            if (!valid) {
                if (!message.match(items[i].attributes['errorMessage'].value)) {
                    message += items[i].attributes['errorMessage'].value;
                    message += '<br />';
                }
                items[i].className = items[i].className + ' mark';
                clientside_arguments.IsValid = false;
            }
            else {
                items[i].className = items[i].className.replace(/mark/g, "");
            }
        }
        else {
            if (!message.match(items[i].attributes['errorMessage'].value)) {
                message += items[i].attributes['errorMessage'].value;
                message += '<br />';
            }
            items[i].className = items[i].className + ' mark';
            clientside_arguments.IsValid = false;
        }
    }
    items = getByClass(document, 'child');
    for (i = 0; i < items.length; i++) {
        if ((items[i].value != '') &&
            items[i].attributes['errorMessage']) {
            var dateFormat = items[i].attributes['dateformat'].value;
            var values = items[i].value.split('/');
            var isMonthBegin = dateFormat.indexOf('MM') == 0;
            var monthString = values[isMonthBegin ? 0 : 1].replace(/^0/, '');
            var dayString = values[isMonthBegin ? 1 : 0].replace(/^0/, '');
            var date = new Date(
                parseInt(values[2]),
                parseInt(monthString) - 1,
                parseInt(dayString));
            var valid = (new Date().getFullYear() - date.getFullYear() > 2 ||
                new Date().getFullYear() - date.getFullYear() == 2 &&
                new Date().getMonth() - date.getMonth() > 0 ||
                new Date().getFullYear() - date.getFullYear() == 2 &&
                new Date().getMonth() - date.getMonth() == 0 &&
                new Date().getDate() - date.getDate() >= 0) &&
                (new Date().getFullYear() - date.getFullYear() < 18 ||
                new Date().getFullYear() - date.getFullYear() == 18 &&
                new Date().getMonth() - date.getMonth() < 0 ||
                new Date().getFullYear() - date.getFullYear() == 18 &&
                new Date().getMonth() - date.getMonth() == 0 &&
                new Date().getDate() - date.getDate() < 0);
            if (!valid) {
                if (!message.match(items[i].attributes['errorMessage'].value)) {
                    message += items[i].attributes['errorMessage'].value;
                    message += '<br />';
                }
                items[i].className = items[i].className + ' mark';
                clientside_arguments.IsValid = false;
            }
            else {
                items[i].className = items[i].className.replace(/mark/g, "");
            }
        }
        else {
            if (!message.match(items[i].attributes['errorMessage'].value)) {
                message += items[i].attributes['errorMessage'].value;
                message += '<br />';
            }
            items[i].className = items[i].className + ' mark';
            clientside_arguments.IsValid = false;
        }
    }
    items = getByClass(document, 'baby');
    for (i = 0; i < items.length; i++) {
        if ((items[i].value != '') &&
            items[i].attributes['errorMessage']) {
            var dateFormat = items[i].attributes['dateformat'].value;
            var values = items[i].value.split('/');
            var isMonthBegin = dateFormat.indexOf('MM') == 0;
            var monthString = values[isMonthBegin ? 0 : 1].replace(/^0/, '');
            var dayString = values[isMonthBegin ? 1 : 0].replace(/^0/, '');
            var date = new Date(
                parseInt(values[2]),
                parseInt(monthString) - 1,
                parseInt(dayString));
            var valid = new Date().getFullYear() - date.getFullYear() < 2 ||
                new Date().getFullYear() - date.getFullYear() == 2 &&
                new Date().getMonth() - date.getMonth() < 0 ||
                new Date().getFullYear() - date.getFullYear() == 2 &&
                new Date().getMonth() - date.getMonth() == 0 &&
                new Date().getDate() - date.getDate() < 0;
            if (!valid) {
                if (!message.match(items[i].attributes['errorMessage'].value)) {
                    message += items[i].attributes['errorMessage'].value;
                    message += '<br />';
                }
                items[i].className = items[i].className + ' mark';
                clientside_arguments.IsValid = false;
            }
            else {
                items[i].className = items[i].className.replace(/mark/g, "");
            }
        }
        else {
            if (!message.match(items[i].attributes['errorMessage'].value)) {
                message += items[i].attributes['errorMessage'].value;
                message += '<br />';
            }
            items[i].className = items[i].className + ' mark';
            clientside_arguments.IsValid = false;
        }
    }
    items = getByClass(document, 'checkBox');
    for (i = 0; i < items.length; i++) {
        if (items[i].attributes['errorMessage']) {
            var control = items[i].getElementsByTagName("input")[0];
            if (!control.checked) {
                message += items[i].attributes['errorMessage'].value;
                message += '<br />';
                items[i].style['border'] = 'solid 1px #ff0000';
                clientside_arguments.IsValid = false;
            }
            else {
                items[i].style['border'] = 'none';
            }
        }
    }
    if (!clientside_arguments.IsValid) {
        message = message.substring(0, message.length - 6);
        message += '</p>';
        Sexy.error(message);
    }
}

function validationSend(source, clientside_arguments) {
    var items = getByClass(document, 'required');
    var message = '<p style="margin:0;padding-top:10px;">';
    for (i = 0; i < items.length; i++) {
        if (items[i].value == '' &&
            items[i].attributes['errorMessage']) {
            message += items[i].attributes['errorMessage'].value;
            message += '<br />';
            clientside_arguments.IsValid = false;
        }
    }
    items = getByClass(document, 'valid');
    for (i = 0; i < items.length; i++) {
        var reg = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
        if ((items[i].value == '' || !reg.test(items[i].value)) &&
            items[i].attributes['errorMessage']) {
            message += items[i].attributes['errorMessage'].value;
            message += '<br />';
            clientside_arguments.IsValid = false;
        }
    }
    if (!clientside_arguments.IsValid) {
        message = message.substring(0, message.length - 6);
        message += '</p>';
        Sexy.error(message);
    }
}
function getMap(id, latitude, longtitude) {
    document.getElementById("mapgoogle" + id).parentNode.parentNode.style['display'] = '';
    initialize("mapgoogle" + id, latitude, longtitude);
}

function calculatePrice(select, container) {
    var items = container.getElementsByTagName("input");
    var price = parseFloat(select.options[select.selectedIndex].getAttribute('price'));
    var ids = '';
    for (i = 0; i < items.length; i++) {
        if (!items[i].disabled && items[i].checked) {
            price += parseFloat(items[i].getAttribute('price'));
            ids = ids + items[i].getAttribute('priceid') + ',';
        }
    }
    document.getElementById('spTotal').innerHTML = price.toFixed(2).toLocaleString();
    container.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getElementsByTagName('input')[0].value = ids.length > 0 ? ids.substring(0, ids.length - 1) : '';
}

function hideContainers(select) {
    for (i = 0; i < select.options.length; i++) {
        document.getElementById('meals' + select.options[i].value).style['display'] = i == select.selectedIndex ? '' : 'none';
    }
}
