//Initialisation du contrôle MapGuide
function getMap()
{
	return parent.principal.document.Carte.GrandeCarte;
}

function initObs()
{
	map = getMap();
    if (navigator.appName == "Netscape")
        map.setViewChangedObserver(document.obsGrandeCarte);
}

function onViewChanged(map)
{
	UpdateMiniMap(map);
}

//Initialisation du "mini" contrôle MapGuide
function getIndexMap()
{
	if (navigator.appName == "Netscape")
        Map = parent.sommaire.haut.document.SmallCarte.MiniCarte;
	else
        Map = parent.sommaire.haut.document.MiniCarte;
       
    return Map;
}

function UpdateMiniMap(map)
{	
	var bigmap = getMap();
	var idxmap = getIndexMap();
	
	var myLayer = null;
	var obj = null;
	var CalqueRedline = null;
	
	if (idxmap.isBusy()) 
		return;
			
	var theExtents = bigmap.getMapExtent(true, true);
	CalqueRedline = idxmap.getMapLayer("Redline");
	
	if (CalqueRedline != null)
	{
		obj = CalqueRedline.getMapObject("temp");
		obj = null;
		CalqueRedline.removeAllObjects();
	}
	else
		CalqueRedline = idxmap.createLayer("redline", "Redline");
		
	// create redline object, or get it if it already exists
	if (obj == null)
		obj = CalqueRedline.createMapObject("temp", "", "");
	else
		setTimeout("UpdateMiniMap()", 5000);
    
    var myRedline = idxmap.getRedlineSetup();
	var myEdge = myRedline.getEdgeAttr();
	myEdge.setThickness(2);
	myEdge.setColor(154);
    
	// create MGCollection that holds user-specified polygon vertices	
	var ptTopLeft = idxmap.createObject("mgpoint");
	ptTopLeft.setX(theExtents.getMinX());
	ptTopLeft.setY(theExtents.getMaxY());
	var ptTopRight = idxmap.createObject("mgpoint");
	ptTopRight.setX(theExtents.getMaxX());
	ptTopRight.setY(theExtents.getMaxY());
	var ptBottomLeft = idxmap.createObject("mgpoint");
	ptBottomLeft.setX(theExtents.getMinX());
	ptBottomLeft.setY(theExtents.getMinY());
	var ptBottomRight = idxmap.createObject("mgpoint");
	ptBottomRight.setX(theExtents.getMaxX());
	ptBottomRight.setY(theExtents.getMinY());
	
	var the_points = idxmap.createObject("mgcollection");
	the_points.add(ptTopLeft);
	the_points.add(ptTopRight);
	the_points.add(ptBottomRight);
	the_points.add(ptBottomLeft);
	the_points.add(ptTopLeft);
	
	var user_vertices = idxmap.createObject("mgcollection");
	var theINT = the_points.size();
	var numVertices = parseInt(theINT);
	
	user_vertices.add(numVertices);
		
	// use MGCollection to create polyline primitive and add it to redline object 
	obj.addPolygonPrimitive(the_points, user_vertices, true);
}

function onDoubleClickObject(mapobject)
{
	map = getMap( );
	SelObjet = map.getSelection();
	if ( SelObjet == null ) 
		return ;
	  	
	 alert("\nVous venez de cliquer sur : " + mapobject.getName());
            
	//Si un ou plusieurs objet(s) sélectionné(s)
	ObjetSelect = SelObjet.getNumObjects();
}

function ChargeCarte()
{
	var map = getMap();
	var Carte = document.Carte.TCarte.value;
	
	var GroupCalque		= map.getMapLayerGroup("POS : SERVITUDES D'UTILITE PUBLIQUE");
	var GroupCalque2	= map.getMapLayerGroup("POS : PLAN DE ZONAGE");
	var GroupCalque3	= map.getMapLayerGroup("Agglo. Logements HLM");
	var GroupCalque5	= map.getMapLayerGroup("Ortho Ville de Laval mars 2000");
	var GroupCalque4	= map.getMapLayerGroup("Ortho IGN 2001");
	
	if (map.isBusy() == false)
	{
		GroupCalque.collapse();
		GroupCalque2.collapse();
		GroupCalque3.collapse();
		GroupCalque4.collapse();
		GroupCalque5.collapse();
	}
	else
	{
		setTimeout("ChargeCarte()", 5000);
	}
}

