function getVar(n)
{
	var i = location.href.substring(location.href.indexOf("?")+1, location.href.length)+"&";
//	if (i.indexOf("#")!=-1);
//		i = i.substring(0,i.indexOf("#"))+"&";
	var v=0;
	{
		n = n + "=";
		var t = n.length;
		if (i.indexOf(n)!=-1)
			v = i.substring(i.indexOf(n)+t,i.length).substring(0,i.substring(i.indexOf(n)+t,i.length).indexOf("&"));
	}
	return v;
} 

function getOptions()
{
	var o;
	var r = new Array;
  for(var v in mapRoutes.liste) 
  {
  	if (v.charAt(0)=="[" && mapRoutes.Get(v)==1) r.push(v);
  }
	o = r.join(","); 
	
  var elm = document.getElementsByName ( "inputFiltre[]");
  r = new Array;
  for ( var i = 0; i < elm.length; i++) 
  	r.push(elm[i].checked);
	o += ";"+r.join(","); 

  o += ";"+map.getExtent().toArray().join(",");

	return o;
}

function setinvdisplay(qui)
{
  if (qui.className)
  {
    if (qui.className=='plus') qui.className='moins';
    else if (qui.className=='moins') qui.className='plus';
  }

  if (qui.style.display)
  {
    if (qui.style.display != 'none')
      qui.style.display = 'none';
    else
      qui.style.display = 'inline';
  }
  var nbr = qui.childElementCount
  for (var i=0; i<qui.childElementCount; i++)
  {
    passim_setinvdisplay(qui.children[i]);
  }
}

function showhide ( qui)
{
	if (qui.style.display != 'block')
  	qui.style.display = 'block';
	else
  	qui.style.display = 'none';
}

function plusmoins ( qui)
{
	if (qui.className)
  {
    if (qui.className=='plus') qui.className='moins';
    else if (qui.className=='moins') qui.className='plus';
  }
}

function showhidetools ( e)
{
	showhide ( document.getElementById("zoneoutils"));
	plusmoins ( document.getElementById("pmbt"));
	showhide ( document.getElementById("pmtp"));
	showhide ( document.getElementById("pmtm"));
}

function hashmap () 
{
  this.liste = new Array;
}

hashmap.prototype = {
	Set : function(foo,bar) {this.liste[foo] = bar;},
	Get : function(foo) {return this.liste[foo];},
	Is : function(foo) {return this.liste[foo]!=undefined;}
}

var map;
var layerEvts;
var mapRoutes  = new hashmap();
var paysRoutes = new Array;
var treeRoutes = new Array;
var paysRouteslength = 0;
var autreRoutes = 0;
var initRoutes = new Array;
var nbJours = [31,28,31,30,31,30,31,31,30,31,30,31];

var tsource;
var defaultZone = 0;

function displayPopupHelp ( e)
{
	var ev = e || window.event;
	var xx = ev.pageX;
	var yy = ev.pageY;
	
	var div = document.getElementById('help');
  div.innerHTML = _T(this.id);
	div.style.top = yy +"px";
	div.style.left = xx +"px";
	div.style.display = 'block'
}

function hiddenPopupHelp ( e)
{
	var div = document.getElementById('help');
	div.style.display = 'none'
}

var filtreDateFrom = 0;
var filtreDateTo = 0;
var changeZone = 0;

function isBissextile(an)
{
 	if(eval(an%4)==0)
 	{
		if(eval(an%100)==0)
  	{
			if(eval(an%400)==0) 
				return 1
     	else
     		return 0;
  	}
  	else
  		return 1
 	}
	return 0
}

function getNbJourMois(m,a)
{
	if (m==1) 
		return nbJours[m]+isBissextile(a);
	return nbJours[m];
}

function getFiltreDate ( he, mi, j, m, a)
{
  var now = new Date();
  now.setHours ( document.getElementById(he).value);
  now.setMinutes ( document.getElementById(mi).value);
  now.setDate ( document.getElementById(j).value);
  now.setMonth ( document.getElementById(m).value);
  now.setFullYear ( document.getElementById(a).value);
  var dateNew = Math.floor(now.getTime()/1000);
  return dateNew;
}

