﻿var LatitudiniComuni = new Array();
var LongitudiniComuni = new Array();
var LinkElenco = new Array();

var ProgressiviCampeggi = '';

jQuery.fn.sort = function() {
    return this.pushStack([].sort.apply(this, arguments), []);
};

$(document).ready(function () {

    // disabilito subito i pulsanti di selezione
    $("#link select").attr("disabled", "disabled");
    $("#OrdinaComuni select").attr("disabled", "disabled");

    // elenco campeggi
    $.ajax({
        type: "GET",
        url: "/componenti/template.txt",
        dataType: "txt",
        success: function (xml) {
            templateCampeggio = xml;
        }
    });




    $(window).load(function () {
        var campeggiComune;

        $.getJSON(PaginaElenco + '?progressivoregione=' + progressivoRegione, {}, function (result) {
            $.each(result, function (i, comune) {
                campeggiComune = "";
                LatitudiniComuni["div" + comune.IdCom] = CoordinataStandard(comune.Lat);
                LongitudiniComuni["div" + comune.IdCom] = CoordinataStandard(comune.Lon);

                $.each(comune.Campeggi, function (iC, itemC) {
                    campeggio = templateCampeggio;
                    campeggiComune += CaricaCampeggio(campeggio, itemC);
                    //alert(campeggiComune);
                });
                //alert(campeggiComune);
                $("#divCampeggi" + comune.IdCom).html(campeggiComune);
            });



            $("#DivOrdinamenti").css("display", "block");
            $("#DivEvidenziaComuneLoading").css("display", "none");
            $("#link select").attr("disabled", "");
            $("#OrdinaComuni select").attr("disabled", "");

            $("#DivOrdinamenti").css("display", "block");
            $("#DivEvidenziaComuneLoading").css("display", "none");

        });
    });



    $("#OrdinaComuni select").change(function () {

        // resetto lista comuni ed elenchi
        $("#BoxComuni > div").removeClass('BoxComune');
        $("#BoxComuni > div").removeClass('BoxComuneEvidenziato');
        $("#BoxComuni > div").addClass('BoxComune');

        $("#OrdinaComuni select option:selected").each(function () {

            // cambio l'ordine dei comuni in base alla scelta
            switch (this.value) {
                case "nordsud":
                    $('#BoxComuni > div').sort(
                        function ordina(a, b) {
                            var latitudineA = LatitudiniComuni[a.id];
                            var latitudineB = LatitudiniComuni[b.id];
                            return latitudineA < latitudineB ? 1 : -1;
                        }).appendTo('#BoxComuni');
                    break;

                case "sudnord":
                    $('#BoxComuni > div').sort(
                        function ordina(a, b) {
                            var latitudineA = LatitudiniComuni[a.id];
                            var latitudineB = LatitudiniComuni[b.id];
                            return latitudineA > latitudineB ? 1 : -1;
                        }).appendTo('#BoxComuni');
                    break;

                case "estovest":
                    $('#BoxComuni > div').sort(
                        function ordina(a, b) {
                            var longitudineA = LongitudiniComuni[a.id];
                            var longitudineB = LongitudiniComuni[b.id];
                            return longitudineA > longitudineB ? 1 : -1;
                        }).appendTo('#BoxComuni');
                    break;

                case "ovestest":
                    $('#BoxComuni > div').sort(
                        function ordina(a, b) {
                            var longitudineA = LongitudiniComuni[a.id];
                            var longitudineB = LongitudiniComuni[b.id];
                            return longitudineA < longitudineB ? 1 : -1;
                        }).appendTo('#BoxComuni');
                    break;
                case "5":
                    $('#BoxComuni > div').sort(
                        function ordina(a, b) {
                            var nomeComuneA = $("#" + a.id + " > span").eq(0).html();
                            var nomeComuneB = $("#" + b.id + " > span").eq(0).html();
                            return nomeComuneA > nomeComuneB ? 1 : -1;
                        }).appendTo('#BoxComuni');
                    break;
                //$(this).text("Sort Asc");                                                                        
            }

        });

        // seleziono l'elemento nullo della lista
        $("#link select").val("0");
        //RisaltaComune('0');
    });


    $("#link select").change(function () {
        $("#link select option:selected").each(function () {

            if (this.value < 0)
                return;

            // risalta comune

            RisaltaComune(this.value);

            $("#OrdinaComuni select").val("null");

        });
    });
});

