function onclick_page(event)
{
  var x = event.clientX;
  var y = event.clientY;
  alert('Vous avez cliqué au point de coordonnés: ' + x + ', ' + y );
}

var selectedGridCell = 0;
var selectedGridCellClass = 0;

function selectGridCell(id) {
	if ( selectedGridCell != 0) {
		_gel(selectedGridCell).className=selectedGridCellClass;

	} 
	if( id != 0 ) { 
		removeClass(_gel(id),'grid-cell-over');
 		selectedGridCellClass=_gel(id).className;
 		selectedGridCell=id;
 		_gel(id).className='grid-cell-selected';
	}
}

var selectedLevel = 0;
var selectedLevelClass = 0;

function selectLevel(id) {
	if ( selectedLevel != 0) {
		_gel(selectedLevel).className=selectedLevelClass;

	} 
	if( id != 0 ) { 
		removeClass(_gel(id),'level-line-over');
 		selectedLevelClass=_gel(id).className;
 		selectedLevel=id;
 		_gel(id).className='level-line-selected';
	}
}

function selectLevel2(id) {

if ( selectedLevel != 0) {
_gel(selectedLevel).className=selectedLevelClass;

} 

if( id != 0 ) { 
 if (id!=selectedLevel) {
 removeClass(_gel(id),'level-line-over');
 selectedLevelClass=_gel(id).className;
 selectedLevel=id;
 _gel(id).className='level-line-selected';
 }else {
  selectedLevel = 0;
  selectedLevelClass = 0;
 
 }
}

}


var editedList = 0;
var selectedList = 0;
var selectedListClass = 0;

function editListItem(id) {
 editedList = id;	
}
function selectListItem(id) {
  if(editedList == 0) {
	  
	if ( selectedList != 0 ) {
		if (_gel(selectedList))
		_gel(selectedList).className=selectedListClass;
	} 
	if( id != 0 ) { 
 		removeClass(_gel(id),'list-line-over');
		selectedListClass=_gel(id).className;
		selectedList=id;
		_gel(id).className='list-line-selected';
	}
  }
	
}


function selectListItem2(id) {

	if ( selectedList != 0 ) {
		if (_gel(selectedList))
		_gel(selectedList).className=selectedListClass;
	} 
	if( id != 0 ) { 
	 if (id!=selectedList) {
 		removeClass(_gel(id),'list-line-over');
		selectedListClass=_gel(id).className;
		selectedList=id;
		_gel(id).className='list-line-selected';
	 }else {
     selectedList = 0;
     selectedListClass = 0;
 
    }
	
	}
	
}

function clearUsernameStatus() {
  closeDiv('check_username')
}
function closeDiv(elName){
 var theElemenet=document.getElementById(elName);
 if(theElemenet){
   theElemenet.style.display="none";
 }
}


function clearDiv(elName){
 var theElemenet=document.getElementById(elName);
 if(theElemenet){
   theElemenet.innerHTML = "";
   theElemenet.style.display="none";
 }
}

		
function openDiv(elName){
	var theElemenet=document.getElementById(elName);
	if(theElemenet){
		theElemenet.style.display="inline";
	}
}

function changeDiv(elName){
	var theElemenet=document.getElementById(elName);
	//alert(elName+'  '+theElemenet.style.display);
	if(theElemenet){
		if (theElemenet.style.display == "inline") 
		 theElemenet.style.display="none";
		else 
		 theElemenet.style.display = "inline";
		
	}
}

function copyDiv(src,dest){
	_gel(dest).innerHTML = _gel(src).innerHTML;
}

function copyRow(src,dest){
	 alert(_gel(src).value);
	_gel(dest).tBody = _gel(src).innerHTML;
}

