/***
mes scripts js
***/

// permet d'incrémenter les zindex pour afficher toujours le dernier en haut
var zindex=2;


// taille finale d'une grossissement
var largeur_max=420;
var hauteur_max=400+20;
var marge=20;

// taille initiale des div
var largeur_initiale=80;
var hauteur_initiale=60;

// id du site zommé
var current_zoom=0;

function grossit(site_id,position_y,position_x,new_pic) {


	var cible_id="site_"+site_id;
	var cible_img="img_"+site_id;
	var cible_tableau="tableau_entourage_"+site_id;

	// on masque la popup du titre
	nd();
	$(cible_img).onmouseover=function() {return overlib("<b>X</b> - Fermer",WIDTH,75)};

	// effet relief
	$(cible_tableau).className="entourage_relief";

	// Récupération de la taille de l'écran et de la position absolue de l'image d'origine
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		largeur_ecran = window.innerWidth;
		hauteur_ecran = window.innerHeight;
		offset_top=window.pageYOffset;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		largeur_ecran = document.documentElement.clientWidth;
		hauteur_ecran = document.documentElement.clientHeight;
		offset_top=document.body.scrollTop;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		largeur_ecran = document.body.clientWidth;
		hauteur_ecran = document.body.clientHeight;
		offset_top=document.body.scrollTop;
	  }
	var position_top=getOffsetPosition(cible_id,'Top');
	var position_left=getOffsetPosition(cible_id,'Left');

	//document.title=position_left +' + ' +(largeur_max/2) +' + '+ (largeur_initiale/2) +' + '+ marge +' < '+ largeur_ecran;

	// calcul décalage horizontal
	if(position_left - (largeur_max/2) < marge ) {
		// placement normal
		//document.title=position_left +' + ' +(largeur_max/2) +' + '+ (largeur_initiale/2) +' + '+ marge +' < '+ largeur_ecran;
		destination_x=marge-(position_left-position_x)  ;
	} else if(position_left + (largeur_max/2) + (largeur_initiale/2) + marge < largeur_ecran) {
		// placement normal
		destination_x=position_x -(largeur_max/2) + (largeur_initiale/2);
	} else {
		//décalage sur la gauche
		destination_x=largeur_ecran -largeur_max -marge -(position_left-position_x);
	}

	//document.title='position_top:'+position_top +' - hauteur_max/2' +(hauteur_max/2) +' - hauteur_initiale:'+ (hauteur_initiale/2) +' - marge:'+ marge +' > hauteur_ecran:'+ hauteur_ecran;
	// calcul décalage vertical
	if(position_top - (hauteur_max/2)  < marge + offset_top ) {
		// decalage vers le bas
		destination_y= marge + offset_top - (position_top-position_y);
		//document.title=" alignement haut";
	} else if(position_top + (hauteur_max/2) > hauteur_ecran + offset_top) {
		// decalage vers le haut
		destination_y= hauteur_ecran +offset_top -hauteur_max -marge -(position_top-position_y);
		//document.title=" alignement bas";
	} else {
		//décalage sur la gauche
		destination_y=position_y - (hauteur_max/2);
		//document.title="aucun alignement";
	}


	
	// passage devant les autres div
	zindex++;
    $(cible_id).style.zIndex=zindex;



	new Effect.Parallel(
		[
		new Effect.Move(cible_id, {x:destination_x , y:destination_y ,duration:0.3, mode:'absolute'},{ sync: true }),
		new Effect.Scale(cible_id, 500, {scaleFromCenter:false,duration:0.3,scaleMode:{ originalHeight: hauteur_initiale, originalWidth: largeur_initiale }}),


		new Effect.Scale(cible_img,500, {scaleFromCenter:false,duration:0.3,scaleMode: { originalHeight: hauteur_initiale, originalWidth: largeur_initiale },afterFinish:function(effect) {
			affiche_texte(site_id);
			display_image(cible_img,new_pic);
		 }})
		], {duration:0.3}
		);


}

