 /*	==========================================================
	Filename		: sa_core.js
	Author			: Copyright 2001-2002 La Mire(www.lamire.com)
	Created			: vendredi 6 décembre 2002 22:47:14
	Last Updated	: vendredi 6 décembre 2002 22:47:14
	Comments		: 
	
	Basé sur 1K DHTML API (tim morgan)
	Commentaires dans le code
	
	
	
	
	==========================================================*/

// ---------- DOM API
var d=document; 
// détection browser // compatibilité IE5+, NS6+, OPERA 5+
var ua = navigator.userAgent;
var op = /opera [56789]|opera\/[56789]/i.test(ua); // opera version 5+
var ie = !op && /MSIE/.test(ua);
var ie50 = ie && /MSIE 5\.[01234]/.test(ua); // IE version 5+
var ie6 = ie && /MSIE [6789]/.test(ua); // IE version 6+
var moz = !op && /gecko/i.test(ua);
var ns4 = (d.layers)?1:0;
var ns6 = !op && /netscape.*6\./i.test(ua); // var ns6=(dom&&!ie)?1:0;
var dom=(d.getElementById)?1:0;

// ---------- fonctions de bases
// compatibilité IE4+, NS4, NS6, OPERA 5+

// retourne une référence sur un élément
function gE(e,f){if(ns4){f=(f)?f:self;var V=f.document.layers;if(V[e])return V[e];for(var W=0;W<V.length;)t=gE(e,V[W++]);return t;}if(d.all)return d.all[e];return d.getElementById(e);}
// set visibility on/off
function sE(e){if(ns4)e.visibility='show';else e.style.visibility='visible';}
function hE(e){if(ns4)e.visibility='hide';else e.style.visibility='hidden';}
// set index
function sZ(e,z){if(ns4)e.zIndex=z;else e.style.zIndex=z;}
// set x,y pos
function sX(e,x){if(ns4)e.left=x;else if(op)e.style.pixelLeft=x;else e.style.left=px(x);}
function sY(e,y){if(ns4)e.top=y;else if(op)e.style.pixelTop=y;else e.style.top=px(y);}
// défini un objet point
function pt(x,y){this.x=x;this.y=y;}
// move to a point
function moveto(e,p){sX(e,p.x);sY(e,p.y)}
// get height and width
function gW(e){return(ns4)?e.clip.width:parseInt(e.style.width||e.offsetWidth||e.style.pixelWidth);}
function gH(e){return(ns4)?e.clip.height:parseInt(e.style.height||e.offsetHeight||e.style.pixelHeight);}
// get x,y and pt pos
function gX(e){if(ns4)return e.left;else return(op)?e.style.pixelLeft:parseInt(e.style.left);}
function gY(e){if(ns4)return e.top;else return(op)?e.style.pixelTop:parseInt(e.style.top);}
function gPT(e){return new pt(gX(e),gY(e));}
// clip
function sC(e,t,r,b,x){if(ns4){X=e.clip;X.top=t;X.right=r;X.bottom=b;X.left=x;}else e.style.clip='rect('+t+' '+r+' '+b+' '+x+')';}
// write
function wH(e,h){if(ns4){Y=e.document;Y.write(h);Y.close();}else e.innerHTML=h;}
// trouve la position absolue d'un élément dans la page retourne un objet point
// get the true offset of anything on NS4, IE4/5 & NS6, even if it's in a table!
function eltPos(o){
	var x=0,y=0;if (o.x){x=o.x;y=o.y}
	else{while(o.offsetParent){x+=o.offsetLeft;y+=o.offsetTop;o=o.offsetParent;}
	return new pt(x,y);}
}

// renvoie la taille du document dans un objet point - attention les valeurs n'existent que si le doc est complètement chargé.
function wsize(){var w,h;w=(ie)?d.body.clientWidth-20:window.innerWidth;h=(ie)?d.body.clientHeight-5:window.innerHeight;return new pt(w,h)}
  //centre du document : ws=wsize();o=new pt((ws.x-gW(cont))/2,(ws.y-gH(cont))/2);