var LayerPolyline = null;
function onDigitizedPolyline(map, numPoints, latlon)
{
	map = getMap();
	map.setAutoRefresh(false);

	CouleurTrait	= parseInt(parent.sommaire.bas.document.Menu.CouleursTraits.value);
	EpaisseurTrait	= parseInt(parent.sommaire.bas.document.Menu.EpaisseurTraits.value);
	StyleTrait		= parent.sommaire.bas.document.Menu.StylesTraits.value;
	
	//---Récupération des coordonnées des points de la polyligne	
	mgColPoints = map.createObject("MGCollection");
	for (i = 0; i < numPoints; i++)
    {
			Y = latlon.item(i).getY();
			X = latlon.item(i).getX();
			if (navigator.appName == "Netscape")  
				var ctrPt = map.lonLatToMcs(X, Y);
			else
				var ctrPt = map.CreateObject("MGPoint");
			
			ctrPt.setX(X);
			ctrPt.setY(Y);
			mgColPoints.add(ctrPt);	
			
			taille = mgColPoints.size();	
			if (taille == parseInt(numPoints))
				SuiteonDigitizedPolyline();
    }
}

function SuiteonDigitizedPolyline()
{
	map = getMap();
    map.setAutoRefresh(false);

    //---Création du calque redline "NomCalque"
	var NomCalque = prompt("Donnez un nom à votre calque ...","Calque");
	if (NomCalque != "")
	{
		var LayerPolyline = map.getMapLayer(NomCalque);
		if (LayerPolyline == null)
		{
			LayerPolyline = map.createLayer("redline", NomCalque);
			document.Carte.CalqueActif.value = NomCalque;

			//Création d'un objet "Polyline"
			var mapObj = LayerPolyline.createMapObject("", NomCalque, "");
			//Style des attributs du calque de redline
			var Redline = map.getRedlineSetup();
			var Line = Redline.getLineAttr();
			Line.setColor(CouleurTrait);
			Line.setThickness(EpaisseurTrait);
			Line.setStyle(StyleTrait);
			
			//---Création de la ligne "Ligne" avec la collection de points "mgColPoints" sur le calque de redline "Polyline"
			var Vertices = map.createObject("MGCollection");
			var numPoints = mgColPoints.size();
			var numVertices = parseInt(numPoints);
			Vertices.add(numVertices);
			
			if (navigator.appName == "Netscape")  
				mapObj.addPolylinePrimitive(mgColPoints, Vertices, true);
			else
				Ligne = mapObj.addPolylinePrimitive(mgColPoints, Vertices, true);
			
			map.setAutoRefresh(true);
			map.refresh();
		}
		else
			alert("Le calque " + NomCalque + " existe déjà!");
	}
}

var LayerPolygon = null;
function onDigitizedPolygon(map, numPoints, points)
{
	map = getMap();
	map.setAutoRefresh(false);

	CouleurTrait			= parseInt(parent.sommaire.bas.document.Menu.CouleursTraits.value);
	EpaisseurTrait			= parseInt(parent.sommaire.bas.document.Menu.EpaisseurTraits.value);
	StyleTrait				= parent.sommaire.bas.document.Menu.StylesTraits.value;
	CouleurRemplissage		= parseInt(parent.sommaire.bas.document.Menu.CouleursRemplissage.value);
	StyleRemplissage		= parent.sommaire.bas.document.Menu.StylesRemplissage.value;
	CouleurFondRemplissage	= parseInt(parent.sommaire.bas.document.Menu.CouleursFondRemplissage.value);
	ModeRemplissage			= parent.sommaire.bas.document.Menu.ModeRemplissage.value;
	
	//---Récupération des coordonnées des points du polygone
	mgColPoints = map.createObject("MGCollection");
    for (i = 0; i < numPoints; i++)
    {
		Y = points.item(i).getY();
		X = points.item(i).getX();
		if (navigator.appName == "Netscape")  
			var ctrPt = map.lonLatToMcs(X, Y);
		else
			var ctrPt = map.CreateObject("MGPoint");
		
		ctrPt.setX(X);
		ctrPt.setY(Y);
		mgColPoints.add(ctrPt);	
		
		taille = mgColPoints.size();	
		if (taille == parseInt(numPoints))
			SuiteonDigitizedPolygon();
	}
}