function restore(site_id,position_y,position_x,former_pic) {

	if(current_zoom == site_id) current_zoom=0;

	var cible_id="site_"+site_id;
	var cible_img="img_"+site_id;
	var cible_tableau="tableau_entourage_"+site_id;
	//if($(cible_id).offsetWidth <= 82) return;

	var position_top=getOffsetPosition(cible_id,'Top');
	var position_left=getOffsetPosition(cible_id,'Left');
	//document.title=position_left+' : '+position_top;

	masque_texte(site_id);
	new Effect.Parallel(
		[
		new Effect.Move(cible_id, {x:position_x , y:position_y , mode:'absolute',duration:0.5},{ sync: true }),

		new Effect.Scale(cible_id,20, {scaleFromCenter:false,duration:0.5,scaleMode: { originalHeight: 300, originalWidth: 400 }
		}),

		new Effect.Scale(cible_img,20, {scaleFromCenter:false,duration:0.5,scaleMode: { originalHeight: 300, originalWidth: 400 },
		
		afterFinish:function(effect) {
			display_image(cible_img,former_pic);
			// effet relief
			$(cible_tableau).className="entourage";

		 }})
		], {duration:0.5}
		);

	// on réactive la popup du titre
	$(cible_img).onmouseover=function() {return overlib($("site_nom_"+site_id).innerHTML,DELAY,300)};

}

/***
Affiche la description du site
***/
function affiche_texte(site_id) {
	$("texte_"+site_id).className="texte_on";
	Effect.Appear($("texte_"+site_id),{duration:1});
	//Effect.Grow($("texte_"+site_id),{duration:0.4,direction: 'top-left',transition:Effect.Transitions.linear });
}

/***
Masque la description du site
***/
function masque_texte(site_id) {
	$("texte_"+site_id).className="texte_off";
}

/***
Remplace une image par une autre
***/
function display_image(cible_img,new_pic) {
	$(cible_img).src=new_pic;
}


