var mon_x = 0;
var mon_y = 0;
var charge = false;
var pe_ban;
var pe_mess;

function requete_ajax(url)
{
	var myRequest = new Ajax.Request(url,
	{
	asynchronous:true,
	method:'get',
	evalScripts: true
	});
}

function update_ajax(url,div)
{
	var myRequest = new Ajax.Request(url,
	{
	asynchronous:true,
	method:'get',
	evalScripts: true,
	onComplete: function(requester)
	{
		if (requester.status==200)
		{

		$(div).innerHTML = requester.responseText;
		}
		Element.hide('loading');
	},
	onLoading: function (requester)
	{
		Element.show('loading');
	}
	});
}

function update_ajax_eval(url,div)
{
new Ajax.Updater(div, url,{evalScripts: true});
}

function toggle_faq(id_quest)
{
	new Effect.toggle(id_quest,'blind');
}

function popup_url(mon_form) 
{
	var form = document.getElementById(mon_form);
	var url= prompt("Entrez une URL","http://");
	if(url != null && url != '')
	{
		var nom = prompt("Entrez un nom pour ce lien");
		if(nom != null && nom != '')
		{
			form.contenu.value +='[url='+url+']'+nom+'[/url]';
		}	
	}
}

function popup_img(mon_form) 
{
	var form = document.getElementById(mon_form);
	var img=prompt("Lien de votre image","http://");
	if(img != null && img !='')
	{
		form.contenu.value += '[img]'+img+'[/img]';	
	}
}

function fermer_infobulle(){
$('infobulle').style.display="none";
$('infobulle').innerHTML="";
new Effect.Opacity('header', {duration:0, fps:25, from:0.3, to:1.0});	
new Effect.Opacity('conteneur', {duration:0, fps:25, from:0.3, to:1.0});	
}

function MyFormHelp(){ }
 
MyFormHelp.prototype = {
    show : function(message){
	new Effect.Opacity('header', {duration:0.0, fps:25, from:1.0, to:0.3});
	new Effect.Opacity('conteneur', {duration:0.0, fps:25, from:1.0, to:0.3});
	$('infobulle').style.display="block";
	$('infobulle').style.top=(mon_y-20)+"px";
    $("infobulle").innerHTML = message+'<br/><a href="#" onclick="javascript:fermer_infobulle()">ok</a>';
	}
}

function MyErrorDecorator(){
}
 
MyErrorDecorator.prototype = {
    start : function(){ 
    },
    addError : function(control, messageType){
        var message='';
        if(messageType == 1){
            message = control.errRequired;
        }else if(messageType == 2){
            message = control.errInvalid;
        }else{
            message = "Error on '"+control.label+"' field";
        }
        var item = document.createElement("li");
        $("infobulle").innerHTML =message;
    },
    end : function(){
		new Effect.Opacity('header', {duration:0.0, fps:25, from:1.0, to:0.3});
		new Effect.Opacity('conteneur', {duration:0.0, fps:25, from:1.0, to:0.3});
		$('infobulle').style.display="block";
		$('infobulle').style.top=(mon_y-20)+"px";
		$("infobulle").innerHTML += '<br/><a href="#" onclick="javascript:fermer_infobulle()">ok</a>';
	}
}

function pointeur(e) {
  if (navigator.appName!="Microsoft Internet Explorer") {
    mon_x=e.pageX - 5;
	mon_y=e.pageY - 1;
    }
    else {
    mon_x=window.event.clientX -5 + document.documentElement.scrollTop;
	mon_y=window.event.clientY -1 + document.documentElement.scrollLeft;
  }
}
document.onmousemove=pointeur;

function lecture_message_recu(id_message,url_lire_mess,div){
	requete_ajax(url_lire_mess);
	$("titre_recu_"+id_message).className='lu';
	lecture_message_recu_non_lu(id_message,div);
}

function lecture_message_recu_non_lu(id_message,div){

	fermer_elements(div);
	$('contenu_message').style.top=(mon_y-140)+"px" ;
	$('contenu_message').innerHTML=$("post_recu_"+id_message).innerHTML;
	$('contenu_message').style.display="block";
}

function lecture_message_envoye(id_message,div){
	fermer_elements(div);
	$('contenu_message').style.top=(mon_y-140)+"px" ;
	$('contenu_message').style.display="block" ;
	$('contenu_message').innerHTML=$("post_envoi_"+id_message).innerHTML;
}

function fermer_elements(div){
var i=1;
$(div).childElements().each(function(item) {
	if(i%2==0)
	{ 
		if(item.style.display!="none")
		{
			var effet = new Effect.toggle(item,'blind');
			//afterFinish: function(effet){
			//item.style.display="none";};	
		}
	}
  i++;
});
}

function repondre_message(url){
	$('popup').style.display="block";
	$('popup').style.height="450px";
	$('popup').style.width="540px";
	
	if (navigator.appName!="Microsoft Internet Explorer") hauteur=window.pageYOffset; else hauteur=document.documentElement.scrollTop;
	$('popup').style.top=(hauteur+30)+"px";
	$('popup').style.left=(document.body.clientWidth/2-320)+"px";
	update_ajax_eval(url,'popup');
	}

function fermer_popup(){

$('popup').style.display="none";
}
	
function inverse_selection(formulaire)
{
	temp = document.forms[formulaire].elements;
	for (i=0; i < temp.length; i++)
	{
		temp[i].checked=!temp[i].checked;
	}
}

function autoscroll(div) //permet de descendre le scroll du div tout en bas
{
	var elm = $(div);
	elm.scrollTop = elm.scrollHeight;	
}

