// Scripts génériques du site

// Multiple onload function created by: Simon Willison
// http://simonwillison.net/2004/May/26/addLoadEvent/
// usage : addLoadEvent( function() {fct_name()} )
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

// fade in/out. Ne nécessite qu'une unique image
// p=transparence init:transparence finale:step (delta transparence sur 50 msec)
// t=référence vers l'objet où se trouve btn_id : rien = self, 1=top
if(!x_IDmem) var x_IDmem=new Array
if(!x_status) var x_status=new Array
function x_fade(btn_id,p,t,alpha) {
	if(typeof(t)=='undefined') var t=''
	if(t=='') var btn=document.getElementById(btn_id)
	else var btn=top.document.getElementById(btn_id)
	if(typeof(alpha)=='undefined' && x_IDmem[btn_id]) clearTimeout(x_IDmem[btn_id])
	if(!p && p!='0') var px=new Array; else px=p.split(':')
	if(!px[0] && px[0]!='0') px[0]=100	// alpha de départ
	if(!px[1]) px[1]=50		// alpha de fin
	if(!px[2]) px[2]=10		// step
	px[2]=Math.abs(parseInt(px[2]))
	px[0]=parseInt(px[0]);px[1]=parseInt(px[1])
	if(!alpha && alpha!='0') var alpha=px[0]	// premier passage
	if(px[0]>px[1]) px[2]=-px[2]
	if(btn) {
		if(btn.style.opacity!='') {
			alpha0=btn.style.opacity*100	// IE6/7 : opacity est positionné ci-dessous quel que soit le navigateur
			if((px[2]<0 && alpha0<=px[1]) || (px[2]>0 && alpha0>=px[1])) alpha=px[1]
			else if((px[2]<0 && alpha0<alpha) || (px[2]>0 && alpha0>alpha)) alpha=alpha0
		}
		btn.style.filter='alpha(opacity='+alpha+')'
		btn.style.opacity=alpha/100
		btn.style.display='inline'
		var end=px[2]<0 ? alpha<=px[1] : alpha>=px[1]
		if(!end) {
			alpha+=px[2]
			if((px[2]<0 && alpha<=px[1]) || (px[2]>0 && alpha>=px[1])) alpha=px[1]
			x_IDmem[btn_id]=setTimeout('x_fade("' + btn_id + '","'
			+ p + '","'+t+'",'+alpha+')'
			, 50)
		}
		else {
			x_status[btn_id]=alpha? 1:0
			if(alpha==0) btn.style.display='none'
		}
	}
}


// --------------------------



// Affichage d'une mire d'attente éventuelle puis lancement de la routine Ajax 
function sf_ajaxLoader(url0,id0,params,autocenter) {
	var delay=200					// délai avant de lancer la requête ajax
	if(!params) var params={}

	// -- affichage de l'indicateur de progression
	if(id0.indexOf('~')!=-1) {
		var x=id0.split('~'),id=x[0]
		if(!x[2]) x[2]=20			// alpha du conteneur

		var l=document.getElementById(x[1])
		if(l) {
			l.style.filter='alpha(opacity=0)';l.style.opacity=0;l.style.display='block'		// permet de lire la taille de l'image mais sans la rendre apparente
			if(autocenter==1) {	
				l.style.top=Math.floor((i.offsetHeight-l.offsetHeight)/2)+'px'
				l.style.left=Math.floor((i.offsetWidth-l.offsetWidth)/2)+'px'
			}
			l.style.filter='alpha(opacity=100)';l.style.opacity=1;
		}
	}
	else id=id0

	// --  estompage du contenu actuel
	var i=document.getElementById(id)
	if(i) i.style.filter='alpha(opacity=0'+x[2]+')';i.style.opacity=x[2]/100;

	// -- lancement du rafraichissement du contenu, après délai éventuel
	setTimeout('sf_ajaxLoad("'+url0+'",\'sf_ajaxrefresh(x,"'+id0+'")\',\''+params+'\')',delay)

}

// Ajax loader : charge le contenu d'un fichier. Pour préserver une compatibilité maxi malgré l'utilisation du mode POST,
// qui évite l'écueil du cache avec IE6, et le pb de la conversion UTF8, ce script ajax ne devrait lancer que des scripts PHP 
// qui reverront en échange un contenu UTF8'isé, après quelques checks simplea de sécurité
// Ce loader appelle la fonction 'func' passée en argument une fois le chargement terminé
function sf_ajaxLoad(file_url,func,params) {
	var x = false;
	if (window.XMLHttpRequest) x = new XMLHttpRequest()
	else if (window.ActiveXObject) {
		try { x = new ActiveXObject("Msxml2.XMLHTTP") }
		catch (e) {
			try { x = new ActiveXObject("Microsoft.XMLHTTP") }
			catch (e) {}
	 	}
 	}
//	en cas d'erreur de sécurité, de ficher pas trouvé etc. le status n'est pas égal à 200
//	if(x) x.onreadystatechange=function() { if(x.readyState == 4 && x.status == 200) eval(func) }
	if(x) x.onreadystatechange=function() { if(x.readyState == 4) eval(func) }
//	x.open("GET",file_url, true); 										// GET avec IIs6, true -> mode asynchrone
	x.open("POST",file_url, true); 										// POST évite le cache (pas GET), true -> mode asynchrone

	// Header indispensable pour le mode POST
	if(!params) var params='sf_form=true'

	x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//	x.setRequestHeader("Content-length", params.length);				// params.length est tj undefined -> blocage avec IE6...
	x.setRequestHeader("Connection", "close");
//	x.overrideMimeType("text/html; charset=ISO-8859-1")					// OK FF IE7 Safari, mais pas IE6 -> il vaut mieux convertir en UTF8 à la source
//	x.setRequestHeader("Content-Type", "text/html; charset=ISO-8859-1")	// Absolument aucun effet
//	x.send(null);														// en POST, null est censé être remplacé par un formulaire à  soumettre...
	x.send(params)
}

// ----------------------
// post fonction après modif du contenu du BOOK en Ajax : MAJ du contenu (mise à jour de la photo + MAJ du slider)
function sf_ajaxrefresh(r,id0) {
	if(id0.indexOf('~')!=-1) {
		var x=id0.split('~'),id0=x[0]
		var i=document.getElementById(id0),l=document.getElementById(x[1])
		l.style.display='none';
		i.style.filter='alpha(opacity=100)';i.style.opacity=1;		
	}	
	document.getElementById(id0).innerHTML=r.responseText

	//  MAJ de la photo zoom, car étant ratachée au body elle n'est pas mise à jour dans le DIV ajax...
	var x=document.getElementById('photos-0'),		// <div> conteneur de l'ancienne photo
	t=document.getElementById('book-image')			// 
	if(x && t) {
		var c=x.innerHTML.split('<img')				// FF, Safari, GG Chrome
		if(!c[1]) c=x.innerHTML.split('<IMG')		// IE6, Opera
		var i= c[1]? c[1].indexOf('>') : -1
		if(i!=-1) {
			c[1]=c[1].substring(i+1)
			x.innerHTML=c[0]+'<img src="'+t.src+'" alt="" border="0" style="cursor:pointer" onclick="if(typeof(sf_bulle)!=\'undefined\') sf_bulle(sf_bon,0)">'+c[1]
		}
	}

	// MAJ du slider
	x_update('scroll1-slider',0,true)
}


