$(document).ready(function() {
     // precarico le immagini
    $.preloadImages([WS_ROOT+'immagini/sfondo_trailer.png',WS_ROOT+'immagini/sfondo_libro.png',WS_ROOT+'immagini/sfondo_festa.png',WS_ROOT+'immagini/info_down.png',WS_ROOT+'immagini/news_down.png',WS_ROOT+'immagini/festa_per_futuri_sposi_down.png']);

     // carico la pulsantiera in flash
    caricaPulsantiera('profilo.php');
    caricaPagina('profilo.php');

    // evento mouseover e mouseout per le immagini link
    inizializzaMenuAltoDx();
    // evento click per le immagini link
    $('#linkTop a').click(function() {
        inizializzaMenuAltoDx(); //ripristino tutto allo stato iniziale
        caricaPagina($(this).attr('href'));
        var immagine = $(this).find('img');
        immagine.unbind().attr('src',immagine.attr('src').replace('up','down'));
        return false;
    });
});

/*****************************************************
    FUNZIONI GENERALI
******************************************************/
function caricaPulsantiera(pagina) {
    var so = new SWFObject(WS_ROOT+'swf/pulsantiera.swf','mpl','100%','100%','9');
    so.addParam('wmode','transparent');
    so.addVariable('paginaAttiva',pagina);
    so.write('pulsantiera');
}

function caricaPagina(pagina) {
    // ripulisco i setInterval e il loading delle foto del profilo
    clearInterval(timeoutFotoProfilo);
    clearInterval(intervalTrailer);
    $('#loadingFotoGrande').hide();
    // carico o tolgo il player mp3 in base alla pagina
    switch(pagina) {
        case "libroFotografico.php":
        case "fotoGallery.php":   
            caricaMp3(); break;
        default: togliMp3(); break;
    }
    // carico la pagina con AJAX
    $('#loadingPagina').show();
    $('#pagina').css({visibility:'hidden'}).load(WS_ROOT+'scripts/pagine/'+pagina, null, function() {
        $('#loadingPagina').hide();
        $('#pagina').css({visibility:'visible'});
        // modifico i menu a seconda della pagina caricata
        if(pagina == 'profilo.php' || pagina == 'trailer.php' || pagina == 'libroFotografico.php' ||
        pagina == 'fotoGallery.php' || pagina == 'videoGallery.php' || pagina == 'link.php') {
            inizializzaMenuAltoDx();
        }
        if(pagina == 'info.php' || pagina == 'news.php' || pagina == 'festa.php') {
            caricaPulsantiera('');
        }
        // carico le classi per le pagine particolari
        $('#contenitore').removeClass('sfondo_trailer').removeClass('sfondo_libro');
        if(pagina == 'trailer.php') {
            $('#contenitore').addClass('sfondo_trailer');
        } else if(pagina == 'libroFotografico.php') {
            $('#contenitore').addClass('sfondo_libro');
        }
    });
}

function inizializzaMenuAltoDx() {
    $('#linkTop a img').unbind().hover(
        function() {
            var oggetto = $(this);
            oggetto.attr('src',oggetto.attr('src').replace('up','down'));
        },
        function() {
            var oggetto = $(this);
            oggetto.attr('src',oggetto.attr('src').replace('down','up'));
        }
    ).each(function() {
        $(this).attr('src', $(this).attr('src').replace('down','up'));
    });
}

function caricaMp3() {
    if(indirizzoMusica.length > 0 && $('#playerMusica').html().length == 0) {
        var so = new SWFObject(WS_ROOT+'swf/player_musica.swf','mpl','100%','100%','9');
        so.addParam('wmode','transparent');
        so.addVariable('mp3',indirizzoMusica);
        so.write('playerMusica');
    }
}

function togliMp3() {
    $('#playerMusica').html('');
}

function rand(n) {
    // crea un numero da 1 a n
    return ( Math.floor ( Math.random ( ) * n + 1 ) );
}

$.postJSON = function(url, data, callback) {
    $.post(url, data, callback, "json");
};

if (!Array.indexOf) {
  Array.prototype.indexOf = function (obj, start) {
    for (var i = (start || 0); i < this.length; i++) {
      if (this[i] == obj) {
        return i;
      }
    }
  }
}

/*****************************************************
    VARIABILI GENERALI
******************************************************/
var timeoutFotoProfilo = null;
var intervalTrailer = null;
var ultimoLatoFotoProfilo = 4;
var fotoCaricate = 0;