function RisaltaInEvidenza() {
}

function RisaltaComune(value) {

    // disabilito i pulsanti di selezione
    $("#link select").attr("disabled", "disabled");
    $("#OrdinaComuni select").attr("disabled", "disabled");

    // imposto la classe standard a tutti i comuni
    $("#BoxComuni > div").removeClass('BoxComuneEvidenziato');
    $("#BoxComuni > div").addClass('BoxComune');


    // seleziono solamente i primi 6 campeggi
    var tuttiCampeggi = $("div#div" + value).html();
    var numeroDiv = $("#div" + value + " > div").size();
    if (numeroDiv >= 5) {
        while (numeroDiv > 0) {
            $("div#div" + value + " > div").eq(4).remove();
            numeroDiv--;
        }
    }


    // imposto la classe BoxComuneSelezionato al divcomune selezionato
    $("div#div" + value).removeClass('BoxComune');
    $("div#div" + value).addClass('BoxComuneSelezionato');

    // ricavo l'altezza del div
    var altezzaComune = $("div#div" + value).height() + 20;

    // effettuo l'animazione
    $("div#div" + value).animate({ top: -altezzaComune }, 2000,
            function() {
                var testoHTML = "<div id=\"" + this.id + "\" class=\"BoxComuneEvidenziato\">" + tuttiCampeggi + "</div>";

                // rimuovo fisicamente il div
                $("div#" + this.id).remove();

                // inserisco il div all'inizio
                $("#BoxComuni").prepend(testoHTML);
                $("#link select").attr("disabled", "");
                $("#OrdinaComuni select").attr("disabled", "");

                $("#DivOrdinamenti").css("display", "block");
                $("#DivEvidenziaComuneLoading").css("display", "none");

            });
    $("#BoxEvidenziaSpaziatore").animate({ "height": altezzaComune }, 2000, function() { $("#BoxEvidenziaSpaziatore").css("height", "0px"); });


}
function CaricaCampeggio(campeggio, itemC) {
    return CaricaCampeggio(campeggio, itemC, false);
}
function CaricaCampeggio(campeggio, itemC, elencoEvidenza) {
    campeggio = Sostituisci(campeggio, "urlpartner", urlPartner);
    campeggio = Sostituisci(campeggio, "nomecampeggio", itemC.Nome);
    if (!itemC.SF) {
        campeggio = Sostituisci(campeggio, "sociofaita", "");
    }

    if (itemC.NStelle > 0) {
        campeggio = Sostituisci(campeggio, "numerostelle", itemC.NStelle);
    }
    else {
        campeggio = Sostituisci(campeggio, "stelle", "&nbsp;");
    }

    if (!itemC.VisDett) {
        campeggio = Sostituisci(campeggio, "tastoinfo", "");
    }
    //else {
        if (itemC.Pub) {
           campeggio = Sostituisci(campeggio, "schedadati", itemC.Cartella + "/schedadati.aspx");
        }
        else {

            if (itemC.Link) {
                campeggio = Sostituisci(campeggio, "cartella", itemC.CartLink);
                campeggio = Sostituisci(campeggio,
                                    "cartellalink",
                                    "http://xbserver.camping.it/registrastatlink/?link=http://" + itemC.SitoPers + "&account=" + itemC.IdCamp + "&auth=" + itemC.Auth);

            }

            campeggio = Sostituisci(campeggio, "schedadati", cartellaElenco + "scheda-" + itemC.IdCamp + ".aspx");
        }
    //}

    if (itemC.Pub) {
        campeggio = Sostituisci(campeggio, "cartella", itemC.Cartella);

        if ($.inArray(progressivoLingua, itemC.Traduzioni) > -1) {
            campeggio = Sostituisci(campeggio, "paginacampeggio", itemC.Cartella + "/");
        }
        else {
            campeggio = Sostituisci(campeggio, "paginacampeggio", PaginaNoLanguage + "?id=" + itemC.IdCamp);
        }

        for (var n = 0; n <= itemC.Traduzioni.length; n++) {
            campeggio = campeggio.replace("<wc@lingua" + itemC.Traduzioni[n] + ">", "");
            campeggio = campeggio.replace("</wc@lingua" + itemC.Traduzioni[n] + ">", "");
        }

        for (var n = 0; n <= 9; n++) {
            campeggio = Sostituisci(campeggio, "lingua" + n, "");
        }
    }
    else {
        if (!itemC.Link) {
            campeggio = Sostituisci(campeggio, "nologo", "");
        }
        campeggio = Sostituisci(campeggio, "nopubblicita", "");
    }

    if ((itemC.Lat.Gra > 0) && (itemC.VisMap)) {
        campeggio = Sostituisci(campeggio, "latgradi", itemC.Lat.Gra);
        campeggio = Sostituisci(campeggio, "latminuti", itemC.Lat.Min);
        campeggio = Sostituisci(campeggio, "latsecondi", itemC.Lat.Sec);
        campeggio = Sostituisci(campeggio, "latsecondidec", itemC.Lat.SecDec);

        campeggio = Sostituisci(campeggio, "longradi", itemC.Lon.Gra);
        campeggio = Sostituisci(campeggio, "lonminuti", itemC.Lon.Min);
        campeggio = Sostituisci(campeggio, "lonsecondi", itemC.Lon.Sec);
        campeggio = Sostituisci(campeggio, "lonsecondidec", itemC.Lon.SecDec);
    }
    else {
        campeggio = Sostituisci(campeggio, "coordinate", "");
        campeggio = Sostituisci(campeggio, "mappa", "");
    }


    campeggio = Sostituisci(campeggio, "telefonifax", TelefoniFax(itemC));

    var indirizzo;

    indirizzo = ((itemC.Ind != ".") ? itemC.Ind + "<br />" : "");

    campeggio = Sostituisci(campeggio, "indirizzo", indirizzo);
    campeggio = Sostituisci(campeggio, "cap", itemC.Loc.Cap);
    campeggio = Sostituisci(campeggio, "cittaeprovincia", itemC.Citta);
    campeggio = Sostituisci(campeggio, "cartellalingua", cartellaLingua);
    campeggio = Sostituisci(campeggio, "codicelingua", codiceLingua);

    campeggio = campeggio.replace(/<wc@(\w)+>/g, "");

    campeggio = campeggio.replace(/<\/wc@(\w)+>/g, "");

    return campeggio;
}