function checkFiltreDate(q)
{
	if (q.id=="fm"||q.id=="fa") changeCombo("fj",getNbJourMois(q.value,document.getElementById("fa").value),0);
	if (q.id=="tm"||q.id=="ta") changeCombo("tj",getNbJourMois(q.value,document.getElementById("ta").value),1);
	
	if (!document.getElementById("idf").checked && (q.id=="fhe"||q.id=="fmi"||q.id=="fj"||q.id=="fm"||q.id=="fa"))
		document.getElementById("idf").checked = true;

	if (!document.getElementById("idt").checked && (q.id=="the"||q.id=="tmi"||q.id=="tj"||q.id=="tm"||q.id=="ta"))
	{
		document.getElementById("idt").checked = true;
		document.getElementById("idf").checked = true;
		setFiltreDateT( );
	}
		
	setFiltreDateF( );
}

function setFiltreDate( )
{
  document.getElementById("idf").checked = true;
  setFiltreDateF( );
}

function setFiltreDateF( )
{
	if (document.getElementById("idf").checked)
	{
	  filtreDateFrom = getFiltreDate ( "fhe", "fmi", "fj", "fm", "fa");
	  filtreDateTo   = getFiltreDate ( "the", "tmi", "tj", "tm", "ta");
	  if (filtreDateTo < filtreDateFrom) 
	  {
	    filtreDateTo = 0;
	  }
	}
	else
	{
		filtreDateFrom = 0;
		filtreDateTo   = 0;
	}
	updateMarkers();
}

function setFiltreDateT( )
{
	if (document.getElementById("idt").checked)
	{
	  if (!document.getElementById("the").selectedIndex) document.getElementById("the").selectedIndex = 1+document.getElementById("fhe").selectedIndex
	  if (!document.getElementById("tmi").selectedIndex) document.getElementById("tmi").selectedIndex = 1+document.getElementById("fmi").selectedIndex
	  if (!document.getElementById("tj").selectedIndex) document.getElementById("tj").selectedIndex = 1+document.getElementById("fj").selectedIndex
	  if (!document.getElementById("tm").selectedIndex) document.getElementById("tm").selectedIndex = 1+document.getElementById("fm").selectedIndex
	  if (!document.getElementById("ta").selectedIndex) document.getElementById("ta").selectedIndex = 1+document.getElementById("fa").selectedIndex
	}
	else
	{
	  document.getElementById("the").selectedIndex = 0;
	  document.getElementById("tmi").selectedIndex = 0;
	  document.getElementById("tj").selectedIndex = 0;
	  document.getElementById("tm").selectedIndex = 0;
	  document.getElementById("ta").selectedIndex = 0;
	}
}

function changeCombo(i,m,k)
{
	var n;
	var elSel = document.getElementById(i);
	var j = elSel.length-k;
	if (j>m)
	{
		if (elSel.selectedIndex>=m) elSel.selectedIndex=m-1+k;
		for (n=m; n<j; n++)
			elSel.remove(elSel.length-1);
	}
	else if (j<m)
	{
		for (n=j; n<m; n++)
		{
			var elOptNew = document.createElement('option');
  		elOptNew.text = n+1;
  		elOptNew.value = n+1;
			try {
				elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
			}
			catch(ex) {
				elSel.add(elOptNew); // IE only
			}
  	}
	}
}

function makeCombo ( nom, mini, maxi, off, sel, valeur, vide)
{
	var txt;
	var combo = new Array;
	combo.push("<select id='"+nom+"' size='1' onchange='checkFiltreDate(this);'>");
	
	if (vide)
		combo.push("<option value='-1' selected>--</option>");
	
	for ( var i = mini; i < maxi; i += off)
	{
		if (valeur)
		{
			txt = valeur[i];
		}
		else
		{
			txt = i+'';
			if (txt.length==1) txt = '0'+txt;
		}
		combo.push("<option value='"+i+"' "+(sel==i?"selected":"")+">"+txt+"</option>");
	}
	combo.push("</select>");
	return combo.join("");
}

function setInnerHTML ( qui, txt)
{
	if (document.getElementById)
  {
  	document.getElementById(qui).innerHTML = txt;
	}
  else if (document.all)
  {
    document.all[qui].innerHTML = txt;
  }
}

