// aimsMap.js
/*
*  JavaScript template file for ArcIMS HTML Viewer
*               dependent on aimsXML.js, ArcIMSparam.js, aimsCommon.js
*/

aimsMapPresent=true;

// global variables
        // show xml responses
var debugOn = 0;
  // can debug be toggled?
var setDebug = true;

var useLimitExtent=false;
var getStartingExtent=true;
var getLimitExtent=true;
var enforceFullExtent=false;

// map extents. . . dynamically updated
var eLeft = -180.0;
var eRight = 180.0;
var eTop = 90.0;
var eBottom = -90.0;
var fullLeft = eLeft;
var fullRight = eRight;
var fullTop = eTop;
var fullBottom = eBottom;

// map size . . . dynamically updated
var iWidth = 630;
var iHeight = 512;
// location map size . . . dynamically updated
var i2Width = 150;
var i2Height = 120;

var imageLimitLeft = limitLeft;
var imageLimitTop = limitTop;
var imageLimitRight = limitRight;
var imageLimitBottom = limitBottom;

var TabThemeProfil=new Array();	

var appDir = "";

var xDistance = Math.abs(eRight-eLeft);
var yDistance = Math.abs(eTop-eBottom);
var panX = xDistance * panFactor;
var panY = yDistance * panFactor;
var pixelX = xDistance/iWidth;
var pixelY = yDistance/iHeight;
var mapX = eLeft;
var mapY = eTop;
var lastLeft = eLeft;
var lastRight = eRight;
var lastTop = eTop;
var lastBottom = eBottom;
var fullOVLeft = eLeft;
var fullOVRight = eRight;
var fullOVTop = eTop;
var fullOVBottom = eBottom;
var theCursor = "crosshair";
var canLoad=false;

var fullWidth = Math.abs(fullRight - fullLeft);
var fullHeight = Math.abs(fullTop - fullBottom);
var fullOVWidth = Math.abs(fullOVRight - fullOVLeft);
var fullOVHeight = Math.abs(fullOVTop - fullOVBottom);
var mapScaleFactor = xDistance / iWidth;

var geocodeX = 0;
var geocodeY = 0;
var showGeocode = false;
var geocodeLabel = "";

var queryZoom=false;

var sQuote = "'";
var dQuote = '"';

var toolMode = 1;
var legendVisible=false;
// set legend visible at service load... showTOC=false & hasTOC=true
if ((hasTOC) && (!showTOC)) legendVisible=true;

MapUnits = MapUnits.toUpperCase();
ScaleBarUnits = ScaleBarUnits.toUpperCase();


//Correction du bug de la légende
        /*var t;
        if (opener) {
                if (opener.parent.name=="MapFrame") {
                        t = opener.parent.parent.MapFrame;
                } else {
                        t = opener.parent;
                }
                } else {
                
                if (parent.parent.parent.MapFrame) {
                        t = parent.parent.parent.MapFrame;
                } else {
                        t=document;
                }
        
        }
        
        //variable de toc.htm
        var theCount = t.layerCount;
        var frmTop = parent.parent.frames['TopFrame']
        frmTop.chargerListeTheme();
        var lst = frmTop.listTheme;
        var lstLayer = frmTop.listThemeLayer;
        var bEtiquette = false;

*/

// save the extent 
function saveLastExtent() {
        lastLeft = eLeft;
        lastRight = eRight;
        lastTop = eTop;
        lastBottom = eBottom;
}

// zoom out to full extent
function fullExtent() {
        if (aimsDHTMLPresent) moveLayer("theMap",hspc,vspc);
        window.scrollTo(0,0);
        saveLastExtent();
        eLeft = fullLeft;
        eRight = fullRight;
        eTop = fullTop;
        eBottom = fullBottom;
        parent.TOC2Frame.TOCFrame.masquerEtiquetteTheme('Voie de communication');       
        sendMapXML();
}

function startExtent() {
        if (aimsDHTMLPresent) moveLayer("theMap",hspc,vspc);
        window.scrollTo(0,0);
        saveLastExtent();
        eLeft = startLeft;
        eRight = startRight;
        eTop = startTop;
        eBottom = startBottom;
        sendMapXML();
}

// zoom back to last extent
function zoomBack() {
        if (aimsDHTMLPresent) moveLayer("theMap",hspc,vspc);
        var left1 = eLeft;
        var right1 = eRight;
        var top1 = eTop;
        var bottom1 = eBottom;
        eLeft = lastLeft;
        eRight = lastRight;
        eTop = lastTop;
        eBottom = lastBottom;
        lastLeft = left1;
        lastRight = right1;
        lastTop = top1;
        lastBottom = bottom1;
                var distanceTemp = Math.abs(eRight-eLeft);
                var labelScale = (distanceTemp / iWidth) * 3780;
                if (labelScale >= 10050) {
                parent.TOC2Frame.TOCFrame.masquerEtiquetteTheme('Voie de communication');}
                else {
                parent.TOC2Frame.TOCFrame.afficherEtiquetteTheme('Voie de communication');}
        sendMapXML();   
}

function zoomToPoint(xIn, yIn, drawIt,theLabel) {
        var mWMargin = 0;
        var mHMargin = 0;
        mWMargin = Math.abs(limitRight-limitLeft) * selectPointMargin;
        mHMargin = Math.abs(limitTop-limitBottom) * selectPointMargin;
        saveLastExtent();
        eLeft = xIn - mWMargin;
        eRight = xIn + mWMargin;
        eTop = yIn + mHMargin;
        eBottom = yIn - mHMargin;
        if (drawIt) {
                showGeocode=true;
                geocodeX=xIn;
                geocodeY=yIn;
                geocodeLabel=theLabel;
        }
        parent.TOC2Frame.TOCFrame.afficherEtiquetteTheme('Voie de communication');      
        sendMapXML();
}

function zoomToEnvelope(minXin,minYin,maxXin,maxYin) {
        saveLastExtent();
        eLeft=minXin;
        eBottom=minYin;
        eRight=maxXin;
        eTop=maxYin;
        var distanceTemp = Math.abs(eRight-eLeft);
                var labelScale = (distanceTemp / iWidth) * 3780;
                if (labelScale >= 10050) {
                parent.TOC2Frame.TOCFrame.masquerEtiquetteTheme('Voie de communication');}
                else {
                parent.TOC2Frame.TOCFrame.afficherEtiquetteTheme('Voie de communication');}
        sendMapXML();
        
}

// zoom to center of fullextent at set scale
function zoomScale(inScale) {
        // inScale is scale factor where 1.0 = 100% of fullWidth and fullHeight
        var halfWidth = fullWidth / 2;
        var halfHeight = fullHeight / 2
        var midX = eRight - (xDistance / 2);
        var midY = eTop - (yDistance / 2);
        var newWidth = halfWidth * inScale;
        var newHeight = halfHeight * inScale;
        saveLastExtent();
        eLeft = midX - newWidth;
        eRight = midX + newWidth;
        eTop = midY + newHeight;
        eBottom = midY - newHeight;
        sendMapXML();
        
}