/*****************************************************
    FUNZIONI RELATIVE ALLA PAGINA PROFILO
******************************************************/
function caricaFilmatoProfilo(file) {
    var so = new SWFObject(WS_ROOT+'swf/player.swf?rand='+rand(10000),'mpl','100%','100%','9');
    so.addParam('allowfullscreen','true');
    so.addParam('allowscriptaccess','always');
    so.addParam('wmode','opaque');
    so.addVariable('file','../public/profilo/'+file);
    so.addVariable('autostart','true');
    so.addVariable('backcolor','000000');
    so.addVariable('frontcolor','FFFFFF');
    so.addVariable('repeat','always');
    so.write('filmatoProfilo');
}

function caricaFotoProfilo() {
    var fotoCaricate = 0;
    $('#loadingFotoGrande').fadeIn('slow');
    var listaFoto = $('#slideshow img').css({opacity:'0.0'}).load(function() {
        fotoCaricate += 1;
        // se ha finito di caricare tutte le foto, faccio partire lo slideshow..
        if(fotoCaricate == $('#slideshow img').length) {
            $('#loadingFotoGrande').fadeOut('slow');
            $('#slideshow img:first').css({opacity:'0.0',left:'538px'}).addClass('active')
                .animate({opacity:'1.0'},{queue:false, duration:2000},'linear').animate({left:0},1500,'easeInOutQuart');
            if(listaFoto.length > 1) {
                timeoutFotoProfilo = setInterval('scambiaFotoProfilo()',6000);
            }
        }
    });
}
function scambiaFotoProfilo() {
    // prendo la foto attualmente attiva
    var active = $('#slideshow img.active');
    // prendo la prossima foto in maniera random
    var next = null;
    do {
        var sibs  = active.siblings();
        var rndNum = Math.floor(Math.random() * sibs.length);
        next  = $(sibs[ rndNum ]);
    } while(next==null || next.attr('id')==active.attr('id'))
    // scelgo il lato su cui eseguire l'animazione
    var lato = 0;
    do {
        lato = rand(4);
    } while(lato == ultimoLatoFotoProfilo);
    ultimoLatoFotoProfilo = lato;
    switch(lato) {
        case 1: next.css({top:'-447px',left:0}); break;
        case 2: next.css({top:'447px',left:0}); break;
        case 3: next.css({left:'-538px',top:0}); break;
        case 4: next.css({left:'538px',top:0}); break;
    }
    // eseguo l'animazione
    active.addClass('last-active');
    next.css({opacity:'0.1'}).addClass('active')
        .animate({top:0,left:0},{queue:false,duration:1500},'easeInOutQuart')
        .animate({opacity:'1.0'},2000,'linear',function() {
            active.removeClass('active').removeClass('last-active');
        });
}
/* dissolvenza
function caricaFotoProfilo() {
    var fotoCaricate = 0;
    $('#loadingFotoGrande').fadeIn('slow');
    var listaFoto = $('#slideshow img').css({opacity:'0.0'}).load(function() {
        fotoCaricate += 1;
        // se ha finito di caricare tutte le foto, faccio partire lo slideshow..
        if(fotoCaricate == $('#slideshow img').length) {
            $('#loadingFotoGrande').fadeOut('slow');
            $('#slideshow img:first').css({opacity:'0.0'}).addClass('active').animate({opacity:'1.0'},1500);
            if(listaFoto.length > 1) {
                timeoutFotoProfilo = setInterval('scambiaFotoProfilo()',6000);
            }
        }
    });
}
function scambiaFotoProfilo() {
    // prendo la foto attualmente attiva
    var active = $('#slideshow img.active');
    // prendo la prossima foto in maniera random
    var sibs  = active.siblings();
    var rndNum = Math.floor(Math.random() * sibs.length);
    var next  = $(sibs[ rndNum ]);
    // eseguo l'animazione
    active.addClass('last-active');
    next.css({opacity:'0.0'}).addClass('active').animate({opacity:'1.0'},1500);
    active.animate({opacity:'0.0'},1500, function() {
       active.removeClass('active').removeClass('last-active');
    });
}
*/
/*****************************************************
    FUNZIONI RELATIVE ALLA PAGINA GALLERY
******************************************************/
var jsonGallery = null;

