// GESTION DES LIENS - SITE EUREGIDE
// 22/09/2001 - Web Project (www.w-project.com)

// links management v 3.2

// mouse click interceptor
var mx,my;
if(document.all) document.onmousedown = IEgetxy;

function IEgetxy() {
	mx=event.screenX;		//coordonnées vs écran (pas vs fenêtre)
	my=event.screenY;
}

// ===============================
//  PUBLIC INPUTS (linkto - nameof)
// ===============================
//	t : false -> open an URL, true ->  return the target URL adress
//	name = target window name (default = current window) or popup window extension name ('zoom' + name)
//  or target frame (_name)
//	par = ? or # parameter
var fname,nw;
function linkto(target,t,name,par) {
	var l=ilink[target];				//target address
	var z=new Array();
	if(!l) alert("Le lien '" + target + "' est introuvable !");
	else if (l!='#') {
		var smooth= (l.charAt(0)=="~");
		if(smooth) l=l.substring(1);
		smooth= smooth && !document.layers;		//NS -> smooth impossible at present
		if(l.substring(0,6)=="popup:") {
			z=l.substring(6).split(",");
			l=z[0];
		}
		var s=self.document.location.toString();	//source page
		if(l=='$user')	{
			l=name				// lien utilisateur
			name="xtrn"
		}

		if(l.substring(0,3) == "www") {
			if(!t) l="http://" + l;
		}
		else if(l.charAt(0) == "!") l="http://" + l.substring(1)
		else l= get_rpath(l,s)			//tranform path to relative

		if(!t) {
			var vide=linkto('blank',1);		// add page vierge
			var mpar= new Array();
			if(par) {
				mpar=par.split('|');		//adds '?params' or '"params" to the URL
				if(mpar[0]) {
					if(mpar[0].charAt(0) != '#') mpar[0]= '?' + mpar[0];
					l+= mpar[0];
				}
				if(mpar[1]) z[1]=mpar[1];
				if(mpar[2]) z[2]=mpar[2];
				if(mpar[3]) z[3]=mpar[3];
				if(mpar[4]) z[4]=mpar[4];
			}
			if(!z[0]) {
				if(name && name.charAt(0) != '_') {								//open URL in new window
					var fenpar="";
					if(smooth) {
						fenpar="width=10,height=10,left=1,top=1,menubar=yes,location=yes,toolbar=yes,adressbar=yes,scrollbars=yes,status=yes,resizable=yes";
						nw=window.open(vide,name,fenpar);
					}
					else nw=window.open(vide,name);				// fenpar="" efface les menus, toolbars etc...  sous NS4
					var IE=navigator.appName.indexOf("Microsoft") > -1
					var nav_ver=parseFloat(navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE") + 5));
					if(IE & nav_ver < 5.5) {
						nw.close();							// close + open = réaffecte la propriété de la fenêtre
						nw=window.open(vide,name,fenpar);	// (focus() peut générer des erreurs avec IE4)
					}
					else nw.focus();
					if(smooth) finewin(nw,30,0,0);
					nw.document.location.href=l;
				}
				else {									//open URL in same window
					if(name) name=name.substring(1)		// remove 1st '_'
					else if(smooth) finewin(self,30,0,0);	//must be done before changing the URL...
					if(name) top.frames[name].document.location.href=l;
					else self.document.location.href = l;
				}
			}
			else {									//open URL in a popup window
				if(!name) name='';
				if (fname && !fname.closed) fname.close();
				var fenpar="menubar=no,location=no,toolbar=no,status=no,adressbar=no,resizable=no,"
				if(z[4]<0) fenpar+="scrollbars=yes,"; z[4]=Math.abs(z[4]);
				var x0=parseFloat(z[1]);
				var y0=parseFloat(z[2]);
				var x1=parseFloat(z[3]);
				var y1=parseFloat(z[4]);
				if(smooth) {
					var step=20;
					var xi=x1/step; if(xi<100) xi=100;
					var yi=y1/step; if(yi<100) yi=100;
					if(!mx) mx=x0+(x1-xi)/2;
					if(!my) my=y0+(y1-yi)/2;
					var xr=mx-(xi/2), yr=my-(yi/2)-10;
					if(xr<10) xr=10; if(yr<10) yr=10;
					fenpar+="width="+xi + ",height=" + yi + ",left="+xr + ",top="+yr;
				}
				else fenpar+="width=" + x1 + ",height="+ y1 + ",top=" + y0 + ",left=" + x0;
				if(smooth) {
					fname=window.open(vide,'zoom'+name,fenpar);
					finewin(fname,step,xr,yr,x0,y0,x1+6,y1+24);
					fname.document.location.href = l;
				}
				else fname=window.open(l,'zoom'+name,fenpar);
			}
		}
	}
	if(t) return l;
}

// -- return index name of target adresse (or "" if doesn't exist)
// -- "target" is the file name w/o any path (but can end with a "#")
function nameof(target) {
	var n=(target.charAt(target.length-1)=="#") ? target.substring(0,target.length-1) : target;
	var j="";
	n=iname_of(n);
	for (i in ilink) if (iname_of(ilink[i]) == n) j=i;
	return j;
}

// ==================================================
// INTERNAL FUNCTIONS - never use from external calls
// ==================================================

// - smoothly enlarge a window
function finewin(wname,step,xr,yr,xf,yf,lf,hf) {
	tbar=30;		//title bar height (IE bug : "resizeTo" includes title bar, "window.open" doesn't)
	if(!step) step=30;						// nb d'étapes
	if(step>200) step=200;
	if(!xf) xf=0;							// posit x/y finale
	if(!yf) yf=0;
	if(!lf) lf=wname.screen.availWidth;		// dim. l/h finales
	if(!hf) hf=wname.screen.availHeight;
	var li=lf/step; if (li<100) li=100;		// dimensions l/h initiales
	var hi=hf/step; if (hi<100) hi=100;
	if(!xr) xr=0;							// position x/y de départ
	if(!yr) yr=0;
	hi+=tbar;
	var dx=(xf-xr)/step;
	var dy=(yf-yr)/step;
	var dl=(lf-li)/step;
	var dh=(hf-hi)/step;

	// -- sizing loop
	while(lf-li > dl) {
		li+=dl; hi+=dh; xr+=dx; yr+=dy;
		wname.resizeTo(li,hi);
		wname.moveTo(xr,yr);
	}

	// -- final resize / move
	wname.resizeTo(lf,hf);
	wname.moveTo(xf,yf);
}

//- extract name + ext of a file
function iname_of(nfic) {
	var n=nfic;
	var i=n.lastIndexOf("/");
	if (i>-1) n=nfic.substring(i+1);
	return n;
}

