/** fonctions de base *
$Id: base.js,v 1.1 2007/01/10 22:31:17 nico Exp $
$Log: base.js,v $
Revision 1.1  2007/01/10 22:31:17  nico
back-office v1.0

*/

function findObj(theObj, theDoc)
{
  var p, i, foundObj;
  
  if(!theDoc) theDoc = document;
  if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)
  {
    theDoc = parent.frames[theObj.substring(p+1)].document;
    theObj = theObj.substring(0,p);
  }
  if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
  for (i=0; !foundObj && i < theDoc.forms.length; i++) 
    foundObj = theDoc.forms[i][theObj];
  for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) 
    foundObj = findObj(theObj,theDoc.layers[i].document);
  if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
  
  return foundObj;
}

var _DOMTypes=["original","NN4","IE4","w3c"];
var _DOMLevel=0, _DOMType=3;
if (document.getElementById && document.getElementsByTagName) _DOMLevel=1;
if (document.addEventListener) _DOMLevel=2;
else {
	if(document.all) _DOMType=2;
	else if(document.layers) _DOMType=1;
}
//alert("DOMType : "+_DOMTypes[_DOMType]+" level "+_DOMLevel);
/*******************************************************************************************/
/** Navigation **/
var backUrl=''; //URL de retour par fonction goBack() si ?back= donné
if (location.search){
	var i=location.search.indexOf('back=');
	if (i>0) backUrl=location.search.substr(i+5);
}
function goBack(){if (backUrl!='') location.href=unescape(backUrl);}
function submitForm(formname,op,validator) {
	if (validator && !eval(validator)) return;
	if (op && findObj('op')) findObj('op').value=op;
	var form=document.forms[formname];
	if (backUrl!='') form.action+="?back="+backUrl;
	form.submit();
}
function navigateFromTo(urlFrom,urlTo) { //Navigation avec lien de retour
	var urlBack=escape(urlFrom);
	var mark=(urlTo.indexOf('?')>0?'&':'?');
	this.location=urlTo+mark+"back="+urlBack;
}


/** Calques **********************************************************/
// * Dependencies * 
// this function requires the following snippets:
// JavaScript/readable_MM_functions/findObj
//
// Accepts a variable number of arguments, in triplets as follows:
// arg 1: simple name of a layer object, such as "Layer1"
// arg 2: ignored (for backward compatibility)
// arg 3: 'hide' or 'show'
// repeat...
//
// Example: showHideLayers(Layer1,'','show',Layer2,'','hide');
function showHideLayers()
{ 
  var i, visStr, obj, args = showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
  {
    if ((obj = findObj(args[i])) != null)
    {
      visStr = args[i+2];
      if (obj.style)      {
        obj = obj.style;
        if(visStr == 'show') visStr = 'visible';
        else if(visStr == 'hide') visStr = 'hidden';
      }
      obj.visibility = visStr;
    }
  }
}
function toggleDisplay(id,mode) {
	var o=findObj(id);
	if(o.style) o=o.style;
	if(!mode)mode='block';
	o.display=(o.display=='none'?mode:'none');
}
function shiftTo(obj, x, y) {
    var theObj = findObj(obj)
    if (theObj.moveTo) {
        theObj.moveTo(x,y)
    } else {
        theObj.style.left = x+"px";
        theObj.style.top = y+"px";
    }
}
function Point(x, y) {this.x=x; this.y=y;}
var mousePos = new Point(0,0);
var isIE = (document.all?true:false);

function initMousePosition() {
	if(_DOMLevel>=2)
		document.addEventListener(Event.MOUSEMOVE, getMousePosition, true);
	else {
		if (!isIE) document.captureEvents(Event.MOUSEMOVE);
		document.onmousemove = getMousePosition;
	}
}
function getMousePosition(e) {
  var _x;
  var _y;
  if (!isIE) {
    _x = e.pageX;
    _y = e.pageY;
  }
  if (isIE) {
    _x = event.clientX + document.body.scrollLeft;
    _y = event.clientY + document.body.scrollTop;
  }
	mousePos.x=_x; mousePos.y=_y;
//	window.status='('+mousePos.x+','+mousePos.y+')';
  return true;
}
/** Images **/
//Example: preloadImages('file.gif', 'http://www.x.com/y.gif');
function preloadImages()
{
  if(document.images)
  {
    if(!document.imageArray) document.imageArray = new Array();
    var i,j = document.imageArray.length, args = preloadImages.arguments;
    
    for(i=0; i<args.length; i++)
    {
      if (args[i].indexOf("#")!=0)
      {
        document.imageArray[j] = new Image;
        document.imageArray[j++].src = args[i];
      }
    }
  }
}
function entitledImages() {
	if (document.images){
		var imgs=document.images;
		for(var i=0;i<imgs.length;i++)
			if (imgs[i].alt && imgs[i].alt!='') imgs[i].title=imgs[i].alt;
	}
}

/** Divers **/
function writePercent(n,tot){
	document.write(Math.round(tot>0 ?(n*100)/tot:0)+'%');
}
function mask(str,textbox,loc,delim,keyCode){
	var locs = loc.split(',');
	for (var i = 0; i <= locs.length; i++){
		for (var k = 0; k <= str.length; k++){
		 if (k == locs[i]){
			if (str.substring(k, k+1) != delim){
			 if (keyCode != 8){ //backspace
				str = str.substring(0,k) + delim + str.substring(k,str.length);
				 }
			}
		 }
		}
	 }
	textbox.value = str
}

