/**
 * Oggetto listing
 *
 * @class Listing
 * @author lorenzo.caggioni
 */
Listing = function(startId,startPosition) {
    this.init(startId,startPosition);
}
$.extend(Listing.prototype, {
    /**
     * array contenente i dati dell'azienda
     */
    aziendaDati: new Array(),

    /**
     * Identificativo dell'elemento di listing su cui fare il primo focus
     */
    startId:null,

    /**
     * Numero degli elementi nel listing
     */
    numeroElementi:null,

    /**
     * Identificativo dell'elemento correntemente visualizzato
     */
    currentElementId:null,

    /**
     * Elemento in cui visualizzare la posizione dell'elemento su cui viene effettuato il focus
     */
    displayFocusElement:null,

    /**
     * Selettore per il contenitore del listing
     */
    elementList:null,

    /**
     * Selettore per il teplate dell'elemento di listing
     */
    templateElement:null,

    /**
     * Prefisso per le pagine del minisito. Esempio: en per inglese
     */
    prefissoUrl:null,
    
    /**
     * Sito per le pagine in lingua
     */
    host:'',

    /**
     * puntatore ad un elemento GMap
     */
    gmap:null,
    /**
     * Oggetto per la gestione di un listing con lo scroller
     *
     * @starId startId string identificativo dell'oggetto su cui posizionare il focus
     * @author lorenzo.caggioni
     */
    init: function(lang) {
        // A seconda della lingua impostata (lang) scelgo il template
        if (lang == 'en') {
            this.templateElement = templateEn;
            this.prefissoUrl = 'en';
            this.host = 'http://www.agriturismo.it';
        } else if (lang == 'de') {
            this.templateElement = templateDe;
            this.prefissoUrl = 'de';
            this.host = 'http://www.agriturismo.it';
        } else {
            this.templateElement = templateIt;
            this.prefissoUrl = '';
        }
        return true;

    },

    /**
     * Aggiunge un elemento source popolandolo con le informazioni contenute in elemento all'elemto target.
     *
     * @input i integer contatore della posizione
     * @input elemento Json elemento da aggiungere
     * @input source DOM elemento DOM di template
     * @input target DOM elemento DOM a cui aggiungere il template popolato
     * @author lorenzo.caggioni
     */
    addListElement: function(i,elemento) {
        // aggiungo alla lista testuale
        this.aziendaDati[i] = elemento;
    },

    /**
     * Setta l'elemento visualizzato correntemente
     *
     * @input string identificativo dell'elemento corrente
     * @author lorenzo.caggioni
     */
    setCurrentElementId: function(id){
        this.currentElementId = id;
        return true;
    },

    /**
     * Pone il focus sull'oggetto avente come identificativo id
     *
     * @input string identificativo dell'elemento
     * @author lorenzo.caggioni
     */
    focusOnList: function(id,focusFrom){
        var source = $(this.templateElement).clone();
        var target = $(this.elementList);

        $(source).children('.element').attr('id',id);
        $(source).children('.element').attr('agriNome',this.aziendaDati[id].nomeUrl);

        /* Titolo */
        $(source).find('a.sezione').attr('href',this.host+'/'+this.aziendaDati[id].nomeUrl+'/'+this.prefissoUrl+'index.asp');
        $(source).find('div.agriNome h3').html(this.aziendaDati[id].nome);
        $(source).find('div.agriNome h4').html(this.aziendaDati[id].tipologia);

        /* Immagini */
        $(source).find('div.agriFoto img.icona').attr('src',this.host+'/'+this.aziendaDati[id].nomeUrl+'/azienda.jpg');
        $(source).find('div.agriFoto img.icona').attr('alt',this.aziendaDati[id].nome);
        $(source).find('div.agriFoto img.icona').attr('title',this.aziendaDati[id].nome);

        /* abilito le icone necessarie */
        if(this.aziendaDati[id].ristorante == 'true'){$(source).find('div.agriFoto li#ristorante').show();}
        if(this.aziendaDati[id].piscina == 'true'){$(source).find('div.agriFoto li#piscina').show();}
        if(this.aziendaDati[id].animali == 'true'){$(source).find('div.agriFoto li#animali').show();}

        /* abilito i servizi necessari */
        if(this.aziendaDati[id].ristorante == 'true'){$(source).find('div.agriCaratteristiche div#ristorante').show();}
        if(this.aziendaDati[id].piscina == 'true'){$(source).find('div.agriCaratteristiche div#piscina').show();}
        if(this.aziendaDati[id].animali == 'true'){$(source).find('div.agriCaratteristiche div#animali').show();}
        if(this.aziendaDati[id].animali == 'true'){$(source).find('div.agriCaratteristiche div#maneggio').show();}
        if(this.aziendaDati[id].animali == 'true'){$(source).find('div.agriCaratteristiche div#disabili').show();}

        /* Posizione */
        if (this.aziendaDati[id].posizione != "") {
            $(source).find('div.agriDescrizione p.posizione span').html(this.aziendaDati[id].posizione);
        } else {
            $(source).find('div.agriDescrizione p.posizione').html('');
        }
        /* Sistemazione */
        if (this.aziendaDati[id].sistemazione != "") {
            $(source).find('div.agriDescrizione p.sistemazione span').html(this.aziendaDati[id].sistemazione);
        } else {
            $(source).find('div.agriDescrizione p.sistemazione').html('');
        }
        

        /* Commenti */
        $(source).find('div.agriCommenti a').attr('href',$(source).find('div.agriCommenti a').attr('href')+this.aziendaDati[id].id);
        $(source).find('div.agriCommenti img').attr('src',this.host+'/commenti/immagini/voto'+this.aziendaDati[id].commentiMedia+'.gif');
        $(source).find('div.agriCommenti img').attr('alt',$(source).find('div.agriCommenti img').attr('alt')+this.aziendaDati[id].commentiMedia);
        $(source).find('div.agriCommenti img').attr('title',$(source).find('div.agriCommenti img').attr('title')+this.aziendaDati[id].commentiMedia);
        $(source).find('div.agriCommenti span#commenti').html(this.aziendaDati[id].commenti);

        /* Contatta */
        $(source).find('div.agriContatta a').attr('href',this.host+'/'+this.aziendaDati[id].nomeUrl+'/'+this.prefissoUrl+'prenotazioni.asp');

        this.setCurrentElementId(id);
        // aggiorno il display
        $(this.displayFocusElement).html(id+1);
        if(id==0){
            $(this.displayFocusElement).parent().parent().addClass('first');
        } else {
            $(this.displayFocusElement).parent().parent().removeClass('first');
        }
        if(id==this.numeroElementi){
            $(this.displayFocusElement).parent().parent().addClass('last');
        } else {
            $(this.displayFocusElement).parent().parent().removeClass('last');
        }

        // Gestione fadeIn per FF
        if ($.browser.mozilla) {
            $('.element',source).css('display','none');
            $(target).html($(source).html());
            $('.element',target).fadeIn(400);
        } else {
            if(focusFrom=='left'){
                $('.element',target).animate({'left': "+=185px"}, 400);
                // appendo l'elemento
                $('.element',source).css('left','-185px');
                $(target).html($(source).html());
                $('.element',target).animate({'left': "+=185px"}, 400);
            } else {
                $('.element',target).animate({'left': "-=185px"}, 400);
                // appendo l'elemento
                $('.element',source).css('left','185px');
                $(target).html($(source).html());
                $('.element',target).animate({'left': "-=185px"}, 400);
            }
        }
        //$('.element',target).fadeIn(800);

        return true;
    },

    /**
     * Pone il focus sull'elemento successivo
     *
     * @author lorenzo.caggioni
     */
    scrollNext: function(){
        var nextId = this.currentElementId+1;
        if( this.aziendaDati[nextId] != null){
            this.focusOnList(nextId,'right');
            if (this.gmap != null) {
                this.gmap.focusOnMap(nextId);
            }
            this.setCurrentElementId(nextId);
        }
        return true;
    },

    /**
     * Pone il focus sull'elemento precedente
     *
     * @author lorenzo.caggioni
     */
    scrollPrev: function(){
        var prevId = this.currentElementId-1;
        if(this.aziendaDati[prevId] != null) {
            this.focusOnList(prevId,'left');
            if (this.gmap != null) {
                this.gmap.focusOnMap(prevId);
            }
            this.setCurrentElementId(prevId);
        }
        return true;
    }
});


