﻿// File JScript

function UpdateTextbox(objSource, objArgs)
{
    var clientId = objSource.get_element().id;
    clientId = clientId.substring(0, clientId.lastIndexOf("_") + 1);

    var cities = document.getElementById(clientId + "txtCities");
    var country = document.getElementById(clientId + "country");
    var country_city = document.getElementById(clientId + "country_city");
    
    cities.className = (cities.className == 'citta sprite') ? 'citta sprite' : 'citta sprite';
    
    country.value = "";
    country_city.value = "";
}

function UpdateFields(objSource, objArgs)
{
    var clientId = objSource.get_element().id;
    clientId = clientId.substring(0, clientId.lastIndexOf("_") + 1);

    var fullCode = objArgs.get_value();
    var testo;
    
    if (!fullCode) 
    {
        if (objArgs._item.parentElement && objArgs._item.parentElement.tagName == "LI")
        {
          if (objArgs._item.parentElement.attributes["_value"] != null)
            fullCode = objArgs._item.parentElement.attributes["_value"].value;
          else
            fullCode = objArgs._item.parentElement._value;
        }
        else if (objArgs._item.parentElement && objArgs._item.parentElement.parentElement.tagName == "LI")
          fullCode = objArgs._item.parentElement.parentElement.attributes["_value"].value;
        else if (objArgs._item.parentNode && objArgs._item.parentNode.tagName == "LI")
          fullCode = objArgs._item.parentNode._value;
        else if (objArgs._item.parentNode && objArgs._item.parentNode.parentNode.tagName == "LI")
          fullCode = objArgs._item.parentNode.parentNode._value;              
        else
          fullCode = "";
          
        testo = (document.all) ? objArgs._item.parentNode.innerText : objArgs._item.parentNode.textContent;
    }
    else
    {
        testo = (document.all) ? objArgs._item.innerText : objArgs._item.textContent;
    }
    objSource.get_element().value = fullCode;
    
    var country = document.getElementById(clientId + "country");
    var country_city = document.getElementById(clientId + "country_city");
    var cities = document.getElementById(clientId + "txtCities");

    cities.className = 'citta sprite';
    
    if (fullCode == null || fullCode.length == 0)
    {
        cities.value = "";
        country.value = "";
        country_city.value = "";
    }
    else
    {
        country.value = fullCode.substring(0, 2);
        country_city.value = fullCode.substring(3);
        
        fillcomboPoi(clientId + "poi_zone",'poi_'+ country_city.value);
        
        testo = testo.substring(0, testo.indexOf("("));
//        testo = testo.replace("(",", ");
//        testo = testo.replace(")","");
        objSource.get_element().value = testo;
    }
}

function ClientPopulated(sender, e) {
    var behavior = $find('AutoCompleteExH');

    var target = behavior.get_completionList();
    if (behavior._currentPrefix != null)
    {
        var prefix = behavior._currentPrefix.toLowerCase();
        var i;
        for (i = 0; i < target.childNodes.length; i++)
        {
            var sValue = target.childNodes[i].innerHTML.toLowerCase();
            if (sValue.indexOf(prefix) != -1)
            {
                var fstr = target.childNodes[i].innerHTML.substring(0, sValue.indexOf(prefix));
                var pstr = target.childNodes[i].innerHTML.substring(fstr.length, fstr.length + prefix.length);
                var estr = target.childNodes[i].innerHTML.substring(fstr.length + prefix.length, target.childNodes[i].innerHTML.length);
                var mmm1 = estr.substring(0, estr.indexOf(" ("));
                var mmm2 = "<br/><span class='txtSmall'>" + estr.substring(estr.indexOf(" (")+1,estr.length)+ "</span>";
                target.childNodes[i].innerHTML = fstr + '<b>' + pstr + '</b>' + mmm1 + mmm2;
            }
        }
    }
}

