// Main function javascript
// VERSION 1.1

// ----------------------------------------------------------------------------------------------------------
// getMouseXY:  recupere les coord du curseur et appel de la servlet 
// radCheck:    appel de la servlet et reception des évènements si ils existent 
//              Fonction à modifier pour l'intégration
// doPop:       traitement du message de la servlet pour affichage
// showDetails: affiche le détail d'un évènement
// hideDetails:  masque le détail d'un évènement
// plier:		Plie la liste des évènements
// ----------------------------------------------------------------------------------------------------------
var IE = document.all?true:false
var tailleMax=230;
var newX,newY;
// chemin d'accès aux images
var sImgPath="/astec_acai/publication/cnir/referentiel_icone/";

// Set-up to use getMouseXY function onMousedown

// Temporary variables to hold mouse x-y pos.s
var tempX = 0
var tempY = 0
var nb=0; // nombre d'évts
var cpt; 
var timer = null;
var URL_RAD_CHECK;
var URL_DIV;

// ***************************************************************************************************
// Commentaires pour Impression
// *************************************************************************************************** 
function evenement()
	{
var No_evt = getParameter("evt").toUpperCase();
	var legende = 'Tous les événements/All events' ;
	if (No_evt == "2") var legende = 'Événements importants/Important events' ;
	return legende ;
	}
	
function carte_coupure()
	{
var No_evt = getParameter("evt").toUpperCase();
	var plus = '' ;
	if (No_evt == "2") var plus = '&nc=coupure' ;
	return plus ;
	}
// ***************************************************************************************************

function CallAstecInitPage(wsource0,wsource1,wraster,destination)
	{
		
	var CallAstec_evt = getParameter("evt").toUpperCase();
	var CallAstec_pprint = getParameter("pprint").toUpperCase();
	//<img src="/asteccli/servlet/clientleger?format=png&source0=cigt_a20&source1=cir&raster=a20"></img>
	URL_DIV = '<img src="/asteccli/servlet/clientleger?format=png&source0='+wsource0;
	URL_RAD_CHECK ='/asteccli/servlet/clientleger?format=png&source0='+wsource0;              //cigt_a20&source1=cir&raster=a20&infoText=V2"
	try
		{
		if (wsource1.length >0)
			{
			URL_DIV+='&source1='+wsource1
				if (destination == 1) 
				{ 
				URL_RAD_CHECK ='/asteccli/servlet/clientleger?format=png&source0='+wsource0+'&source1='+wsource1 ;
				} else {//{ URL_RAD_CHECK +='&source1='+wsource1 }
				URL_RAD_CHECK ='/asteccli/servlet/clientleger?format=png&source0='+wsource1 ;
				}
			}
		if (CallAstec_evt!= "null" && CallAstec_evt== "2")
			{
			URL_DIV+="&nc=coupure";
			URL_RAD_CHECK+="&nc=coupure";
			}
		if (CallAstec_pprint!= "null" && CallAstec_pprint== "1")
			{
			URL_DIV+="&pprint=1";
			}
		}
	catch(e)
		{
		}
	URL_DIV+='&raster='+wraster+'"></img>'; 
	URL_RAD_CHECK +='&raster='+wraster+'&infoText=V2';
	}

function CallAstec(wnom_div)
	{
	var CallAstec_evt = getParameter("evt").toUpperCase();
		if (wnom_div=='tgn_minifrance') {
			URL_DIV ='<img src="/asteccli/servlet/clientleger?format=png&source0=cir&raster=france" width="492" height="402"></img>' ;
			if (CallAstec_evt!= "null" && CallAstec_evt== "2") URL_DIV ='<img src="/asteccli/servlet/clientleger?format=png&source0=cir&nc=coupure&raster=france" width="492" height="402"></img>' ;
		}
	modifierCodeDivision(wnom_div, URL_DIV);
	}


// ***************************************************************************************************
// Gestion de la liste des évènements plier/déplier
// ***************************************************************************************************    
function plier()
{
if (nb>1) 
	{
	for (cpt=0;cpt<nb;cpt++)
		{
		modifierCodeDivision("DetailsReponse" + cpt, "");
		modifierAffichageDivision("DetailsReponse" + cpt, "none");
		modifierImgSrc("puce"+cpt, sImgPath + "plus1.jpg");
		}
	}
}
function fout()
{
	if (!ddEnabled)
		timer = setTimeout(function(){plier()},"200");
}
function fover()
{
try{
	clearTimeout(timer);
}catch(E){}
}