templateIt = '';
templateIt+= '   <div id="templateElement" style="display:none;">';
templateIt+= '       <div id="id" class="element" >';
templateIt+= '           <div class="agriNome">';
templateIt+= '               <a class="sezione" href="#" target="_blank">';
templateIt+= '                   <h3></h3>';
templateIt+= '                   <div class="line">&nbsp;</div>';
templateIt+= '                   <h4></h4>';
templateIt+= '               </a>';
templateIt+= '           </div>';
templateIt+= '           <div class="agriFoto">';
templateIt+= '               <a class="sezione" href="#" target="_blank">';
templateIt+= '                   <img class="icona" src="" alt="" class="foto" title="" />';
templateIt+= '                   <ul class="servizi">';
templateIt+= '                       <li style="display:none;" id="ristorante"><img class="servizi" alt="Ristorante" title="Ristorante" src="/immagini/iconeservizi/ristorante.gif"/></li>';
templateIt+= '                       <li style="display:none;" id="piscina"><img class="servizi" alt="Piscina" title="Piscina" src="/immagini/iconeservizi/piscina.gif"/></li>';
templateIt+= '                       <li style="display:none;" id="animali"><img class="servizi" alt="Animali ammessi" title="Animali ammessi" src="/immagini/iconeservizi/animali.gif"/></li>';
templateIt+= '                   </ul>';
templateIt+= '               </a>';
templateIt+= '           </div>';
templateIt+= '           <div class="agriCaratteristiche">';
templateIt+= '               <div style="display:none;" id="ristorante">Ristorante</div>';
templateIt+= '               <div style="display:none;" id="piscina">Piscina</div>';
templateIt+= '               <div style="display:none;" id="animali">Animali ammessi</div>';
templateIt+= '               <div style="display:none;" id="maneggio">Maneggio</div>';
templateIt+= '               <div style="display:none;" id="disabili">Per disabili</div>';
templateIt+= '               <div id="altri"><a href="#" class="sezione" target="_blank">Altri servizi</a></div>';
templateIt+= '               <a class="sezione" href="#" target="_blank">Pi&ugrave; informazioni</a>';
templateIt+= '           </div>';
templateIt+= '           <div class="line">&nbsp;</div>';
templateIt+= '           <div class="agriDescrizione">';
templateIt+= '               <p class="posizione"><strong>Posizione:</strong>&nbsp;<span class="posizione"></span></p>';
templateIt+= '               <p class="sistemazione"><strong>Alloggio:</strong>&nbsp;<span class="sistemazione"></span></p>';
templateIt+= '           </div>';
templateIt+= '           <div class="line">&nbsp;</div>';
templateIt+= '           <div class="agriCommenti">';
templateIt+= '               <p>Il parere di chi ci &egrave; stato:</p>';
templateIt+= '               <img border="0" alt="Voto " title="Voto " src="/commenti/immagini/voto0.gif" /><br />';
templateIt+= '               <a href="/commenti/visualizza_commenti.asp?id=" target="_blank"><span id="commenti"></span></a>';
templateIt+= '           </div>';
templateIt+= '           <div class="line">&nbsp;</div>';
templateIt+= '           <div class="agriContatta">';
templateIt+= '               <a class="contatta" target="_blank" href="#">Contatta</a>';
templateIt+= '           </div>';
templateIt+= '       </div>';
templateIt+= '   </div>';