function collapseLevel(elName) {
	var theElemenet=document.getElementById(elName);
	var theImg=document.getElementById(elName+'-img');
	if(theElemenet){
 		if (theElemenet.style.display=="none") { 
			theElemenet.style.display="inline";
			//theImg.className="level-minus";
		}
		else {
			theElemenet.style.display="none";
			//theImg.className="level-plus";
		}

	}
	
	if(theImg){
 		if (theImg.className=="action-level-plus") { 
			theImg.className="action-level-minus";
		}
		else {
			theImg.className="action-level-plus";
		}

	}
}	
	

		
function getRootNode(xmlHttpReq){
	return xmlHttpReq.responseXML.getElementsByTagName('root')[0];
}
		
       
function clearUsernameStatus() {
	closeDiv('check_username')
}

function updateUsernameStatus() {
	var exp=new RegExp("^[a-zA-Z0-9]{3,8}$","g");
    var username=document.forms['signupForm'].elements['username'].value;
    if ( exp.test(username) ) 
    	go();
	else 
		document.getElementById('check_username').innerHTML= "<div class='label' style='color:FF0000;'>Invalid</div>";
			  				
}
        

function getXhr(){
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
		xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else { // XMLHttpRequest non supporté par le navigateur 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 
	return xhr
}
			
function doCheckboxAction(url,status){
	var xhr = getXhr()
	//alert(url);	
	xhr.open("GET",url,true);
	xhr.send(null);
}		

function doSelectAction(url,params){
	var xhr = getXhr()
	//alert(url + params);	
	xhr.open("GET",url + params,true);
	xhr.send(null);
}		

function go(){
	var xhr = getXhr()
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			document.getElementById('check_username').innerHTML = xhr.responseXML.getElementsByTagName("html_content")[0].firstChild.data;
		}
	}
				
	xhr.open("GET",'/check_username.jsp?username='+document.forms['signupForm'].elements['username'].value,true);
	xhr.send(null);
}


function _gel(id)
{
return document.getElementById(id);
}
function ref(instance_or_id){
return(typeof(instance_or_id)=="string")?document.getElementById(instance_or_id):instance_or_id;
}

function setClass(element,_className)   {
  element.className=_className;
}

function hasClass(element,_className){
if(!element){
return;
}
var upperClass=_className.toUpperCase();
if(element.className){
var classes=element.className.split(' ');
//alert(classes);
for(var i=0;i<classes.length;i++){
if(classes[i].toUpperCase()==upperClass){
return true;
}
}
}
return false;
}

function removeClass(element,_class){
var upperClass=_class.toUpperCase();
var remainingClasses=[];
if(element.className){
var classes=element.className.split(' ');
for(var i=0;i<classes.length;i++){
if(classes[i].toUpperCase()!=upperClass){
remainingClasses[remainingClasses.length]=classes[i];
}
}
element.className=remainingClasses.join(' ');
}
}

function addClass(element,_class){

if(!hasClass(element,_class)){
element.className+=element.className?(" "+_class):_class;
}

}

function watchSelectTab(tab){

var el=tab.parentNode.firstChild;
while(el){
removeClass(el,'tab-button-sel');
//pour controler les elements adjacents de tab
removeClass(el,'tab-button-adjl');
removeClass(el,'tab-button-adjr');
//****************************
el=el.nextSibling;
}
addClass(tab,'tab-button-sel');

//controle de elements adjacants
next= tab.nextSibling
if (next) { addClass(next,'tab-button-adjr');}
prev = tab.previousSibling
if (prev) {addClass(prev,'tab-button-adjl'); }
//traitement des bodys
el=_gel(tab.id+'-body').parentNode.firstChild;
while(el){
removeClass(el,'tab-body-sel');
el=el.nextSibling;
}
addClass(_gel(tab.id+'-body'),'tab-body-sel')
}

function toggleDisplay(divName) {
	var tempDiv = ref(divName);
	if (!tempDiv) {
		return false;
	}
	if ((tempDiv.style.display == "block") || (tempDiv.style.display == "" && tempDiv.className.indexOf("hid") == 0)) {
		tempDiv.style.display = "none";
		return false;
	} else if ((tempDiv.style.display == "none") || (tempDiv.className.indexOf("hid") != 0)) {
		tempDiv.style.display = "block";
		return true;
	}
}

