// ------------------------------------------------------
// scriptslib.js (c) l.bruninx 2003-2008
// ------------------------------------------------------
// @version : 1.0
// @revision: beta-1
// @author	: Luc bruninx
// @description : Bibliothèque de scripts JavaScript pour
//                créer et maintenir facilement des
//                composants dynamiques.
// ------------------------------------------------------

// ------------------------------------------------------
// Primitives
// ------------------------------------------------------
function namedObject(nom) {
	//
	// Trouve le premier tag par son nom... name="..."
	//
	var tagArray = document.getElementsByName(nom);
	return tagArray[0];
}

// ------------------------------------------------------
// urllib
// ------------------------------------------------------
function rsplitURL(sURL,splitSeq) {
	//
	// Retourne la partie droite de l'URL lorsqu'elle est
	// découpée par splitSeq. splitSeq n'est pas inclus
	// dans la valeur de retour. Si la séquence de coupure
	// n'est pas présente dans la chaîne, retourne une
	// chaîne vide.
	//
	var res = "";
	if(sURL.indexOf(splitSeq)>=0) {
		res = sURL.substring(sURL.indexOf(splitSeq)+splitSeq.length,sURL.length);
	}
	return res;
}

function lsplitURL(sURL,splitSeq) {
	//
	// Retourne la partie gauche de l'URL lorsqu'elle est
	// découpée par splitSeq. splitSeq n'est pas inclus
	// dans la valeur de retour. Si la séquence de coupure
	// n'est pas présente dans la chaîne, retourne une
	// chaîne vide.
	//
	var res = "";
	if(sURL.indexOf(splitSeq)>=0) {
		res = sURL.substring(0,sURL.indexOf(splitSeq));
	}
	return res;
}

function goURL(sURL) {
	//
	// va à l'url indiquée...
	//
	location.href = sURL;
}

// ------------------------------------------------------
// languagelib
// ------------------------------------------------------
function Languages() {
	//
	// fourni le tableau des langues disponible.
	//
	return ["fr","nl"];
}

function languageIndex(lang) {
	//
	// Retourne l'index de la langue
	//
	var i = 0;
	var fnd=-1;
	var langList = Languages();
	while(fnd<0) {
		if(lang==langList[i]) {
			fnd=i;
		}
		else {
			i++;
			if(i==langList.length) {
				fnd=0; // langue par défaut...
			}
		}
	}
	return fnd;
}

function splitSeqLang(lang) {
	//
	// créer une séquence de découpage URL selon la langue.
	//
	return new String("/"+lang+"/");
}

function thisLanguage() {
	//
	// Trouve la langue en cours de visualisation.
	//
	var myUrl	 = new String(document.URL);
	var langList = Languages();
	var res 	 = "";
	var i = 0;
	while(res=="") {
		if(myUrl.indexOf(splitSeqLang(langList[i]))>=0) {
			res = langList[i];
		}
		else {
			i++;
			if(i==langList.length) {
				res = langList[0];
			}
		}
	}
	return res;
}

function localeText(allLangTxt) {
	return allLangTxt[languageIndex(thisLanguage())];
}

function thisUnlangPathname() {
	//
	// Trouve le path du document en cours sans la langue.
	//
	var myUrl  = new String(document.URL);
	var myLang = thisLanguage();
	var myPath = "";
	if (myUrl.indexOf(splitSeqLang(myLang))>=0) {
		myPath = rsplitURL(myUrl,splitSeqLang(myLang));
	}
	return myPath;
}

function swapLanguage(lang) {
	//
	// Renvoie la langue suivante par rapport à la
	// langue fournie. Si la langue n'est pas trouvée,
	// le programme prend la langue "fr" par défaut.
	//
	var myLang = Languages();
	var i	= 0;
	var fnd = false;
	var res = myLang[0];
	while ((fnd==false)&&(i<myLang.length)) {
		if(myLang[i]==lang) {
			fnd=true;
		}
		else {
			i++;
		}
	}
	if(fnd==true) {
		i++;
		if(i>=myLang.length) {
			i=0;
		}
		res=myLang[i];
	}
	return res;
}

function thisTransLangURL(nwlang) {
	//
	// Retourne l'url du document en cours dans la
	// nwlang langue.
	//
	var thisLang		 = thisLanguage();
	var thisLangSplitSeq = splitSeqLang(thisLang);
	var nwlangSplitSeq	 = splitSeqLang(nwlang);
	var myUrl			 = new String(document.URL);
	var myLUrl			 = lsplitURL(myUrl,thisLangSplitSeq);
	var myRUrl			 = rsplitURL(myUrl,thisLangSplitSeq);
	return myLUrl.concat(nwlangSplitSeq).concat(myRUrl);
}

