﻿/*  NEW SLIDER JQuery - Oct 2008  */

function slider(cibl) 
{
	/* Fn qui servent pour la transformation des elements[Serch and Replace] */
	function recupLetter(classe) {
		var nbChar = classe.length;
		var letter = classe.substr(nbChar-1);
		return letter;
	}
	function searchTransformClass(classeCss,arg) {
		var checkClasse = classeCss.lastIndexOf(arg);
		return checkClasse;
	}
	function selectAndTransformClass(classeCss) {
		var nbChar = classeCss.length;
		var limit = nbChar-1;
		var classStart = classeCss.substr(0,limit);
		return classStart;
	}
	function checkMiniFA(classe){
		// On récupère la lettre du slider
		var Letter = recupLetter(classe);
		// Verification de l'affichage de la MiniFa
		var checkMiniFA = $(classe).children().next().children().next().children().hasClass("layerB"+Letter);
		return checkMiniFA;
	}
    function viewMiniFA(prid,letter) {
        $("#"+prid).attr("class","layerB"+letter);
        $("#opa"+letter).attr("class","opa");	
    }
	function swapPuce(cible,classe,state,fnOff,fnOn) 
	{
	    if (state == 1) { // cas 1 : Allumer la premiere - Eteindre les 2 autres
	        var verif1 = $(cible,classe).eq(0).hasClass("cent");
	        if (verif1 != false) {
	           $(cible,classe).eq(0).attr("class",fnOn);
	           $(cible,classe).eq(1).attr("class",fnOff);
	           $(cible,classe).eq(2).attr("class",fnOff);
	        }
	    } else if (state == 2) { // cas 2 : Allumer la premiere - Eteindre les 2 autres
	        var verif2 = $(cible,classe).eq(1).hasClass("cent");
	        if (verif2 != false) {
	           $(cible,classe).eq(0).attr("class",fnOff);
	           $(cible,classe).eq(1).attr("class",fnOn);
	           $(cible,classe).eq(2).attr("class",fnOff);
	        }	    
	    } else if (state == 3) { // cas 3 : Allumer la premiere - Eteindre les 2 autres
	        var verif3 = $(cible,classe).eq(2).hasClass("cent");
	        if (verif3 != false) {
	           $(cible,classe).eq(0).attr("class",fnOff);
	           $(cible,classe).eq(1).attr("class",fnOff);
	           $(cible,classe).eq(2).attr("class",fnOn);
	        }		    
	    }
	}
	
	function actSlider(classe){
		// Variables communes
		var nbProd = $("ul.sli li",classe).length;
		var lon = $("ul.sli",classe).width()-40;//2160;
		var widthElement = (lon/nbProd);
		var b = 0;
		var classeOn = "cente";
		var classeOff = "cent";
		// Pagination
		var page1 = 0
		var page2 = lon/3;
		var page3 = 2*page2;
		//- Gestion de l'affichage des puces
		if (nbProd <= 5) {
			$("div span a").eq(1).css("display","none");
			$("div span a").eq(2).css("display","none");
		} else if (nbProd > 5 && nbProd <= 10) {
			b = -674;
			$("div span a").eq(2).css("display","none");
		} else if (nbProd > 10) {
			b = -1400;
		}
		// Limitation du déplacement
		$("div span a img",classe).eq(0).click(function(){ // Btn Left
			var td = $("ul.sli",classe).position();
			posX = td.left;
		    if (posX <= 0 && posX >= -689) {
			    $("div span span",classe).eq(0).attr("class",classeOn);
			    $("div span span",classe).eq(1).attr("class",classeOff);
			    $("div span span",classe).eq(2).attr("class",classeOff);
		    } else if (posX <= -689 && posX >= -1378) {
			    $("div span span",classe).eq(0).attr("class",classeOff);
			    $("div span span",classe).eq(1).attr("class",classeOn);
			    $("div span span",classe).eq(2).attr("class",classeOff);
		    }
			if (posX <= -1) {
				$("ul.sli",classe).animate({left: '+='+widthElement+'px'}, {duration:800});
			}
    		return false;
		});
		$("div span a img",classe).eq(1).click(function(){ // Btn Right
		   
			var td = $("ul.sli",classe).position();
			posX = td.left;
			//- Positionnement 
            if (posX <= 0 && posX >= -660) {
			    $("div span span",classe).eq(0).attr("class",classeOff);
			    $("div span span",classe).eq(1).attr("class",classeOn);
			    $("div span span",classe).eq(2).attr("class",classeOff);
		    } else if (posX <= -674 && posX >= -1213) {
			    $("div span span",classe).eq(0).attr("class",classeOff);
			    $("div span span",classe).eq(1).attr("class",classeOff);
			    $("div span span",classe).eq(2).attr("class",classeOn);
			}	
			if (posX <= 0 && posX >= b) {
				$("ul.sli",classe).animate({left: '-='+widthElement+'px'}, {duration:800});
			}					
			return false;
		});
		// Activation du déplacement par pagination 
		$("div span span",classe).eq(0).click(function(){
			swapPuce("div span span",classe,1,classeOff,classeOn);
			$("ul.sli",classe).animate({left: page1}, 700);
			 return false;
		});
		$("div span span",classe).eq(1).click(function(){
		    swapPuce("div span span",classe,2,classeOff,classeOn);
			$("ul.sli",classe).animate({left: -page2}, 900);
			 return false;
		});
		$("div span span",classe).eq(2).click(function(){
		    swapPuce("div span span",classe,3,classeOff,classeOn);
			$("ul.sli",classe).animate({left: -page3}, 700);
			 return false;
		});
        // Affichage de la première puce
        $("div span span",classe).eq(0).attr("class","cente");
	}
	// Activation du slider
	actSlider(cibl);
	
	// Transformation du slider en mosaique
	function transform(classe) {
		// On récupère la lettre du slider 
		var Letter = recupLetter(classe);
		// On modifie le slider en mosaïque
		var testTransform = $("div",classe).eq(0).next().children().children("div").children().hasClass("sliderGallery"+Letter);
		if (testTransform != false) { //- Mode Slider
		    // on remet le slider au debut 
		    $("ul.sli",classe).animate({left: '0'},500,function(){		
		        // Affichage de la mosaique
		        $("div",classe).eq(0).next().children().children("div").children().attr("class","sliderGallery"+Letter+"2");
		        // On cache/modifie les élements du slider
		            //- Puces
		        $("div span",classe).eq(1).attr("class","cacher");
		            //- Fleches de déplacement
		        $("div",classe).eq(0).next().children().children("div").children().children("div").eq(0).attr("class","cacher");
		            //- Bouton "vue en mosaique"
		        $("div a span",classe).eq(0).attr("class","liste"+Letter+"2");
		            //- Bouton Fleche
		        $("#actG"+Letter,classe).attr("class","depli"+Letter+"2");
		    });
		} else { //- Mode Mosaique
		    // Affichage du slider
		    $("div",classe).eq(0).next().children().children("div").children().attr("class","sliderGallery"+Letter);
		    // On affiche/modifie les élements du slider
		        //- Puces
		    $("div span",classe).eq(1).attr("class","contC"+Letter);
		    $("div span",classe).eq(1).children("span").eq(0).attr("class","cente");
		    $("div span",classe).eq(1).children("span").eq(1).attr("class","cent");
		    $("div span",classe).eq(1).children("span").eq(2).attr("class","cent");
		        //- Fleches de déplacement
            $("div",classe).eq(0).next().children().children("div").children().children("div").eq(0).attr("class","slider"+Letter);
                //- Bouton "vue en mosaique"
            $("div a span",classe).eq(0).attr("class","liste"+Letter);
		        //- Bouton Fleche
		    $("#actG"+Letter,classe).attr("class","depli"+Letter);
		        //- Mini FA
		    $(".layerB"+Letter ,classe).attr("class","layerA"+Letter);
		        //- Calque d'opacite
		    $("#opa"+Letter ,classe).attr("class","opa2");
		}
	}
	// Fn de transformation
	function startTransform(classe){
		var Letter = recupLetter(classe);
		// Fermeture de la miniFA
		function closeFA(prid) {
			$("#"+prid).attr("class","layerA"+Letter);
			$("#opa"+Letter).attr("class","opa2");
		}
		$("div a span",classe).click(function(){
			transform(classe);
			var check = checkMiniFA(classe);
			if (check != false) {
				var prid = $(".layerB"+Letter).attr("id");
				closeFA(prid);
			}
			return false;
		});
		$("div div",classe).eq(0).click(function(){
			transform(classe);
			var check = checkMiniFA(classe);
			if (check != false) {
				var prid = $(".layerB"+Letter).attr("id");
				closeFA(prid);
			}
			return false;
		});

	    function gestionFA(ciblage) {
		    /* Variables communes */
		    var masterClass = $(ciblage).children("div").children("div").children("div").children("div").attr("class");
		    var Letter = recupLetter(masterClass);
    		
		    /* Fonction d'affichage des miniFA */
		    function layoutFA(prid) {// Affichage de la miniFA	
			    var verifState = $(ciblage).children("div").children("div").children("div").children("div").hasClass("sliderGallery"+Letter);
			    if (verifState != false) {
			        // Passage Mode mosaique
				    transform("#slider"+Letter);// transformation du slider
                    setTimeout(function() {viewMiniFA(prid,Letter);},1000); // Affichage de la bonne miniFA
			    } else {
                    viewMiniFA(prid,Letter);// Affichage de la bonne miniFA	
			    }
		    }
		    // Fermeture de la miniFA
		    function closeFA(prid) {
			    $("#"+prid).attr("class","layerA"+Letter);
			    $("#opa"+Letter).attr("class","opa2");
		    }
		    // Attribution des comportement des FA
		    $("ul.sli li",ciblage).each(function(){
			    var ciblageInput = $("input[type=hidden]",this);
			    var id_miniFA = ciblageInput.val();
			    
			    function startViewFA(ciblage,id_miniFA,elem,select){
			    if (select != 1) {
				    var pos = $(elem).parent("a").parent("li").position();
				} else {
				    var pos = $(elem).parent("dt").parent("dl").parent("li").position();
				}
				    var horiz = pos.left-5;
				    var verti = pos.top-5;
				    var stateSlider = $(ciblage).children("div").eq(1).children("div").children("div").children("div").hasClass("sliderGallery"+Letter);
				    
				    var stateSliderTest = $("#sliderGallery"+Letter).attr("class");
				    //hasClass("sliderGallery"+Letter);
				    if (stateSliderTest != "sliderGallery"+Letter){
				        response = false;
				    } else {
				        response = true;
				    }
				    //alert("statut "+Letter+" slider : "+stateSliderTest+" | if : "+response);
				    
				    if (response != true) {
				        //alert("posFA : "+horiz+" | "+verti);
				        if (horiz >= 265 || verti >= 150){
				            if (horiz > 260 && verti > 145){
			                    $("#"+id_miniFA).css("left",260);
			                    $("#"+id_miniFA).css("top",145);
				            } else if (horiz > 260 && verti < 145) {
			                    $("#"+id_miniFA).css("left",260);
			                    $("#"+id_miniFA).css("top",verti);
				            } else if (horiz < 260 && verti > 145) {
			                    $("#"+id_miniFA).css("left",horiz);
			                    $("#"+id_miniFA).css("top",150);
				            }
				        } else {
				            $("#"+id_miniFA).css("left",horiz);
				            $("#"+id_miniFA).css("top",verti);	    
				        }
				    } else {
				        var large = $(elem).parent("a").parent("li").width();
				        //$(this).css("border","1px solid #000;");
				        //alert("start : "+large*1+" | pos1-3 : "+horiz+" | End*3 : "+large*3+" | End*2 : "+large*2);
				         if (horiz < large*1) {
			                $("#"+id_miniFA).css("left",horiz-1);
			                $("#"+id_miniFA).css("top",-5);
			             } else if (horiz > large*1 && horiz < large*2) {
			             	$("#"+id_miniFA).css("left",horiz-10);
			                $("#"+id_miniFA).css("top",-5);
			             } else if (horiz > large*2 && horiz < large*3) {
			             	$("#"+id_miniFA).css("left",horiz-20);
			                $("#"+id_miniFA).css("top",-5);
			             } else if (horiz > (large*3) && horiz < (large*6)) {
				            $("#"+id_miniFA).css("left",255);
				            $("#"+id_miniFA).css("top",-10);
				         } else if (horiz >= (large*6) && horiz < (large*7) || horiz >= (large*12) && horiz < (large*14)) { //1
				            $("#"+id_miniFA).css("left",-10);
				            $("#"+id_miniFA).css("top",145);
				         } else if (horiz >= (large*7) && horiz < (large*8) || horiz >= (large*13) && horiz < (large*15)) { //2
				            $("#"+id_miniFA).css("left",125);
				            $("#"+id_miniFA).css("top",145);
				         } else if (horiz >= (large*8) && horiz <= (large*12) || horiz >= (large*13) && horiz <= (large*15)) { //3
				            $("#"+id_miniFA).css("left",265);
				            $("#"+id_miniFA).css("top",145);
				         } else if (horiz > (large*15)) {
				            $("#"+id_miniFA).css("left",265);
				            $("#"+id_miniFA).css("top",145);
				         }
				    }
                    layoutFA(id_miniFA);
                    LaunchMiniFA(id_miniFA + '|' + Letter);
				    return false;
			   }
			    
			    
			    // Affichage
			    // click sur image
			    $("img",this).click(function(){
			        // alert("ok");
			        startViewFA(ciblageInput,id_miniFA,this,0);
			        return false;
			    });
			    // click sur titre
			    $("dl dt a",this).click(function(){
			        startViewFA(ciblageInput,id_miniFA,this,1);
			        return false;
			    });
			    // Fermeture
			    $(".fermer","#slider"+Letter).click(function(){
				    closeFA(id_miniFA);
				    return false;
			    });
		    });
		        // Gestion du div d'opacité réduite
			    $("#opa"+Letter,cibl).click(function(){
			        var ciblingIdFa = $(".layerB"+Letter,cibl).attr("id");
			        closeFA(ciblingIdFa);
			    });
			    $("#opa"+Letter,cibl).hover(function(){
			        $(this).css("cursor","pointer");
			    },function(){
			        $(this).css("cursor","default");
			    });
	    }
	    gestionFA(cibl);

    }
	// Activation de la fonction de transformation du slider en mosaique
	startTransform(cibl);
}	

function closeFA(prid, letter) 
{
	$("#"+prid).attr("class","layerA"+letter);
	$("#opa"+letter).attr("class","opa2");
}