// get URLs and extents from URL
function getCommandLineParams(cmdString) {
	//alert("cmdString:    " + cmdString);
        // Parse out from URL querystring parameters 
        // to pass to the viewer.
        // Syntax:
        // Host=Hostmachine                                     name of Host, if not default
        // Service=MapService                           name of MapService, if not default
        // OVMap=OvMapService                           name of Overview MapService, if not default
        // Box=minX:minY:maxX:maxY                      extent to be displayed
        // Layers=0101101                                       visible layers,starting from topmost: 0=not visible;1=visible
        // ActiveLayer=layerIndex                       index of layer to be active, if not default
        // Query=queryExpression                        query expression to be send on load - expression must be escaped in URL
        // QueryZoom=Yes                                        zoom to above query?
        // StartLeft,StartTop,
        // StartRight,StartBottom                       starting coords - alternative to Box
        // LimitLeft,LimitTop,
        // LimitRight,LimitBottom                       limit coords
        //
        //
        setLayerVisible.length=0;
        var cmdString2 = cmdString.toUpperCase();
        var startpos = 0;
        var endpos = 0;
        var pos = cmdString2.indexOf("HOST=");
        if (pos!=-1) {
                startpos = pos + 5;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                hostName = cmdString.substring(startpos,endpos);
                serverURL  = "http://" + hostName + "/servlet/com.esri.esrimap.Esrimap?ServiceName=";
        }
        pos = cmdString2.indexOf("SERVICE="); // formally was MAPSERVICE=
        if (pos!=-1) {
                startpos = pos + 8;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                imsURL = serverURL + cmdString.substring(startpos,endpos);
                //alert("imsURL:    " + imsURL + "\ncmdString:   " + cmdString);
        }
        pos = cmdString2.indexOf("OVMAP="); // formally was OVMAPSERVICE=
        if (pos!=-1) {
                startpos = pos + 6;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                imsOVURL = serverURL + cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("BOX=");
        if (pos!=-1) {
                startpos = pos + 4;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                var boxString = cmdString.substring(startpos,endpos);
                var xyBox = boxString.split(":");
                if (xyBox.length==4) {
                        startLeft = parseFloat(xyBox[0]);
                        startBottom = parseFloat(xyBox[1]);
                        startRight = parseFloat(xyBox[2]);
                        startTop = parseFloat(xyBox[3]);
                        eLeft=startLeft;
                        eBottom=startBottom;
                        eRight=startRight;
                        eTop = startTop;
                }
        }
        pos = cmdString2.indexOf("MAXRECT=");
        if (pos!=-1) {
                startpos = pos + 8;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                var boxString = cmdString.substring(startpos,endpos);
                var xyBox = boxString.split(":");
                if (xyBox.length==4) {
                        limitLeft = xyBox[0];
                        limitBottom = xyBox[1];
                        limitRight = xyBox[2];
                        limitTop = xyBox[3];
                }
        }
        if (aimsLayersPresent) {
        	//alert("cmdString2:   " + cmdString2);
                // you need to have aimsLayers.js loaded
                var posTheme=0;
                var posMaximo=0;
                posTheme = cmdString2.indexOf("THEME=");		//si un theme est spécifier dans le lien URL de départ
                pos = cmdString2.indexOf("LAYERS=");
                //posMaximo = cmdString2.indexOf("QUERY=");
                
                if (pos!=-1) {
                        startpos = pos + 7;
                        endpos = cmdString.indexOf("&",startpos);
                        if (endpos==-1) endpos = cmdString.length;
                        var layers = cmdString.substring(startpos,endpos);
                        //alert("layers:   "+ layers);
                        
                        //"0" means the layer should be turned off, and "1" means
                        //the layer should be visible.  For example, "1001" means there
                        //are 4 layers.  The first and last layer are visible, and the
                        //middle two layers are turned off. The first number represents
                        //the top-most layer.
                        
                        //Parse the layers string
                        var numLayers=layers.length;
                        icount=0;
                        while (icount<=numLayers-1) {
                          onoff=layers.substring(icount,icount+1);
                          if (onoff=='0') {
                                setLayerVisible[icount]=false;
                          }
                          else if (onoff=='1') {
                            setLayerVisible[icount]=true;
                          }
                          icount=icount+1;
                        }
                        layers="";
                }
                
                if (posTheme!=-1) {
                        //On a spécifier un theme dans le lien Hypertext du départ et donc on doit aller voir dans le axl l'ordre des layers ID
                        //alert(cmdString);
                        startpos = posTheme + 6;
                        endpos = cmdString.indexOf(" ",startpos);
                        if (endpos==-1) endpos = cmdString.length;
                        NomTheme=cmdString2.substring(startpos,endpos);
                        //alert("NomTheme:   " + NomTheme);
                        if ((NomTheme=="CAMIONNAGE") || (NomTheme=="QUALITEEAU") || (NomTheme=="CONSEILLERS")){ 
                        	//alert(NomTheme);
                        	ThemePresent=true;		//voir dans aimsXML.js le case 3, on y vérifie si ThemePresent=true, si oui, va faire la fonction ThemeAffiche(Chaine) en bas de cette page-ci
                        }
                }
                
               /* if (posMaximo!=-1) {
                	alert("Max");
                        NomTheme="MAXIMO";
                        ThemePresent=true;
                }*/
                
                pos = cmdString2.indexOf("ACTIVELAYER=");
                if (pos!=-1) {
                        startpos = pos + 12;
                        endpos = cmdString.indexOf("&",startpos);
                        if (endpos==-1) endpos = cmdString.length;
                        var actlyr = cmdString.substring(startpos,endpos);
                        //alert("actlyr:   " + actlyr);
                        //ActiveLayerIndex = parseInt(actlyr);
                        //selectType = LayerType[ActiveLayerIndex];  
                       // if (actlyr=="Id_Civ") {ActiveLayerIndex=0;}
			if (actlyr=="EGOUT_NOEUD") {ActiveLayerIndex=19;}  //EGN
			if (actlyr=="EGOUT_LIEN") {ActiveLayerIndex=28;}   //EGL 
			//ID_CIV 79 
                        if (actlyr=="CADAS_ID_CIV") {ActiveLayerIndex=79;} //ADR
                        actlyr = "";
                        //alert(cmdString2);
                        
                 }     
                    
                if (aimsQueryPresent) {
                        // you need to have aimsQuery.js loaded
                        pos = cmdString2.indexOf("QUERY=");
                        if (pos!=-1) {
                                startpos = pos + 6;
                                endpos = cmdString.indexOf("&",startpos);
                                if (endpos==-1) endpos = cmdString.length;
                                var escQuery = cmdString.substring(startpos,endpos);
                                escQuery = replacePlus(escQuery);
                                escQuery = unescape(escQuery);
                                highlightedOne = makeXMLsafe(escQuery);
                                escQuery="";
                        }       
                        if (highlightedOne!="") {
                                pos = cmdString2.indexOf("QUERYZOOM=YES");
                                if (pos!=-1) queryZoom = true;
                        }
                }
        }
        
        pos = cmdString2.indexOf("STARTLEFT=");
        if (pos!=-1) {
                startpos = pos + 10;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                startLeft = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("STARTTOP=");
        if (pos!=-1) {
                startpos = pos + 9;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                startTop = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("STARTRIGHT=");
        if (pos!=-1) {
                startpos = pos + 11;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                startRight = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("STARTBOTTOM=");
        if (pos!=-1) {
                startpos = pos + 12;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                startBottom = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("LIMITLEFT=");
        if (pos!=-1) {
                startpos = pos + 10;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                limitLeft = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("LIMITTOP=");
        if (pos!=-1) {
                startpos = pos + 9;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                limitTop = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("LIMITRIGHT=");
        if (pos!=-1) {
                startpos = pos + 11;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                limitRight = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("LIMITBOTTOM=");
        if (pos!=-1) {
                startpos = pos + 12;
                endpos = cmdString.indexOf("&",startpos);
                if (endpos==-1) endpos = cmdString.length;
                limitBottom = cmdString.substring(startpos,endpos);
        }
        pos = cmdString2.indexOf("EXTENT=AUTO");
        if (pos!=-1) {
                startLeft=0;
                startRight=0;
                startTop=0;
                startBottom=0;
                limitLeft=0;
                limitRight=0;
                limitTop=0;
                limitBottom=0;
                getStartingExtent=true;
                getLimitExtent=true;
        }
        if (imsURL!="") {
                imsQueryURL= imsURL + "&CustomService=Query";
                imsGeocodeURL = imsURL + "&CustomService=Geocode";
        } 
        if ((startLeft!=0) && (startRight!=0)) getStartingExtent=false;
        if ((limitLeft!=0) && (limitRight!=0)) {
                getLimitExtent=false;
                enforceFullExtent=true;
        }
}

// get directory path of URL
function getPath(theFullPath) {
        var theSlash = theFullPath.lastIndexOf("/");
        var theDir = theFullPath.substring(0,theSlash);
        if (theDir==null) theDir="";
        theDir = theDir + "/";
        return theDir;

}

// check for existance of layer
function hasLayer(name) {
        var result = false;
        if (isNav4) {
                if (document.layers[name]!=null) result=true;
        }  else if (isIE) {
                if (eval('document.all.' + name)!=null) result=true;
        } else if (isNav) {
                var theElements = document.getElementsByTagName("DIV");
                var theObj;
                var j = -1;
                for (i=0;i<theElements.length;i++) {
                        if (theElements[i].id==name) result=true;
                }
    }
        return result;
}

// put up the "RetriveData" image
function showRetrieveData() {
        if (hasLayer("LoadData")) {
                showLayer("LoadData");
        }
}

// hide the "RetriveData" image
function hideRetrieveData() {
        if (hasLayer("LoadData")) {
                hideLayer("LoadData");
        }
}

// put up the "RetriveMap" image
function showRetrieveMap() {
        if (hasLayer("LoadMap")) {
                showLayer("LoadMap");
        }
}

// hide the "RetriveMap" image
function hideRetrieveMap() {
        if (hasLayer("LoadMap")) {
                //alert("Load data");
                hideLayer("LoadMap");
        }
        
        if ((NomTheme=="QUALITEEAU") && (ChargementTermine==false)){
        	parent.TOC2Frame.TOCFrame.setActiveNomLayer('Qualite eau releve');
        }
        
        if ((NomTheme=="CAMIONNAGE") && (ChargementTermine==false)){
        	parent.TOC2Frame.TOCFrame.setActiveNomLayer('Autoroute_perma');
        }
        
        if ((NomTheme=="CONSEILLERS") && (ChargementTermine==false)){
        	parent.TOC2Frame.TOCFrame.setActiveNomLayer('District');
        }
        if(top.winCharge){
		top.winCharge.close();	
	}
}

/*  *****************************************************
*       Various Distance Conversion Functions
*       *****************************************************
*/

// get scale bar distance
function getScaleBarDistance() {
        // get distance from left and right values in map units
        // convert to ScaleBar units then clip to ScaleBar size
        
        // Note: decimal are not hard coded to allow use with locales using commas instead of points.
        var mUnits = MapUnits;
        var mDistance = eRight - eLeft;
        var sbDistance = 0
        if (MapUnits=="DEGREES") {
                        // first get mid y point
                var midY = eBottom + (eTop-eBottom)/2;
                var tempL = eLeft;
                var tempR = eRight;
                if (tempL<-180) tempL = (-1799999 /10000);
                if (tempR>180) tempL = (1799999/10000);
                var Lon1 = tempL * Math.PI / 180;
                var Lon2 = tempR * Math.PI / 180;
                var Lat1 = midY * Math.PI / 180;
                var Lat2 = midY * Math.PI / 180;
                var LonDist = Math.abs(Lon2-Lon1);
                var LatDist = Math.abs(Lat1-Lat2);
                var A = Math.pow(Math.sin(LatDist / 2),2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(LonDist /2),2);
                var C = 2 * Math.asin(Math.min(1, Math.sqrt(A)));
                var D = (3963 - 13 * Math.sin((Lat1 + Lat2) / 2)) * C
                
                mDistance = D * 5280;
                mUnits = "FEET";
        }
        if (mUnits != ScaleBarUnits) {
                theDist = mDistance
                mDistance = convertUnits(theDist,mUnits,ScaleBarUnits);
        }
        
        sbDistance = mDistance/5;
        var num1 = 0;
        var num2 = sbDistance;
        if (sbDistance>10000000) {
                num1 = parseInt(sbDistance/5000000);
                num2 = num1 * 5000000;
        } else if (sbDistance>1000000) {
                num1 = parseInt(sbDistance/500000);
                num2 = num1 * 500000;
        } else if (sbDistance>100000) {
                num1 = parseInt(sbDistance/50000);
                num2 = num1 * 50000;
        } else if (sbDistance>10000) {
                num1 = parseInt(sbDistance/5000);
                num2 = num1 * 5000;
        } else if (sbDistance>1000) {
                num1 = parseInt(sbDistance/500);
                num2 = num1 * 500;
        } else if (sbDistance>100) {
                num1 = parseInt(sbDistance/50);
                num2 = num1 * 50;
        } else if (sbDistance>10) {
                num1 = parseInt(sbDistance/5);
                num2 = num1 * 5;
        } else if (sbDistance>1) {
                num1 = parseInt(sbDistance/(25/100));
                num2 = num1 * (25/100);
        } else if (sbDistance>0.1) {
                num1 = parseInt(sbDistance/(25/1000));
                num2 = num1 * (25/1000);
        }
        sbDistance = num2;
        if (sbDistance > 2) {
                ScaleBarPrecision = "0";
        } else if (sbDistance > 1) {
                ScaleBarPrecision = "1";
        } else if (sbDistance > 1/10) {
                ScaleBarPrecision = "2";
        } else if (sbDistance > 1/100) {
                ScaleBarPrecision = "3";
        } else {
                ScaleBarPrecision = "4";
        }
        return sbDistance;
}

// calculate distance to current scalebarunits
function calcDistance(mX,mY) {
        // Note: decimal are not hard coded to allow use with locales using commas instead of points.
        if (clickCount>0) {
                var mUnits = MapUnits;
                var mDistance = 0;
                var p = clickCount-1;
                var Lon1 = clickPointX[p] * Math.PI / 180;
                var Lon2 = mX * Math.PI / 180;
                var Lat1 = clickPointY[p] * Math.PI / 180;
                var Lat2 = mY * Math.PI / 180;
                var LonDist = Lon1-Lon2;
                var LatDist = Lat1-Lat2;
                if (MapUnits=="DEGREES") {
                        var A = Math.pow(Math.sin(LatDist / 2),2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(LonDist /2),2);
                        var C = 2 * Math.asin(Math.min(1, Math.sqrt(A)));
                        var D = (3963 - 13 * Math.sin((Lat1 + Lat2) / 2)) * C
                        mDistance = D * 5280;
                        mUnits = "FEET";
                } else {
                        var xD = Math.abs(mX - clickPointX[p]);
                        var yD = Math.abs(mY - clickPointY[p]);
                        mDistance = Math.sqrt(Math.pow(xD,2) + Math.pow(yD,2));
                }
                
                var theDist = convertUnits(mDistance,mUnits,ScaleBarUnits);
                var u = Math.pow(10,numDecimals);
                currentMeasure = parseInt(theDist*u+(5/10))/u;
                
                updateMeasureBox();
                
        }
}

// convert the amounts to new units
function convertUnits(theDist1,mUnits,sUnits) {
        // Note: decimal are not hard coded to allow use with locales using commas instead of points.   
        var theDist = parseFloat(theDist1);
        var mDistance = theDist;
        if (mUnits == "FEET") {
                if (sUnits=="MILES") {
                        mDistance = theDist / 5280;
                } else if (sUnits == "Mètres") {
                        mDistance = theDist * (3048/10000);
                } else if (sUnits == "KILOMETERS") {
                        mDistance = theDist * (3048/10000000);
                }
        } else {
                if (sUnits=="MILES") {
                        mDistance = theDist * (6213711922/10000000000000);
                } else if (sUnits == "FEET") {
                        mDistance = theDist * (3280839895/1000000000);
                } else if (sUnits == "KILOMETERS") {
                        mDistance = theDist / 1000;
                }
        }
        var u = Math.pow(10,numDecimals);
        if (!isNav) mDistance = parseInt(mDistance * u + (5/10)) / u
        return mDistance;
}

// set new map extent 
function setExtent(newLeft, newTop, newRight, newBottom) {
        eLeft = newLeft;
        eTop = newTop;
        eRight = newRight;
        eBottom = newBottom;
}

//  set new full extent 
function setFullExtent(maxLeft, maxTop, maxRight, maxBottom) {
        fullLeft = maxLeft;
        fullTop = maxTop;
        fullRight = maxRight;
        fullBottom = maxBottom;
        fullWidth = Math.abs(fullRight-fullLeft);
        fullHeight = Math.abs(fullTop-fullBottom);
}

function beforeMapRefresh() {
 // add any code for checking parameters before map update
 // called by sendXML() before writing XML request
 //alert("Yup. It works.[1]");
}
 
function afterMapRefresh() {
 // add any code for checking parameters after map update
 // called by processXML() if XMMmode=1 after image and extent is updated
 //alert("Yup. It works.[1]"); 
}       

// zoom using button.
//              zoomType: 1=in; 2=out
function zoomButton(zoomType) {
        saveLastExtent();
        if (zoomType == 1) {
                // zoom in
                eLeft = eLeft + (xHalf/2);
                eRight = eRight - (xHalf/2);
                eTop = eTop - (yHalf/2);
                eBottom = eBottom + (yHalf/2);
                alert("Zoom in");
        }
        else {
                // zoom out
                eLeft = eLeft - xHalf;
                eRight = eRight + xHalf;
                eTop = eTop + yHalf;
                eBottom = eBottom - yHalf;
                alert("Zoom out");
        }
        checkFullExtent();
        sendMapXML();
}

// pan using arrow buttons
function panButton(panType) {
        saveLastExtent();
        xDistance = Math.abs(eRight-eLeft);
        yDistance = Math.abs(eTop-eBottom);
        panX = xDistance * panFactor;
        panY = yDistance * panFactor;
        switch(panType) {
        case 1:
                //west
                eLeft = eLeft - panX;
                eRight = eLeft + xDistance;
                break
        case 2:
                // north
                eTop = eTop + panY;
                eBottom = eTop - yDistance;
                break
        case 3:
                // east
                eRight = eRight + panX;
                eLeft = eRight - xDistance;
                break
        case 4:
                // south
                eBottom = eBottom - panY;
                eTop = eBottom + yDistance;
                break
        case 5:
                // southwest
                eTop = eTop - panY;
                eLeft = eLeft - panX;
                eBottom = eTop - yDistance;
                eRight = eLeft + xDistance;
                break
        case 6:
                // northwest
                eTop = eTop + panY;
                eLeft = eLeft - panX;
                eBottom = eTop - yDistance;
                eRight = eLeft + xDistance;
                break
        case 7:
                // northeast
                eTop = eTop + panY;
                eLeft = eLeft + panX;
                eBottom = eTop - yDistance;
                eRight = eLeft + xDistance;
                break
        case 8:
                // southeast
                eTop = eTop - panY;
                eLeft = eLeft + panX;
                eBottom = eTop - yDistance;
                eRight = eLeft + xDistance;
        }
        checkFullExtent();
        sendMapXML();
        
}

function checkFullExtent() {
        if (xDistance>fullWidth) xDistance = fullWidth;
        if (yDistance>fullHeight) yDistance = fullHeight;
        if (enforceFullExtent) {
                if (eLeft < limitLeft) {
                        eLeft = limitLeft;
                        eRight = eLeft + xDistance;
                }
                if (eTop > imageLimitTop) {
                        eTop = imageLimitTop;   
                        eBottom = eTop - yDistance;
                }       
                if (eRight > imageLimitRight) {
                        eRight = imageLimitRight;
                        eLeft = eRight - xDistance;
                }
                if (eBottom < imageLimitBottom) {
                        eBottom = imageLimitBottom;     
                        eTop = eBottom + yDistance;
                }       
        }

}


function ThemeAffiche(Chaine) {
	switch(NomTheme){	
	case "CAMIONNAGE": 
		var posInit=1;
		var StringZero="";
		var chiffre="";
		var ChaineTempo=Chaine;
		var cpt=0;
		TabThemeProfil[0]=new Array(45,0,"GEO.IMS_CONSEIMUNI_PT","Conseiller");                                                  //Conseiller
		TabThemeProfil[1]=new Array(66,0,"GEO.HYD_QUALITEAU_RELEVE_PT","Donnees anterieures");                                   //Donnees anterieures
		TabThemeProfil[2]=new Array(65,0,"GEO.HYD_QUALITEAU_RELEVE_PT","Qualite eau releve");                                    //Qualite eau releve
		TabThemeProfil[3]=new Array(42,0,"GEO.EVA_ROLE_PT","Role_evaluation_2.5k");                                              //Role_evaluation_2.5k
		TabThemeProfil[4]=new Array(206,0,"GEO.IMS_VOIERAPIDE_SYMB_PT","No_voie_rapide_inf");                                    //No_voie_rapide_inf
		TabThemeProfil[5]=new Array(201,0,"GEO.VOI_TRONCON_LN","Geolocalisation");                                               //Geolocalisation
		TabThemeProfil[6]=new Array(156,0,"GEO.IMS_HOTELVILLE_PT","Hotel_de_Ville_inf");                                         //Hotel_de_Ville_inf
		//TabThemeProfil[7]=new Array(60,0,"GEO.IMS_GARDERIE_INFO_PT","Garderie_infos_2.5k");                                      //Garderie_infos_2.5k
		//TabThemeProfil[8]=new Array(38,0,"GEO.IMS_GARDERIE_PT","Garderie_25k");                                                  //Garderie_25k
		TabThemeProfil[7]=new Array(36,0,"GEO.IMS_PTINTERET_INFO_PT","Points_interet_infos_2.5k");                               //Points_interet_infos_2.5k
		TabThemeProfil[8]=new Array(34,0,"GEO.IMS_PTINTERET_PT","Points_interet_25k");                                          //Points_interet_25k
		TabThemeProfil[9]=new Array(11,0,"GEO.CIV_NOCIVIQUE_PT","No_civique_2.5k");                                             //No_civique_2.5k
		TabThemeProfil[10]=new Array(84,0,"GEO.TOP_POINTCOTE_PT","Points_cotes_anno_5k");                                        //Points_cotes_anno_5k
		TabThemeProfil[11]=new Array(104,0,"GEO.LIM_DISTRIELEC_PG","District");                                                  //District
		TabThemeProfil[12]=new Array(99,0,"GEO.LIM_SECT_AMENA_PG","Limite_exville_perma");                                       //Limite_exville_perma
		TabThemeProfil[13]=new Array(90,0,"GEO.LIM_EXVILLE_PG","#Limite_exville_perma");                                         //#Limite_exville_perma
		TabThemeProfil[14]=new Array(69,0,"GEO.LIM_SECT_AMENA_PG","Limite_BML_perma");                                           //Limite_BML_perma
		TabThemeProfil[15]=new Array(70,0,"GEO.LIM_SECT_AMENA_PG","#Limite_BML_perma");                                          //#Limite_BML_perma
		TabThemeProfil[16]=new Array(16,0,"GEO.TOP_BARRAGE_LN","Barrage_perma");                                                 //Barrage_perma
		TabThemeProfil[17]=new Array(23,0,"GEO.TOP_BARRAGE_LN","#Barrage_perma");                                                //#Barrage_perma
		TabThemeProfil[18]=new Array(13,1,"GEO.VOI_CHEMINFER_LN","Voie_ferree_perma");                                           //Voie_ferree_perma
		TabThemeProfil[19]=new Array(117,1,"GEO.VOI_CAMIONNAGE_LN","Camionnage_dessus_perma");                                   //Camionnage_dessus_perma
		TabThemeProfil[20]=new Array(116,1,"GEO.VOI_CAMIONNAGE_LN","Camionnage_fond_perma");                                     //Camionnage_fond_perma
		TabThemeProfil[21]=new Array(119,1,"GEO.VOI_CAMIONNAGE_INTERDIT_LN","Camionnage_rues_perma");                            //Camionnage_rues_perma
		TabThemeProfil[22]=new Array(118,1,"GEO.VOI_CAMIONNAGE_TRAME_LN","Camionnage_trame_perma");                              //Camionnage_trame_perma
		TabThemeProfil[23]=new Array(26,1,"GEO.IMS_VOI_VIADUC_LN","Viaduc_perma");                                                  //Viaduc_perma
		TabThemeProfil[24]=new Array(18,0,"GEO.IMS_VOI_VIADUC_LN","#Viaduc_perma");                                                 //#Viaduc_perma
		TabThemeProfil[25]=new Array(25,1,"GEO.IMS_VOI_PONT_LN","Pont_perma");                                                    //Pont_perma
		TabThemeProfil[26]=new Array(24,0,"GEO.IMS_VOI_PONT_LN","#Pont_perma");                                                   //#Pont_perma
		TabThemeProfil[27]=new Array(20,1,"GEO.IMS_VOI_AUTOROUTE_LN","Autoroute_perma");                                               //Autoroute_perma
		TabThemeProfil[28]=new Array(22,0,"GEO.IMS_VOI_AUTOROUTE_LN","#Autoroute_perma");                                              //#Autoroute_perma
		TabThemeProfil[29]=new Array(17,1,"GEO.IMS_VOI_BOULEVARD_LN","Boulevard_perma");                                               //Boulevard_perma
		TabThemeProfil[30]=new Array(21,0,"GEO.IMS_VOI_BOULEVARD_LN","#Boulevard_perma");                                              //#Boulevard_perma
		TabThemeProfil[31]=new Array(15,1,"GEO.IMS_VOI_RUE_LN","Rue");                                                       //Rue_50k
		TabThemeProfil[32]=new Array(14,0,"GEO.IMS_VOI_RUE_LN","#Rue");                                                       //#Rue_50k
		TabThemeProfil[33]=new Array(91,0,"GEO.VOI_ROUTES_CMM_LN","Reseau_routier_CMM");                                         //Reseau_routier_CMM
		TabThemeProfil[34]=new Array(83,0,"GEO.TOP_NIVEAU_LN","Courbes_niveau_10k");                                             //Courbes_niveau_10k
		TabThemeProfil[35]=new Array(9,0,"GEO.BAT_BATIMENT_PG","Batiment_5k");                                                   //Batiment_5k
		TabThemeProfil[36]=new Array(71,0,"GEO.CAD_LIMITE_PG","Cadastre_10k");                                                   //Cadastre_10k
		TabThemeProfil[37]=new Array(4,0,"GEO.DRP_UNITE_EVALUATION_PG","Droit_propriete_10k");                                   //Droit_propriete_10k
		TabThemeProfil[38]=new Array(96,0,"GEO.LIM_REGIONADM_CMM_PG","Region_administrative_CMM_perma");                         //Region_administrative_CMM_perma
		TabThemeProfil[39]=new Array(95,0,"GEO.LIM_REGIONADM_CMM_PG","#Region_administrative_CMM_perma");                        //#Region_administrative_CMM_perma
		TabThemeProfil[40]=new Array(94,0,"GEO.LIM_MRC_CMM_PG","MRC_CMM_perma");                                                 //MRC_CMM_perma
		TabThemeProfil[41]=new Array(93,0,"GEO.LIM_MRC_CMM_PG","#MRC_CMM_perma");                                                //#MRC_CMM_perma
		TabThemeProfil[42]=new Array(101,1,"GEO.LIM_MUNI_CMM_PG","Municipalite_CMM_perma");                                      //Municipalite_CMM_perma
		TabThemeProfil[43]=new Array(102,0,"GEO.LIM_MUNI_CMM_PG","#Municipalite_CMM_perma");                                     //#Municipalite_CMM_perma
		TabThemeProfil[44]=new Array(98,0,"GEO.HYD_COURSDEAU_CMM_LN","Cours_deau_CMM_perma");                                    //Cours_deau_CMM_perma
		TabThemeProfil[45]=new Array(97,0,"GEO.HYD_HYDRO_CMM_PG","Lac_CMM_perma");                                               //Lac_CMM_perma
		TabThemeProfil[46]=new Array(31,0,"GEO.ESV_ESPACE_VERT_PG","Terrain de golf_perma");                                     //Terrain de golf_perma
		TabThemeProfil[47]=new Array(8,0,"GEO.ESV_ESPACE_VERT_PG","#Terrain de golf_perma");                                     //#Terrain de golf_perma
		TabThemeProfil[48]=new Array(7,0,"GEO.ESV_ESPACE_VERT_PG","Parc et berge_perma");                                        //Parc et berge_perma
		TabThemeProfil[49]=new Array(6,0,"GEO.ESV_ESPACE_VERT_PG","#Parc et berge_perma");                                       //#Parc et berge_perma
		TabThemeProfil[50]=new Array(19,1,"GEO.TOP_ILES_PG","Iles_ext_perma");                                                   //Iles_ext_perma
		TabThemeProfil[51]=new Array(29,0,"GEO.TOP_ILES_PG","#Iles_ext_perma");                                                  //#Iles_ext_perma
		TabThemeProfil[52]=new Array(1,1,"GEO.IMS_HYDRO_PG","Hydrographie_perma");                                               //Hydrographie_perma
		TabThemeProfil[53]=new Array(41,0,"GEO.IMS_HYDRO_PG","#Hydrographie_perma");                                             //#Hydrographie_perma
		TabThemeProfil[54]=new Array(53,0,"GEO.PHO_PHOTO_2000.RASTER","Photo_2000");                                             //Photo_2000
		TabThemeProfil[55]=new Array(54,0,"GEO.PHO_PHOTO_2002.RASTER","Photo_2002");                                             //Photo_2002
		TabThemeProfil[56]=new Array(55,0,"GEO.PHO_PHOTO_2003.RASTER","Photo_2003");                                         	 //Photo_2003
		TabThemeProfil[57]=new Array(55,0,"GEO.PHO_PHOTO_COURANTE.RASTER","Photo_2005");                                         //Photo_2005
		TabThemeProfil[58]=new Array(10,0,"GEO.TOP_ILES_PG","Iles_laval_perma");                                                 //Iles_laval_perma
		TabThemeProfil[59]=new Array(27,0,"GEO.TOP_ILES_PG","#Iles_laval_perma");                                                //#Iles_laval_perma
		TabThemeProfil[60]=new Array(131,1,"GEO.ZAG_ZONAGE_PG","Zones_industrielles");                                           //Zones_industrielles
		TabThemeProfil[61]=new Array(103,0,"GEO.CIV_IDCIVIQUE_PT","ID_CIV");                                                     //ID_CIV


		
		while (posInit>0){
			posInit = ChaineTempo.lastIndexOf(" id=");
			if (posInit==-1){
				break;
			}
	                var startpos = posInit + 4;
	                var endpos = ChaineTempo.indexOf("\"",startpos+1);
	                var IDS = ChaineTempo.substring(startpos+1,endpos);
	                
	                
	                for (var i=0;i<TabThemeProfil.length;i++) {
	                 	if (TabThemeProfil[i][0]==IDS){
	                		if (TabThemeProfil[i][1]==0){
	                			setLayerVisible[cpt]=false;
	                			i=TabThemeProfil.length;
			                }else{
			                	setLayerVisible[cpt]=true;
			                	i=TabThemeProfil.length;
			                }
	                	}
	                }
	                ChaineTempo=Chaine.substr(0,posInit);
			cpt=cpt+1;
		}
		break;
		
	
	
	case "QUALITEEAU": 
		var posInit=1;
		var StringZero="";
		var chiffre="";
		var ChaineTempo=Chaine;
		var cpt=0;
		TabThemeProfil[0]=new Array(45,0,"GEO.IMS_CONSEIMUNI_PT","Conseiller");                                                  //Conseiller
		TabThemeProfil[1]=new Array(66,0,"GEO.HYD_QUALITEAU_RELEVE_PT","Donnees anterieures");                                   //Donnees anterieures
		TabThemeProfil[2]=new Array(65,1,"GEO.HYD_QUALITEAU_RELEVE_PT","Qualite eau releve");                                    //Qualite eau releve
		TabThemeProfil[3]=new Array(42,1,"GEO.EVA_ROLE_PT","Role_evaluation_2.5k");                                              //Role_evaluation_2.5k
		TabThemeProfil[4]=new Array(206,1,"GEO.IMS_VOIERAPIDE_SYMB_PT","No_voie_rapide_inf");                                    //No_voie_rapide_inf
		TabThemeProfil[5]=new Array(201,0,"GEO.VOI_TRONCON_LN","Geolocalisation");                                               //Geolocalisation
		TabThemeProfil[6]=new Array(156,1,"GEO.IMS_HOTELVILLE_PT","Hotel_de_Ville_inf");                                         //Hotel_de_Ville_inf
		//TabThemeProfil[7]=new Array(60,1,"GEO.IMS_GARDERIE_INFO_PT","Garderie_infos_2.5k");                                      //Garderie_infos_2.5k
		//TabThemeProfil[8]=new Array(38,1,"GEO.IMS_GARDERIE_PT","Garderie_25k");                                                  //Garderie_25k
		TabThemeProfil[7]=new Array(36,1,"GEO.IMS_PTINTERET_INFO_PT","Points_interet_infos_2.5k");                               //Points_interet_infos_2.5k
		TabThemeProfil[8]=new Array(34,1,"GEO.IMS_PTINTERET_PT","Points_interet_25k");                                          //Points_interet_25k
		TabThemeProfil[9]=new Array(11,1,"GEO.CIV_NOCIVIQUE_PT","No_civique_2.5k");                                             //No_civique_2.5k
		TabThemeProfil[10]=new Array(84,0,"GEO.TOP_POINTCOTE_PT","Points_cotes_anno_5k");                                        //Points_cotes_anno_5k
		TabThemeProfil[11]=new Array(104,0,"GEO.LIM_DISTRIELEC_PG","District");                                                  //District
		TabThemeProfil[12]=new Array(99,0,"GEO.LIM_SECT_AMENA_PG","Limite_exville_perma");                                       //Limite_exville_perma
		TabThemeProfil[13]=new Array(90,0,"GEO.LIM_EXVILLE_PG","#Limite_exville_perma");                                         //#Limite_exville_perma
		TabThemeProfil[14]=new Array(69,0,"GEO.LIM_SECT_AMENA_PG","Limite_BML_perma");                                           //Limite_BML_perma
		TabThemeProfil[15]=new Array(70,0,"GEO.LIM_SECT_AMENA_PG","#Limite_BML_perma");                                          //#Limite_BML_perma
		TabThemeProfil[16]=new Array(16,1,"GEO.TOP_BARRAGE_LN","Barrage_perma");                                                 //Barrage_perma
		TabThemeProfil[17]=new Array(23,0,"GEO.TOP_BARRAGE_LN","#Barrage_perma");                                                //#Barrage_perma
		TabThemeProfil[18]=new Array(13,1,"GEO.VOI_CHEMINFER_LN","Voie_ferree_perma");                                           //Voie_ferree_perma
		TabThemeProfil[19]=new Array(117,0,"GEO.VOI_CAMIONNAGE_LN","Camionnage_dessus_perma");                                   //Camionnage_dessus_perma
		TabThemeProfil[20]=new Array(116,0,"GEO.VOI_CAMIONNAGE_LN","Camionnage_fond_perma");                                     //Camionnage_fond_perma
		TabThemeProfil[21]=new Array(119,0,"GEO.VOI_CAMIONNAGE_INTERDIT_LN","Camionnage_rues_perma");                            //Camionnage_rues_perma
		TabThemeProfil[22]=new Array(118,0,"GEO.VOI_CAMIONNAGE_TRAME_LN","Camionnage_trame_perma");                              //Camionnage_trame_perma
		TabThemeProfil[23]=new Array(26,1,"GEO.IMS_VOI_VIADUC_LN","Viaduc_perma");                                                  //Viaduc_perma
		TabThemeProfil[24]=new Array(18,0,"GEO.IMS_VOI_VIADUC_LN","#Viaduc_perma");                                                 //#Viaduc_perma
		TabThemeProfil[25]=new Array(25,1,"GEO.IMS_VOI_PONT_LN","Pont_perma");                                                    //Pont_perma
		TabThemeProfil[26]=new Array(24,0,"GEO.IMS_VOI_PONT_LN","#Pont_perma");                                                   //#Pont_perma
		TabThemeProfil[27]=new Array(20,1,"GEO.IMS_VOI_AUTOROUTE_LN","Autoroute_perma");                                               //Autoroute_perma
		TabThemeProfil[28]=new Array(22,0,"GEO.IMS_VOI_AUTOROUTE_LN","#Autoroute_perma");                                              //#Autoroute_perma
		TabThemeProfil[29]=new Array(17,1,"GEO.IMS_VOI_BOULEVARD_LN","Boulevard_perma");                                               //Boulevard_perma
		TabThemeProfil[30]=new Array(21,0,"GEO.IMS_VOI_BOULEVARD_LN","#Boulevard_perma");                                              //#Boulevard_perma
		TabThemeProfil[31]=new Array(15,1,"GEO.IMS_VOI_RUE_LN","Rue");                                                       //Rue_50k
		TabThemeProfil[32]=new Array(14,0,"GEO.IMS_VOI_RUE_LN","#Rue");                                                       //#Rue_50k
		TabThemeProfil[33]=new Array(91,1,"GEO.VOI_ROUTES_CMM_LN","Reseau_routier_CMM");                                         //Reseau_routier_CMM
		TabThemeProfil[34]=new Array(83,0,"GEO.TOP_NIVEAU_LN","Courbes_niveau_10k");                                             //Courbes_niveau_10k
		TabThemeProfil[35]=new Array(9,1,"GEO.BAT_BATIMENT_PG","Batiment_5k");                                                   //Batiment_5k
		TabThemeProfil[36]=new Array(71,0,"GEO.CAD_LIMITE_PG","Cadastre_10k");                                                   //Cadastre_10k
		TabThemeProfil[37]=new Array(4,1,"GEO.DRP_UNITE_EVALUATION_PG","Droit_propriete_10k");                                   //Droit_propriete_10k
		TabThemeProfil[38]=new Array(96,0,"GEO.LIM_REGIONADM_CMM_PG","Region_administrative_CMM_perma");                         //Region_administrative_CMM_perma
		TabThemeProfil[39]=new Array(95,0,"GEO.LIM_REGIONADM_CMM_PG","#Region_administrative_CMM_perma");                        //#Region_administrative_CMM_perma
		TabThemeProfil[40]=new Array(94,0,"GEO.LIM_MRC_CMM_PG","MRC_CMM_perma");                                                 //MRC_CMM_perma
		TabThemeProfil[41]=new Array(93,0,"GEO.LIM_MRC_CMM_PG","#MRC_CMM_perma");                                                //#MRC_CMM_perma
		TabThemeProfil[42]=new Array(101,1,"GEO.LIM_MUNI_CMM_PG","Municipalite_CMM_perma");                                      //Municipalite_CMM_perma
		TabThemeProfil[43]=new Array(102,0,"GEO.LIM_MUNI_CMM_PG","#Municipalite_CMM_perma");                                     //#Municipalite_CMM_perma
		TabThemeProfil[44]=new Array(98,1,"GEO.HYD_COURSDEAU_CMM_LN","Cours_deau_CMM_perma");                                    //Cours_deau_CMM_perma
		TabThemeProfil[45]=new Array(97,1,"GEO.HYD_HYDRO_CMM_PG","Lac_CMM_perma");                                               //Lac_CMM_perma
		TabThemeProfil[46]=new Array(31,1,"GEO.ESV_ESPACE_VERT_PG","Terrain de golf_perma");                                     //Terrain de golf_perma
		TabThemeProfil[47]=new Array(8,0,"GEO.ESV_ESPACE_VERT_PG","#Terrain de golf_perma");                                     //#Terrain de golf_perma
		TabThemeProfil[48]=new Array(7,1,"GEO.ESV_ESPACE_VERT_PG","Parc et berge_perma");                                        //Parc et berge_perma
		TabThemeProfil[49]=new Array(6,0,"GEO.ESV_ESPACE_VERT_PG","#Parc et berge_perma");                                       //#Parc et berge_perma
		TabThemeProfil[50]=new Array(19,1,"GEO.TOP_ILES_PG","Iles_ext_perma");                                                   //Iles_ext_perma
		TabThemeProfil[51]=new Array(29,0,"GEO.TOP_ILES_PG","#Iles_ext_perma");                                                  //#Iles_ext_perma
		TabThemeProfil[52]=new Array(1,1,"GEO.IMS_HYDRO_PG","Hydrographie_perma");                                               //Hydrographie_perma
		TabThemeProfil[53]=new Array(41,0,"GEO.IMS_HYDRO_PG","#Hydrographie_perma");                                             //#Hydrographie_perma
		TabThemeProfil[54]=new Array(53,0,"GEO.PHO_PHOTO_2000.RASTER","Photo_2000");                                             //Photo_2000
		TabThemeProfil[55]=new Array(54,0,"GEO.PHO_PHOTO_2002.RASTER","Photo_2002");                                             //Photo_2002
		TabThemeProfil[56]=new Array(55,0,"GEO.PHO_PHOTO_2003.RASTER","Photo_2003");                                         	 //Photo_2003
		TabThemeProfil[57]=new Array(55,0,"GEO.PHO_PHOTO_COURANTE.RASTER","Photo_2005");                                         //Photo_2005
		TabThemeProfil[58]=new Array(10,0,"GEO.TOP_ILES_PG","Iles_laval_perma");                                                 //Iles_laval_perma
		TabThemeProfil[59]=new Array(27,0,"GEO.TOP_ILES_PG","#Iles_laval_perma");                                                //#Iles_laval_perma
		TabThemeProfil[60]=new Array(131,1,"GEO.ZAG_ZONAGE_PG","Zones_industrielles");                                           //Zones_industrielles
		TabThemeProfil[61]=new Array(103,0,"GEO.CIV_IDCIVIQUE_PT","ID_CIV");                                                     //ID_CIV
		
		
		while (posInit>0){
			posInit = ChaineTempo.lastIndexOf(" id=");
			if (posInit==-1){
				break;
			}
	                var startpos = posInit + 4;
	                var endpos = ChaineTempo.indexOf("\"",startpos+1);
	                var IDS = ChaineTempo.substring(startpos+1,endpos);
	                
	                
	                for (var i=0;i<TabThemeProfil.length;i++) {
	                 	if (TabThemeProfil[i][0]==IDS){
	                		if (TabThemeProfil[i][1]==0){
	                			setLayerVisible[cpt]=false;
	                			i=TabThemeProfil.length;
			                }else{
			                	setLayerVisible[cpt]=true;
			                	i=TabThemeProfil.length;
			                }
	                	}
	                }
	                ChaineTempo=Chaine.substr(0,posInit);
			cpt=cpt+1;
		}
		break;
	
	
	case "CONSEILLERS": 
		var posInit=1;
		var StringZero="";
		var chiffre="";
		var ChaineTempo=Chaine;
		var cpt=0;
		TabThemeProfil[0]=new Array(45,1,"GEO.IMS_CONSEIMUNI_PT","Conseiller");                                                  //Conseiller
		TabThemeProfil[1]=new Array(66,0,"GEO.HYD_QUALITEAU_RELEVE_PT","Donnees anterieures");                                   //Donnees anterieures
		TabThemeProfil[2]=new Array(65,0,"GEO.HYD_QUALITEAU_RELEVE_PT","Qualite eau releve");                                    //Qualite eau releve
		TabThemeProfil[3]=new Array(42,0,"GEO.EVA_ROLE_PT","Role_evaluation_2.5k");                                              //Role_evaluation_2.5k
		TabThemeProfil[4]=new Array(206,0,"GEO.IMS_VOIERAPIDE_SYMB_PT","No_voie_rapide_inf");                                    //No_voie_rapide_inf
		TabThemeProfil[5]=new Array(201,0,"GEO.VOI_TRONCON_LN","Geolocalisation");                                               //Geolocalisation
		TabThemeProfil[6]=new Array(156,0,"GEO.IMS_HOTELVILLE_PT","Hotel_de_Ville_inf");                                         //Hotel_de_Ville_inf
		//TabThemeProfil[7]=new Array(60,0,"GEO.IMS_GARDERIE_INFO_PT","Garderie_infos_2.5k");                                      //Garderie_infos_2.5k
		//TabThemeProfil[8]=new Array(38,0,"GEO.IMS_GARDERIE_PT","Garderie_25k");                                                  //Garderie_25k
		TabThemeProfil[7]=new Array(36,0,"GEO.IMS_PTINTERET_INFO_PT","Points_interet_infos_2.5k");                               //Points_interet_infos_2.5k
		TabThemeProfil[8]=new Array(34,0,"GEO.IMS_PTINTERET_PT","Points_interet_25k");                                          //Points_interet_25k
		TabThemeProfil[9]=new Array(11,0,"GEO.CIV_NOCIVIQUE_PT","No_civique_2.5k");                                             //No_civique_2.5k
		TabThemeProfil[10]=new Array(84,0,"GEO.TOP_POINTCOTE_PT","Points_cotes_anno_5k");                                        //Points_cotes_anno_5k
		TabThemeProfil[11]=new Array(104,1,"GEO.LIM_DISTRIELEC_PG","District");                                                  //District
		TabThemeProfil[12]=new Array(99,0,"GEO.LIM_SECT_AMENA_PG","Limite_exville_perma");                                       //Limite_exville_perma
		TabThemeProfil[13]=new Array(90,0,"GEO.LIM_EXVILLE_PG","#Limite_exville_perma");                                         //#Limite_exville_perma
		TabThemeProfil[14]=new Array(69,0,"GEO.LIM_SECT_AMENA_PG","Limite_BML_perma");                                           //Limite_BML_perma
		TabThemeProfil[15]=new Array(70,0,"GEO.LIM_SECT_AMENA_PG","#Limite_BML_perma");                                          //#Limite_BML_perma
		TabThemeProfil[16]=new Array(16,1,"GEO.TOP_BARRAGE_LN","Barrage_perma");                                                 //Barrage_perma
		TabThemeProfil[17]=new Array(23,0,"GEO.TOP_BARRAGE_LN","#Barrage_perma");                                                //#Barrage_perma
		TabThemeProfil[18]=new Array(13,1,"GEO.VOI_CHEMINFER_LN","Voie_ferree_perma");                                           //Voie_ferree_perma
		TabThemeProfil[19]=new Array(117,0,"GEO.VOI_CAMIONNAGE_LN","Camionnage_dessus_perma");                                   //Camionnage_dessus_perma
		TabThemeProfil[20]=new Array(116,0,"GEO.VOI_CAMIONNAGE_LN","Camionnage_fond_perma");                                     //Camionnage_fond_perma
		TabThemeProfil[21]=new Array(119,0,"GEO.VOI_CAMIONNAGE_INTERDIT_LN","Camionnage_rues_perma");                            //Camionnage_rues_perma
		TabThemeProfil[22]=new Array(118,0,"GEO.VOI_CAMIONNAGE_TRAME_LN","Camionnage_trame_perma");                              //Camionnage_trame_perma
		TabThemeProfil[23]=new Array(26,1,"GEO.IMS_VOI_VIADUC_LN","Viaduc_perma");                                                  //Viaduc_perma
		TabThemeProfil[24]=new Array(18,0,"GEO.IMS_VOI_VIADUC_LN","#Viaduc_perma");                                                 //#Viaduc_perma
		TabThemeProfil[25]=new Array(25,1,"GEO.IMS_VOI_PONT_LN","Pont_perma");                                                    //Pont_perma
		TabThemeProfil[26]=new Array(24,0,"GEO.IMS_VOI_PONT_LN","#Pont_perma");                                                   //#Pont_perma
		TabThemeProfil[27]=new Array(20,1,"GEO.IMS_VOI_AUTOROUTE_LN","Autoroute_perma");                                               //Autoroute_perma
		TabThemeProfil[28]=new Array(22,0,"GEO.IMS_VOI_AUTOROUTE_LN","#Autoroute_perma");                                              //#Autoroute_perma
		TabThemeProfil[29]=new Array(17,1,"GEO.IMS_VOI_BOULEVARD_LN","Boulevard_perma");                                               //Boulevard_perma
		TabThemeProfil[30]=new Array(21,0,"GEO.IMS_VOI_BOULEVARD_LN","#Boulevard_perma");                                              //#Boulevard_perma
		TabThemeProfil[31]=new Array(15,1,"GEO.IMS_VOI_RUE_LN","Rue");                                                       //Rue_50k
		TabThemeProfil[32]=new Array(14,0,"GEO.IMS_VOI_RUE_LN","#Rue");                                                       //#Rue_50k
		TabThemeProfil[33]=new Array(91,0,"GEO.VOI_ROUTES_CMM_LN","Reseau_routier_CMM");                                         //Reseau_routier_CMM
		TabThemeProfil[34]=new Array(83,0,"GEO.TOP_NIVEAU_LN","Courbes_niveau_10k");                                             //Courbes_niveau_10k
		TabThemeProfil[35]=new Array(9,0,"GEO.BAT_BATIMENT_PG","Batiment_5k");                                                   //Batiment_5k
		TabThemeProfil[36]=new Array(71,0,"GEO.CAD_LIMITE_PG","Cadastre_10k");                                                   //Cadastre_10k
		TabThemeProfil[37]=new Array(4,0,"GEO.DRP_UNITE_EVALUATION_PG","Droit_propriete_10k");                                   //Droit_propriete_10k
		TabThemeProfil[38]=new Array(96,1,"GEO.LIM_REGIONADM_CMM_PG","Region_administrative_CMM_perma");                         //Region_administrative_CMM_perma
		TabThemeProfil[39]=new Array(95,0,"GEO.LIM_REGIONADM_CMM_PG","#Region_administrative_CMM_perma");                        //#Region_administrative_CMM_perma
		TabThemeProfil[40]=new Array(94,0,"GEO.LIM_MRC_CMM_PG","MRC_CMM_perma");                                                 //MRC_CMM_perma
		TabThemeProfil[41]=new Array(93,0,"GEO.LIM_MRC_CMM_PG","#MRC_CMM_perma");                                                //#MRC_CMM_perma
		TabThemeProfil[42]=new Array(101,1,"GEO.LIM_MUNI_CMM_PG","Municipalite_CMM_perma");                                      //Municipalite_CMM_perma
		TabThemeProfil[43]=new Array(102,0,"GEO.LIM_MUNI_CMM_PG","#Municipalite_CMM_perma");                                     //#Municipalite_CMM_perma
		TabThemeProfil[44]=new Array(98,0,"GEO.HYD_COURSDEAU_CMM_LN","Cours_deau_CMM_perma");                                    //Cours_deau_CMM_perma
		TabThemeProfil[45]=new Array(97,0,"GEO.HYD_HYDRO_CMM_PG","Lac_CMM_perma");                                               //Lac_CMM_perma
		TabThemeProfil[46]=new Array(31,1,"GEO.ESV_ESPACE_VERT_PG","Terrain de golf_perma");                                     //Terrain de golf_perma
		TabThemeProfil[47]=new Array(8,0,"GEO.ESV_ESPACE_VERT_PG","#Terrain de golf_perma");                                     //#Terrain de golf_perma
		TabThemeProfil[48]=new Array(7,1,"GEO.ESV_ESPACE_VERT_PG","Parc et berge_perma");                                        //Parc et berge_perma
		TabThemeProfil[49]=new Array(6,0,"GEO.ESV_ESPACE_VERT_PG","#Parc et berge_perma");                                       //#Parc et berge_perma
		TabThemeProfil[50]=new Array(19,1,"GEO.TOP_ILES_PG","Iles_ext_perma");                                                   //Iles_ext_perma
		TabThemeProfil[51]=new Array(29,0,"GEO.TOP_ILES_PG","#Iles_ext_perma");                                                  //#Iles_ext_perma
		TabThemeProfil[52]=new Array(1,1,"GEO.IMS_HYDRO_PG","Hydrographie_perma");                                               //Hydrographie_perma
		TabThemeProfil[53]=new Array(41,0,"GEO.IMS_HYDRO_PG","#Hydrographie_perma");                                             //#Hydrographie_perma
		TabThemeProfil[54]=new Array(53,0,"GEO.PHO_PHOTO_2000.RASTER","Photo_2000");                                             //Photo_2000
		TabThemeProfil[55]=new Array(54,0,"GEO.PHO_PHOTO_2002.RASTER","Photo_2002");                                             //Photo_2002
		TabThemeProfil[56]=new Array(55,0,"GEO.PHO_PHOTO_2003.RASTER","Photo_2003");                                         	 //Photo_2003
		TabThemeProfil[57]=new Array(55,0,"GEO.PHO_PHOTO_COURANTE.RASTER","Photo_2005");                                         //Photo_2005
		TabThemeProfil[58]=new Array(10,0,"GEO.TOP_ILES_PG","Iles_laval_perma");                                                 //Iles_laval_perma
		TabThemeProfil[59]=new Array(27,0,"GEO.TOP_ILES_PG","#Iles_laval_perma");                                                //#Iles_laval_perma
		TabThemeProfil[60]=new Array(131,1,"GEO.ZAG_ZONAGE_PG","Zones_industrielles");                                           //Zones_industrielles
		TabThemeProfil[61]=new Array(103,0,"GEO.CIV_IDCIVIQUE_PT","ID_CIV");                                                     //ID_CIV

		
		while (posInit>0){
			posInit = ChaineTempo.lastIndexOf(" id=");
			if (posInit==-1){
				break;
			}
	                var startpos = posInit + 4;
	                var endpos = ChaineTempo.indexOf("\"",startpos+1);
	                var IDS = ChaineTempo.substring(startpos+1,endpos);
	                
	                
	                for (var i=0;i<TabThemeProfil.length;i++) {
	                 	if (TabThemeProfil[i][0]==IDS){
	                		if (TabThemeProfil[i][1]==0){
	                			setLayerVisible[cpt]=false;
	                			i=TabThemeProfil.length;
			                }else{
			                	setLayerVisible[cpt]=true;
			                	i=TabThemeProfil.length;
			                }
	                	}
	                }
	                ChaineTempo=Chaine.substr(0,posInit);
			cpt=cpt+1;
		}
		break;
	
	}
	
	
	
}






