/* globals vars  */
var spec_already_filterded= [];
var ville_already_filtered= [];
var genre_already_filtered= [];
var date_already_filtered= [];

var filterOnGenre = false;
var filterOnDate  = false;
var isRetourOn = false;
/* end globals vars  */

function spectacle(prm, ville) {
	
    var species = new Array('2','7','13','16','23','25','31','36');

    /* cas particuliers */

    var filter=prm.split('_');


    /*if(filter[1]=='41'){
        spectacle_hortus(ville);
    } else{*/
        /* le spectacle est il actif / pas en berne ?*/
        var fond = $(prm).style.backgroundImage;


        if(!$(prm).getElement('img').getProperty('src').match("rond-over")){
            //console.log('ok');

            /* requête 1 pour récuperer la ville */
            var j0= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation.php", {
                onComplete: function(options){

                    if(!ville) {
                        is_villeAlreadyFiltered();
                    }
	
                    /* traitement de la réponse JSON */
                    options.each(function(o){

                        if(!ville){
                            filtre_ville(o.n_ville.toLowerCase());
                            /* mise en valeur de la ville concernée par le spectacle */
                        }
	
                        /* si pas de filtre sur le genre en cours */
                        if(!filterOnGenre){
                            /* virer les genres déjà en surbrillance */
                            is_genreAlreadyFiltered();
		
                            $each(o.genre, function(g){
                                filtre_genre(g)
                            });
                        }

                        if(!filterOnDate){
                            /* virer les genres déjà en surbrillance */
                            is_dateAlreadyFiltered();
		
                            $each(o.dates, function(d){
                                filtre_date(d);
                            });
                        }

                    });
	
                    if(species.indexOf(filter[1])!=-1){
		
                        switch(filter[1]){
		
                            case '7':
                                var charley_dates = new Array('20-5','13-6');
                                exec_species(charley_dates, 'noirlac');
                                break;
			
                            case '2':
                                var balmoderne_dates = new Array('30-5','6-6');
                                exec_species(balmoderne_dates, 'mainvilliers');
                                break;

                            case '36':
                                var sewing_dates = new Array('6-6','7-6','27-6','28-6');
                                exec_species(sewing_dates, 'chaumont');
                                break;

                            case '31':
                                var cinqfois_dates = new Array('13-6','14-6','27-6','28-6');
                                exec_species(cinqfois_dates, 'chaumont');
                                break;

                            case '16':
                                var collection_dates = new Array('18-6','19-6','20-6','21-6');
                                exec_species(collection_dates, 'amboise');
                                break;

                            case '13':
                                var devoris_dates = new Array('20-6','21-6','26-6','27-6','28-6');
                                exec_species(devoris_dates, 'chaumont');
                                break;

                            case '23':
                                var mobile_dates = new Array('20-6','21-6','26-6','27-6','28-6');
                                exec_species(mobile_dates, 'chaumont');
                                break;

                            case '25':
                                var noise_dates = new Array('5-6','6-6','7-6','13-6','14-6','16-6','17-6','18-6','27-6','28-6');
                                exec_species(noise_dates, 'noirlac');
                                exec_species(noise_dates, 'montlouis');
                                exec_species(noise_dates, 'chaumont');
                                break;
                        }
		
                    }
	
                }
            }).send({
                'spectacle': filter[1]
            })
	
	
        /*}*/

    }
}