/***
vérifie l'état d'un div avant de la grossir ou la rapetir
***/
function verif_etat(site_id,posy,posx,pic,thumb) {

	var cible_id="site_"+site_id;
	if($(cible_id).offsetWidth <= 90) {

	// verif si besoin de fermer un autre zoom
	
	if( current_zoom != 0 && current_zoom != site_id) {
		//document.title="current_zoom:"+current_zoom;

		var previous_id="img_"+current_zoom;
		var fct=String($(previous_id).onclick);
		myRe=/verif_etat\(([^)]*)\)/;
		listearguments = myRe.exec(fct);
		if(listearguments != null) {
			var tab_argment=listearguments[1].split(",");
			//for(var i=0 ; i < tab_argment.length; i++) {
			//	alert(i+' : '+tab_argment[i].replace(/(')*(")*/gi,''));
			//}
			
			restore(current_zoom,tab_argment[1],tab_argment[2],tab_argment[4].replace(/(')*(")*/gi,''));
		}
	}
	
		current_zoom=site_id;
		grossit(site_id,posy,posx,pic);
	} else {
		restore(site_id,posy,posx,thumb);
	}
}


/***
retourne la position absolue d'un élément dans la page
***/
getOffsetPosition = function(inID, inTYPE) {
 var iVal = 0;
 var oObj = document.getElementById(inID);
 var sType = 'oObj.offset' + inTYPE;
 while (oObj && oObj.tagName != 'BODY') {
  iVal += eval(sType);
  oObj = oObj.offsetParent;
 }
 return iVal;
}


/***
ouvre le site indiqué
***/
function make_click(site_id){
	cible_img="img_"+site_id;
	var fct=String($(cible_img).onclick);
	myRe=/verif_etat\(([^)]*)\)/;
	listearguments = myRe.exec(fct);
	eval(listearguments[0]);
}/***
mes scripts js
***/

// permet d'incrémenter les zindex pour afficher toujours le dernier en haut
var zindex=2;


// taille finale d'une grossissement
var largeur_max=420;
var hauteur_max=400+20;
var marge=20;

// taille initiale des div
var largeur_initiale=80;
var hauteur_initiale=60;

// id du site zommé
var current_zoom=0;

function grossit(site_id,position_y,position_x,new_pic) {


	var cible_id="site_"+site_id;
	var cible_img="img_"+site_id;
	var cible_tableau="tableau_entourage_"+site_id;

	// on masque la popup du titre
	nd();
	$(cible_img).onmouseover=function() {return overlib("<b>X</b> - Fermer",WIDTH,75)};

	// effet relief
	$(cible_tableau).className="entourage_relief";

	// Récupération de la taille de l'écran et de la position absolue de l'image d'origine
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		largeur_ecran = window.innerWidth;
		hauteur_ecran = window.innerHeight;
		offset_top=window.pageYOffset;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		largeur_ecran = document.documentElement.clientWidth;
		hauteur_ecran = document.documentElement.clientHeight;
		offset_top=document.body.scrollTop;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		largeur_ecran = document.body.clientWidth;
		hauteur_ecran = document.body.clientHeight;
		offset_top=document.body.scrollTop;
	  }
	var position_top=getOffsetPosition(cible_id,'Top');
	var position_left=getOffsetPosition(cible_id,'Left');

	//document.title=position_left +' + ' +(largeur_max/2) +' + '+ (largeur_initiale/2) +' + '+ marge +' < '+ largeur_ecran;

	// calcul décalage horizontal
	if(position_left - (largeur_max/2) < marge ) {
		// placement normal
		//document.title=position_left +' + ' +(largeur_max/2) +' + '+ (largeur_initiale/2) +' + '+ marge +' < '+ largeur_ecran;
		destination_x=marge-(position_left-position_x)  ;
	} else if(position_left + (largeur_max/2) + (largeur_initiale/2) + marge < largeur_ecran) {
		// placement normal
		destination_x=position_x -(largeur_max/2) + (largeur_initiale/2);
	} else {
		//décalage sur la gauche
		destination_x=largeur_ecran -largeur_max -marge -(position_left-position_x);
	}

	//document.title='position_top:'+position_top +' - hauteur_max/2' +(hauteur_max/2) +' - hauteur_initiale:'+ (hauteur_initiale/2) +' - marge:'+ marge +' > hauteur_ecran:'+ hauteur_ecran;
	// calcul décalage vertical
	if(position_top - (hauteur_max/2)  < marge + offset_top ) {
		// decalage vers le bas
		destination_y= marge + offset_top - (position_top-position_y);
		//document.title=" alignement haut";
	} else if(position_top + (hauteur_max/2) > hauteur_ecran + offset_top) {
		// decalage vers le haut
		destination_y= hauteur_ecran +offset_top -hauteur_max -marge -(position_top-position_y);
		//document.title=" alignement bas";
	} else {
		//décalage sur la gauche
		destination_y=position_y - (hauteur_max/2);
		//document.title="aucun alignement";
	}


	
	// passage devant les autres div
	zindex++;
    $(cible_id).style.zIndex=zindex;



	new Effect.Parallel(
		[
		new Effect.Move(cible_id, {x:destination_x , y:destination_y ,duration:0.3, mode:'absolute'},{ sync: true }),
		new Effect.Scale(cible_id, 500, {scaleFromCenter:false,duration:0.3,scaleMode:{ originalHeight: hauteur_initiale, originalWidth: largeur_initiale }}),


		new Effect.Scale(cible_img,500, {scaleFromCenter:false,duration:0.3,scaleMode: { originalHeight: hauteur_initiale, originalWidth: largeur_initiale },afterFinish:function(effect) {
			affiche_texte(site_id);
			display_image(cible_img,new_pic);
		 }})
		], {duration:0.3}
		);


}