function caricaGallery(pagina) {
    $.getJSON(WS_ROOT+'scripts/inclusioni/fileGallery.php', { pagina:pagina }, function(json,status) {
        if(status == 'success') {
            jsonGallery = json.file;
            if(json.file.length > 0) {
                // carico le foto, ma se è IE di merda, le carico tramite ajax insieme all'html
                if(!$.browser.msie) {
                    resettaFotoGallery();
                    // creo un array che mi informa se un placeHolder è stato già utilizzato o meno
                    var arrayUtilizzato = new Array();
                    for(i=0; i<json.file.length; i++) {
                        arrayUtilizzato[''+i+''] = false;
                    }
                    // inserisco le foto in maniera casuale
                    var contatore = 0;
                    while(contatore < json.file.length) {
                        var finito = false;
                        while(!finito) {
                            var idRandom = rand(json.file.length)-1;
                            if(!arrayUtilizzato[idRandom]) {
                                $('#foto_'+idRandom).attr('src',WS_ROOT+'scripts/inclusioni/fotoPiccoleGallery.php?id='+json['file'][idRandom]['id']);
                                arrayUtilizzato[idRandom] = true;
                                finito = true;
                            }
                        }
                        contatore++;
                    }
                    // carico la prima foto grande
                    caricaFotoGallery(0);
                } else {
                    window.totaleFotoCaricate = false;
                    fotoCaricate = 0;
                    $('#contenitoreFotoPiccole').load(WS_ROOT+'scripts/pagine/fotoPiccoleGallery.php?pagina='+pagina, {}, function() {
                        resettaFotoGallery();
                        // quando tutte le foto sono state caricate, carico quella grande
                        $('#contenitoreFotoPiccole img').load(function() {
                            //$('#errori').append('immagine caricata '+$(this).attr('id')+' '+$(this).height()+' '+$(this).width());
                            if($(this).attr('src').indexOf('png_trasparente.png')==-1) {
                                fotoCaricate++;
                                if(fotoCaricate == json.file.length) {
                                    window.totaleFotoCaricate = true;
                                    // carico la prima foto grande
                                    caricaFotoGallery(0);
                                }
                            }
                        });
                    });
                }
                // cambio gli onclick delle pagine
                if(parseInt(pagina) == 1) {
                    $('#frecciaSx').hide();
                } else {
                    $('#frecciaSx').unbind('click').click(function() { caricaGallery(parseInt(pagina)-1); return false }).show();
                }
                if(parseInt(pagina) == parseInt(json.pagine)) {
                    $('#frecciaDx').hide();
                } else {
                    $('#frecciaDx').unbind('click').click(function() { caricaGallery(parseInt(pagina)+1); return false }).show();
                }
            }
        } else {
            alert('si è verificato un errore');
        }
    });
}

function resettaFotoGallery() {
    $('#contenitoreFotoPiccole img').each(function() {
        if(!$.browser.msie) {
            $(this).attr('src',WS_ROOT+'immagini/png_trasparente.png');
        }
        $(this).css({opacity:0.5}).hover(
            function() {
                $(this).animate({opacity:'1.0'},400);
            },
            function() {
                $(this).animate({opacity:'0.5'},400);
            }
        );
    });
}

function caricaFotoGallery(id) {
    if(jsonGallery[id] != undefined) {
        mostraLoadingFlash();
        var urlFoto = WS_ROOT+'scripts/inclusioni/fotoGrandeGallery.php?id='+jsonGallery[id]['id'];
        var urlFotoGrande = WS_ROOT+'scripts/inclusioni/fotoPopUpGallery.php?id='+jsonGallery[id]['id'];
        $("#foto").flashembed({src: WS_ROOT+"swf/foto.swf", wmode: 'transparent'},  {urlFoto: urlFoto});
        $('#contenitoreFoto a').attr('href',urlFotoGrande).attr('title',jsonGallery[id]['titolo']).attr('alt',jsonGallery[id]['titolo']);
    }
}

function caricaFotoGalleryIE(id, titolo) {
    if(id != 0 && window.totaleFotoCaricate) {
        mostraLoadingFlash();
        var urlFoto = WS_ROOT+'scripts/inclusioni/fotoGrandeGallery.php?id='+id;
        var urlFotoGrande = WS_ROOT+'scripts/inclusioni/fotoPopUpGallery.php?id='+id;
        $("#foto").flashembed({src: WS_ROOT+"swf/foto.swf", wmode: 'transparent'},  {urlFoto: urlFoto});
        $('#contenitoreFoto a').attr('href',urlFotoGrande).attr('title',titolo).attr('alt',titolo);
    }
}

function mostraLoadingFlash() {
    $('#loadingFotoGrande').fadeIn('slow');
}
function nascondiLoadingFlash() {
    $('#loadingFotoGrande').fadeOut('slow');
}

/*****************************************************
    FUNZIONI RELATIVE ALLA PAGINA VIDEO GALLERY
******************************************************/
function caricaFilmatoGallery(file) {
    $('#video').flashembed({
            src: WS_ROOT+"swf/player.swf",
            allowfullscreen: 'true',
            allowscriptaccess: 'always',
            wmode: 'transparent'
        }, {
            backcolor: '000000',
            frontcolor: 'FFFFFF',
            autostart: 'true',
            file: '../public/videoGallery/'+file
        }
    );
}