function loadTools ()
{
	var now = new Date();
	
	var comboFromHe = makeCombo ( 'fhe', 0, 24, 1, now.getHours());
	var comboFromMi = makeCombo ( 'fmi', 0, 60, 15, Math.floor(now.getMinutes()/15)*15);
	var comboFromJ  = makeCombo ( 'fj', 1, 32, 1, now.getDate());
	var comboFromM  = makeCombo ( 'fm', 0, 12, 1, now.getMonth(), months[lg]);
	var comboFromA  = makeCombo ( 'fa', now.getFullYear(), now.getFullYear()+3, 1, now.getFullYear(), null);

	var comboToHe = makeCombo ( 'the', 0, 24, 1, null, null, true);
	var comboToMi = makeCombo ( 'tmi', 0, 60, 15, null, null, true);
	var comboToJ  = makeCombo ( 'tj', 1, 32, 1, null, null, true);
	var comboToM  = makeCombo ( 'tm', 0, 12, 1, null, months[lg], true);
	var comboToA  = makeCombo ( 'ta', now.getFullYear(), now.getFullYear()+3, 1, null, null, true);
	
	var checkF = "<input id='idf' type='checkbox' onclick='setFiltreDateF();'/>";
	var checkT = "<input id='idt' type='checkbox' onclick='setFiltreDateT();'/>";

//	var buttonD = "<input class='bt' name='butonDate' type='button' onclick='setFiltreDate();' value='"+_T('filtrer')+"'/>";

	var txt = new Array;
	txt.push("<p class='d1'>"+checkF+_T('du')+comboFromHe+comboFromMi+' '+comboFromJ+comboFromM+comboFromA+'</p>');
	txt.push("<p class='d2'>"+checkT+_T('au')+comboToHe+comboToMi+' '+comboToJ+comboToM+comboToA+'</p>');
//	txt.push("<p class='d2'>"+checkT+_T('au')+comboToHe+comboToMi+' '+comboToJ+comboToM+comboToA+'&nbsp;&nbsp;&nbsp;'+buttonD+'</p>');
//	txt.push("<p class='bt'>"+buttonD+"</p>");

	setInnerHTML ( "tools", txt.join(""));
}

function updateLargers()
{
  var lar = parseFloat(document.getElementById("lar").value);
  if (lar>0)
  {
		var elm = document.getElementsByName ( "inputFiltre[]");
	  for ( var i = 0; i < elm.length; i++) 
  	{
  		if (elm[i].value==2 && !elm[i].checked)
  			elm[i].checked=true;
  	}
  }
  		
	updateMarkers()
}

function updateMarkers()
{
  var filtres = new Array;
  var elm = document.getElementsByName ( "inputFiltre[]");
  for ( var i = 0; i < elm.length; i++) 
  {
    if (elm[i].checked)
    {
      filtres[elm[i].value]=1;
    }
  }

	var im;
  var lar = parseFloat(document.getElementById("lar").value);
  for ( var i = 0; i < layerEvts.markers.length; i++) 
  {
    if (!mapRoutes.Get(layerEvts.markers[i].idr) || !filtres[layerEvts.markers[i].etype] ||
    		(filtreDateFrom && !filtreDateTo && (layerEvts.markers[i].dd>filtreDateFrom || filtreDateFrom>layerEvts.markers[i].df)) ||
    		(filtreDateFrom && filtreDateTo && (layerEvts.markers[i].dd>filtreDateTo || filtreDateFrom>layerEvts.markers[i].df))
    	)
    {
      layerEvts.markers[i].display(false);
    }
    else
    {
    	if (layerEvts.markers[i].lar && lar>0 && lar>layerEvts.markers[i].lar)
    		im = true;
    	else 
    		im = false;
			
			if (im != layerEvts.markers[i].im)
			{
				if (im)
				{
					layerEvts.markers[i].icon.setUrl( layerEvts.markers[i].ii+".gif");
					layerEvts.markers[i].icon.imageDiv.style.zIndex=1000;
				}
				else
				{
					layerEvts.markers[i].icon.setUrl( layerEvts.markers[i].ii);
					layerEvts.markers[i].icon.imageDiv.style.zIndex=100;
				}
				layerEvts.markers[i].im = im;
			}
    	
      layerEvts.markers[i].display(true);
    }
  }
  showEvts ();
}

