// + + +
// xBody.js
// Global Document functions

var _xBrowser;
if(document.all && document.getElementById) _xBrowser = 'ie';
if(document.addEventListener) _xBrowser = 'ns6+';
if(document.layers) _xBrowser = 'ns4';

var tabBodyOnload = new Array();
var tabBodyResize = new Array();

function xRegToBodyOnload(){for(var i=0;i<=arguments.length-1;i++) tabBodyOnload.xPush(arguments[i]);}
function xRegToBodyResize(){for(var i=0;i<=arguments.length-1;i++) tabBodyResize.xPush(arguments[i]);}

function xBodyIsLoaded(){	
	xExecuteArray(tabBodyOnload);
}

window.onresize = function(){xExecuteArray(tabBodyResize);}

function xPrint() {
	window.print();  
}

function xGetWindowWidth() {
	return (_xBrowser=='ie')? document.body.clientWidth : window.innerWidth;
}

function xGetWindowHeight() {
	return (_xBrowser=='ie')? document.body.clientHeight : window.innerHeight;
}

function xScrollBack(sObject,xTimeOut) {
	var xObject;
	var xScrollTop = 0;
	if (typeof(sObject) == "string") {
		xObject = xGetObject(sObject);
		
		if (xObject != null) {
			xScrollTop = xObject.offsetTop;
		}
	} else {
		xScrollTop = sObject;
	}
	setTimeout('self.scrollTo(0, '+xScrollTop+')',xTimeOut);
}

// + + +
// xObjects.js
// document objects related functions

function xGetObject(_o)
{
	return (typeof(_o)!='object')? xFindObject(String(_o)) : _o;
}

function xFindObject(n, d)
{
	var p,i,x;
	if(!d) d=document;
	if((p=n.indexOf("@"))>0&&parent.frames.length)
	{
		d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all) x=d.all[n];
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=xFindObject(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n);
	return x;
}

// + + +
// xArray.js
// Array functions & prototypes for cross-browser compatibility

Array.prototype.xPush = function(v)
{
	this[this.length] = v;
};

Array.prototype.xSearchInArray = function(v)
{
	var a = false
	for (var i=0; i<this.length;i++) if(this[i] == v) a = true;
	return a;
};

Array.prototype.xSplice = function(v)
{
	var a = new Array();
	for (var i=0; i<this.length;i++) if(this[i]!=v) a.xPush(this[i]);
	return a;
};


function xExecuteArray(_a) {
	var _l = _a.length-1;
	if(_l!=-1)
	{
		for(var i = 0; i<=_l;i++)
		{
			var _s = _a[i];
			var _l0 = _s.indexOf("[");
			var _l1 = _s.indexOf("]");
			(_l0!=-1 && _l1!=-1)? eval(_s.substring(_l0+1,_l1)) : eval(_s);
		}
	}	
}



// + + + 
// xWindow.js - v2.4 | 09.7.2005
// popup window handling functions

// note: 
//	Si 'xLeft' et 'xTop' ont une valeur de null, le popup est automatiquement centré dans le browser. 
//	ex: xPopup('xPage','320','200','xWinName',null,null,'scrollbars=no,toolbar=no,location=no,status=no,menubar=no,resizable=no,dependent=no');

var xWin = null;

function xPopup(xPage,xWidth,xHeight,xWinName,xLeft,xTop,xFeatures){
	var xWinLeft;
	var xWinTop;
	(xLeft!=null)?xWinLeft=xLeft : xWinLeft=(screen.width-xWidth)/2;
	(xTop!=null)?xWinTop=xTop : xWinTop=(screen.height-xHeight)/2;
	xSettings='width='+xWidth+',height='+xHeight+',top='+xWinTop+',left='+xWinLeft+','+xFeatures+'';
	xWin=window.open(xPage,xWinName,xSettings);
	if(xWin!=null || xWin != undefined){
		xWin.xParent = self;
		if(parseInt(navigator.appVersion) >= 4){xWin.window.focus();}
	}
}

function xResizeWindow(xWidth,xHeight) { 
	   var NS = (navigator.appName=="Netscape")?true:false; 
       xCurrentWidth = (NS)?window.innerWidth:document.body.clientWidth; 
       xCurrentHeight = (NS)?window.innerHeight:document.body.clientHeight; 
       self.resizeBy(xWidth-xCurrentWidth, xHeight-xCurrentHeight); 
       self.focus(); 
}