function stopPropagation(e)
{
if(!e)var e=window.event;
e.cancelBubble=true;
if(e.stopPropagation)e.stopPropagation();
}

function openLoginBox() {
	
	_gel('loginBoxZ').style.visibility = 'visible';
 	_gel('loginBoxZ').style.display = 'block';
	/*
	if(event){
       stopPropagation(event);
    }
	
	toggleDisplay('loginBoxZ');
	return false;*/
	//if(_gel('loginBoxZ').style.visibility != 'visible') {
		
	//}
}

function closeLoginBox() {
	
	_gel('loginBoxZ').style.visibility = 'hidden';
 	_gel('loginBoxZ').style.display = 'none';
	/*
	if(event){
       stopPropagation(event);
    }
	
	toggleDisplay('loginBoxZ');
	return false;*/
	//if(_gel('loginBoxZ').style.visibility != 'visible') {
		
	//}
}

function hidePopup()  {
	_gel('loginBoxZ').style.visibility = 'hidden';
 	_gel('loginBoxZ').style.display= 'none';
}


function showFadePage()  {
  _gel('fadePage').style.visibility = 'visible';
  _gel('fadePage').style.display = 'block';
  _gel('fadePage').style.height = document.body.scrollHeight;
}

function hideFadePage(calque)  {
 _gel('fadePage').style.visibility = 'hidden';
 _gel('fadePage').style.display = 'none';
}

function getForm(url,params,w) {
 //alert(document.body.scrollHeight+' '+document.body.clientHeight+'  '+document.documentElement.clientHeight);
 //alert(url+' '+params);
 //alert(document.body.scrollLeft+'  '+document.body.scrollTop);
  var top=(document.body.scrollTop+150);
  var left=(screen.width-22-800)/2;
  _gel('fadePage').style.visibility = 'visible';
  _gel('fadePage').style.display = 'block';
  _gel('fadePage').style.height = document.body.scrollHeight;
  _gel('loading').style.display = 'inline';
  
	var xhr = getXhr()
	
	xhr.onreadystatechange = function(){
		
		if(xhr.readyState == 4 && xhr.status == 200){
			
			_gel('form').innerHTML = xhr.responseText;
	        
			//tiny();
			
			_gel('form').style.left = left;
			_gel('form').style.top = top;
			if (w) {
			  _gel('form').style.width = w;	
			  _gel('form').style.left = (screen.width-22-w)/2;
			}
			
			_gel('form').style.visibility = 'visible';
 			_gel('form').style.display = 'block';
			
  			_gel('loading').style.display = 'none';

			
     }
	}
				
	xhr.open("GET",url + params,true);
	xhr.send(null);

}

function getInfobulle(url,params,e) {
	
 //alert(document.body.scrollHeight+' '+document.body.clientHeight+'  '+document.documentElement.clientHeight);
 //alert(e.clientX+','+e.clientY);
 //alert(document.body.scrollLeft+'  '+document.body.scrollTop);
 var top=(document.body.scrollTop+40);
 var left=(screen.width-740)/2;
 //_gel('fadePage').style.visibility = 'visible';
 // _gel('fadePage').style.display = 'block';
 //  _gel('fadePage').style.height = document.body.scrollHeight;
  _gel('loading').style.visibility = 'visible';
  _gel('loading').style.display = 'block';
  
	var xhr = getXhr()
	
	xhr.onreadystatechange = function(){
		
		if(xhr.readyState == 4 && xhr.status == 200){
			
			_gel('form').innerHTML = xhr.responseText;
	        
			//tiny();
			
			_gel('form').style.left = left;
			_gel('form').style.top = top;
			_gel('form').style.visibility = 'visible';
 			_gel('form').style.display = 'block';
			
			_gel('loading').style.visibility = 'hidden';
  			_gel('loading').style.display = 'none';
			

			
     }
	}
				
	xhr.open("GET",url + params,true);
	xhr.send(null);

}