// renvoie les valeurs de scroll top et left dans un objet point.
function wscroll(){var w,h;if (ie){h=d.body.scrollTop;w=d.body.scrollLeft;}else{h=window.pageYOffset;h=window.pageXOffset;}return new pt(w,h);}
function sign(x,y){return(x<y)?1:-1};
function px(n){return n+(!ns4&&!op?'px':0)};
// ---------- END DHTML API

// create elements on the fly (DOM only)
// ex : createObject(type,parent, attributes, css)
// usually type = 'div';
// parent = document.body ou un autre élément de la page
// attributes = un tableau d'attributs : attr = {'name':'mysty', 'color':'#ff5656'}
// css = un tavleau de styles : st = {'visibility':'hidden', 'color':'blue'}
function createObject (type,parent,attributes,css){
	var obj = d.createElement(type);
	if(attributes) pushProp(attributes, obj);
	if(css)pushProp(css, obj.style);	
	parent.appendChild(obj);
	return obj;
}
// push properties
function pushProp(list, into){for(var i in list) {try {into[i] = list[i];} catch(e){}}}
// get style
function getStyle(o,prop){
	var y=null;
	if (document.defaultView)y = document.defaultView.getComputedStyle(o,null).getPropertyValue(prop);
	else if (x.currentStyle) y = x.currentStyle[prop];
	return y;
}

// =============== "hilite" sur les cellules de tableau (DOM: IE5+ NS6+)
function mmOvr(o,s){if(o.className){o.className=s;o.style.cursor=(ns6)?'pointer':'hand';}}
function mmOut(o,s){if(o.className){o.className=s;o.style.cursor='default';}}
function mmClk(s){document.location.href=s;}
// =================================== gestion collapse (DOM: IE5+ NS6+) ========================
// img as object, panel as string
function collapse(img,panel){
	var s;
	// test si ouvert ou fermé
	m=gE(panel);
	s=(m.style.display=='block')?1:0;
	m.style.display=(s)?'none':'block';
	img.src=(s)?icnClosed:icnOpen;
	img.parentNode.className=(s)?cssClosed:cssOpen;
}

// horizontal and vertical scroll only.
/*
e : element object
d : coord destination
o : 'h' || 'v' vertical or horizontal scroll
sp:speed
funcCall : fonction appelée à la fin du scroll (optionnel)
s : coordonnée de départ (optionnel)
*/
var sliders= new Array(); // (global) keep handler to objects
function slide(e,de,o,sp,funcCall,s){
	var num;
	if(typeof(e)!='object'){num=e;e=sliders[num]; e.sliding=true;}
	else{num=e.id;sliders[num]=e;if(e.sliding)return}
	
	s=(o=='h')?s||gX(e):s||gY(e);
	si=sign(s,de); 
	s+=si*sp;
	if(s>de*si) s=de;
	if(o=='h') sX(e,s); else sY(e,s);
	if (s==de){
		e.sliding=false; 
		if(funcCall!='')eval(funcCall);
	}else 
		setTimeout('slide('+num+','+de+','+o+','+sp+',"'+funcCall+'",'+s+')',50);

}

// Open a pop up 
function popup_open(url,name,center,width,height,param){
	if (param==null)param = 'toolbar=no,directries=no,scrollBars=no,resizable=no';
	param+=",height="+height +",width=" + width;
	if(center){
		var WLeft = (screen.width - width) / 10;
		var WTop = (screen.height - height) / 10;
		param += ",top=" + WTop + ",left=" + WLeft
	}
	var w=window.open(url,name,param);
	if (window.focus) w.window.focus();
}
// open a popup once only (cookie based)
function popup_once(url,name,center,width,height,param) {
  if(getCookie('popup')==false){
    setCookie('popup',this.location.href);
  	popup_open(url,name,center,width,height,param)
  }
}