function refresh_message(){if($('message_header')) update_ajax(url_refresh_message_header,'message_header');}

function requete_ajax_param(url,param)
{
	var myRequest = new Ajax.Request(url,
	{
	asynchronous:true,
	method:'get',
	parameters:param,
	evalScripts: true
	});
}

function urlencode(str) {
str = encodeURI(str);
str = str.replace(/\+/g, '%2B');
str = str.replace(/\&/g, '%26');
str = str.replace(/\"/g, '%27');
str = str.replace(/\?/g, '%3F');/*
str = str.replace('@', '%40');*/
return str;
}

function urldecode(str) {/*
str = str.replace('+', ' ');*/
str = decodeURI(str);
return str;
}

function lancement_affichage_news(){
new Effect.Opacity('conteneur', {duration:0.0, fps:25, from:1.0, to:0.3});
$('last_news').style.top="20px";
$('last_news').style.left=(document.body.clientWidth/2-320)+"px";
}

function fermer_last_news(url) {
$('last_news').style.display="none";
new Effect.Opacity('conteneur', {duration:0.0, fps:25, from:0.3, to:1.0});
requete_ajax(url);
}

Event.observe(window, 'load', periodical);

function periodical() 
{
	charge = true;
	pe_mess = new PeriodicalExecuter(refresh_message, 90);
}

	
function show_infobulle(message) {
$('infobulle').style.display="block";
$('infobulle').innerHTML = message;
$('infobulle').style.left=(mon_x+180)+"px";
$('infobulle').style.top=mon_y+"px";
}
	
function fermer_infobulle_mouseout(){
$('infobulle').style.display="none";
}

function affiche_tri(type_a_afficher,type_sous_partie)
 {
	var mes_listes=$$('.div_liste');
	var mes_li_equipement=$$('.li_equipement');
	mes_li_equipement.invoke('removeClassName','invisible');
	mes_li_equipement.invoke('addClassName','en_ligne');
	if(type_a_afficher=='tous')
	{		
		mes_listes.invoke('removeClassName','invisible');
	}
	else
	{
		var mes_listes_visible=$$('.'+type_a_afficher);
		mes_listes.invoke('addClassName','invisible');
		if(type_sous_partie!=null)
		{
			mes_li_equipement.invoke('addClassName','invisible');	
			mes_li_equipement.invoke('removeClassName','en_ligne');	
			var partie_visible=$$('.'+type_sous_partie);
			partie_visible.invoke('removeClassName','invisible');
			mes_listes_visible.invoke('addClassName','en_ligne');		
		}		
		
		mes_listes_visible.invoke('removeClassName','invisible');	
				
	}
	var mes_liens=$$('.lien_tri');
	mes_liens.invoke('removeClassName','selectionne');
	$(type_a_afficher).addClassName('selectionne');

	if(type_a_afficher=='equipement' || $(type_a_afficher).hasClassName('sous_equipement'))
	$('liste_sous_equipement').removeClassName('invisible');
	else
	$('liste_sous_equipement').addClassName('invisible');		
 }
 
 function trim (myString)
{
return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
} 

var tooltip=function(){
var id = 'tt';
 var top = 3;
 var left = 3;
 var maxw = 300;
 var speed = 10;
 var timer = 20;
 var endalpha = 95;
 var alpha = 0;
 var tt,t,c,b,h;
 var ie = document.all ? true : false;
 return{
  show:function(v,w){
   if(tt == null && charge == true){
    tt = document.createElement('div');
    tt.setAttribute('id',id);
    t = document.createElement('div');
    t.setAttribute('id',id + 'top');
    c = document.createElement('div');
    c.setAttribute('id',id + 'cont');
    b = document.createElement('div');
    b.setAttribute('id',id + 'bot');
    tt.appendChild(t);
    tt.appendChild(c);
    tt.appendChild(b);
    document.body.appendChild(tt);
    tt.style.opacity = 0;
    tt.style.filter = 'alpha(opacity=0)';
    document.onmousemove = this.pos;
   }
   if(tt != null){
		tt.style.display = 'block';
		c.innerHTML = v;
		tt.style.width = w ? w + 'px' : 'auto';
		if(!w && ie){
			t.style.display = 'none';
			b.style.display = 'none';
			tt.style.width = tt.offsetWidth;
			t.style.display = 'block';
			b.style.display = 'block';
		}
		if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
		h = parseInt(tt.offsetHeight) + top;
		 
		
		clearInterval(tt.timer);
		tt.timer = setInterval(function(){tooltip.fade(1)},timer);
	 }
  },
  pos:function(e){
  if(tt != null){
   var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
   var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
   var pos_top=(u - h);
   if(pos_top<0)	pos_top=0;
   tt.style.top = pos_top + 'px';
   var pos_left=(l + left);
   if(pos_left<0)	pos_left=0;
   tt.style.left = pos_left + 'px';
   }
  },
  fade:function(d){
  if(tt != null){
   var a = alpha;
   if((a != endalpha && d == 1) || (a != 0 && d == -1)){
    var i = speed;
   if(endalpha - a < speed && d == 1){
    i = endalpha - a;
   }else if(alpha < speed && d == -1){
     i = a;
   }
   alpha = a + (i * d);
   tt.style.opacity = alpha * .01;
   tt.style.filter = 'alpha(opacity=' + alpha + ')';
  }else{
    clearInterval(tt.timer);
     if(d == -1){tt.style.display = 'none'}
  }
  }
 },
 hide:function(){
 if(tt != null){
  clearInterval(tt.timer);
  tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
 }
  } 
 };
}();

function compte_a_rebours(secondes,id_div,url_retour)
{ 
	var m=Math.floor(secondes/60); 
	secondes=secondes -(m*60);
	var s=Math.floor(secondes);

	function decompte()
	{
		if (s>0) s--;
		else 
		{	
			s=59;
			if (m>0)m--;
			else {pe.stop(); s=0;}
		}
			if (s<10) s='0'+s.toString();
					
			s_string=s.toString();
			s_string=s_string.substring(s_string.length-2,s_string.length);
			
			m_string=m.toString();
			m_string=m_string.substring(m_string.length-2,m_string.length);			
			
		if ($(id_div)) $(id_div).innerHTML=m_string+":"+s_string;
		if ($(id_div) && s==0 && m==0) 
		{
			if (!url_retour) window.location.reload();
			else window.location.href=url_retour;
		}
	}
	pe = new PeriodicalExecuter(decompte, 1);
} 

function compte_a_rebours_repos(secondes,id_div)
{ 
	var m=Math.floor(secondes/60); 
	secondes=secondes -(m*60);
	var s=Math.floor(secondes);

	function decompte()
	{
		if (s>0) s--;
		else 
		{	
			s=59;
			if (m>0)m--;
			else {pe_repos.stop(); s=0;}
		}
			if (s<10) s='0'+s.toString();
					
			s_string=s.toString();
			s_string=s_string.substring(s_string.length-2,s_string.length);
			
			m_string=m.toString();
			m_string=m_string.substring(m_string.length-2,m_string.length);			
			
		if ($(id_div)) $(id_div).innerHTML=m_string+":"+s_string;
	}
	pe_repos = new PeriodicalExecuter(decompte, 1);
}

function compte_a_rebours_heure(secondes,id_div,url_retour)
{
var h=Math.floor(secondes / 3600); 
var secondes=secondes % 3600;
var m=Math.floor(secondes/60); 
secondes=secondes % 60
var s=Math.floor(secondes);

	function decompte()
	{
		if (s>0) s--;
		else {s=59;
			if (m>0)m--;
			else if (h>0){h--; m=59;} 
				else {pe.stop(); s=0;}
			}
			if (s<10) s='0'+s.toString();
			if (m<10) m='0'+m.toString();
			if (h<10) h='0'+h.toString();
			
			s_string=s.toString();
			s_string=s_string.substring(s_string.length-2,s_string.length);
			
			m_string=m.toString();
			m_string=m_string.substring(m_string.length-2,m_string.length);
			
			h_string=h.toString();
			if (h<1000) h_string=h_string.substring(h_string.length-3,h_string.length);
			if (h<100) h_string=h_string.substring(h_string.length-2,h_string.length);
			
		if ($(id_div))$(id_div).innerHTML=h_string+":"+m_string+":"+s_string;
		if ($(id_div) && s==0 && m==0 && h==0 )
		{
			if (!url_retour) window.location.reload();
			else window.location.href=url_retour;
		}
	}

pe = new PeriodicalExecuter(decompte, 1);
} 

function desactiver_assistance(url)
{
	new Effect.Fade('assistance');
	requete_ajax(url);
}

function change_select(url){window.location.href=url;}

function switch_equip(id)
{
	if(id=="equip_en_construction")
	{
		$(id).style.display="block";
		$('lien_equip_en_construction').addClassName('selected');
		$('equip_peut_construire').style.display="none";
		$('equip_construit').style.display="none";
		$('lien_equip_peut_construire').removeClassName('selected');
		$('lien_equip_construit').removeClassName('selected');
	}
	if(id=="equip_peut_construire")
	{
		$(id).style.display="block";
		$('lien_equip_peut_construire').addClassName('selected');
		$('equip_en_construction').style.display="none";
		$('equip_construit').style.display="none";
		$('lien_equip_en_construction').removeClassName('selected');
		$('lien_equip_construit').removeClassName('selected');
	}
	if(id=="equip_construit")
	{
		$(id).style.display="block";
		$('lien_equip_construit').addClassName('selected');
		$('equip_peut_construire').style.display="none";
		$('equip_en_construction').style.display="none";
		$('lien_equip_peut_construire').removeClassName('selected');
		$('lien_equip_en_construction').removeClassName('selected');
	}
}

function switch_batiment(id)
{
	if(id=="batiment_peut_construire")
	{
		$(id).style.display="block";
		$('lien_batiment_peut_construire').addClassName('selected');
		$('batiment_en_construction').style.display="none";
		$('batiment_construit').style.display="none";
		$('lien_batiment_en_construction').removeClassName('selected');
		$('lien_batiment_construit').removeClassName('selected');
	}
	
	if(id=="batiment_en_construction")
	{
		$(id).style.display="block";
		$('lien_batiment_en_construction').addClassName('selected');
		$('batiment_peut_construire').style.display="none";
		$('batiment_construit').style.display="none";
		$('lien_batiment_peut_construire').removeClassName('selected');
		$('lien_batiment_construit').removeClassName('selected');
	}
	
	if(id=="batiment_construit")
	{
		$(id).style.display="block";
		$('lien_batiment_construit').addClassName('selected');
		$('batiment_peut_construire').style.display="none";
		$('batiment_en_construction').style.display="none";
		$('lien_batiment_peut_construire').removeClassName('selected');
		$('lien_batiment_en_construction').removeClassName('selected');
	}
}

function switch_titre(id)
{
	if(id=="titre_peut_construire")
	{
		$(id).style.display="block";
		$('titre_en_construction').style.display="none";
		$('titre_construit').style.display="none";
	}
	
	if(id=="titre_en_construction")
	{
		$(id).style.display="block";
		$('titre_peut_construire').style.display="none";
		$('titre_construit').style.display="none";
	}
	
	if(id=="titre_construit")
	{
		$(id).style.display="block";
		$('titre_peut_construire').style.display="none";
		$('titre_en_construction').style.display="none";
	}
}

function switch_disposition (id)
{
	if(id=="disposition_1")
	{
		$(id).style.display="block";
		$('lien_disposition_1').addClassName('selected');
		$('disposition_2').style.display="none";
		$('lien_disposition_2').removeClassName('selected');
		$('disposition_3').style.display="none";
		$('lien_disposition_3').removeClassName('selected');
		$('disposition_4').style.display="none";
		$('lien_disposition_4').removeClassName('selected');
		$('disposition_5').style.display="none";
		$('lien_disposition_5').removeClassName('selected');
		$('disposition_6').style.display="none";
		$('lien_disposition_6').removeClassName('selected');
		$('disposition_7').style.display="none";
		$('lien_disposition_7').removeClassName('selected');
		$('disposition_8').style.display="none";
		$('lien_disposition_8').removeClassName('selected');
	}
	
	if(id=="disposition_2")
	{
		$(id).style.display="block";
		$('disposition_1').style.display="none";
		$('lien_disposition_1').removeClassName('selected');
		$('lien_disposition_2').addClassName('selected');
		$('disposition_3').style.display="none";
		$('lien_disposition_3').removeClassName('selected');
		$('disposition_4').style.display="none";
		$('lien_disposition_4').removeClassName('selected');
		$('disposition_5').style.display="none";
		$('lien_disposition_5').removeClassName('selected');
		$('disposition_6').style.display="none";
		$('lien_disposition_6').removeClassName('selected');
		$('disposition_7').style.display="none";
		$('lien_disposition_7').removeClassName('selected');
		$('disposition_8').style.display="none";
		$('lien_disposition_8').removeClassName('selected');
	}
	
	if(id=="disposition_3")
	{
		$(id).style.display="block";
		$('disposition_1').style.display="none";
		$('lien_disposition_1').removeClassName('selected');
		$('disposition_2').style.display="none";
		$('lien_disposition_2').removeClassName('selected');
		$('lien_disposition_3').addClassName('selected');
		$('disposition_4').style.display="none";
		$('lien_disposition_4').removeClassName('selected');
		$('disposition_5').style.display="none";
		$('lien_disposition_5').removeClassName('selected');
		$('disposition_6').style.display="none";
		$('lien_disposition_6').removeClassName('selected');
		$('disposition_7').style.display="none";
		$('lien_disposition_7').removeClassName('selected');
		$('disposition_8').style.display="none";
		$('lien_disposition_8').removeClassName('selected');
	}
	
	if(id=="disposition_4")
	{
		$(id).style.display="block";
		$('disposition_1').style.display="none";
		$('lien_disposition_1').removeClassName('selected');
		$('disposition_2').style.display="none";
		$('lien_disposition_2').removeClassName('selected');
		$('disposition_3').style.display="none";
		$('lien_disposition_3').removeClassName('selected');
		$('lien_disposition_4').addClassName('selected');
		$('disposition_5').style.display="none";
		$('lien_disposition_5').removeClassName('selected');
		$('disposition_6').style.display="none";
		$('lien_disposition_6').removeClassName('selected');
		$('disposition_7').style.display="none";
		$('lien_disposition_7').removeClassName('selected');
		$('disposition_8').style.display="none";
		$('lien_disposition_8').removeClassName('selected');
	}
	
	if(id=="disposition_5")
	{
		$(id).style.display="block";
		$('disposition_1').style.display="none";
		$('lien_disposition_1').removeClassName('selected');
		$('disposition_2').style.display="none";
		$('lien_disposition_2').removeClassName('selected');
		$('disposition_3').style.display="none";
		$('lien_disposition_3').removeClassName('selected');
		$('disposition_4').style.display="none";
		$('lien_disposition_4').removeClassName('selected');
		$('lien_disposition_5').addClassName('selected');
		$('disposition_6').style.display="none";
		$('lien_disposition_6').removeClassName('selected');
		$('disposition_7').style.display="none";
		$('lien_disposition_7').removeClassName('selected');
		$('disposition_8').style.display="none";
		$('lien_disposition_8').removeClassName('selected');
	}
	
	if(id=="disposition_6")
	{
		$(id).style.display="block";
		$('disposition_1').style.display="none";
		$('lien_disposition_1').removeClassName('selected');
		$('disposition_2').style.display="none";
		$('lien_disposition_2').removeClassName('selected');
		$('disposition_3').style.display="none";
		$('lien_disposition_3').removeClassName('selected');
		$('disposition_4').style.display="none";
		$('lien_disposition_4').removeClassName('selected');
		$('disposition_5').style.display="none";
		$('lien_disposition_5').removeClassName('selected');
		$('lien_disposition_6').addClassName('selected');
		$('disposition_7').style.display="none";
		$('lien_disposition_7').removeClassName('selected');
		$('disposition_8').style.display="none";
		$('lien_disposition_8').removeClassName('selected');
	}
	
	if(id=="disposition_7")
	{
		$(id).style.display="block";
		$('disposition_1').style.display="none";
		$('lien_disposition_1').removeClassName('selected');
		$('disposition_2').style.display="none";
		$('lien_disposition_2').removeClassName('selected');
		$('disposition_3').style.display="none";
		$('lien_disposition_3').removeClassName('selected');
		$('disposition_4').style.display="none";
		$('lien_disposition_4').removeClassName('selected');
		$('disposition_5').style.display="none";
		$('lien_disposition_5').removeClassName('selected');
		$('disposition_6').style.display="none";
		$('lien_disposition_6').removeClassName('selected');
		$('lien_disposition_7').addClassName('selected');
		$('disposition_8').style.display="none";
		$('lien_disposition_8').removeClassName('selected');
	}
	
	if(id=="disposition_8")
	{
		$(id).style.display="block";
		$('disposition_1').style.display="none";
		$('lien_disposition_1').removeClassName('selected');
		$('disposition_2').style.display="none";
		$('lien_disposition_2').removeClassName('selected');
		$('disposition_3').style.display="none";
		$('lien_disposition_3').removeClassName('selected');
		$('disposition_4').style.display="none";
		$('lien_disposition_4').removeClassName('selected');
		$('disposition_5').style.display="none";
		$('lien_disposition_5').removeClassName('selected');
		$('disposition_6').style.display="none";
		$('lien_disposition_6').removeClassName('selected');
		$('disposition_7').style.display="none";
		$('lien_disposition_7').removeClassName('selected');
		$('lien_disposition_8').addClassName('selected');
	}
}

function switch_vehicule(id)
{
	if(id=="vehicule_en_construction")
	{
		$(id).style.display="block";
		$('lien_vehicule_en_construction').addClassName('selected');
		$('vehicule_peut_construire').style.display="none";
		$('vehicule_construit').style.display="none";
		$('lien_vehicule_peut_construire').removeClassName('selected');
		$('lien_vehicule_construit').removeClassName('selected');
	}
	if(id=="vehicule_peut_construire")
	{
		$(id).style.display="block";
		$('lien_vehicule_peut_construire').addClassName('selected');
		$('vehicule_en_construction').style.display="none";
		$('vehicule_construit').style.display="none";
		$('lien_vehicule_en_construction').removeClassName('selected');
		$('lien_vehicule_construit').removeClassName('selected');
	}
	if(id=="vehicule_construit")
	{
		$(id).style.display="block";
		$('lien_vehicule_construit').addClassName('selected');
		$('vehicule_peut_construire').style.display="none";
		$('vehicule_en_construction').style.display="none";
		$('lien_vehicule_peut_construire').removeClassName('selected');
		$('lien_vehicule_en_construction').removeClassName('selected');
	}
}

function switch_hangar(id)
{
	if(id=="bloc_ressource")
	{
		$(id).style.display="block";
		$('menu_ressource').addClassName('selected');
		$('bloc_consommable').style.display="none";		
		$('menu_consommable').removeClassName('selected');
		$('bloc_equipement').style.display="none";		
		$('menu_equipement').removeClassName('selected');
		$('bloc_vehicule').style.display="none";		
		$('menu_vehicule').removeClassName('selected');
	}
	if(id=="bloc_consommable")
	{
		$(id).style.display="block";
		$('menu_consommable').addClassName('selected');
		$('bloc_ressource').style.display="none";
		$('menu_ressource').removeClassName('selected');	
		$('bloc_equipement').style.display="none";
		$('menu_equipement').removeClassName('selected');
		$('bloc_vehicule').style.display="none";		
		$('menu_vehicule').removeClassName('selected');
	}
	if(id=="bloc_equipement")
	{
		$(id).style.display="block";
		$('menu_equipement').addClassName('selected');
		$('bloc_ressource').style.display="none";		
		$('menu_ressource').removeClassName('selected');
		$('bloc_consommable').style.display="none";		
		$('menu_consommable').removeClassName('selected');	
		$('bloc_vehicule').style.display="none";		
		$('menu_vehicule').removeClassName('selected');
	}
	if(id=="bloc_vehicule")
	{
		$(id).style.display="block";
		$('menu_vehicule').addClassName('selected');
		$('bloc_ressource').style.display="none";	
		$('menu_ressource').removeClassName('selected');
		$('bloc_consommable').style.display="none";		
		$('menu_consommable').removeClassName('selected');
		$('bloc_equipement').style.display="none";		
		$('menu_equipement').removeClassName('selected');	
	}
}

function switch_competence(id)
{
	$(id).style.display="block";
	$('menu_'+id).addClassName('selected');
	if(id=="construction")
	{
		$('optimisation').style.display="none";		
		$('menu_optimisation').removeClassName('selected');
		$('utilisation_def').style.display="none";		
		$('menu_utilisation_def').removeClassName('selected');
		$('utilisation_off').style.display="none";		
		$('menu_utilisation_off').removeClassName('selected');
		$('transmission').style.display="none";		
		$('menu_transmission').removeClassName('selected');
	}
	if(id=="optimisation")
	{
		$('construction').style.display="none";		
		$('menu_construction').removeClassName('selected');
		$('utilisation_def').style.display="none";	
		$('menu_utilisation_def').removeClassName('selected');
		$('utilisation_off').style.display="none";		
		$('menu_utilisation_off').removeClassName('selected');
		$('transmission').style.display="none";		
		$('menu_transmission').removeClassName('selected');
	}
	if(id=="utilisation_off")
	{
		$('construction').style.display="none";		
		$('menu_construction').removeClassName('selected');
		$('optimisation').style.display="none";		
		$('menu_optimisation').removeClassName('selected');
		$('utilisation_def').style.display="none";		
		$('menu_utilisation_def').removeClassName('selected');
		$('transmission').style.display="none";		
		$('menu_transmission').removeClassName('selected');
	}
	if(id=="utilisation_def")
	{
		$('construction').style.display="none";		
		$('menu_construction').removeClassName('selected');
		$('optimisation').style.display="none";		
		$('menu_optimisation').removeClassName('selected');
		$('transmission').style.display="none";		
		$('menu_transmission').removeClassName('selected');
		$('utilisation_off').style.display="none";		
		$('menu_utilisation_off').removeClassName('selected');
	}
	if(id=="transmission")
	{
		$('construction').style.display="none";		
		$('menu_construction').removeClassName('selected');
		$('optimisation').style.display="none";		
		$('menu_optimisation').removeClassName('selected');
		$('utilisation_def').style.display="none";	
		$('menu_utilisation_def').removeClassName('selected');
		$('utilisation_off').style.display="none";		
		$('menu_utilisation_off').removeClassName('selected');
	}
}

/* js/jforms_light.js*/
var jForms = {
    _forms: {},

    tForm: null,
    frmElt: null,

    declareForm : function(aForm){
        this._forms[aForm.name]=aForm;
        if(window.jQuery)
            jQuery('#'+aForm.name).bind('submit',function (ev) { jQuery(ev.target).trigger('jFormsUpdateFields'); return jForms.verifyForm(ev.target); });
        else{
            var elem = document.getElementById(aForm.name);
            if (elem.addEventListener) {
                elem.addEventListener("submit", function (ev) { if(!jForms.verifyForm(elem)) {ev.preventDefault(); ev.stopPropagation(); return false;} return true; }, false);
            } else if (elem.attachEvent) {
                elem.attachEvent("onsubmit", function (ev) { if(!jForms.verifyForm(elem)) { window.event.cancelBubble = true ; window.event.returnValue = false; return false;} return true;});
            }
        }
    },

    getForm : function (name) {
        return this._forms[name];
    },

    verifyForm : function(frmElt){
        this.tForm = this._forms[frmElt.attributes.getNamedItem("id").value]; // we cannot use getAttribute for id because a bug with IE
        this.frmElt = frmElt;
        var msg = '';
        var valid = true;
        this.tForm.errorDecorator.start();
        for(var i =0; i < this.tForm.controls.length; i++){
            var c = this.tForm.controls[i];
            if(typeof c.getValue == 'function')
                var val = c.getValue();
            else{
                var elt = frmElt.elements[c.name];
                if (!elt) continue; // sometimes, all controls are not generated...
                var val = this.getValue(elt);
            }
            if(val === null || val === false){ 
                if(c.required){
                    this.tForm.errorDecorator.addError(c, 1);
                    valid = false;
                }
            }else{
                if(!c.check(val, this)){
                    this.tForm.errorDecorator.addError(c, 2);
                    valid = false;
                }
            }
        }
        if(!valid)
            this.tForm.errorDecorator.end();
        return valid;
    },

    trim : function (str) {
        if(str.replace)
            return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
        else return str;
    },

    getValue : function (elt){
        if(elt.nodeType) { // this is a node
            switch (elt.nodeName.toLowerCase()) {
                case "input":
                    if(elt.getAttribute('type') == 'checkbox')
                        return elt.checked;
                case "textarea":
                    var val = this.trim(elt.value);
                    return val!==''?val:null; 
                case "select":
                    if (!elt.multiple)
                        return (elt.value!==''?elt.value:null);
                    var values = [];
                    for (var i = 0; i < elt.options.length; i++) {
                        if (elt.options[i].selected)
                            values.push(elt.options[i].value);
                    }
                    if(values.length) 
                        return values; 
                    return null;
            }
        } else if(this.isCollection(elt)){
            // this is a NodeList of radio buttons or multiple checkboxes
            var values = [];
            for (var i = 0; i < elt.length; i++) {
                var item = elt[i];
                if (item.checked)
                    values.push(item.value);
            }
            if(values.length) {
                if (elt[0].getAttribute('type') == 'radio')
                    return values[0];
                return values; 
            }
        }
        return null;
    },

    hasClass: function (elt,clss) {
        return elt.className.match(new RegExp('(\\s|^)'+clss+'(\\s|$)'));
    },
    addClass: function (elt,clss) {
        if (this.isCollection(elt)) {
            for(var j=0; j<elt.length;j++) {
                if (!this.hasClass(elt[j],clss)) {
                    elt[j].className += " "+clss;
                }
            }
        } else {
            if (!this.hasClass(elt,clss)) {
                elt.className += " "+clss;
            }
        }
    },
    removeClass: function (elt,clss) {
        if (this.isCollection(elt)) {
            for(var j=0; j<elt.length;j++) {
                if (this.hasClass(elt[j],clss)) {
                    elt[j].className = elt[j].className.replace(new RegExp('(\\s|^)'+clss+'(\\s|$)'),' ');
                }
            }
        } else {
            if (this.hasClass(elt,clss)) {
                elt.className = elt.className.replace(new RegExp('(\\s|^)'+clss+'(\\s|$)'),' ');
            }
        }
    },
    setAttribute: function(elt, name, value){
        if (this.isCollection(elt)) {
            for(var j=0; j<elt.length;j++) {
                elt[j].setAttribute(name, value);
            }
        } else {
            elt.setAttribute(name, value);
        }
    },
    removeAttribute: function(elt, name){
        if (this.isCollection(elt)) {
            for(var j=0; j<elt.length;j++) {
                elt[j].removeAttribute(name);
            }
        } else {
            elt.removeAttribute(name);
        }
    },
    isCollection: function(elt) {
        if (typeof HTMLCollection != "undefined" && elt instanceof HTMLCollection) {
            return true;
        }
        if (typeof NodeList != "undefined" && elt instanceof NodeList) {
          return true;
        }
        if (elt instanceof Array)
            return true;
        if (elt.length != undefined && (elt.localName == undefined || elt.localName == 'SELECT' || elt.localName != 'select'))
            return true;
        return false;
    }
};

/**
 * represents a form
 */
function jFormsForm(name){
    this.name = name;
    this.controls = [];
    this.errorDecorator =  new jFormsErrorDecoratorAlert();
};

jFormsForm.prototype={
    addControl : function(ctrl){
        this.controls.push(ctrl);
        ctrl.formName = this.name;
    },

    setErrorDecorator : function (decorator){
        this.errorDecorator = decorator;
    },

    getControl : function(aControlName) {
        var ctrls = this.controls;
        for(var i=0; i < ctrls.length; i++){
            if (ctrls[i].name == aControlName) {
                return ctrls[i];
            }
        }
        return null;
    }
};


/**
 * control with string
 */
function jFormsControlString(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this.minLength = -1;
    this.maxLength = -1;
};
jFormsControlString.prototype.check = function (val, jfrm) {
    if(this.minLength != -1 && val.length < this.minLength)
        return false;
    if(this.maxLength != -1 && val.length > this.maxLength)
        return false;
    return true;
};

/**
 * control for secret input
 */
function jFormsControlSecret(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this.minLength = -1;
    this.maxLength = -1;
};
jFormsControlSecret.prototype.check = function (val, jfrm) {
    if(this.minLength != -1 && val.length < this.minLength)
        return false;
    if(this.maxLength != -1 && val.length > this.maxLength)
        return false;
    return true;
};

/**
 * confirm control
 */
function jFormsControlConfirm(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this._masterControl = name.replace(/_confirm$/,'');
};
jFormsControlConfirm.prototype.check = function(val, jfrm) {
    if(jfrm.getValue(jfrm.frmElt.elements[this._masterControl]) !== val)
        return false;
    return true;
};

/**
 * control with boolean
 */
function jFormsControlBoolean(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlBoolean.prototype.check = function (val, jfrm) {
    return (val == true || val == false);
};

/**
 * control with Decimal
 */
function jFormsControlDecimal(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlDecimal.prototype.check = function (val, jfrm) {
    return ( -1 != val.search(/^\s*[\+\-]?\d+(\.\d+)?\s*$/));
};

/**
 * control with Integer
 */
function jFormsControlInteger(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlInteger.prototype.check = function (val, jfrm) {
    return ( -1 != val.search(/^\s*[\+\-]?\d+\s*$/));
};

/**
 * control with Hexadecimal
 */
function jFormsControlHexadecimal(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlHexadecimal.prototype.check = function (val, jfrm) {
  return (val.search(/^0x[a-f0-9A-F]+$/) != -1);
};

/**
 * control with Datetime
 */
function jFormsControlDatetime(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this.minDate = null;
    this.maxDate = null;
    this.multiFields = false;
};
jFormsControlDatetime.prototype.check = function (val, jfrm) {
    var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2})(:(\d{2}))?$/);
    if(t == null) return false;
    var yy = parseInt(t[1],10);
    var mm = parseInt(t[2],10) -1;
    var dd = parseInt(t[3],10);
    var th = parseInt(t[4],10);
    var tm = parseInt(t[5],10);
    var ts = 0;
    if(t[7] != null && t[7] != "")
        ts = parseInt(t[7],10);
    var dt = new Date(yy,mm,dd,th,tm,ts);
    if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds())
        return false;
    else if((this.minDate !== null && val < this.minDate) || (this.maxDate !== null && val > this.maxDate))
        return false;
    return true;
};
jFormsControlDatetime.prototype.getValue = function(){
    if(!this.multiFields){ 
	var val = document.getElementById(this.formName+'_'+this.name).value.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
	return val!==''?val:null; 
    } 
    var controlId = this.formName+'_'+this.name;
    var v = document.getElementById(controlId+'_year').value + '-'
        + document.getElementById(controlId+'_month').value + '-'
        + document.getElementById(controlId+'_day').value + ' '
        + document.getElementById(controlId+'_hour').value + ':'
        + document.getElementById(controlId+'_minutes').value;

    var secondsControl = document.getElementById(this.formName+'_'+this.name+'_seconds');
    if(secondsControl.getAttribute('type') !== 'hidden'){
        v += ':'+secondsControl.value;
        if(v == '-- ::')
            return null;
    }
    else if(v == '-- :')
        return null;
    return v;
};

/**
 * control with Date
 */
function jFormsControlDate(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this.multiFields = false;
    this.minDate = null;
    this.maxDate = null;
};
jFormsControlDate.prototype.check = function (val, jfrm) {
    var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/);
    if(t == null) return false;
    var yy = parseInt(t[1],10);
    var mm = parseInt(t[2],10) -1;
    var dd = parseInt(t[3],10);
    var dt = new Date(yy,mm,dd,0,0,0);
    if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate())
        return false;
    else if((this.minDate !== null && val < this.minDate) || (this.maxDate !== null && val > this.maxDate))
        return false;
    return true;
};
jFormsControlDate.prototype.getValue = function(){
    if(!this.multiFields){ 
	var val = document.getElementById(this.formName+'_'+this.name).value.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
	return val!==''?val:null; 
    } 

    var controlId = this.formName+'_'+this.name;
    var v = document.getElementById(controlId+'_year').value + '-'
        + document.getElementById(controlId+'_month').value + '-'
        + document.getElementById(controlId+'_day').value;
    if(v == '--')
        return null;
    return v;
};