// Connexion socket : appel ? la servlet
function getPage(theurl)
{
var ret = "";
if(navigator.appName == "Microsoft Internet Explorer")
	{		
    objXml = new ActiveXObject("Microsoft.XMLHTTP");
	var datafile = theurl;
	objXml.open("GET", datafile, false);
	objXml.send(null);
	ret = objXml.responseText;
	}
else //if(navigator.appVersion.match("6")) netscape 4 et Mozilla et safari	
	{
	var datafile = theurl;
	if (document.getElementById)
		{
		objXml = new XMLHttpRequest();
		objXml.open("GET",datafile,false);
		objXml.send(null);
		ret = objXml.responseText;
		}
	}
return (ret);
}

// ***************************************************************************************************
// efface les blancs en début et fin de chaine
// ***************************************************************************************************
function trim(string)
{
return string.replace(/(^\s*)|(\s*$)/g,'');
} 
// ***************************************************************************************************
// efface les blancs en début et fin de chaine
// ***************************************************************************************************
function ltrim(str)
{
return str.replace(/^\s*/g,'');
}

/* ***************************************************************************************************
// traitement du message de la servlet pour affichage
// ex. de message ci-dessous
// premier caractère: nombre d'évènement
// deuxième caractère: information sur la couleur à utiliser
// ***************************************************************************************************
1
3
BASCULEMENT DE CHAUSSEE
/;/
Conditions de circulation difficiles
<br>
Dans le sens Sud-Nord
<br>
à SISTERON sur la A51
<br>
Département 04
<br>
CIRCULATION SUR 1 VOIE PAR SENS SUR LA CHAUSSEE OPPOSEE ENTRE SISTERON ET ENTREPIERRES EN PERMANENCE
/;;/
(Fin prévue le 15/06 à 19h00)
<br>
Source : CRICR Sud-Est
/;;;/
******************************************************************************************************** */
function doPop(wret)
{
var sDetailsReponse="";
var ret = wret;
var res="";
var langue = getParameter("langue").toUpperCase();

// liste des évènements
var evtListe=new Array();
evtListe=["COUPURE D'AXE",'AXE COUPE','ACCIDENT','INTERDICTION PL','BOUCHON','RALENTISSEMENT','DEVIATION','CHANTIER','INCIDENT','REDUCTION DE CAPACITE','BASCULEMENT DE CHAUSSEE','ALTERNAT','OBSTACLE','LIMITATION DE VITESSE','RESTRICTION','MANISFESTATION','ITINERAIRE','Tron'];

if (ret.length > 0)
	{
	var color = '#666666' ;
	var total = 0 ;	
	var message_astec =  ret.substr(1,ret.length) ;
	// nombre d'évènements
	nb = ret.substr(0,1);

	// listes des évènements
    var evt= new Array();

for (var i=0;i<nb;i=i+1) {
           			       	
	    // couleur en fonction du type d'évènement
		var indice = message_astec.substr(0,1);
		if (indice == 2) color = '#FF99000' ;
		if (indice == 3) color = '#FF0000' ;
		if (indice == 0) color = '#2AE511' ;	
		
        // limite de l'évènement courant	
		var limit = message_astec.indexOf("/;;;/") ;
		
		// message complet de l'évènement courant
		var message =  message_astec.substr(1,limit-1) ;
		limit = limit -1;
			
		// limite du titre de l'évènement courant
		var position = message.indexOf("/;/") ;
		
		// limite du détail de l'évènement courant, fin du titre
		var position_fin = message.indexOf("/;;/") ;
		
		// titre de l'évènement
		var texte1 = message.substr(0,position) ;
		
		// détail de l'évènement courant
		var texte2 = "";
		
		// annotation de l'évènement courant
		var texte3 ="";
		
		if (position_fin > -1)
			{
			// messsage
			texte2 = message.substr(position+3,(position_fin-position)-3) ;
			// recherche du nombre de ligne pour en déduire la taille de la cellule
			// annotation
			texte3 = message.substr(position_fin+4,(message.length-position_fin)-4) ;
			}
		else // pas d'annotation
			{
			texte2 = message.substr(position+3,(message.length-position)-3) ;
			texte3 = "" ;
			}
			
		// regroupement et tri des évènementsà partir d'un tableau
        evt[i] = new Array();
        evt[i][0]=color;
        (trim(texte1)=='')?evt[i][1]='':evt[i][1]=texte1;
                
        if (trim(texte2)=='')
			{
			evt[i][2]=""; 
			}
		else 
			{
			var sTmp=""
			var tableauTextes = texte2.split("<br>");
			//On traduit le tableau de l'evenement
			TraductionEvt(tableauTextes, langue);
			if (tableauTextes[0]!=undefined)
				sTmp=tableauTextes[0];
			if (tableauTextes[1]!=undefined)
				sTmp = sTmp + " - " + tableauTextes[1];
			if (tableauTextes[2]!=undefined)
				sTmp = sTmp + " - " + tableauTextes[2];
			if (tableauTextes[3]!=undefined)
				sTmp = sTmp + " - " + tableauTextes[3];
			if (tableauTextes[5]!=undefined)
			{
				if (tableauTextes[4]!=undefined)
					sTmp = sTmp + "- " + tableauTextes[4] + "<br><br>" + tableauTextes[5];
				else
					sTmp = sTmp + "<br><br>" + tableauTextes[5];
			}
			else
			{
				if (tableauTextes[4]!=undefined)
					sTmp = sTmp + "<br><br>" + tableauTextes[4];
			}
			evt[i][2]= sTmp;
			}


        // mise en forle de texte2
        (trim(texte3)=='')?evt[i][3]="":evt[i][3]=texte3;
			evt[i][3] = getTraductionFIN(evt[i][3], langue);

       	message_astec =  message_astec.substr(limit+6,ret.length) ;// on passe à l'evt suivant
        }// fin de la boucle 1      

     
        // liste des évènements triés evtListe.length
        var k=0;

        for (var j=0;j<evtListe.length;j=j+1) {	
              
            // liste des messages dans l'ordre de la servlet	
        	for (var i=0;i<nb;i=i+1) {

           // construction de la chaine HTML
	        if (ltrim(evt[i][1]).substr(0,3)==evtListe[j].substr(0,3))
		        {
		        k=k+1;
		        
    		    // détail de l'évènement
                sDetailsReponse='DetailsReponse'+i;       
        	    
        	    // titre de l'évènement
        	    if (nb==1)// un seul évènement 
        			{
        			res = res +'<table style="cursor:default" class="infotext"  border="0" cellpadding="0" cellspacing="0" >';	
					res = res + '<tr bgcolor="' + evt[0][0] + '" height="20" >';
        			res=res+'<td align="left" width="184px">&nbsp;'
        			}
        		else
        			{
        			var tmp="showDetails('" + evt[i][2] + "','" + evt[i][3] + "','" + i + "')";
        			res = res +'<table class="infotext"  border="0" cellpadding="0" cellspacing="0" >';	
					res = res + '<tr height="20" style="cursor:pointer" bgcolor="' + evt[i][0] + '"   onmouseover="' + tmp + '" >';
        			res=res+'<td align="left" width="184px">&nbsp;'
        			}
        
               // association image/évènement
               var sImage="";
               switch(ltrim(evt[i][1]).substr(0,3))
					{
						case "COU": // COUPURE D'AXE
							sImage='res_rcdr.gif';
							break;
						case "INT": //Intrdiction PL
							sImage='res_rcdo.gif';
							break;
						case 'AXE': // AXE COUPE
							sImage='res_rcdr.gif';
							break;
						case 'CHA':
							sImage='rwk_rwkr.gif';
							break;
						case 'ACC':
							sImage='acc_acc.gif';
							break;
						case 'BOU':
							sImage='vide.gif';
							break;
						case 'RAL':
							sImage='vide.gif';
							break;
						case 'Tro':
							sImage='vide.gif';
							break;
						default:
							sImage='act_act.gif';
							break;
					}           

                if (nb==1)
					{
					res=res + '<img  src="' + sImgPath + "moins1.jpg" + '" alt=""/>&nbsp;' + getTraductionTYPE(evt[0][1], langue) + '</td><td  width="19px" align="left" valign="middle" ><img width="16px" height="16px" src="' + sImgPath +  sImage + '" /></td></tr>';
					res=res + '<tr><td align="center" colspan="2" id="' + sDetailsReponse + '" style="display: visible">';
					res=res + '<table class="infotextdetail"  border="0" cellpadding="0" cellspacing="3">';
					res=res + '<tr><td valign="top">' + evt[0][2] + '</td></tr>';
					res=res + '<tr><td valign=bottom" align="right" ><span class="annot">'+ evt[0][3];
					res=res + '</span></td></tr></table>';
					res=res + '</td></tr></table>';				
					}
				else
					{
						if (k == 1)
						{
							res=res + '<img id="puce' + i + '" src="' + sImgPath + "moins1.jpg" + '" alt=""/>&nbsp;' + getTraductionTYPE(evt[i][1], langue) + '</td><td  width="19px" align="left" valign="middle" ><img width="16px" height="16px" src="' + sImgPath +  sImage + '" /></td></tr>';
							res=res + '<tr><td align="center" colspan="2" id="' + sDetailsReponse + '" style="display: visible">';
						    res=res + '<table class="infotextdetail"   border="0" cellpadding="0" cellspacing="0" >';
						    res=res + '<tr ><td valign="top" >' + evt[i][2] + '</td></tr>';
						    res=res + '<tr ><td valign=bottom" align="right"><span class="annot">'+ evt[i][3];
						    res=res + '</span></td></tr></table>';
							res=res + '</td></tr></table>';				
						}
					else
						{
							res=res + '<img id="puce' + i + '" src="' + sImgPath + "plus1.jpg" + '" alt=""/>&nbsp;' + getTraductionTYPE(evt[i][1], langue) + '</td><td align="left" width="19px"><img width="16px" height="16px" src="' + sImgPath + sImage + '" /></td></tr>';
							res=res + '<tr><td align="center" colspan="2" id="' + sDetailsReponse + '" style="display: none"></td></tr></table>';
						}
					
                    // ligne blanche antre les évènements, sauf à la fin
					if (k!=nb)
						{
						//res=res + '<img src="ie2_quartse_fichiers/separ.htm" border="0" height="6" width="1">';        	
        				res = res + '<img src="separ.gif" width="1" height="6" border="0" >' ;
        				}
					}
                } // fin du if		
          }// fin de la boucle 2
	   } // fin boucle 3: 2 dans 3	
	}
	
return res;
}	