function filtre(prm){
    
    /* prm contient filtre et index du filtre*/
    var filter=prm.split('_');
    
    /* On peut filtrer par le genre ou par la date */
    if(filter[0]== 'genre'){

        var s={
            'genre': filter[1]
        };
        filterOnGenre = true;
        isRetourOn==true?null: retourOn();
        genre_already_filtered.push(filter[1]);

    }
    else{
        if(filter[0]== 'date'){
            var s={
                'date': filter[1]
            };
            filterOnDate = true;
            isRetourOn==true?null:retourOn();
            is_dateAlreadyFiltered();
            date_already_filtered.push(filter[1]);
      
      
        }
    }
    
    /* requête JSON  */
    var j0= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation.php", {
        onComplete: function(options){

            /* Des spectacles ont il déjà filtés*/
            is_specAlreadyFiltered();
	 
            /* traitement de la réponse JSON */
            options.each(function(o){
	    
                //console.log(o);
                filtre_spectacle(o);
	    
            });
	  
        }
    }).send(s).chain(function(){
	
        /* Une deuxieme requete pour recuperer les villes concernées  */
        var j1= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation.php", {
            onComplete: function(options){
		 
                /* des ville sont elles été déjà filtrées */
                is_villeAlreadyFiltered();

                /*var tab_dates_hortus=new Array('16-5', '17-5','18-5','24-5', '25-5','30-5','31-5','1-6','7-6','8-6','12-6','14-6','20-6','21-6','22-6','27-6','28-6','29-6');

                if(tab_dates_hortus.indexOf(filter[1]!=-1))
                    var hortus=true;*/

                options.each(function(o){
                    // if(!(o=='chinon' && hortus==true))
                    filtre_ville(o);
                });
	    
            }
        }).send({
            'ville':'true'
        });
	     

        /* S'il s'agit du filtre 'genre', il faut une nelle requete pour les dates concernés  */
	
        if(filter[0]=="genre"){
	    
            var j2= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation.php", {
                onComplete: function(options){
		
                    /*des dates  ont elles ete déjà filtrées  */
                    is_dateAlreadyFiltered();
		
                    options.each(function(o){
		    
                        filtre_date(o);;
		    
                    });
			
                }
            }).send({
                'quelles-dates':'true'
            });
	    		
		
        }
	
	
        /* s'il s'agit du filtre 'date', il faut recuperer les genres associer */
        if(filter[0]=="date"){
	    
            is_dateAlreadyFiltered();
            date_already_filtered=[];
		  
            var j2= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation.php", {
                onComplete: function(options){
		
                    /* des genres ont ils été filtés */
                    is_genreAlreadyFiltered();
		
                    options.each(function(o){
                        filtre_genre(o);
		    
                    });
		
                }
            }).send({
                'quel-genre':'true'
            });
        }
	
    });
    
}





function is_specAlreadyFiltered(){

    if(spec_already_filtered.length>0){
        spec_already_filtered.each(function(a){
            document.getElementById('div_'+a).getElements('img').setProperty('src', 'wp-content/themes/white/img/programmation/pastilles_petites/pastille_'+a+'.jpg');
        });
	
        spec_already_filtered= [];
    }
}



function is_villeAlreadyFiltered(){
  
    if(ville_already_filtered.length>0){
        ville_already_filtered.each(function(a){
            document.getElementById(a).toggleClass(a);
            document.getElementById('point-'+a+'-prog').style.display='none';
        });
        ville_already_filtered= [];
    }
  
    else{
        $$('.programmation-cell-left').each(function(e){
            document.getElementById(e.id).toggleClass(document.getElementById(e.id).id);
            document.getElementById('point-'+e.id+'-prog').style.display='none';
        });
    }
}



function is_genreAlreadyFiltered(){
    
    if(genre_already_filtered.length>0){
    
        genre_already_filtered.each(function(a){
            document.getElementById('genre_'+a).style.backgroundColor='transparent';
        });
    
        genre_already_filtered= [];
    }
  
    else{
        $$('.genre').each(function(e){
            document.getElementById(e.id).style.backgroundColor='transparent';
        });
    }
}


function is_dateAlreadyFiltered(){ 

    if(date_already_filtered.length>0){
    
        date_already_filtered.each(function(a){
            document.getElementById('date_'+a).style.color='black';
            document.getElementById('date_'+a).style.fontWeight='normal';
            document.getElementById('date_'+a).style.borderColor= 'white';
        });
    
        date_already_filtered= [];
    }
  
    else{
        $$('.genre').each(function(e){
            document.getElementById(e.id).toggleClass(document.getElementById(e.id).id);
        });
    }

}




function vfiltre_spectacle(o){
	
    //var nville= o.n_ville.toLowerCase();
  
    /* mise en évidence des spectacles filtrés */
    document.getElementById('div_'+o.index).getElements('img').setProperty('src', 'wp-content/themes/white/img/programmation/grand-rond-over.png');
    
    /*on garde de côté les elements filtrés  */
    spec_already_filterded.push(o.index);

}



function filtre_ville(p){
	
    /* mise en évidence des villes présentant les spectacles filtrés  */
    document.getElementById(p).toggleClass(p);
    document.getElementById('point-'+p+'-prog').style.display='block';
    ville_already_filtered.push(p);

}

function filtre_genre(p){

    /* mise en évidence des villes présentant les spectacles filtrés  */
    document.getElementById('genre_'+p).style.backgroundColor='#93117E';
    genre_already_filtered.push(p);
 
}