/**
 * control with time
 */
function jFormsControlTime(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlTime.prototype.check = function (val, jfrm) {
    var t = val.match(/^(\d{2}):(\d{2})(:(\d{2}))?$/);
    if(t == null) return false;
    var th = parseInt(t[1],10);
    var tm = parseInt(t[2],10);
    var ts = 0;
    if(t[4] != null)
        ts = parseInt(t[4],10);
    var dt = new Date(2007,05,02,th,tm,ts);
    if(th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds())
        return false;
    else
        return true;
};

/**
 * control with LocaleDateTime
 */
function jFormsControlLocaleDatetime(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this.lang='';
};
jFormsControlLocaleDatetime.prototype.check = function (val, jfrm) {
    var yy, mm, dd, th, tm, ts;
    if(this.lang.indexOf('fr_') == 0) {
        var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/);
        if(t == null) return false;
        yy = parseInt(t[3],10);
        mm = parseInt(t[2],10) -1;
        dd = parseInt(t[1],10);
        th = parseInt(t[4],10);
        tm = parseInt(t[5],10);
        ts = 0;
        if(t[7] != null)
            ts = parseInt(t[7],10);
    }else{
        //default is en_* format
        var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/);
        if(t == null) return false;
        yy = parseInt(t[3],10);
        mm = parseInt(t[1],10) -1;
        dd = parseInt(t[2],10);
        th = parseInt(t[4],10);
        tm = parseInt(t[5],10);
        ts = 0;
        if(t[7] != null)
            ts = parseInt(t[7],10);
    }
    var dt = new Date(yy,mm,dd,th,tm,ts);
    if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds())
        return false;
    else
        return true;
};