// ----------------------------------------------------------------------------------------------------------
// affiche le détail d'un évènement
// ----------------------------------------------------------------------------------------------------------
function showDetails(detailEvt,annotEvt,num)
{ 
    var sDetailEvt="";
    plier();
    sDetailEvt='<table class="infotextdetail"   border="0" cellpadding="0" cellspacing="0" >';
    sDetailEvt=sDetailEvt + '<tr ><td valign="top" >' + detailEvt + '</td></tr>';
    sDetailEvt=sDetailEvt + '<tr ><td valign=bottom" align="right"><span class="annot">'+ annotEvt;
    sDetailEvt=sDetailEvt + '</span></td></tr></table>';

    modifierCodeDivision("DetailsReponse" + num, sDetailEvt);
	modifierAffichageDivision("DetailsReponse" + num, "");
	modifierImgSrc("puce"+num, sImgPath + "moins1.jpg");
}




function MM_reloadPage(init) 
{  //reloads the window if Nav4 resized
if (init==true) with (navigator) 
	{
  	if ((appName=="Netscape")&&(parseInt(appVersion)==4)) 
  		{
    		document.MM_pgW=innerWidth; 
    		document.MM_pgH=innerHeight; 
    		onresize=MM_reloadPage; 
    		}
    	}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) 
  	location.reload();
}