function filtre_date(p){
  

    /* mise en évidence des villes présentant les spectacles filtrés  */
    document.getElementById('date_'+p).style.color='#93117E';
    document.getElementById('date_'+p).style.fontWeight= 'bold';
    document.getElementById('date_'+p).style.borderColor= '#93117E';
    date_already_filtered.push(p);
}


function retourOn(){
 
    $('div_retour').setStyle('display','block');
    isRetourOn=true;
}

function retourOff(){
  
    var start = new Date();

    is_specAlreadyFiltered();
    is_villeAlreadyFiltered(); //x2
    is_villeAlreadyFiltered();
    is_dateAlreadyFiltered();
    is_genreAlreadyFiltered();

    $$('.programmation-cell-left').each(function(el){
        document.getElementById('point-'+el.id+'-prog').style.display='block';
    });

    $('div_retour').setStyle('display','none');



    isRetourOn=false;
  
    var end = new Date();
//console.log(end-start);

}


/*
 * Renvoie les spectacles pour une ville
 */

// function nVillesSpectacles(){

//   var j0= new Json.Remote("wp-content/themes/white/filtre-programmation.php", {onComplete: function(options){
	
	
//  	/* traitement de la réponse JSON */
// 	options.each(function(o){
	    
// 	    console.log(o);
	    
// 	  });
	
	
//       }}).send({'spectacles_ville':8});

// }

function vfiltre(prm, ville){

 
  
    /* prm contient filtre et index du filtre*/
    var filter=prm.split('_');
  
    /* On peut filtrer par le genre ou par la date */
    if(filter[0]== 'genre'){
    
        var s={
            'genre': filter[1],
            'index_ville':ville
        };
        filterOnGenre =
        true;
        isRetourOn==true?null: retourOn();
        genre_already_filtered.push(filter[1]);
    
    }
    else{
        if(filter[0]== 'date'){
            var s={
                'date': filter[1],
                'index_ville':ville
            };
            filterOnDate
            = true;
            isRetourOn==true?null:retourOn();
            is_dateAlreadyFiltered();
            date_already_filtered.push(filter[1]);
        }
    }
  
  
    /* requête JSON  */
    var j0= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation-ville.php", {
        onComplete: function(options){
	
            /* Des spectacles ont il déjà filtés*/
            is_specAlreadyFiltered();
	
            /* traitement de la réponse JSON */
            options.each(function(o){
                //    console.log(o);
                //vfiltre_spectacle(o, true);
	    
                });
	
	
        }
    }).send(s);


    if(filter[0]== 'genre'){
        var j1= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation-ville.php", {
            onComplete: function(options){
	  
                /*des dates  ont elles ete déjà filtrées  */
                is_dateAlreadyFiltered();
	  
                options.each(function(o){
	      
                    filtre_date(o);
	      
                });
	  
            }
        }).send({
            'quelles-dates':'true',
            'index_ville':ville
        });
    
    }


    if(filter[0]== 'date'){

        var j2= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation-ville.php", {
            onComplete: function(options){
		
                /* des genres ont ils été filtés */
                is_genreAlreadyFiltered();
	  
                options.each(function(o){
	      
                    filtre_genre(o);
	      
                });
	  
            }
        }).send({
            'quel-genre':'true',
            'index_ville':ville
        });
    }

}
       



function vdates(ville){

    var j2= new Json.Remote("wp-content/themes/white/programmation/filtre-programmation-ville.php", {
        onComplete: function(options){
		
            /* des dates  ont elles ete déjà filtrées  */

            is_dateAlreadyFiltered();
	
            options.each(function(o){
		    
                filtre_date(o);
	    
            });
			
        }
    }).send({
        'dates_villes':'true',
        'index_ville':ville
    });
}


function menu_etapes(pk,h) {
                    		      
    var id = pk;
		      
    if(id != 434){ // n'est pas la page principale

        h.each(function(value, key){
			    
            if(id != key){
			      
                $(value).toggleClass(value);
                $(value).getNext().toggleClass('date-'+value);//dates
			      
                $(value).addEvent('mouseover', function(){
				  
                    $(value).toggleClass(value);
                    $(value).getNext().toggleClass('date-'+value);
                    $('point-'+value).setStyle('background','url(wp-content/themes/white/img/etapes/point_'+value+'.gif) no-repeat');// point map
				  
                });
			      
                $(value).addEvent('mouseout', function(){
				  
                    $(value).toggleClass(value);
                    $(value).getNext().toggleClass('date-'+value);//dates
                    $('point-'+value).setStyle('background','none');// point map
				  
                });
			      
            } //if(id != key)
			    
            else{
                $('point-'+value).setStyle('background','url(wp-content/themes/white/img/etapes/point_'+value+'.gif) no-repeat');
            }
			    
        }); //parcours_hash.each()
    }
		      
    else{ // nous sommes sur la page principale
			
        h.each(function(value, key){
            $('point-'+value).setStyle('background','url(wp-content/themes/white/img/etapes/point_'+value+'.gif) no-repeat');
        });
    }
}