/**
 * control with localedate
 */
function jFormsControlLocaleDate(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this.lang='';
};
jFormsControlLocaleDate.prototype.check = function (val, jfrm) {
    var yy, mm, dd;
    if(this.lang.indexOf('fr_') == 0) {
        var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
        if(t == null) return false;
        yy = parseInt(t[3],10);
        mm = parseInt(t[2],10) -1;
        dd = parseInt(t[1],10);
    }else{
        //default is en_* format
        var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
        if(t == null) return false;
        yy = parseInt(t[3],10);
        mm = parseInt(t[1],10) -1;
        dd = parseInt(t[2],10);
    }
    var dt = new Date(yy,mm,dd,0,0,0);
    if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate())
        return false;
    else
        return true;
};

/**
 * control with Url
 */
function jFormsControlUrl(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlUrl.prototype.check = function (val, jfrm) {
    return (val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/) != -1);
};

/**
 * control with email
 */
function jFormsControlEmail(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlEmail.prototype.check = function (val, jfrm) {
    return (val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/) != -1);
};


/**
 * control with ipv4
 */
function jFormsControlIpv4(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlIpv4.prototype.check = function (val, jfrm) {
    var t = val.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
    if(t)
        return (t[1] < 256 && t[2] < 256 && t[3] < 256 && t[4] < 256);
    return false;
};

/**
 * control with ipv6
 */
function jFormsControlIpv6(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
};
jFormsControlIpv6.prototype.check = function (val, jfrm) {
    return (val.search(/^([a-f0-9]{1,4})(:([a-f0-9]{1,4})){7}$/i) != -1);
};

/**
 * choice control
 */
function jFormsControlChoice(name, label) {
    this.name = name;
    this.label = label;
    this.required = false;
    this.errInvalid = '';
    this.errRequired = '';
    this.items = {};
};
jFormsControlChoice.prototype = {
    addControl : function (ctrl, itemValue) {
        if(this.items[itemValue] == undefined)
            this.items[itemValue] = [];
        this.items[itemValue].push(ctrl);
    },
    check : function (val, jfrm) {
        if(this.items[val] == undefined)
            return false;

        var list = this.items[val];
        var valid = true;
        for(var i=0; i < list.length; i++) {
            var val2 = jfrm.getValue(jfrm.frmElt.elements[list[i].name]);

            if (val2 == '') {
                if (list[i].required) {
                    jfrm.tForm.errorDecorator.addError(list[i], 1);
                    valid = false;
                }
            } else if (!list[i].check(val2, jfrm)) {
                jfrm.tForm.errorDecorator.addError(list[i], 2);
                valid = false;
            }
        }
        return valid;
    },
    activate : function (val) {
        var frmElt = document.getElementById(this.formName);
        for(var j in this.items) {
            var list = this.items[j];
            for(var i=0; i < list.length; i++) {
                var elt = frmElt.elements[list[i].name];
                if (val == j) {
                    jForms.removeAttribute(elt, "readonly");
                    jForms.removeClass(elt, "jforms-readonly");
                } else {
                    jForms.setAttribute(elt, "readonly", "readonly");
                    jForms.addClass(elt, "jforms-readonly");
                }
            }
        }
    }
};

/**
 * Decorator to display errors in an alert dialog box
 */
function jFormsErrorDecoratorAlert(){
    this.message = '';
};

jFormsErrorDecoratorAlert.prototype = {
    start : function(){
        this.message = '';
    },
    addError : function(control, messageType){
        if(messageType == 1){
            this.message  +="* "+control.errRequired + "\n";
        }else if(messageType == 2){
            this.message  +="* "+control.errInvalid + "\n";
        }else{
            this.message  += "* Error on '"+control.label+"' field\n";
        }
    },
    end : function(){
        if(this.message != ''){
            alert(this.message);
        }
    }
};