// -----------------------------------------------------------
// Construction de l'Objet Point(x,y)
// ==================================
//	 L'objet Point() permet de mémoriser des coordonnées X,Y
//	 et de les traiter plus facilement.
// -----------------------------------------------------------
function Point(x,y) {
	if(arguments.length>0) {
		this.init(x,y);
	}
}
Point.prototype.init = function (x,y) {
	this.x = x;
	this.y = y;
}

// -----------------------------------------------------------
// Gestion dynamique des balises
// -----------------------------------------------------------
function getInnerTag(parentElement,tagType,tagIndex) {
	//
	// Retourne l'objet qui correspond à la balise tagType
	// à la position tagIndex à partir de parentElement.
	//
	var innerObj = parentElement.getElementsByTagName(tagType);
	return innerObj[tagIndex];
}

function tableCell(table,cell) {
	//
	// Retourne l'objet qui correspond à la cell'ième cellule
	// du tableau fourni en argument.
	//
	return getInnerTag(table,"TD",cell);
}

function tableLink(table,lnk) {
	//
	// Retourne l'objet qui correspond au lnk'ième lien
	// dans tableau fourni en argument.
	//
	return getInnerTag(table,"A",lnk);
}

function createDiv(divId,content,top,left,width,height,visibility) {
	if(document.layers) {
		document.layers[divId] = new Layer(width);
		document.layers[divId].top = top;
		document.layers[divId].left = left;
		document.layers[divId].width = width;
		document.layers[divId].height = height;
		document.layers[divId].visibility = visibility;
		document.layers[divId].border = 0;
        document.layers[divId].zIndex = 99;
		document.layers[divId].document.open();
		document.layers[divId].document.write(content);
		document.layers[divId].document.close();
	}
	else {
		strDiv = '<DIV ID="' + divId + '" STYLE="position:absolute; z-index:99;' +
				 'top:' + top + 'px;left:' + left + 'px;width:' + width + ';' +
				 'height:' + height + ';border=0px;visibility:' + visibility + '">' +
				 content + '</DIV>';
		document.body.innerHTML = document.body.innerHTML + strDiv;
	}
}

function writeDiv(divId,content) {
	//
	// Ecrit dans un élement dynamique en fonction des
	// capacité du navigateur.
	//
	if(document.all) {
		document.all[divId].innerHTML = content;
	}
	else if(document.layers) {
		document.layers[divId].document.open();
		document.layers[divId].document.write(content);
		document.layers[divId].document.close();
	}
	else if(document.getElementById) {
		document.getElementById(divId).innerHTML = content;
	}
}

function styleDivObj(divObj) {
	var res = undefined;
	if(document.all) {
		res = divObj.style;
	}
	if(document.layers) {
		res = divObj;
	}
	if(document.getElementById) {
		res = divObj.style;
	}
	return res;
}

function getX(obj){
  return( obj.offsetParent==null ? obj.offsetLeft : obj.offsetLeft+getX(obj.offsetParent) );
}

function getY(obj){
  return( obj.offsetParent==null ? obj.offsetTop : obj.offsetTop+getY(obj.offsetParent) );
}

function getPointObj(Obj) {
    return new Point(getX(Obj),getY(Obj));
}

function getTopRightPointObj(Obj) {
    return new Point(getX(Obj)+ Obj.offsetWidth ,getY(Obj));
}

function getBottomLeftPointObj(Obj) {
    return new Point(getX(Obj), getY(Obj) + Obj.offsetHeight);
}

function getStyleDiv(divId) {
	//
	// Obtient les paramètres de style d'un élément dynamique
	// en fonction des capacités du navigateur.
	//
	var res = undefined;
	if(document.all) {
		 res = document.all[divId].style;
	}
	if(document.layers) {
		 res = document.layers[divId];
	}
	if(document.getElementById) {
		 res = document.getElementById(divId).style;
	}
	return res;
}

function absMoveDiv(divId,posX,posY) {
	var divStyle = getStyleDiv(divId);
	divStyle.left= posX;
	divStyle.top = posY;
}

function getDivPos(divId) {
	var divStyle = getStyleDiv(divId);
	var point = new Point(divStyle.left,divStyle.top);
	return point;
}

function getMousePoint(e) {
	var point = new Point(0,0);
	if(document.all) {
		point.x = event.x;
		point.y = event.y;
	}
	if((document.layers)||(document.getElementById)&&(!document.all)) {
		point.x = e.pageX;
		point.y = e.pageY;
	}
	return point;
}


function showDiv(divId) {
	var divStyle = getStyleDiv(divId);
	divStyle.visibility = "visible";
}

function hideDiv(divId) {
	var divStyle = getStyleDiv(divId);
	divStyle.visibility = "hidden";
}