templateEn = '';
templateEn+= '   <div id="templateElement" style="display:none;">';
templateEn+= '       <div id="id" class="element" >';
templateEn+= '           <div class="agriNome">';
templateEn+= '               <a class="sezione" href="#" target="_blank">';
templateEn+= '                   <h3></h3>';
templateEn+= '                   <div class="line">&nbsp;</div>';
templateEn+= '                   <h4></h4>';
templateEn+= '               </a>';
templateEn+= '           </div>';
templateEn+= '           <div class="agriFoto">';
templateEn+= '               <a class="sezione" href="#" target="_blank">';
templateEn+= '                   <img class="icona" src="" alt="" class="foto" title="" />';
templateEn+= '                   <ul class="servizi">';
templateEn+= '                       <li style="display:none;" id="ristorante"><img class="servizi" alt="Restaurant" title="Restaurant" src="/immagini/iconeservizi/ristorante.gif"/></li>';
templateEn+= '                       <li style="display:none;" id="piscina"><img class="servizi" alt="Swimming pool" title="Swimming pool" src="/immagini/iconeservizi/piscina.gif"/></li>';
templateEn+= '                       <li style="display:none;" id="animali"><img class="servizi" alt="Pets welcome" title="Pets welcome" src="/immagini/iconeservizi/animali.gif"/></li>';
templateEn+= '                   </ul>';
templateEn+= '               </a>';
templateEn+= '           </div>';
templateEn+= '           <div class="agriCaratteristiche">';
templateEn+= '               <div style="display:none;" id="ristorante">Restaurant</div>';
templateEn+= '               <div style="display:none;" id="piscina">Swimming pool</div>';
templateEn+= '               <div style="display:none;" id="animali">Pets welcome</div>';
templateEn+= '               <div style="display:none;" id="maneggio">Horseback riding</div>';
templateEn+= '               <div style="display:none;" id="disabili">Wheelchair accessible</div>';
templateEn+= '               <div id="altri"><a href="#" class="sezione" target="_blank">Other services</a></div>';
templateEn+= '               <a class="sezione" href="#" target="_blank">More...</a>';
templateEn+= '           </div>';
templateEn+= '           <div class="line">&nbsp;</div>';
templateEn+= '           <div class="agriDescrizione">';
templateEn+= '               <p class="posizione"><strong>Landscape:</strong>&nbsp;<span class="posizione"></span></p>';
templateEn+= '               <p class="sistemazione"><strong>Accomodation:</strong>&nbsp;<span class="sistemazione"></span></p>';
templateEn+= '           </div>';
templateEn+= '           <div class="line">&nbsp;</div>';
templateEn+= '           <div class="agriCommenti">';
templateEn+= '               <p>Traveler rating:</p>';
templateEn+= '               <img border="0" alt="Rating " title="Rating" src="http://www.agriturismo.it/commenti/immagini/voto0.gif" /><br />';
templateEn+= '               <a href="http://www.agriturismo.it/commenti/visualizza_commenti_eng.asp?id=" target="_blank"><span id="commenti"></span></a>';
templateEn+= '           </div>';
templateEn+= '           <div class="line">&nbsp;</div>';
templateEn+= '           <div class="agriContatta">';
templateEn+= '               <a class="contatta" target="_blank" href="#">Contact</a>';
templateEn+= '           </div>';
templateEn+= '       </div>';
templateEn+= '   </div>';