/*****************************************************
    FUNZIONI RELATIVE ALLA PAGINA TRAILER
******************************************************/
function sfarfallaRaggio() {
    var opacita = '0.'+(rand(5)+4);
    $('#raggio').css({opacity:opacita});
}
function sfarfallaRaggioIE() {
    var multiplo = 271;
    //var posizione = -((rand(5)-1)*multiplo); in questo modo viene anche la posizione 0
    var posizione = -(rand(4)*multiplo);
    $('#raggio').css({backgroundPosition:'left '+posizione+'px'});
}
function caricaFilmatoTrailer(file) {
    var so = new SWFObject(WS_ROOT+'swf/player.swf?rand='+rand(10000),'mpl','308','159','9');
    so.addParam('allowfullscreen','true');
    so.addParam('allowscriptaccess','always');
    so.addParam('wmode','opaque');
    //so.addVariable('file',escape('../scripts/pagine/publicFile.php?grp=trailer&file='+file));
    so.addVariable('file','../public/trailer/'+file);
    so.addVariable('autostart','true');
    so.addVariable('backcolor','000000');
    so.addVariable('frontcolor','FFFFFF');
    so.write('video');
}
function avviaAnimazioneRaggio() {
    $('#contenitoreVideo').css({zIndex:0});
    if($.browser.msie)
        intervalTrailer = setInterval('sfarfallaRaggioIE()',20);
    else
        intervalTrailer = setInterval('sfarfallaRaggio()',20);
}
function stoppaAnimazioneRaggio() {
    clearInterval(intervalTrailer);
    $('#contenitoreVideo').css({zIndex:50});
}

/*****************************************************
    FUNZIONI RELATIVE ALLA PAGINA FESTA
******************************************************/
function caricaFilmatoFesta(file,titolo) {
    $('#contenitoreVideo .titolo').html(titolo);
    var so = new SWFObject(WS_ROOT+'swf/player.swf?rand='+rand(10000),'mpl','100%','100%','9');
    so.addParam('allowfullscreen','true');
    so.addParam('allowscriptaccess','always');
    so.addParam('wmode','transparent');
    so.addVariable('file',WS_ROOT+'public/festa/'+file);
    so.addVariable('autostart','true');
    so.addVariable('backcolor','000000');
    so.addVariable('frontcolor','FFFFFF');
    so.write('video');
}

/*****************************************************
    FUNZIONI RELATIVE ALLA PAGINA INFO
******************************************************/
function spedisciMail() {
    // verifico il form
    if($('#nome').val().length == 0) {
        alert('Il nome è necessario');
        return false;
    }
    if($('#cognome').val().length == 0) {
        alert('Il cognome è necessario');
        return false;
    }
    if($('#email').val().length == 0) {
        alert('La mail è necessaria');
        return false;
    }
    if($('#messaggio').val().length == 0) {
        alert('Il messaggio è necessario');
        return false;
    }
    if(!$("#accetto").attr('checked')) {
        alert('La privacy deve essere accettata');
        return false;
    }
    // mando la mail
    $.postJSON(WS_ROOT+'scripts/inclusioni/mandaMail.php', {
        email: $('#email').val(),
        nome: $('#nome').val(),
        cognome: $('#cognome').val(),
        messaggio: $('#messaggio').val()
    }, function(json, status) {
        if(status=='success' && json['esito']) {
            alert('Il messaggio è stato spedito correttamente.');
        } else {
            alert('Si è verificato un errore');
        }
    });
}

/*****************************************************
    FUNZIONI RELATIVE ALLA PAGINA LIBRO FOTOGRAFICO
******************************************************/
function caricaFotoPagine() {
    var fotoCaricate = 0;
    $('#loadingSlideshow').fadeIn('slow');
    var listaFoto = $('#slideshowPagine img').css({opacity:'0.0'}).load(function() {
        fotoCaricate += 1;
        // se ha finito di caricare tutte le foto, faccio partire lo slideshow..
        if(fotoCaricate == $('#slideshowPagine img').length) {
            $('#loadingSlideshow').fadeOut('slow');
            $('#slideshowPagine img:first').css({opacity:'0.0'}).addClass('active').animate({opacity:'1.0'},1500);
            if(listaFoto.length > 1) {
                timeoutFotoProfilo = setInterval('scambiaFotoPagine()',6000);
            }
        }
    });
}
function scambiaFotoPagine() {
    // prendo la foto attualmente attiva
    var active = $('#slideshowPagine img.active');
    // prendo la prossima foto in maniera random
    var sibs  = active.siblings();
    var rndNum = Math.floor(Math.random() * sibs.length);
    var next  = $(sibs[ rndNum ]);
    // eseguo l'animazione
    active.addClass('last-active');
    next.css({opacity:'0.0'}).addClass('active').animate({opacity:'1.0'},1500);
    active.animate({opacity:'0.0'},1500, function() {
       active.removeClass('active').removeClass('last-active');
    });
}
function chiudiFotoPagine() {
    clearInterval(timeoutFotoProfilo);
}