function addRoute ( p, r, e)
{
	var i = "["+p+"]"+r;
	if (!mapRoutes.Is(i))
	{
		if (paysRoutes[p]==undefined)
		{
			paysRoutes[p] = paysRouteslength++;

			treeRoutes[paysRoutes[p]] = new Array;
			treeRoutes[paysRoutes[p]]['caption'] = p;
			treeRoutes[paysRoutes[p]]['isOpen'] = false;
			treeRoutes[paysRoutes[p]]['isChecked'] = 2;
			treeRoutes[paysRoutes[p]]['onChangeCheckboxAfter'] = setTreeRouteOk;
			treeRoutes[paysRoutes[p]]['children'] = new Array;
		}

		if (paysRoutes[p]==0 && e && autreRoutes)
		{
			if (treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children']==undefined)
				treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'] = new Array;

	  	var it = treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'].length
			treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'][it] = new Array;
			treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'][it]['target'] = i;
			treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'][it]['caption'] = r;
			treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'][it]['isChecked'] = 2;
			 
			treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'][it]['onChangeCheckbox'] = setTreeRoute;
			treeRoutes[paysRoutes[p]]['children'][autreRoutes]['children'][it]['onChangeCheckboxAfter'] = setTreeRouteOk;
				
			if (initRoutes && initRoutes.length)
	  		mapRoutes.Set(i,(initRoutes[0].indexOf(i)==-1 ? 0 : 1));
	  	else
		  	mapRoutes.Set(i,1);
			
			return it;
		}		
		
  	var it = treeRoutes[paysRoutes[p]]['children'].length
		treeRoutes[paysRoutes[p]]['children'][it] = new Array;
		treeRoutes[paysRoutes[p]]['children'][it]['target'] = i;
		treeRoutes[paysRoutes[p]]['children'][it]['caption'] = r;
		treeRoutes[paysRoutes[p]]['children'][it]['isChecked'] = 2;
		treeRoutes[paysRoutes[p]]['children'][it]['onChangeCheckbox'] = setTreeRoute;
		treeRoutes[paysRoutes[p]]['children'][it]['onChangeCheckboxAfter'] = setTreeRouteOk;
						
		if (initRoutes && initRoutes.length)
  		mapRoutes.Set(i,(initRoutes[0].indexOf(i)==-1 ? 0 : 1));
  	else
	  	mapRoutes.Set(i,1);
  	
		return it;  	
  }
  return 0;
}

function setTreeRoute ( request)
{
	mapRoutes.Set(request.target, request.isChecked==2 ? 1 : 0);
}

function setTreeRouteOk ( request)
{
  updateMarkers();
}

function showRoutes ()
{
	var t = new Bs_Tree();
  t.useCheckboxSystem = true;
  t.checkboxSystemWalkTree = 3;
  t.initByArray(treeRoutes);
  t.drawInto('routes');

}

function showEvts ()
{
	if (map.zoomold != map.getZoom())
	{
		map.zoomold = map.getZoom();
		if (!map.zoomold)
		{
		  var zone = document.getElementsByName ( "selectZone");
		  if (zone.length && !initRoutes.length)
		  {
		    zone[0].selectedIndex = defaultZone;
		    setZone(zone[0]);
		  }
		}
	}

  var bounds = layerEvts.map.getExtent();
  
  var txt = new Array;

  txt.push("<table>");
  txt.push("<thead><tr>");
  txt.push("<th style='width:10%'>"+_T('icone')+"</th>");
  txt.push("<th style='width:10%'>"+_T('route')+"</th>");
  txt.push("<th style='width:80%'>"+_T('message')+"</th>");
  txt.push("</tr></thead>");
  txt.push("<tbody>");

  var lar = parseFloat(document.getElementById("lar").value);

	var s = 0;
  for ( var i = 0; i < layerEvts.markers.length; i++) 
  {
    if (layerEvts.markers[i].icon.imageDiv.style.display=="none") continue;
    
   	var color;
    var pt = layerEvts.markers[i].lonlat;
    if (bounds.containsLonLat(pt))
    {
    	if (layerEvts.markers[i].lar && lar>0 && lar>layerEvts.markers[i].lar) color=" style='background-color:yellow;'";
    	else color =""
    	if (s && s!=layerEvts.markers[i].sens)
	    	txt.push( "<tr><td colspan='3'><img src='images/vide.gif'></td></tr>");
    	txt.push( "<tr"+color+">"+layerEvts.markers[i].evt+"</tr>");
    	s=layerEvts.markers[i].sens;
    }
  }
  txt.push( "</tbody></table>");
    
	setInnerHTML ( "evts", txt.join(""));    
}

function setZone (request)
{
  if (request.value=="0") return;
  
  changeZone = 1;
  
  var reg = new RegExp("[|]+", "g");
  var extend = request.value.split ( reg);
  
  var bounds = new OpenLayers.Bounds ( extend[0], extend[1], extend[2], extend[3]);
	bounds.transform ( tsource, map.getProjectionObject());

  layerEvts.map.setCenter ( bounds.getCenterLonLat(), layerEvts.map.getZoomForExtent( bounds));
}

function loadZones ()
{
  var url = "mapserver2/getxml.php5?type=zones&lg="+lg;
  defaultZone = 0;
  OpenLayers.loadURL(url, null, null, loadSuccessZones, loadFailure);
}

function loadSuccessZones(request) 
{
  var xml = request.responseXML;

  var zones = xml.getElementsByTagName ( "z");

	var txt = new Array;
  txt.push("<select onchange='setZone(this);' name='selectZone' size='1'>");
  for ( var i = 0; i < zones.length; i++) 
  {
  	if (zones[i].getAttribute("d")=="1") defaultZone = i;
    txt.push("<option value='"+zones[i].getAttribute("e")+"'>"+zones[i].getAttribute("t")+"</option>");
  }
  txt.push("</select>");
	setInnerHTML ( "zones", txt.join(""));    

/*  var zone = document.getElementsByName ( "selectZone");
  if (zone.length && !initRoutes.length)
  {
    zone[0].selectedIndex = 9;
    setZone(zone[0]);
  }*/
}

function loadFiltres ()
{
  var url = "mapserver2/getxml.php5?type=filtres&lg="+lg;
  OpenLayers.loadURL(url, null, null, loadSuccessFiltres, loadFailure);
}

function loadSuccessFiltres(request) 
{
  var xml = request.responseXML;

  var filtres = xml.getElementsByTagName ( "f");

	var txt = new Array;
  for ( var i = 0; i < filtres.length; i++) 
  {
  	txt.push("<nobr>");
    txt.push("<input name='inputFiltre[]' type='checkbox' value='"+filtres[i].getAttribute("v")+"' onclick='updateMarkers();'"+((!initRoutes.length && !i)?" checked":"")+((initRoutes.length && initRoutes[1][i]=="true")?" checked":"")+"/>"+filtres[i].getAttribute("t"));

		if (filtres[i].getAttribute("m"))
		{
			var maxi = parseInt(filtres[i].getAttribute("m"));
		
			var combo = new Array;
			combo.push(_T('largeur'));
			combo.push("<select id='lar' size='1' onchange='updateLargers();'>");
			combo.push("<option value='-1' selected>--</option>");
	
			for ( var j = 2; j < maxi; j += 0.5)
			{
				combo.push("<option value='"+j+"'>"+j+"</option>");
			}
			combo.push("<option value='99'>"+filtres[i].getAttribute("m")+_T('et plus')+"</option>");
			combo.push("</select>");
			combo.push(_T('m'));
			txt.push(combo.join(""));
		}
  	txt.push("</nobr> ");

  }
	setInnerHTML ( "filtres", txt.join(""));    
}

function setFiltres ( etat)
{
  var elm = document.getElementsByName ( "inputFiltre[]");
  for ( var i = 0; i < elm.length; i++) 
  {
    elm[i].checked = etat;
  }
  updateMarkers();
}

function loadRoutes ()
{
  var url = "mapserver2/getxml.php5?type=routes&lg="+lg;
  OpenLayers.loadURL(url, null, null, loadSuccessRoutes, loadFailure);
}

function loadSuccessRoutes(request) 
{
  var xml = request.responseXML;

  var routes = xml.getElementsByTagName ( "r");

  for ( var i = 0; i < routes.length; i++) 
		addRoute ( routes[i].getAttribute("p"), routes[i].getAttribute("r"), 0);
		
	autreRoutes = addRoute ( routes[0].getAttribute("p"), _T("autre"), 0);
}

function loadEvts ()
{
  var url = "mapserver2/getxml.php5?type=evts&lg="+lg;
  OpenLayers.loadURL(url, null, null, loadSuccessEvts, loadFailure);
}

function loadSuccessEvts(request) 
{
  layerEvts.clearMarkers();

  var xml = request.responseXML;

  var evts = xml.getElementsByTagName ( "evt");
  
  var size = new OpenLayers.Size(20,20);
  var offset = new OpenLayers.Pixel(-(size.w/2), -(size.h/2));

  var reg = new RegExp("[|]+", "g");

  for ( var i = 0; i < evts.length; i++) 
  {
  	var txtevt = evts[i].childNodes[0].nodeValue;
    var txts = txtevt.split ( reg);

		var evt = new Array;
    var txt = new Array;
    for ( var j = 0; j < txts.length; j++)
    {
      if (txts[j].length)
      {
      	// surlignage du texte "dans les deux sens"
      	txts[j] = txts[j].replace("in beiden Richtungen","<span style='background-color:#FFE6F2'>in beiden Richtungen</span>");
      	txts[j] = txts[j].replace("nei due sensi","<span style='background-color:#FFE6F2'>nei due sensi</span>");
      	txts[j] = txts[j].replace("in both directions","<span style='background-color:#FFE6F2'>in both directions</span>");
      	txts[j] = txts[j].replace("dans les deux sens","<span style='background-color:#FFE6F2'>dans les deux sens</span>");
      	//
        if (txt.length) evt.push(txts[j]+"<br/>");
        txt.push ( txts[j]);
      }
    }
    
    var icone = new OpenLayers.Icon ( evts[i].getAttribute("i"), size, offset);
    icone.imageDiv.title = txt.join(" - ");
    
    var pt = new OpenLayers.LonLat ( evts[i].getAttribute("x"), evts[i].getAttribute("y"));
		pt.transform ( tsource, map.getProjectionObject());
 	
 		var r = evts[i].getAttribute("r");
 		if (!r.length) r = _T('autre');
 		
 		var p = evts[i].getAttribute("p");
 		
    var marker = new OpenLayers.Marker ( pt, icone);
    marker.ii = evts[i].getAttribute("i");
    marker.im = false;
    marker.txt = txt;
    marker.idr  = "["+p+"]"+r;
    marker.etype = evts[i].getAttribute("t");
    marker.dd = parseInt(evts[i].getAttribute("dd"));
    marker.df = parseInt(evts[i].getAttribute("df"));
    
    marker.lar = parseFloat(evts[i].getAttribute("lar"));

		marker.evt = "<td style='text-align:center'><img src='"+marker.icon.url+"'/></td><td style='text-align:center'>"+evts[i].getAttribute("r")+"</td><td><b>"+marker.txt[0]+"</b><br/>"+evt.join("")+"</td>";
		marker.sens = evts[i].getAttribute("r")+evts[i].getAttribute("s");
		
    layerEvts.addMarker ( marker);

		addRoute( p, r, 1);
  }
  
  showRoutes();
  
  layerEvts.map.events.register( "moveend", layerEvts.map, showEvts);
  updateMarkers();
}
  
function loadFailure(request) 
{
}

function mapMoveStart ( event) 
{
	if (changeZone) 
	{
		changeZone--;
		return;
	}
	var zone = document.getElementsByName ( "selectZone");
  if (zone.length)
  {
    zone[0].selectedIndex = 0;
		changeZone=0;
  }
}

function init()
{
	var p = getVar("option");
	if (p)
	{
		initRoutes = p.split(";");
		initRoutes[1] = initRoutes[1].split(",");
	}
	
	document.getElementById("pma").onclick=showhidetools;

	document.getElementById("aidefiltres").onmouseover=displayPopupHelp;
	document.getElementById("aideroutes").onmouseover=displayPopupHelp;
	document.getElementById("aidetools").onmouseover=displayPopupHelp;

	document.getElementById("aidefiltres").onmouseout=hiddenPopupHelp;
	document.getElementById("aideroutes").onmouseout=hiddenPopupHelp;
	document.getElementById("aidetools").onmouseout=hiddenPopupHelp;
	
	var elm = document.getElementsByName ( "_lg_");
	if (elm.length)
   lg = elm[0].value;
  else
  	lg = "fr";
  
  Proj4js.defs["EPSG:32632"] = "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";
  Proj4js.defs["EPSG:21781"] = "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs";
//	Proj4js.reportError = function(msg) {alert(msg);}


	tsource = new OpenLayers.Projection("EPSG:32632");//new Proj4js.Proj('EPSG:32632');
/*  
  var options = 
  {
    projection: new OpenLayers.Projection("EPSG:21781"),
    displayProjection: new OpenLayers.Projection("EPSG:21781"),
    units: "m",
    numZoomLevels: 8,
    resolutions: [650,500,250,100,50,20,10,5],
		allOverlays: false,
    maxExtent:  new OpenLayers.Bounds.fromArray([420000,30000,900000,350000]),
    restrictedExtent:  new OpenLayers.Bounds.fromArray([420000,30000,900000,350000]),
 		eventListeners: {"movestart": mapMoveStart},
    controls:[]
  };*/

  var options = 
  {
    projection: new OpenLayers.Projection("EPSG:32632"),
    displayProjection: new OpenLayers.Projection("EPSG:32632"),
  
    units: "m",
    maxResolution: 1800,
    maxExtent: new OpenLayers.Bounds ( -300700,3965650,1758750,5445400),
    numZoomLevels: 5,

 		eventListeners: 
 		{
	    "movestart": mapMoveStart
    },
  
    controls: 
    [
    ]
  };

 	if (!initRoutes.length)
 	{
 		options.controls.push( new OpenLayers.Control.PanZoomBar());
 		options.controls.push( new OpenLayers.Control.MouseDefaults());
 	}
    
  map = new OpenLayers.Map( 'map', options);
/*
	var layerTruckinfo = new OpenLayers.Layer.WMTS({
                requestEncoding: "REST",
                name: "ch.swisstopo.pixelkarte-farbe",
                url: ['http://map.geo.admin.ch/wmts5/','http://map.geo.admin.ch/wmts6/','http://map.geo.admin.ch/wmts7/','http://map.geo.admin.ch/wmts8/','http://map.geo.admin.ch/wmts9/'],
                layer: "ch.swisstopo.pixelkarte-farbe",
                matrixSet: "ch.swisstopo.pixelkarte-farbe",
              	matrixIds:[{identifier:14},{identifier:15},{identifier:16},{identifier:17},{identifier:18},{identifier:19},{identifier:20},{identifier:21},{identifier:22},{identifier:23},{identifier:24}],
                format: "image/jpeg",
                style: "default",
                dimensions: ['DATE'],
                params: {DATE: '100617'},
                isBaseLayer: true,
                buffer: 0,
                transitionEffect: 'resize',
                formatSuffixMap: { "image/png": "png","image/png8": "png","image/png24": "png","image/png32": "png","png": "png","image/jpeg": "jpeg","image/jpg": "jpg","jpeg": "jpeg","jpg": "jpg" }
            });
*/
  var layerTruckinfo = new OpenLayers.Layer.WMS( "TruckInfo", 
	  ["http://wms.cbconseil.com/tilecache.cgi","http://wms.cbconseil.com/tilecache.cgi"], {layers: 'truckinfo_evt_32632_'+lg, format:'image/png'}, {isBaseLayer: true, singleTile: false, transitionEffect: "resize"} );

  map.addLayer(layerTruckinfo);
  map.zoomold = -1;

  layerEvts = new OpenLayers.Layer.Markers( "Evts");
  map.addLayer(layerEvts);

	if (initRoutes.length)
	{
		var bounds = OpenLayers.Bounds.fromArray(initRoutes[2].split(","));
		map.zoomToExtent(bounds);
		map.zoomold = map.getZoom();
	}
		
	loadTools();
  loadFiltres();
  loadZones();
  loadRoutes();
  loadEvts();
}

window.onload = init;

