/* ***********  MENU  *********** */
var timeout;
var delai = 500;
var aItem = new Array();
aItem[0] = new Array(); aItem[0][0] = "iHome";  

function showMenu(idx, idxChild) {
  if (timeout) clearTimeout(timeout); 
  document.getElementById('iHome').style.zIndex  = zIndex+2;
  document.getElementById('HOME').style.zIndex   = zIndex+3;
  
  for(i=0; i<1; i++)
		if (document.getElementById(aItem[i][0]))
			document.getElementById(aItem[i][0]).style.visibility = 'hidden';

  if (idx!=-1)
   	document.getElementById(aItem[idx][0]).style.visibility = 'visible';
}
function hideMenu(idx) { timeout = setTimeout('showMenu('+idx+', 0)', delai); }
function stopHide()    { if (timeout) clearTimeout(timeout); }
/* ****************************** */


/* ***********  POPUP  *********** */
function popupCentree (href, width, height, attr) {
  var left   = (window.screen.width-width)/2;
  var top    = (window.screen.height-height)/2;
  window.open(href, '', 'width='+width+'px, height='+height+'px, top='+top+'px, left='+left+'px, '+attr);
}
/* ****************************** */


/* ***********  ONGLETS   *********** */
function showOng(obj) {
  var ul     = obj.parentNode; 
  var tabs   = obj.parentNode.getElementsByTagName('li');
  var old    = tabs[ul.getAttribute('tabid')]; 
  
  old.className    = 'OFF'; 
  document.getElementById(old.getAttribute('tabpage')).className  = 'OFF';
  document.getElementById(obj.getAttribute('tabpage')).className  = 'ON';
  obj.className    = 'ON'; 

  obj.parentNode.setAttribute('tabid', obj.getAttribute('tabid'));
} 
/* ****************************** */


/* ***********  FIELDS CONTRAINTES  *********** */
function numField(ev) {
	ev = ev || window.event;		
	if(ev.keyCode<48 || ev.keyCode>57) { // IE
		ev.returnValue = false;
		ev.cancelBubble = true;
	}
  if(ev.which < 48 || ev.which > 57) { // DOM
	  ev.preventDefault();
	  ev.stopPropagation();
  }
} 

function limitField(field, limit, name) {
  elmt = document.getElementById(field);
  if (elmt.value.length < limit+1) return;
  
  alert('Le champ "'+name+'" est limité à '+limit+' caractères.');
  elmt.value = elmt.value.substr(0, limit)
  elmt.focus();
}
/* ****************************** */



/* ***********  TFORM *********** */
// utiliser .tagName .getAttribute('Name') pour localiser un noeud
var dragObject  = null;
var mouseOffset = null;
var zIndex      = 2;
var zForm       = 0;

// bouton par défaut
function defaultButton (obj, e) { 
  document.onkeypress = function (e) {
    var enterpressed = e? e.which == 13: window.event.keyCode == 13;
    if (enterpressed) document.getElementById(obj).click();
  } 
}

// réduire - développer
function state (obj) {    
  var form = obj.parentNode.parentNode;  
  var disp = (form.children[1].style.display== 'none'? 'block': 'none');
  for (i=1; i< form.children.length ; i++) 
    form.children[i].style.display = disp;
}


// affiche le form appelé -
function showForm(obj) {  
  document.body.style.cursor = 'wait';
  var tagName  = obj.getAttribute('name');
  var tagValue = obj.getAttribute('value'); 
  var form  = document.getElementById(tagName); 
  if (form) {
    form.style.zIndex  = zIndex++;
    form.style.display = 'block'; 
    document.body.style.cursor = 'default'; 
    return;  
  }    
  
  var reg  = new RegExp("[_]+", "g");
  var expr = tagName.split(reg); 
  var req = createRequest (); 
  req.open('POST', 'show'+expr[0]+'.php', true); 
  req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
  req.send(tagValue);
  
  req.onreadystatechange = function() {
   	if(req.readyState==4 && req.status==200 && req.responseText!="") { 
      document.body.innerHTML += req.responseText; 
      var form = document.getElementById(tagName);
      form.style.zIndex = zIndex++;
      form.style.top    = form.offsetTop  + (zForm*26) + "px";
      form.style.left   = form.offsetLeft + (zForm*10) + "px"; zForm++;
    }
    document.body.style.cursor = 'default';
  };
} 