function VerificaFormHotel(objSource, objArgs)
{
    var clientIdHotel = document.getElementById("clientIdHotel").value + "_";
    var bValid = true;
    var msgError = "";

    var country = document.getElementById(clientIdHotel + "country");
    var country_city = document.getElementById(clientIdHotel + "country_city");
    var txtCities = document.getElementById(clientIdHotel + "txtCities");
    var date_checkin = document.getElementById(clientIdHotel + "date_checkin");
    var rooms = document.getElementById(clientIdHotel + "rooms");

    var dataToCheck = date_checkin.value.substring(6, 10) + "-" + date_checkin.value.substring(3, 5) + "-" + date_checkin.value.substring(0, 2);

    var data = new Date();
    var anno = data.getFullYear() + '';
    var mese = data.getMonth()+1 + '';
    var giorno = data.getDate() + '';

    if (mese.length == 1)   mese = '0' + mese;
    if (giorno.length == 1) giorno = '0' + giorno;

    var today = anno + '-' + mese + '-' + giorno;

    if (txtCities.value == "")
    {
        msgError += MsgSelectDestCity + "\n";
        bValid = false;
    }
    if (dataToCheck < today)
    {
        msgError += MsgCheckDates + "\n";
        bValid = false;
    }
    
    var adults = document.getElementById(clientIdHotel + "adults");
    var children = document.getElementById(clientIdHotel + "children");
    
    var totPax = parseInt(adults.value) + parseInt(children.value);
    var totChildInf = parseInt(children.value);
    
//    if (rooms.value > adults.value)
//    {
//        msgError += MsgErrorSearchHtlAdtRooms + "\n";
//        bValid = false;
//    }
    
    if (totPax == 0)
    {
        msgError += MsgErrorSearchPaxZero + "\n";
        bValid = false;
    }
    else if (totChildInf == totPax)
    {
        msgError += MsgErrorSearchOnlyPiccoli + "\n";
        bValid = false;
    } 
    
    if (bValid)
    {
        objArgs.IsValid = true;
        MostraSuntoRicercaHotel();
        ShowProgressRicerca();
    }
    else
    {
        objSource.errormessage = msgError;
        objArgs.IsValid = false;
    }           
}

function MostraSuntoRicercaHotel()
{
    var clientIdHotel = document.getElementById("clientIdHotel").value + "_";
    var attendereRiepilogo = document.getElementById("divAttendereRicercaRiepilogo");
    if (attendereRiepilogo != null)
    {
        var txtCities = document.getElementById(clientIdHotel + "txtCities");
        var date_checkin = document.getElementById(clientIdHotel + "date_checkin");
        var date_checkout = document.getElementById(clientIdHotel + "date_checkout");
        var testo = "";
        testo += "<div class='attendere_row'>" + lblCitta + ": " + txtCities.value + "</div>";
        testo += "<div class='attendere_row'>" + lblDateCheckIn + ": " + date_checkin.value + "</div>";
        testo += "<div class='attendere_row'>" + lblDateCheckOut + ": " + date_checkout.value + "</div>";
        attendereRiepilogo.innerHTML = testo;
    }
}