MM_reloadPage(true);

function MM_findObj(n, d) 
{ //v4.0
var p,i,x;  
if(!d) d=document; 
if((p=n.indexOf("?"))>0&&parent.frames.length) 
	{
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
if(!(x=d[n])&&d.all) x=d.all[n]; 
for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() 
{ //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) 
	if ((obj=MM_findObj(args[i]))!=null) 
		{ 
		v=args[i+2];
    		if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    		obj.visibility=v; 
    		}
}

// ----------------------------------------------------------------------------------------------------------
// recupere les coord du curseur et appel de la servlet 
// ----------------------------------------------------------------------------------------------------------
function getMouseXY(e) 
{
  if (IE) 
  	{ // grab the x-y pos.s if browser is IE
    	tempX = event.clientX + document.body.scrollLeft
    	tempY = event.clientY + document.body.scrollTop
  	} 
  else 
  	{  // grab the x-y pos.s if browser is NS
    	tempX = e.pageX
    	tempY = e.pageY
  	}  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
 
  // appel de la servlet
  radCheck();  
  
  // pas d'évènement
  if (obtenirCodeDivision("AfficheReponse") == "")
	return false;
	
  // position de la "<div>" des évènements
	montrerDivision("AfficheReponseWindow");
    var docwidth = 0; 
    var docheight = 0; 

    // hauteur et largeur de la fenêtre des évènements
    var laReponseWindow = obtenirDivision("AfficheReponseWindow");
    var wTailleCli = (nb-1)*35+tailleMax;
    var wLarCli = laReponseWindow.clientWidth;

    docwidth = 582; 
    docheight = 470; 

    // positionnement dans la largeur         
    if((tempX + 20+ wLarCli)>docwidth) // marge de 20 pixels
		{	
		if ((tempX-20-wLarCli) > 0)
		{
		  	newX=tempX-20-wLarCli;
		laReponseWindow.style.left=(newX>=20)?newX:20;
		}
		else
		{
			newX=20;
		laReponseWindow.style.left=(newX>=20)?newX:20;
		}
	}
    else
    {
		newX=tempX+20;
		laReponseWindow.style.left=(newX>=20)?newX:20;
	}
		
	// positionnement dans la hauteur	
    if((tempY + wTailleCli)>docheight)
    {
		newY=docheight - wTailleCli;
	  	laReponseWindow.style.top=(newY>+20)?newY:20; 
	}
	else
	{
		newY=tempY+10;
	  	laReponseWindow.style.top=(newY>+20)?newY:20; 
	}

    return true
}

// ----------------------------------------------------------------------------------------------------------
// envoie vers une nouvelle page html
// ----------------------------------------------------------------------------------------------------------
function MM_goToURL() 
{ //v3.0
	if (obtenirCodeDivision("AfficheReponse") == "") var i, args=MM_goToURL.arguments ; 
  document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) 
  	eval(args[i]+".location='"+args[i+1]+"'");
  return document.MM_returnValue;
} 




function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_goToURL(lien) {
	var newlien = site_bisonfute + lien;
	var langue = getParameter("langue");
	var evt = getParameter("evt");
/*	if (langue != "null")
	{
		//On verifie si la langue est deja presente dans le lien
		if (newlien.indexOf("langue=")<0)
		{
			//On verifie si le lien contient deja des parametres..
			if (newlien.indexOf("?")>=0)
				newlien += "&langue="+langue;
			else
				newlien += "?langue="+langue;
		}
	}
		if (evt != "null")
		{
			newlien += "&evt="+evt;
		}
*/
	newlien += "&langue="+langue+"&evt="+evt;
	
  if (obtenirCodeDivision("AfficheReponse") != "")
  	document.MM_returnValue = false;
  else
  	window.parent.location=newlien;
}

// -----------------------------------------------------------------------------------------------------------------------------
// RAJOUTER PAR SII 01/2007
// Déplacement de la div
// -----------------------------------------------------------------------------------------------------------------------------
var ddEnabled=false;

function ddInit(e){
  topDog=IE ? "BODY" : "HTML";
  // div
  whichDog=IE ? document.all.AfficheReponseWindow : document.getElementById("AfficheReponseWindow");  
  // source de l'evt
  hotDog=IE ? event.srcElement : e.target;  
  
  while (hotDog.id!="AfficheReponseWindow"&&hotDog.tagName!=topDog)
    {
    hotDog=IE ? hotDog.parentElement : hotDog.parentNode;
    }  
    
  if (hotDog.id=="AfficheReponseWindow")
    {
    offsetx=IE ? event.clientX : e.clientX;
    offsety=IE ? event.clientY : e.clientY;
    nowX=parseInt(whichDog.style.left);
    nowY=parseInt(whichDog.style.top);
    ddEnabled=true;
    }
	// call mother handler if not title bar
	if (ddEnabled==false)
		getMouseXY(e);
}
function dd(e){
	var YY;
	if (!ddEnabled)
	{
		if (typeof HOOK_MOUSE_MOVE != "undefined")
			eval(HOOK_MOUSE_MOVE);
		return;
	}
    if  (IE){newX=nowX+event.clientX-offsetx;}
    else{newX=nowX+e.clientX-offsetx;}
    // gestion des limites
    /*if (newX > 342) {newX=342;}
    if (newX < 20) {newX=20;}*/
    whichDog.style.left=newX;
    
    (nb==1)?YY=(468-(tailleMax)):YY=468-((nb-1)*35+tailleMax);
    
    if  (IE){newY=nowY+event.clientY-offsety;}
    else {newY=nowY+e.clientY-offsety;}
    //gestion des limites
    /*if (newY > YY) {newY=YY;}
    if (newY < 20) {newY=20;}*/
    whichDog.style.top=newY;

  return false;  
}

function mouseUP()
{
ddEnabled=false;
}

function cacherPopup()
{
	cacherDivision("AfficheReponseWindow");
}

/***********************************************
* Désactive la selection sur la carte
***********************************************/
function disableSelection(target)
	{
	if (typeof target.onselectstart!="undefined") //IE 
		document.body.onselectstart=function(){return false}
	else if (typeof target.style.MozUserSelect!="undefined")
		target.style.MozUserSelect="none"//Firefox 
	}