function SuiteonDigitizedPolygon()
{
	map = getMap();
    map.setAutoRefresh(false);

    //---Création du calque redline "NomCalque"
	var NomCalque = prompt("Donnez un nom à votre calque ...","Calque");
	if (NomCalque != "")
	{
		var LayerPolygon = map.getMapLayer(NomCalque);
		if (LayerPolygon == null)
		{
			LayerPolygon = map.createLayer("redline", NomCalque);
			document.Carte.CalqueActif.value = NomCalque;
		
			//Création d'un objet "Polygon"
			var mapObj = LayerPolygon.createMapObject("", NomCalque, "");
			//Style des attributs du calque de redline
			var Redline = map.getRedlineSetup();
			var Edge = Redline.getEdgeAttr();
			Edge.setThickness(EpaisseurTrait);
			Edge.setColor(CouleurTrait);
			Edge.setStyle(StyleTrait);
			var Fill = Redline.getFillAttr();
			Fill.setHatchPattern(StyleRemplissage);
			Fill.setColor(CouleurRemplissage);
			Fill.setBackColor(CouleurFondRemplissage);
			Fill.setBackMode(ModeRemplissage);
			Fill.setStyle(StyleRemplissage);
			
			//---Création de la ligne "Polygone" avec la collection de points "mgColPoints" sur le calque de redline "Polygone"    
			var Vertices = map.createObject("MGCollection");
			var numPoints = mgColPoints.size();
			var numVertices = parseInt(numPoints);
			Vertices.add(numVertices);
			
			if (navigator.appName == "Netscape")  
				mapObj.addPolygonPrimitive(mgColPoints, Vertices, true);
			else
				Polygone = mapObj.addPolygonPrimitive(mgColPoints, Vertices, true);
			
			map.setAutoRefresh(true);
			map.refresh();    
		}
		else
			alert("Le calque " + NomCalque + " existe déjà!");
	}
}

var LayerCircle = null;
function onDigitizedCircle (map, units, center, radius)
{
	map = getMap();
	map.setAutoRefresh(false);

	CouleurTrait			= parseInt(parent.sommaire.bas.document.Menu.CouleursTraits.value);
	EpaisseurTrait			= parseInt(parent.sommaire.bas.document.Menu.EpaisseurTraits.value);
	StyleTrait				= parent.sommaire.bas.document.Menu.StylesTraits.value;
	CouleurRemplissage		= parseInt(parent.sommaire.bas.document.Menu.CouleursRemplissage.value);
	StyleRemplissage		= parent.sommaire.bas.document.Menu.StylesRemplissage.value;
	CouleurFondRemplissage	= parseInt(parent.sommaire.bas.document.Menu.CouleursFondRemplissage.value);
	ModeRemplissage			= parent.sommaire.bas.document.Menu.ModeRemplissage.value;
	
	//---Récupération des coordonnées du centre du cercle	
	Y = center.getY();
	X = center.getX();
	if (navigator.appName == "Netscape")  
		var PtCentre = map.lonLatToMcs(X, Y);
	else
		var PtCentre = map.CreateObject("MGPoint");

	PtCentre.setX(X);
	PtCentre.setY(Y);
	
	map.setAutoRefresh(false);
	
	//---Création du calque redline "NomCalque"
	var NomCalque = prompt("Donnez un nom à votre calque ...","Calque");
	if (NomCalque != "")
	{
		var LayerCircle = map.getMapLayer(NomCalque);
		if (LayerCircle == null)
		{
			LayerCircle = map.createLayer("redline", NomCalque);
			document.Carte.CalqueActif.value = NomCalque;
			
			//Création d'un objet "Circle"
			var mapObj = LayerCircle.createMapObject("", NomCalque, "");
			//Style des attributs du calque de redline
			var Redline = map.getRedlineSetup();
			var Edge = Redline.getEdgeAttr();
			Edge.setThickness(EpaisseurTrait);
			Edge.setColor(CouleurTrait);
			Edge.setStyle(StyleTrait);
			var Fill = Redline.getFillAttr();
			Fill.setHatchPattern(StyleRemplissage);
			Fill.setColor(CouleurRemplissage);
			Fill.setBackColor(CouleurFondRemplissage);
			Fill.setBackMode(ModeRemplissage);
			Fill.setStyle(StyleRemplissage);
			
			//---Création du cercle "Circle" avec un centre "PtCentre" sur le calque de redline "Circle"
		    radius = parseFloat(radius);
			
			if (navigator.appName == "Netscape")  
				mapObj.addCirclePrimitive(PtCentre, true, radius, units, 200);
			else
				Cercle = mapObj.addCirclePrimitive(PtCentre, true, radius, units, 200);
				
			map.setAutoRefresh(true);
			map.refresh();
		}
		else
			alert("Le calque " + NomCalque + " existe déjà!");
	}
}