function VerificaFormHotelVolo(objSource, objArgs)
{
    var clientIdVoloHotel = document.getElementById("clientIdVoloHotel").value + "_";
    var bValid = true;
    var msgError = "";

    var nation1 = document.getElementById(clientIdVoloHotel + 'nation1');
    var departure = document.getElementById(clientIdVoloHotel + 'departure');
    var txtDep = document.getElementById(clientIdVoloHotel + 'txtDep');

    if (txtDep.value == "")// || nation1.value == "" || departure.value == "")
    {
        bValid = false;
        msgError += MsgSelectDepApt + "\n";
    }
    
    var nation2 = document.getElementById(clientIdVoloHotel + "nation2");
    var arrive = document.getElementById(clientIdVoloHotel + "arrive");
    var txtArr = document.getElementById(clientIdVoloHotel + 'txtArr');

    if (txtArr.value == "")// || nation2.value == "" || arrive.value == "")
    {
        bValid = false;
        msgError += MsgSelectArrApt + "\n";
    }

    var country = document.getElementById(clientIdVoloHotel + 'country');
    var country_city = document.getElementById(clientIdVoloHotel + 'country_city');
    var txtCities = document.getElementById(clientIdVoloHotel + "txtCities");

    if (txtCities.value == "")
    {
        msgError += MsgSelectDestCity + "\n";
        bValid = false;
    }
    
    //controllo su date troppo inoltrate
    var dataVoloMax = dataConvertiIn(sommaGiorni(dataOggi(), VoliMaxDays),"primaAA");
    var andata = document.getElementById(clientIdVoloHotel + "date_checkin");
    var andataToCheck = dataConvertiIn(andata.value,"primaAA");
    var ritorno = document.getElementById(clientIdVoloHotel + "date_checkout");
    var ritornoToCheck = dataConvertiIn(ritorno.value,"primaAA");
    if (andataToCheck > dataVoloMax || ritornoToCheck > dataVoloMax)
    {
        msgError += MsgErrorFlightSearchMaxDays + "\n";
        bValid = false;
    }
    
    if (txtDep.value == txtArr.value && txtDep.value != "")
    {
        msgError += MsgErrorFlightSearchSameCity + "\n";
        bValid = false;
    }
    
    var rooms = document.getElementById(clientIdVoloHotel + 'rooms');
    
    var adults = document.getElementById(clientIdVoloHotel + "adults");
    var student = document.getElementById(clientIdVoloHotel + "student");
    var youth = document.getElementById(clientIdVoloHotel + "youth");
    var children = document.getElementById(clientIdVoloHotel + "children");
    
    var totGrandi = parseInt(adults.value) + parseInt(student.value) + parseInt(youth.value);
    var totPax = (parseInt(adults.value) + parseInt(student.value) + parseInt(youth.value) + parseInt(children.value))*parseInt(rooms.value);
    var totChildInf = parseInt(children.value);
    
    if (totPax == 0)
    {
        msgError += MsgErrorSearchPaxZero + "\n";
        bValid = false;
    }
    else if (totChildInf == totPax)
    {
        msgError += MsgErrorSearchOnlyPiccoli + "\n";
        bValid = false;
    }
    
    if (totPax > VoliMaxPax)
    {
        msgError += MsgErrorFlightSearchMaxPax + "\n";
        bValid = false;
    }

    if (bValid)
    {
        objArgs.IsValid = true;
        MostraSuntoRicercaHotelVolo();
        ShowProgressRicerca();
    }
    else
    {
        objSource.errormessage = msgError;
        objArgs.IsValid = false;
    }   
}

function MostraSuntoRicercaHotelVolo()
{
    var clientIdVoloHotel = document.getElementById("clientIdVoloHotel").value + "_";
    var attendereRiepilogo = document.getElementById("divAttendereRicercaRiepilogo");
    if (attendereRiepilogo != null)
    {
        var txtDep = document.getElementById(clientIdVoloHotel + "txtDep");
        var txtArr = document.getElementById(clientIdVoloHotel + "txtArr");
        var txtCities = document.getElementById(clientIdVoloHotel + "txtCities");
        var date_checkin = document.getElementById(clientIdVoloHotel + "date_checkin");
        var date_checkout = document.getElementById(clientIdVoloHotel + "date_checkout");
        var testo = "";
        testo += "<div class='attendere_row'>" + lblFrom + ": " + txtDep.value + "</div>";
        testo += "<div class='attendere_row'>" + lblTo + ": " + txtArr.value + "</div>";
        testo += "<div class='attendere_row'>" + lblHotelDestination + ": " + txtCities.value + "</div>";
        testo += "<div class='attendere_row'>" + lblHotelArrive + ": " + date_checkin.value + "</div>";
        testo += "<div class='attendere_row'>" + lblHotelDeparture + ": " + date_checkout.value + "</div>";
        attendereRiepilogo.innerHTML = testo;
    }
}

function CheckEmptyCity(val)
{
    var clientIdHotel = val.substring(0, val.lastIndexOf("_") + 1);

    val = document.getElementById(val);
    if (val.value.length==0)
    {
        var country = document.getElementById(clientIdHotel + "country");
        var country_city = document.getElementById(clientIdHotel + "country_city");
        country.value="";
        country_city.value="";
    }
}