function hideForm(calque) {
	
			_gel('form').style.visibility = 'hidden';
 			_gel('form').style.display = 'none';
			_gel('fadePage').style.visibility = 'hidden';
 			_gel('fadePage').style.display = 'none';	
			_gel('form').innerHTML = "";
			
		
}

function getData(lien,calque) {
	//alert(calque);
	var xhr = getXhr()
	//_gel(calque).innerHTML="<tr><td>1</td><td>2</td><td>3</td><tr>";
	//_gel(calque).style.display = 'inline';
	_gel(calque).innerHTML="<div class=loading>Traitement en cours...</div>";
	//addClass(_gel(calque),'first-plan');
	//_gel(calque).style.display = 'inline';
	//_gel(calque).style.top=_gel(calque).style.top+document.body.scrollTop
	//_gel(calque).style.top = 100+document.body.scrollTop;
    //_gel(calque).scrollIntoView(); 
	xhr.onreadystatechange = function(){
		// Si reponse OK
		if(xhr.readyState == 4 && xhr.status == 200){
			_gel(calque).innerHTML = xhr.responseText;
			//tiny();
			
		}
	}
				
	xhr.open("GET",lien,true);
	xhr.send(null);
	
}

function sendForm(form,calque) {
  //_gel(calque).innerHTML="<div class=loading>Traitement en cours...</div>";
  form.submit();	
  _gel(calque).innerHTML="<div class=loading>Traitement en cours...</div>";
}



function setValue(o, v) {
		_gel(o).value  = v;
}

function disableForm(form_id) {
 var form = document.forms[form_id];  	
 for(var i = 0; i < form.length; i++){
       form.elements[i].disabled = true;
 }		
}

function enableForm(form_id) {
 var form = document.forms[form_id];  	
 for(var i = 0; i < form.length; i++){
       form.elements[i].disabled = false;
 }		
}

function enableFormAndInit(form_id) {
 var form = document.forms[form_id]; 
 form.reset();
 for(var i = 0; i < form.length; i++){
       form.elements[i].disabled = false;		   
 }	
}


function startUpload(upload_form,calque_animation){
  document.forms[upload_form].submit();
  disableForm(upload_form);
  _gel(calque_animation).innerHTML = _gel(calque_animation+'_init').innerHTML
} 



function endUpload(upload_form,callback_link,calque_destination){

  if(callback_link) 
   getData(callback_link,calque_destination);
  
  document.forms[upload_form].submit();
  var form = document.forms[upload_form];
  for(var i = 0; i < form.length; i++){
       form.elements[i].disabled = false;
  }
} 




/*
function setClass(o,c) {
	_gel(o).className=c;
}

function permuteClass(o,c,c1,c2) {
	//alert(o+' '+c1+'  '+c2);
	//alert(_gel(o).parentNode.childNodes.length)
	var parent = _gel(o).parentNode;
	var childs = parent.childNodes;
	
	for(var i=0;i<childs.length;i++) {
	  if(i%2 == 0) 
	   childs[i].className=c1;
	  else
	   childs[i].className=c2;     
	}
	
	_gel(o).className=_gel(o).className+' '+c;
	
}
*/