function Sostituisci(str_stringa, str_cerca, str_sostituisci) {
    var LC_stringa = str_stringa.toLowerCase();
    var LC_cerca = str_cerca.toLowerCase();

    var inizio;
    var fine;
    var finale;



    inizio = LC_stringa.indexOf('<wc@' + LC_cerca + '>');
    fine = LC_stringa.indexOf('</wc@' + LC_cerca + '>');

    if ((inizio >= 0) && (fine >= 0)) {
        finale = str_stringa.substr(0, inizio);
        finale += str_sostituisci;
        finale += str_stringa.substr(fine + str_cerca.length + 6, (str_stringa.length - (str_cerca.length + 6)));
    } else {
        finale = str_stringa;
    }

    if (finale.indexOf("<wc@" + LC_cerca + ">") > 0) {
        finale = Sostituisci(finale, str_cerca, str_sostituisci);
    }

    return finale;
}


function TelefoniFax(campeggio) {
    var rigaTelefoni = "";
    var telefoni;
    var faxs;
    var telefoniInvernali;
    var faxsInvernali;


    // controllo telefoni
    var telef = "";
    for (var nTel = 0; nTel < campeggio.ListTel.length; nTel++) {
        telef += MettiPrefisso(campeggio.ListTel[nTel].Num) + " - ";
    }

    
    if (telef.length > 0) {
        telef = telef.slice(0, telef.length - 3);
    }

    if (telef != "") {
        telef = "Tel. " + MettiPrefisso(telef);
    }


    // controllo fax
    var facs = "";
    for (var nFax = 0; nFax < campeggio.ListFax.length;  nFax++) {
        facs += MettiPrefisso(campeggio.ListFax[nFax].Num) + " - ";
    }

    if (facs.length > 0) {
        facs = facs.slice(0, facs.length - 3);
    }
    if (facs != "") {
        facs = " Fax " + MettiPrefisso(facs);
    }

    // controllo tel./fax
    var telfax = "";

    for (var nTel = 0; nTel < campeggio.ListTelFax.length; nTel++) {
        telfax += MettiPrefisso(campeggio.ListTelFax[nTel].Num) + " - ";
    }

    if (telfax.length > 0) {
        telfax = telfax.slice(0, telfax.length - 3);
    }
    if (telfax != "") {
        telfax = " Tel./Fax " + MettiPrefisso(telfax);
    }


    // attacco tutti e inserisco eventuale br
    var telefoniFax = "";



    telefoniFax = telef;

    if ((telefoniFax.length + facs.length) > 80) {
        if (facs.length > 0) {
            telefoniFax += "<br />" + facs;
        }
    }
    else {
        telefoniFax += facs;
    }

    telefoniFax += telfax;

    rigaTelefoni += MettiPrefisso(telefoniFax);



    // controllo telefoni invernali
    var telefInv = "";
    for (var nTel = 0; nTel < campeggio.ListTelInv.length;  nTel++) {
        telefInv += MettiPrefisso(campeggio.ListTelInv[nTel].Num) + " - ";
    }

    if (telefInv.length > 0) {
        telefInv = telefInv.slice(0, telefInv.length - 3);
    }
    if (telefInv != "")
        telefInv = " Tel. " + MettiPrefisso(telefInv);


    // controllo fax invernali
    var faxsInv = "";
    for (var nFax = 0; nFax < campeggio.ListFaxInv.length;  nFax++) {
        faxsInv += MettiPrefisso(campeggio.ListFaxInv[nFax].Num) + " - ";
    }

    if (faxsInv.length > 0) {
        faxsInv = faxsInv.slice(0, faxsInv.length - 3);
    }
    if (faxsInv != "") {
        faxsInv = " Fax " + faxsInv;
    }



    // controllo tel./fax invernali
    var telfaxInv = "";
    for (var nTel = 0; nTel < campeggio.ListTelFaxInv.length;  nTel++) {
        telfaxInv += MettiPrefisso(campeggio.ListTelFaxInv[nTel].Num) + " - ";
    }
    if (telfaxInv.length > 0) {
        telfaxInv = telfaxInv.slice(0, telfaxInv.length - 3);
    }
    if (telfaxInv != "") {
        telfaxInv = " Tel./Fax " + telfaxInv;
    }


    // attacco tutti e inserisco eventuale br
    var telefoniFaxInv = "";

    telefoniFaxInv = telefInv;

    if (faxsInv != telefInv) {
        telefoniFaxInv += telfaxInv;
    }
    else {
        if ((telefoniFaxInv.length + faxsInv.length) > 60) {
            if (faxsInv.length > 0) {
                telefoniFaxInv += "<br />" + faxsInv;
            }
        }
        else {
            telefoniFaxInv += faxsInv;
        }
        telefoniFaxInv += telfaxInv;
    }





    if (telefoniFaxInv != "") {
        rigaTelefoni += "<br />" + periodoChiusura + "<br />";
        rigaTelefoni += MettiPrefisso(telefoniFaxInv + "");
    }
    return rigaTelefoni;
}

function MettiPrefisso(telefono) {
    var prefisso = "+39";
    var _risultato = "";

    if (telefono != "") {
        _risultato = telefono;
    }

    if (!(_risultato.indexOf('+') > -1) &&
        !(_risultato.slice(0, 2) == "00") &&
        !(_risultato == "") &&
        (cartellaLingua != "italy")
        )
    {
        _risultato = prefisso + " " + _risultato;
    }

    

    return _risultato;

}

function CoordinataStandard(coordinata) {
    
    var valore = (((parseInt(coordinata.Sec + separatore + coordinata.SecDec) / 60) + coordinata.Min) / 60) + coordinata.Gra;
    var risultato = Math.round(valore * 100000) / 100000;
    risultato = risultato + "";
    return risultato.replace(',', '.'); // questo perchè google come separatore dei decimali vuole per forza il punto
}