function VerificaSelezione(objSource, objArgs)
{
    var clientId = objSource.get_element().id;
    clientId = clientId.substring(0, clientId.lastIndexOf("_") + 1);

    var country = document.getElementById(clientId + "country");
    var country_city = document.getElementById(clientId + "country_city");
    var txtCities = document.getElementById(clientId + "txtCities");

    if (country.value == "" || country_city.value == "")
    {
        //alert(MsgSelectDestCity);
        //txtCities.value = "";
        txtCities.className = 'citta sprite';
        country.value="";
        country_city.value="";
        txtCities.focus();
    }
    else
    {
        //
    }
}

function SetReturnDate(num,objSource,MsgStart)
{
    var clientId;
    var retoday;
    if (num == 1)
    {
        clientId = document.getElementById('clientIdVoloHotel').value + "_";
        var txtDataMinimum = document.getElementById(clientId + "txtDataMinimum");
        retoday = txtDataMinimum.value;
    }
    else
    {
        var data = new Date();
        var anno = data.getFullYear() + '';
        var mese = data.getMonth()+1 + '';
        var giorno = data.getDate() + '';
        if (mese.length == 1) mese = '0' + mese;
        if (giorno.length == 1) giorno = '0' + giorno;
        retoday = sommaGiorni(giorno + "-" + mese + "-" + anno, num);
        clientId = document.getElementById('clientIdHotel').value + "_";
    }
    var today =  dataConvertiIn(retoday, "primaAA");

    var andata = document.getElementById(clientId + "date_checkin");
    var ritorno = document.getElementById(clientId + "date_checkout");
    var nights = document.getElementById(clientId + "nights").value;
    
    var andataToCheck = dataConvertiIn(andata.value, "primaAA");
    var ritornoToCheck = dataConvertiIn(ritorno.value, "primaAA");
    
    if (!checkDate(andata.value))
    {
        alert(MsgCheckDates);
        selezionaCampo(andata, true);
        return;
    }
    else if (!checkDate(ritorno.value))
    {
        alert(MsgCheckDates);
        selezionaCampo(ritorno, true);
        return;
    }

    if (andataToCheck < today)
    {
        alert(MsgStart);
        andata.value = retoday;
    }
    else if (ritornoToCheck < today)
    {
        alert(MsgErrorSearchCheckInAfterCheckOut);
        ritorno.value = sommaGiorni(andata.value, parseInt(nights,10));
    }
    else if (ritornoToCheck <= andataToCheck)
    {
        if (objSource == ritorno) alert(MsgErrorSearchCheckInAfterCheckOut);
        ritorno.value = sommaGiorni(andata.value, parseInt(nights,10));
    }

    SetNights(clientId);
}

function SetReturnDateHotel(objSource)
{       
    SetReturnDate(0,objSource,MsgErrorCheckInMinDate);
}