function tiny() {
	
	for (var c=0; c<tinyMCE.configs.length; c++) {
		tinyMCE.settings = tinyMCE.configs[c];

		var elementRefAr = new Array();

		// Add submit triggers
		if (document.forms && tinyMCE.settings['add_form_submit_trigger'] && !tinyMCE.submitTriggers) {
			for (var i=0; i<document.forms.length; i++) {
				var form = document.forms[i];

				tinyMCE.addEvent(form, "submit", TinyMCE.prototype.handleEvent);
				tinyMCE.addEvent(form, "reset", TinyMCE.prototype.handleEvent);
				tinyMCE.submitTriggers = true; // Do it only once

				// Patch the form.submit function
				if (tinyMCE.settings['submit_patch']) {
					try {
						form.oldSubmit = form.submit;
						form.submit = TinyMCE.prototype.submitPatch;
					} catch (e) {
						// Do nothing
					}
				}
			}
		}

		// Add editor instances based on mode
		var mode = tinyMCE.settings['mode'];
		switch (mode) {
			case "exact":
				var elements = tinyMCE.getParam('elements', '', true, ',');

				for (var i=0; i<elements.length; i++) {
					var element = tinyMCE._getElementById(elements[i]);
					var trigger = element ? element.getAttribute(tinyMCE.settings['textarea_trigger']) : "";

					if (trigger == "false")
						continue;

					if (tinyMCE.settings['ask'] && element) {
						elementRefAr[elementRefAr.length] = element;
						continue;
					}

					if (element)
						tinyMCE.addMCEControl(element, elements[i]);
					else if (tinyMCE.settings['debug'])
						alert("Error: Could not find element by id or name: " + elements[i]);
				}
			break;

			case "specific_textareas":
			case "textareas":
				var nodeList = document.getElementsByTagName("textarea");

				for (var i=0; i<nodeList.length; i++) {
					var trigger = nodeList.item(i).getAttribute(tinyMCE.settings['textarea_trigger']);

					if ((mode == "specific_textareas" && trigger == "true") || (mode == "textareas" && trigger != "false"))
						elementRefAr[elementRefAr.length] = nodeList.item(i);
				}
			break;
		}

		for (var i=0; i<elementRefAr.length; i++) {
			var element = elementRefAr[i];
			var elementId = element.name ? element.name : element.id;

			if (tinyMCE.settings['ask']) {
				// Focus breaks in Mozilla
				if (tinyMCE.isGecko) {
					var settings = tinyMCE.settings;

					tinyMCE.addEvent(element, "focus", function (e) {window.setTimeout(function() {TinyMCE.prototype.confirmAdd(e, settings);}, 10);});
				} else {
					var settings = tinyMCE.settings;

					tinyMCE.addEvent(element, "focus", function () { TinyMCE.prototype.confirmAdd(null, settings); });
				}
			} else
				tinyMCE.addMCEControl(element, elementId);
		}

		// Handle auto focus
		if (tinyMCE.settings['auto_focus']) {
			window.setTimeout(function () {
				var inst = tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);
				inst.selectNode(inst.getBody(), true, true);
				inst.contentWindow.focus();
			}, 10);
		}

		tinyMCE.executeCallback('oninit', '_oninit', 0);
	}
}

function maxlength_textarea(id, crid, max){
  var txtarea = _gel(id);
  _gel(crid).innerHTML=txtarea.value.length+'/'+max;/*max-txtarea.value.length;*/
  txtarea.onkeypress=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
  txtarea.onblur=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
  txtarea.onkeyup=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
  txtarea.onkeydown=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
}
function v_maxlength(id, crid, max){
        var txtarea = _gel(id);
        var crreste = _gel(crid);
        var len = txtarea.value.length;
        if(len>max) {
		  txtarea.value=txtarea.value.substr(0,max);
        }
        len = txtarea.value.length;
        crreste.innerHTML= len+'/'+max;/* max-len; */
}



// form validation function //
var formValidationMasks = new Array(3);
formValidationMasks['email'] = /\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/gi;	// Email
formValidationMasks['numeric'] = /^[0-9]+(\.[0-9]+)?$/gi;	// Numeric
formValidationMasks['entier'] = /^[0-9]+$/gi;	// Entier
formValidationMasks['real'] = /^-?[0-9]+(\.[0-9]+)?$/gi;	// Numeric
formValidationMasks['real+'] = /^\+?[0-9]+(\.[0-9]+)?$/gi;	// Numeric
formValidationMasks['year'] = /^[1-9]+[0-9]{3}$/gi;	// Numeric
formValidationMasks['cin'] = /^[0-9]+[0-9]{15}$/gi;	// Numeric
formValidationMasks['cin_6'] = /^[0-9]+[0-9]{5}$/gi;	// Numeric