function init_prog_ville(n){

    /* evenement sur les genres  */
    $('genres').getChildren().each(function(e){
	
        /* ONCLICK  */
        e.addEvent('click', function(){
	      
            /* tous en gris */
            $('genres').getChildren().each(function(e){
                e.setStyle('background-color','#ccc');
            });
	    
	    
            e.setStyle('background-color','#93117E');
            vfiltre(e.id,8);
	  
        });

        /* onmouseover  */
        e.addEvent('mouseover', function(){
            e.setStyle('background-color','#93117E');
        });

        /* mouseout */
        e.addEvent('mouseout', function(){
            var id = e.id.split('_');
            genre_already_filtered.indexOf(id[1])!=-1?null:e.setStyle('background-color','transparent');
        });
	  
	  
    });
    

    /* evenements sur les dates */
    //   $$('.date').each(function(td){
    //
    //       td.addEvent('click', function(){
    // 	  td.setStyle('color','#93117E');
    // 	  vfiltre(td.id, 8);
    // 	});
    //
    //       td.addEvent('mouseover', function(){
    // 	  td.setStyle('color','#93117E');
    // 	});
    //
    //       td.addEvent('mouseout', function(){
    // 	  var id = td.id.split('_');
    // 	  date_already_filtered.indexOf(id[1])!=-1?null:td.setStyle('color','black');
    // 	});
    //
    //
    //     });

    vdates(n);

  
    /* evenement sur les spectacles */
    $$('.spectacle-ville').each(function(s){
	
        s.addEvent('mouseover', function(){
            spectacle(s.id, n);
        });
 

        /*  on determine l'index  */
        var id = s.id.split('_');

    });

    
    var theTips = new TipsX3 ($$('.spectacle-ville'), {
        showDelay: 500
    });


    /* init bouton retout  */
    $('div_retour').addEvent('click',function(){
        retourOff();
    });

}

function spectacle_hortus(ville){
	
    var hortus_villes= new Array('chinon','bouges','bourges','mainvilliers','saran','tours','amboise','chaumont-sur-loire');
    var tab =new Array();
    if(!ville){
        var hortus_dates = new Array('16-5', '17-5','18-5','24-5', '25-5','30-5','31-5','1-6','7-6','8-6','12-6','14-6','20-6','21-6','22-6','27-6','28-6','29-6');
        tab = hortus_dates;
    }
    else{
        switch(ville){
			
            case 8:
                var dates_chinon= new Array('16-5', '17-5','18-5');
                tab = dates_chinon;
                break;
	
            case 3:
                var dates_bourges= new Array('24-5', '25-5');
                tab = dates_bourges;
                break;
	
            case 2:
                var dates_bouges= new Array('30-5', '31-5','1-6');
                tab = dates_bouges;
                break;
	
            case 5:
                var dates_mainv= new Array('7-6', '8-6');
                tab = dates_mainv;
                break;
	
            case 6:
                var dates_saran= new Array('12-6');
                tab = dates_saran;
                break;
	
            case 7:
                var dates_tours= new Array('14-6');
                tab = dates_tours;
                break;
	
            case 1:
                var dates_amb= new Array('20-6','21-6','22-6');
                tab = dates_amb;
                break;
	
            case 4:
                var dates_chaum= new Array('27-6','28-6','29-6');
                tab = dates_chaum;
                break;
	
        }
    }
    is_villeAlreadyFiltered();
    is_dateAlreadyFiltered();
    is_genreAlreadyFiltered();

    hortus_villes.each(function(ville){
        document.getElementById(ville).toggleClass(ville);
        document.getElementById('point-'+ville+'-prog').style.display='block';
        document.getElementById('genre_5').style.backgroundColor='#93117E';
    });

    tab.each(function(date){
        filtre_date(date);
    });

}


/* traitement des cas particuliers */
function exec_species(tab, ville){

    filtre_ville(ville);
    tab.each(function(date){
        filtre_date(date);
    });
}