function SetReturnDateVoloHotel(objSource) {
    var num = 1;
    var clientId = document.getElementById('clientIdVoloHotel').value + "_";    
    var tipovolo = document.getElementById(clientId + 'tipovolo_1');//0=A/R,1=solo A
    var txtDataMinimum = document.getElementById(clientId + "txtDataMinimum");
    var retoday = txtDataMinimum.value;
    
    var today = dataConvertiIn(retoday, "primaAA");

    var andata = document.getElementById(clientId + "andata");
    var ritorno = document.getElementById(clientId + "ritorno");
    var date_checkin = document.getElementById(clientId + "date_checkin");
    var date_checkout = document.getElementById(clientId + "date_checkout");
    var nights = document.getElementById(clientId + "nights").value;

    var andataToCheck = dataConvertiIn(andata.value, "primaAA");
    var ritornoToCheck = dataConvertiIn(ritorno.value, "primaAA");
    var date_checkinToCheck = dataConvertiIn(date_checkin.value, "primaAA");
    var date_checkoutToCheck = dataConvertiIn(date_checkout.value, "primaAA");

    if (!checkDate(andata.value) || (!checkDate(ritorno.value) && !tipovolo.checked) || !checkDate(ritorno.value) || !checkDate(ritorno.value)) {
        alert(MsgCheckDates);
        return;
    }
    
    var bAvvisato = false;
    if (andataToCheck < today) {
        if (!bAvvisato) alert(MsgErrorDepMinDate);
        bAvvisato = true;
        andata.value = retoday;
    }
    else if (ritornoToCheck < today && !tipovolo.checked) {
        if (!bAvvisato) alert(MsgErrorSearchCheckInAfterCheckOut);
        bAvvisato = true;
        ritorno.value = sommaGiorni(andata.value, parseInt(nights, 10));
    }
    if (ritornoToCheck <= andataToCheck && !tipovolo.checked) {
        if (objSource == ritorno && !bAvvisato) alert(MsgErrorSearchCheckInAfterCheckOut);
        bAvvisato = true;
        ritorno.value = sommaGiorni(andata.value, parseInt(nights, 10));
    }
    
    if (date_checkinToCheck < andataToCheck) {
        date_checkin.value = andata.value;
        if (objSource == date_checkin && !bAvvisato) alert(MsgErrorHotelDateInFlighDate);
        bAvvisato = true;
    }
    if (date_checkoutToCheck > ritornoToCheck && !tipovolo.checked) {
        date_checkout.value = ritorno.value;
        if (objSource == date_checkout && !bAvvisato) alert(MsgErrorHotelDateInFlighDate);
        bAvvisato = true;
    }
    if (date_checkoutToCheck <= date_checkinToCheck) {
        date_checkout.value = sommaGiorni(date_checkin.value, parseInt(nights, 10));
        if (!bAvvisato) alert(MsgErrorSearchCheckInAfterCheckOut);
        bAvvisato = true;
    }

    SetNights(clientId);
}

function SetNights(clientId)
{
    var date_checkin = document.getElementById(clientId + "date_checkin");
    var date_checkout = document.getElementById(clientId + "date_checkout");
    var nights = document.getElementById(clientId + "nights");
    var notti = document.getElementById(clientId + "lblNotti");
    
    var date2 = new Date(date_checkout.value.substring(6, 10), date_checkout.value.substring(3, 5) - 1, date_checkout.value.substring(0, 2));
    var date1 = new Date(date_checkin.value.substring(6, 10), date_checkin.value.substring(3, 5) - 1, date_checkin.value.substring(0, 2));

    if (!(date2 > date1))
    {
        if (date2==date1) alert(MsgErrorHotelMinDays)
        sommaData(date_checkin.value, nights.value, clientId + "date_checkout");
        //$find('calExt2').set_selectedDate(Date.parseLocale(date_checkout.value, "dd-MM-yyyy"));
    }
    else
    {       
        var ONE_DAY = 1000 * 60 * 60 * 24;

        var date1_ms = date1.getTime();
        var date2_ms = date2.getTime();

        var difference_ms = Math.abs(date1_ms - date2_ms);

        nights.value = Math.round(difference_ms/ONE_DAY);
        notti.innerHTML = nights.value;
    }
}

function CheckRange(val, clientIdParziale)
{
    var clientId = document.getElementById("clientId" + clientIdParziale).value + "_";
    var minRate = document.getElementById(clientId + "minRate");
    var maxRate = document.getElementById(clientId + "maxRate");
    
    if (maxRate.value != "")
    {
        if (val=="min")
        {
            if (Math.round(minRate.value) >= Math.round(maxRate.value))
            {
                var selIndex = minRate.selectedIndex;
                maxRate.value = maxRate.options[selIndex].value;
                CheckRangeShowValue(maxRate);
            }
        }
        else if (val=="max")
        {
            if (Math.round(minRate.value) >= Math.round(maxRate.value))
            {
                var selIndex = maxRate.selectedIndex;
                minRate.value = minRate.options[selIndex].value;
                CheckRangeShowValue(minRate);
            }
        }
    }
}

function CheckRangeShowValue(control)//per RyanFait
{
    option = control.getElementsByTagName("option");
    for (d = 0; d < option.length; d++) {
        if (option[d].selected == true) {
            document.getElementById("select" + control.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
        }
    }
}