function validate(form) {
  var send = true;	
   
  var fields = form.elements;
  var inputs = new Array();

  for(var no=0;no<fields.length;no++){
		f = fields[no];
		
		
		// Attributs requis
		if (_gel(f.name+'-msg')) {
  		  _gel(f.name+'-msg').style.display = 'none';		  
		}
		
		if(f.getAttribute('required') && f.required &&  f.value=="" ) {
		  _gel(f.name+'-msg').style.display = 'block';	
		  send = false;
		}
		
		// Mask d'evaluation
		if (_gel(f.name+'-msgmask')) {
  		  _gel(f.name+'-msgmask').style.display = 'none';
		  
		}
		
		if(f.getAttribute('mask') && f.mask &&  !f.value.match(formValidationMasks[f.mask]) ) {
		  _gel(f.name+'-msgmask').style.display = 'block';	
		  send = false;
		}
		
		//Maximum
		if (_gel(f.name+'-msgmax')) {
  		  _gel(f.name+'-msgmax').style.display = 'none';
	    }

		if(send && f.getAttribute('maximum') && f.maximum ) {
		  
		  var type = f.maximum.charAt(0);// type de valeur 
		  var strict = f.maximum.charAt(1);// type de valeur 
		  var value = null;
		  switch (type) {				
				case 'v' :
				  //value = parseFloat(f.maximum.substring(2,f.maximum.length));
				  value = f.maximum.substring(2,f.maximum.length);
			      break;
				 case 'f' :
				  //value = parseFloat(_gel(f.maximum.substring(2,f.maximum.length)).value);
				  value = _gel(f.maximum.substring(2,f.maximum.length)).value; 
				  break;
		  }
		  
          switch (strict) {				
				case 's' : // max strict
				 // if (parseFloat(f.value) >= value) {
				  if (f.value >= value) {
		           _gel(f.name+'-msgmax').style.display = 'block';	
			       send = false;
		          }  
			      break;
				case 'i' : // max include
				  //if (parseFloat(f.value) > value) {
				  if (f.value > value) {
		           _gel(f.name+'-msgmax').style.display = 'block';	
			       send = false;
		          }  
			      break;
		  } 
		  

		}
		
		//Minimum
		if (_gel(f.name+'-msgmin')) {
  		  _gel(f.name+'-msgmin').style.display = 'none';		  
	    }
		if(send && f.getAttribute('minimum') && f.minimum ) {
		  
		  var type = f.minimum.charAt(0);// type de valeur 
		  var strict = f.minimum.charAt(1);
		  var value = null;
		  switch (type) {				
				case 'v' :
				  //value = parseFloat(f.minimum.substring(2,f.minimum.length));
				  value = f.minimum.substring(2,f.minimum.length);
			      break;
				 case 'f' :
				  //value = parseFloat(_gel(f.minimum.substring(2,f.minimum.length)).value);
				  value = _gel(f.minimum.substring(2,f.minimum.length)).value;
			      break;
		  }
		   
		  switch (strict) {				
				case 's' :
				  //if (parseFloat(f.value) <= value) {
				  if (f.value <= value) {
		           _gel(f.name+'-msgmin').style.display = 'block';	
			       send = false;
		          }  
			      break;
				case 'i' :
				  //if (parseFloat(f.value) < value) {
				  if (f.value < value) {
		           _gel(f.name+'-msgmin').style.display = 'block';	
			       send = false;
		          } 
			      break;
		  } 

		}

		
  }
  
  //alert(send)
  return send;
}