var LayerSymbol = null;
var LayerText = null;
function onDigitizedPoint (map, point)
{
	map = getMap();
	map.setAutoRefresh(false);

	NomTexte			= parent.sommaire.bas.document.Menu.NomTexte.value;
	CouleurTexte		= parseInt(parent.sommaire.bas.document.Menu.CouleursTextes.value);
	PoliceTexte			= parent.sommaire.bas.document.Menu.PolicesTextes.value;
	StyleTexte			= parent.sommaire.bas.document.Menu.StylesTextes.value;
	ModeTexte			= parseInt(parent.sommaire.bas.document.Menu.ModesTextes.value);
	CouleurFondTexte	= parseInt(parent.sommaire.bas.document.Menu.CouleursFondTextes.value);
	HauteurTexte		= parseInt(parent.sommaire.bas.document.Menu.HauteurTextes.value);
	RotationTexte		= parseInt(parent.sommaire.bas.document.Menu.RotationTextes.value);
	AlignHTexte			= parseInt(parent.sommaire.bas.document.Menu.AlignHTextes.value);
	AlignVTexte			= parseInt(parent.sommaire.bas.document.Menu.AlignVTextes.value);
	NomSymb				= parent.sommaire.bas.document.Menu.NomSymb.value;
	HauteurSymb			= parseInt(parent.sommaire.bas.document.Menu.HauteurSymb.value);
	LargeurSymb			= parseInt(parent.sommaire.bas.document.Menu.LargeurSymb.value);
	RotationSymb		= parseInt(parent.sommaire.bas.document.Menu.RotationSymb.value);
	
	Point = parent.sommaire.bas.document.Menu.TPoint.value;
	
	//---Récupération des coordonnées du point
	Y = point.getY();
	X = point.getX();
	if (navigator.appName == "Netscape")  
		var Pt = map.lonLatToMcs(X, Y);
	else
		var Pt = map.CreateObject("MGPoint");

	Pt.setX(X);
	Pt.setY(Y);
	
    map.setAutoRefresh(false);
    
    if (Point == "Symbol")
	{
		//----------Symbole---------------
		//---Création du calque redline "NomCalque"
		var NomCalque = prompt("Donnez un nom à votre calque ...","Calque");
		if (NomCalque != "")
		{
			var LayerSymbol = map.getMapLayer(NomCalque);
			if (LayerSymbol == null)
			{
				LayerSymbol = map.createLayer("redline", NomCalque);
				document.Carte.CalqueActif.value = NomCalque;
				
				//Création d'un objet "Symbole"
				var mapObj = LayerSymbol.createMapObject("", NomCalque, "");
				//Style des attributs du calque de redline
				var Redline = map.getRedlineSetup();
				var Symbol = Redline.getSymbolAttr();
				Symbol.setSymbol(NomSymb);
				Symbol.setHeight(HauteurSymb, "M");
				Symbol.setRotation(RotationSymb);
				Symbol.setWidth(LargeurSymb, "M");
				
				//---Création du symbole "Symbol" avec le point "Pt" sur le calque de redline "Symbole"
				if (navigator.appName == "Netscape")  
					mapObj.addSymbolPrimitive(Pt, true);
				else
					Symbol = mapObj.addSymbolPrimitive(Pt, true);
			}
			else
				alert("Le calque " + NomCalque + " existe déjà!");
		}
	}
	else if (Point == "Text")
	{
		//----------Texte---------------
		//---Création du calque redline "NomCalque"
		var NomCalque = prompt("Donnez un nom à votre calque ...","Calque");
		if (NomCalque != "")
		{
			var LayerText = map.getMapLayer(NomCalque);
			if (LayerText == null)
			{
				LayerText = map.createLayer("redline", NomCalque);
				document.Carte.CalqueActif.value = NomCalque;
				
				//Création d'un objet "Texte"
				var mapObj = LayerText.createMapObject("", NomCalque, "");
				//Style des attributs du calque de redline
				var Redline = map.getRedlineSetup();
				var Text = Redline.getTextAttr();
				Text.setBackColor(CouleurFondTexte);
				Text.setBackMode(ModeTexte);
				Text.setColor(CouleurTexte);
				Text.setFontName(PoliceTexte);
				Text.setFontStyle(StyleTexte);
				Text.setHeight(HauteurTexte, "M");
				Text.setHorizAlign(AlignHTexte);
				Text.setVertAlign(AlignVTexte);
				Text.setRotation(RotationTexte);
			
				//---Création du texte "Text" avec le point "Pt" sur le calque de redline "Texte"
			    if (navigator.appName == "Netscape")  
					mapObj.addTextPrimitive(Pt, true, NomTexte);
				else
					Text = mapObj.addTextPrimitive(Pt, true, NomTexte);
			}
			else
				alert("Le calque " + NomCalque + " existe déjà!");
		}
	}
	
    map.setAutoRefresh(true);
    map.refresh();
}