templateDe = '';
templateDe+= '   <div id="templateElement" style="display:none;">';
templateDe+= '       <div id="id" class="element" >';
templateDe+= '           <div class="agriNome">';
templateDe+= '               <a class="sezione" href="#" target="_blank">';
templateDe+= '                   <h3></h3>';
templateDe+= '                   <div class="line">&nbsp;</div>';
templateDe+= '                   <h4></h4>';
templateDe+= '               </a>';
templateDe+= '           </div>';
templateDe+= '           <div class="agriFoto">';
templateDe+= '               <a class="sezione" href="#" target="_blank">';
templateDe+= '                   <img class="icona" src="" alt="" class="foto" title="" />';
templateDe+= '                   <ul class="servizi">';
templateDe+= '                       <li style="display:none;" id="ristorante"><img class="servizi" alt="Restaurant" title="Restaurant" src="/immagini/iconeservizi/ristorante.gif"/></li>';
templateDe+= '                       <li style="display:none;" id="piscina"><img class="servizi" alt="Schwimmbad" title="Schwimmbad" src="/immagini/iconeservizi/piscina.gif"/></li>';
templateDe+= '                       <li style="display:none;" id="animali"><img class="servizi" alt="Haustiere erlaubt" title="Haustiere erlaubt" src="/immagini/iconeservizi/animali.gif"/></li>';
templateDe+= '                   </ul>';
templateDe+= '               </a>';
templateDe+= '           </div>';
templateDe+= '           <div class="agriCaratteristiche">';
templateDe+= '               <div style="display:none;" id="ristorante">Restaurant</div>';
templateDe+= '               <div style="display:none;" id="piscina">Schwimmbad</div>';
templateDe+= '               <div style="display:none;" id="animali">Haustiere erlaubt</div>';
templateDe+= '               <div style="display:none;" id="maneggio">Reitstall</div>';
templateDe+= '               <div style="display:none;" id="disabili">Behindertengerechte Einrichtungen</div>';
templateDe+= '               <div id="altri"><a href="#" class="sezione" target="_blank">Andere Leistungen</a></div>';
templateDe+= '               <a class="sezione" href="#" target="_blank">Mehrere...</a>';
templateDe+= '           </div>';
templateDe+= '           <div class="line">&nbsp;</div>';
templateDe+= '           <div class="agriDescrizione">';
templateDe+= '               <p class="posizione"><strong>Lage:</strong>&nbsp;<span class="posizione"></span></p>';
templateDe+= '               <p class="sistemazione"><strong>Unterbringung:</strong>&nbsp;<br /><span class="sistemazione"></span></p>';
templateDe+= '           </div>';
templateDe+= '           <div class="line">&nbsp;</div>';
templateDe+= '           <div class="agriCommenti">';
templateDe+= '               <p>Reisenden-Bewertung:</p>';
templateDe+= '               <img border="0" alt="Bewertung" title="Bewertung" src="http://www.agriturismo.it/commenti/immagini/voto0.gif" /><br />';
templateDe+= '               <a href="http://www.agriturismo.it/commenti/visualizza_commenti_deu.asp?id=" target="_blank"><span id="commenti"></span></a>';
templateDe+= '           </div>';
templateDe+= '           <div class="line">&nbsp;</div>';
templateDe+= '           <div class="agriContatta">';
templateDe+= '               <a class="contatta" target="_blank" href="#">Kontakt</a>';
templateDe+= '           </div>';
templateDe+= '       </div>';
templateDe+= '   </div>';