function xCenterWindow(xWidth,xHeight) { 
		xWinLeft=(screen.width-xWidth)/2;
		xWinTop=(screen.height-xHeight)/2;
		window.moveTo(xWinLeft,xWinTop);
}

// + + +
// xImages.js
// Images related functions

var xRegisteredImages = new Array();

function xRegImg(i) {
	xRegisteredImages.xPush(i);
}

function xInitImgPreload() {
	var _a = xRegisteredImages;
	for(var i =0;i<=_a.length-1;i++)
	{
		var _o = _a[i];
		if(typeof(_o)=='string') _o = xGetObject(_o);
		MM_preloadImages(xGetImgRollOverImg(_o.src));
	}
}

function xGetImgRollOverImg(s) {
	var _e = xGetImgExtention(s);
	var _i = xImgTrimExtention(s,_e);
	return _i+"_o"+_e;
}

function xGetImgExtention(s) {
	return s.substr(s.lastIndexOf('.'), s.length-1);
}

function xImgTrimExtention(s,e) {
	return s.substring(0,s.indexOf(e));
}

function xGetImgName(s) {
	return s.substr(s.lastIndexOf('/')+1,s.length-1);
}

// 
// This script is made for making rollovers simpler when you don't want 
// to use all the fireworks or imageready export process crap
// 
// NOT WORKING WITH NESTCAPE 4
//
// Simply add -- onMouseOver="xMouseOver(this);" onMouseOut="xMouseOut(this);" -- on the image tag
// and add a "_o" string on your rollover image
// i.e. = "button01.jpeg" -> "button01_o.jpeg"
//
// <a href="#" ><img src="images/b1.jpg" alt="" border="0" onMouseOver="xMouseOver(this);" onMouseOut="xMouseOut(this);" /></a>

function getFileName(xFile) {
	var tabFile = new Array();
	var foundFileStart = false;
	var foundFileType = false;
	for (i=xFile.length;i>0;i--) {
		if (xFile.charAt(i) == "." && foundFileType == false) {
		  foundFileType = true;
		  var indexFileType = i+1;
		} else if (xFile.charAt(i) == "/" && foundFileStart == false) {
		  foundFileStart = true;
		  var indexFileStart = i+1;
		}
	}
	tabFile["xFileType"] = xFile.substr(indexFileType,xFile.length);
	tabFile["xFileName"] = xFile.substring(indexFileStart,indexFileType-1);
	tabFile["xFilePath"] = xFile.substring(0,indexFileStart);
	return(tabFile);
}
function xMouseOver(xImg) {
	// Requirements
	if (typeof(xImg) == "string")  xImg = xGetObject(xImg); // replace getObject by xGetObject when needed
	if(xImg.src.indexOf('_o.')!=-1) return;
	if(xImg.src.indexOf('_a.')!=-1) return;
	
	// Procedures
	var tabFile = getFileName(xImg.src);
	//alert(tabFile["xFilePath"]);
	xImg.oSrc = tabFile["xFilePath"]+tabFile["xFileName"]+"."+tabFile["xFileType"];
	xImg.src = tabFile["xFilePath"]+tabFile["xFileName"]+"_o."+tabFile["xFileType"];
}

function xMouseOut(xImg) {
	if (typeof(xImg) == "string")  xImg = xGetObject(xImg);
	if(xImg.src.indexOf('_a.')!=-1) return;
	if (xImg.oSrc) xImg.src = xImg.oSrc;
}


function xClassOver(xObject) {
	if (typeof(xObject) == "string")  xObject = xGetObject(xObject);
	var xClassName = xObject.className;
	if(xClassName.indexOf('_o')!=-1) return;
	if(xClassName.indexOf('_a')!=-1) return;
	xObject.xOldClassName = xClassName;
	xObject.className=xClassName+'_o';
}
	
function xClassOut(xObject) {
	if (typeof(xObject) == "string")  xObject = xGetObject(xObject);
	if(xObject.className.indexOf('_a')!=-1) return;
	xObject.className=xObject.xOldClassName;
}