function restore(site_id,position_y,position_x,former_pic) {

	if(current_zoom == site_id) current_zoom=0;

	var cible_id="site_"+site_id;
	var cible_img="img_"+site_id;
	var cible_tableau="tableau_entourage_"+site_id;
	//if($(cible_id).offsetWidth <= 82) return;

	var position_top=getOffsetPosition(cible_id,'Top');
	var position_left=getOffsetPosition(cible_id,'Left');
	//document.title=position_left+' : '+position_top;

	masque_texte(site_id);
	new Effect.Parallel(
		[
		new Effect.Move(cible_id, {x:position_x , y:position_y , mode:'absolute',duration:0.5},{ sync: true }),

		new Effect.Scale(cible_id,20, {scaleFromCenter:false,duration:0.5,scaleMode: { originalHeight: 300, originalWidth: 400 }
		}),

		new Effect.Scale(cible_img,20, {scaleFromCenter:false,duration:0.5,scaleMode: { originalHeight: 300, originalWidth: 400 },
		
		afterFinish:function(effect) {
			display_image(cible_img,former_pic);
			// effet relief
			$(cible_tableau).className="entourage";

		 }})
		], {duration:0.5}
		);

	// on réactive la popup du titre
	$(cible_img).onmouseover=function() {return overlib($("site_nom_"+site_id).innerHTML,DELAY,300)};

}

/***
Affiche la description du site
***/
function affiche_texte(site_id) {
	$("texte_"+site_id).className="texte_on";
	Effect.Appear($("texte_"+site_id),{duration:1});
	//Effect.Grow($("texte_"+site_id),{duration:0.4,direction: 'top-left',transition:Effect.Transitions.linear });
}

/***
Masque la description du site
***/
function masque_texte(site_id) {
	$("texte_"+site_id).className="texte_off";
}

/***
Remplace une image par une autre
***/
function display_image(cible_img,new_pic) {
	$(cible_img).src=new_pic;
}


/***
vérifie l'état d'un div avant de la grossir ou la rapetir
***/
function verif_etat(site_id,posy,posx,pic,thumb) {

	var cible_id="site_"+site_id;
	if($(cible_id).offsetWidth <= 90) {

	// verif si besoin de fermer un autre zoom
	
	if( current_zoom != 0 && current_zoom != site_id) {
		//document.title="current_zoom:"+current_zoom;

		var previous_id="img_"+current_zoom;
		var fct=String($(previous_id).onclick);
		myRe=/verif_etat\(([^)]*)\)/;
		listearguments = myRe.exec(fct);
		if(listearguments != null) {
			var tab_argment=listearguments[1].split(",");
			//for(var i=0 ; i < tab_argment.length; i++) {
			//	alert(i+' : '+tab_argment[i].replace(/(')*(")*/gi,''));
			//}
			
			restore(current_zoom,tab_argment[1],tab_argment[2],tab_argment[4].replace(/(')*(")*/gi,''));
		}
	}
	
		current_zoom=site_id;
		grossit(site_id,posy,posx,pic);
	} else {
		restore(site_id,posy,posx,thumb);
	}
}


/***
retourne la position absolue d'un élément dans la page
***/
getOffsetPosition = function(inID, inTYPE) {
 var iVal = 0;
 var oObj = document.getElementById(inID);
 var sType = 'oObj.offset' + inTYPE;
 while (oObj && oObj.tagName != 'BODY') {
  iVal += eval(sType);
  oObj = oObj.offsetParent;
 }
 return iVal;
}


/***
ouvre le site indiqué
***/
function make_click(site_id){
	cible_img="img_"+site_id;
	var fct=String($(cible_img).onclick);
	myRe=/verif_etat\(([^)]*)\)/;
	listearguments = myRe.exec(fct);
	eval(listearguments[0]);
}