// enregistre le form appelé
function saveForm(obj) {  
  document.body.style.cursor = 'wait';
  var data  = "";
  
  var tabInput  = obj.getElementsByTagName('input');
  for (i=0; i< tabInput.length ; i++) 
    data += tabInput[i].getAttribute('name')+"="+escape(tabInput[i].getAttribute('value'))+"&";

  var tabSelect  = obj.getElementsByTagName('select');
  for (i=0; i< tabSelect.length ; i++) 
    data += tabSelect[i].getAttribute('name')+"="+escape(tabSelect[i].getAttribute('value'))+"&";

  var req = createRequest (); 
  req.open('POST', 'savEns.php', true); 
  req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
  req.send(data);
  
  req.onreadystatechange = function() {
   	if(req.readyState==4 && req.status==200 && req.responseText!="") { 
   	  obj.style.display = 'none';  
   	  var form  = document.getElementById(req.responseText);
   	  var top   = form.offsetTop;
      var left  = form.offsetLeft;
   	  var link  = form.getAttribute('linkElmt');
      document.body.removeChild(form);
      showForm(document.getElementById(link));
      //form = document.getElementById(req.responseText);
      //form.style.top  = top + "px";
      //form.style.left = left + "px";  
    }
    document.body.style.cursor = 'default';
  };
  
}



//Drag and Resize script 
function resizeStart (obj, ev) {
  target = obj.parentNode;
  //target = document.getElementById(obj.getAttribute('target'));
  ev = ev || window.event;
  document.onmousemove = resizeMove;
  document.onmouseup   = dragStop;
  target.style.zIndex  = zIndex++;
  dragObject  = target;   
  mouseOffset = getPosition(dragObject);  
  document.onselectstart=new Function ("return false");  
}

function resizeMove(ev) {
	ev = ev || window.event;
	var mousePos = mouseCoords(ev); 
  dragObject.style.width    = (mousePos.x - mouseOffset.x )+"px";
  var diffY = mousePos.y - mouseOffset.y; 
  var body  = dragObject.children[1].children[0];
  if ( diffY>0 ) {
    dragObject.style.height = diffY+"px";
    body.style.height       = (diffY-50)+"px";
  }
  else {
	  body.style.height       = (diffY-50)+"px";
	  dragObject.style.height = diffY+"px";
  }	
}


//Drag and Drop script - http://www.webreference.com/programming/javascript/mk/column2/2.html
function dragStart (target, ev) {
  ev = ev || window.event;
  document.onmousemove = dragMove;
  target.style.zIndex  = zIndex++;
  dragObject  = target;
  mouseOffset = getMouseOffset(target, ev);  
  document.onselectstart=new Function ("return false");  
}
function dragStop () {
	dragObject = null;
	document.onmousemove = null;
	document.onselectstart = "return true";
}
function dragMove(ev) {
	ev = ev || window.event;
	var mousePos = mouseCoords(ev);  
  dragObject.style.top      = (mousePos.y - mouseOffset.y)+"px";
	dragObject.style.left     = (mousePos.x - mouseOffset.x)+"px";
}

function getMouseOffset(target, ev){
	ev = ev || window.event;
	var docPos    = getPosition(target);  
	var mousePos  = mouseCoords(ev);
	
	return {x:mousePos.x-docPos.x, y:mousePos.y-docPos.y};
}
function getPosition(e) {
// attention à margin et padding et aussi à l'ascenseur (fonction incomplète)
	var left = 0;	 
  var top  = 0;
	while (e.offsetParent) {
		left += e.offsetLeft; 	
    top  += e.offsetTop;
		e     = e.offsetParent;
	}
	left += e.offsetLeft;	
  top  += e.offsetTop;
	return {x:left, y:top};
}
function mouseCoords(ev) {
	if (ev.pageX || ev.pageY)  return {x:ev.pageX, y:ev.pageY};

	return {x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop};
}
/* ****************************** */


/* ***********  XMLHttpRequest  *********** */
function createRequest () {
	// creation de l'objet XMLHttpRequest
	var req = null; 
  if (window.XMLHttpRequest) {
	  req = new XMLHttpRequest();
	  if (req.overrideMimeType) 
			req.overrideMimeType('text/xml');
	} 
	else if (window.ActiveXObject) {
		try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
			try {	req = new ActiveXObject("Microsoft.XMLHTTP");	} catch (e) {}
    }
  }
  
  return req;
}
/* ****************************** */