// + + +
// xMM.js
// Macromedia Javascript Functions

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function xMOut()
{
	MM_swapImgRestore();
}

function xMOver(i)
{
	var _o = xGetObject(i);
	MM_swapImage(_o.id,'',xGetImgRollOverImg(_o.src),1);
}


// + + +
// xLayers.js
// Div & layer manipulation related functions

function xGetTarget(xTarget)
{
	var xLV1;
	if(document.all && document.getElementById) xLV1 = document.all[xTarget];
	if(document.layers) xLV1 = document.layers[xTarget];
	if(document.addEventListener) xLV1 = document.getElementById(xTarget);
	return xLV1;
}

function xGetPosition(xTarget,xProp)
{
	var xLV1;
	if(xProp=='offsetLeft'){(!(document.layers))? xLV1 = xTarget.offsetLeft : xLV1 = xTarget.pageX;}
	if(xProp=='offsetTop'){(!(document.layers))? xLV1 = xTarget.offsetTop : xLV1 = xTargetpageY;}
		return xLV1;
}
	
function xSetPosition(xTarget,xLeft,xTop)
{
	(!(document.layers))? xTarget.style.left = xLeft+'px' : xTarget['left'] = xLeft;
	(!(document.layers))? xTarget.style.top = xTop+'px' : xTarget['top'] = xTop;
}

function xSetVisibility(xTarget,xValue)
{	
	(!(document.layers))? xTarget.style.visibility = xValue : xTarget['visibility'] = xValue;
}

function xGetNumByName(xString,xName)
{
	var xRegExp = new RegExp("^"+xName, "i") 
	var xNum = xString.replace(xRegExp,"");
	return xNum;
}

function xGetNumBySep(xString)
{
	return xString.substr(xString.indexOf('_')+1,xString.length-1);
}

function xGetNameBySep(xString)
{
	return xString.substr(0,xString.indexOf('_'));
}

function xPand(xTarget,xValue) {
	// Utiliser sur un lien
	// Exemple pour toggle visibility : "javascript:xPand('test');"
	// Exemple pour forced visibility : "javascript:xPand('test',1);"
	
	// Icone : 
	// Utiliser le meme ID que le target et ajoueter "_i" 
	// ex: (target="test")
	// <img id="test_i" src="/images/icon.gif" alt="" border="0" /> 
	// l'icone remplacé sera "icon_a.gif"
	
	
	
	if (typeof(xTarget) == "string") {
		xTargetName = xTarget;
		xIcon = xGetTarget(xTargetName+"_i");
		xTarget = xGetTarget(xTarget);
	} else {
		xRef = xTarget;
		xTargetName = xRef.id;
		xIcon = xGetTarget(xTargetName+"_i");
		xTarget = xGetTarget(xTargetName+"_c");
	}
	
	if (xValue >= 0 && typeof(xTarget) == "object") {
		switch (xValue) {
			case 0: xTarget.style.display = "none";xTarget.xOpened = 0;break;
			
			case 1: xTarget.style.display = "block";xTarget.xOpened = 1;break;
		}
	} else {
		if (xTarget.style.display == "block") xTarget.xOpened = 1;
		if (xTarget.xOpened && typeof(xTarget) == "object") {
			if (xTarget.xOpened == 1) {
				xTarget.style.display = "none";
				xTarget.xOpened = 0;
			} else {
				xTarget.style.display = "block";
				xTarget.xOpened = 1;
			}
			
		} else if (typeof(xTarget) == "object") {
			xTarget.style.display = "block";
			xTarget.xOpened = 1;
			if (xIcon) xIcon.oSrc = xIcon.src;
		}
	}
	
	if (xIcon && typeof(xTarget) == "object") {
		if (!xIcon.oSrc) xIcon.oSrc = xIcon.src;
		if (xTarget.xOpened == 1) {
			xSep = xIcon.oSrc.indexOf(".jpg");
			if (xSep < 0) xSep = xIcon.oSrc.indexOf(".gif");
			if (xSep > 0) {
				xIcon.src = xIcon.oSrc.substr(0,xSep) + "_a" + xIcon.oSrc.substr(xSep,xIcon.oSrc.length);
			}
		} else {
			xIcon.src = xIcon.oSrc;
		}
	}
}

