// La variable "etat.langue" est normalement initialisée directement dans le MIG
if (typeof etat != 'object'){	// Si la variable "etat" n'est pas initialisée
	etat = {lang:'fr'};
}else if (!('lang' in etat)){	// Si la propriété "langue" de la variable "etat" n'est pas initialisée
	etat.lang = 'fr';
}

vgml_dictio = function(key, options){
	var settings = {
		lowerCase:	false			// Retourne le mot tout en minuscule
	}
	if (options){$.extend(settings, options);}
	
	var dictio = {
		'trafic':{
			'fr':'Trafic',
			'en':'Traffic'
		},
		'ralentie':{
			'fr':'Ralentie',
			'en':'Slow'
		},
		'fluide':{
			'fr':'Fluide',
			'en':'Fast'
		}
	}
	// Si le mot n'est pas dans le "dictio", il est directement retourné
	if (key.toLowerCase() in dictio){
		var mot = dictio[key.toLowerCase()][etat.lang];
	}else{
		var mot = key;
	}
	
	if (settings.lowerCase){
		mot = mot.toLowerCase();
	}
	return (mot);
}

function VGML(vgmlURL){
	/*
	 Variables globales
	*/
	// URL du document XML qui contient les données
	this.vgmlURL = vgmlURL;
	// Nom du folder si on n'en veut qu'un seul
	this.folderName = "";
	// ID des container pour la colonne de gauche et la map
	this.sideBarContainerID = "the_side_bar";
	this.mapContainerID = "map_canvas";
	// Détermine si on doit rendre les icônes d'un folder invisibles à la fermeture 
	this.toggleInvisibility = false;
	//Affichage d'une case à cocher en haut de la barre de gauche.
	this.checkbox = false;
	this.checkboxText = "";
	//Icône utilisée par défaut
	this.icon = 'http://ville.montreal.qc.ca/pls/portal/docs/page/lib_fr/media/images/ui_frm/gmap-marker.png';
	// Faire apparaître le bouton "Traffic"
	this.show_traffic_btn = false;
	// Visibilité de la couche "traffic"
	this.traffic_on = false;
	
	// Bouton pour les pistes cyclables
	this.menu_pistes = false;
	// Bouton pour les pistes cyclables
	this.menu_lanes = false;
	// visibilite des pistes
	this.pistes_on = false;
	
	/*
	PRÉFÉRENCES POUR LA MAP
	*/
	// Zoom initial de la map
	this.initMapZoom = 11;
	// Zoom sur un folder en particulier
	this.zoomedIn = 13;
	
	// Référence à l'objet vgmlDocument (qui contient toutes les données)
	this.vgmlDocument;
	// Référence à l'objet MAP
	this.map;
	// Référence à l'objet infoBulle de la map
	this.infoWindow;
	
	this.show_infoWindow = true;
	//faire apparaitre une legende de couleurs sur la carte en francais
	this.legendVisible = false;
		//faire apparaitre une legende de couleurs sur la carte en anglais
	this.legendVisible_en = false;
	/* 
	 Objets pour la barre sur le côté
	*/
	this.VGMLDocument = function() {
		this.vgmlID;
		this.legend; /*ajouter une legende*/
		this.name;
		this.description;
		this.folders;
		this.bounds;
		this.coordinates; //Les coordonnes de la carte
		this.findFolderByName = function(name) {
			for (var i=0;i<this.folders.length;i++) {
				var folder = this.folders[i];
				if (folder.name == name) {
					return folder;
				}
			}
		}
		this.findPlaceMark = function(uniqueID) {
			for (var i=0;i<this.folders.length;i++) {
				var folder = this.folders[i];
				var placemarks = folder.placemarks.plmks;
				for (var k=0;k<placemarks.length;k++) {
					var placemark = placemarks[k];
					if (placemark.uniqueID == uniqueID) {
						return placemark;
					}
				}
			}
		}
		this.getPlaceMark = function(folderUniqueID, uniqueID) {
			return this.folders[folderUniqueID].placemarks.plmks[uniqueID];
		}
		this.toHTML = function() {
			var vgml = eval(this.vgmlID);
			var html = '';
			html += '<div class="sb">';
			if (vgml.checkbox) {
				html += '<div class="sb_desc"><input type="checkbox"';
				if (vgml.folderName.indexOf("_ALL") > 0) html += 'checked="checked"';
				html+= ' onclick="reInit(\''+this.vgmlID+'\');">'+vgml.checkboxText+'</div>';
			} 
			html += '<div class="sb_title">'+this.name+'</div>';
			if (this.description != "") {
				html += '<div class="sb_desc">'+this.description+'</div>';
			}
			for (var i=0;i<this.folders.length;i++) {
				var folder = this.folders[i];
				html += folder.toHTML(this.vgmlID);
			}
			html+= '</div>';
			return html;
		};
	}
	
	this.Folder = function() {
		this.uniqueID;
		this.name;
		this.open;
		this.zoomedIn;
		this.placemarks;
		this.bounds;
		this.toHTML = function(vgmlID) {
			var html = '';
			if (this.placemarks.plmks != null && this.placemarks.plmks.length > 0) {
				html += '<div class="sb_folder">';
				html += '<div class="sb_folder_title';
				if (this.open) html += ' sb_folder_title_open';
				html+='" onclick="toggleFolder(\''+vgmlID+'\',\''+this.uniqueID+'\');">';
				html += '<a href="javascript:void(0)">'+this.name+'</a></div>';
				html += this.placemarks.toHTML(vgmlID, this.open);
				html += '</div>';
			}
			return html;
		};
	}
	
	this.Placemarks = function() {
		this.plmks;
		this.toHTML = function(vgmlID, open) {
			var html = '';
			html += '<ul class="sb_plmks';
			if (!open) html +=' hidden';
			html+= '">';
			for (var i=0;i<this.plmks.length;i++) {
				html += this.plmks[i].toHTML(vgmlID);
			}
			html+= '</ul>';
			return html;
		};
	}
	
	this.Placemark = function() {
		this.uniqueID;
		this.name;
		//KLR//this.icon = null;
		this.info_side_bar;
		this.description;
		this.point; // string
		this.pointsArray; // array
		this.polyline; // obj google
		this.marker; // obj google
		this.color;
		
		this.toHTML = function(vgmlID) {
			var vgml = eval(vgmlID);
		}
		
		this.openInfoBubble = function(map, infoWindow, show_infoWindow) {
			
			var pt;
			if (this.point != null) {
				pt = this.point;
			} else if (this.pointsArray != null && this.pointsArray.length > 0) {
				pt = this.pointsArray[0];
			}
			
			if (typeof infoWindow == 'undefined') {
				var infoWindow = new google.maps.InfoWindow({
					content: "<h3>"+this.name+"</h3>"+this.description,
					position: pt
				});
			} else {
				infoWindow.close();
				infoWindow = new google.maps.InfoWindow({
					content: "<h3>"+this.name+"</h3>"+this.description,
					position: pt
				});
			}
			//map.setCenter(this.point);
			
				if(show_infoWindow != false){
					infoWindow.open(map);
					return infoWindow;
				}
				else{
					map.setCenter(this.point);
				}
		}
		
		this.toHTML = function(vgmlID) {
			var vgml = eval(vgmlID);
			var html = '';
			html += '<li class="sb_plmk"';
			//KLR//if (this.icon != null) {
			if (this.icon) {
				html += ' style="background-image: url('+this.icon+');"';
			}
			html+= '>';
			html += '<div class="sb_plmk_title">';
			if(vgml.show_infoWindow){
				html += '<a href="javascript:void(0)" onclick="openInfoBubble(\''+vgmlID+'\',\''+this.uniqueID+'\');">'+this.name+'</a></div>';
				html += '<div class="sb_plmk_desc">'+this.info_side_bar+'</div>';
			}
			else{
				html += '<a href="javascript:void(0)" onclick="openInfoBubble(\''+vgmlID+'\',\''+this.uniqueID+'\');">'+this.name+'</a></div>';
			}
			html+= '</li>';
			return html;
		};
	}
}

/*
 Fonctions pour les maps google V. 3
*/
function initVGML(vgml, vgmlID) {
	initVgmlDocument(vgml, vgmlID);
	
	if(vgml.sideBarContainerID != false){ document.getElementById(vgml.sideBarContainerID).innerHTML = vgml.vgmlDocument.toHTML(); }
	initMap(vgml);
	
	// Assigne la fonction d'ouverture/fermeture au click sur le nom du titre de chaque catégorie
	$("div.sb_folder_title").click(function() {
		$(this).toggleClass("sb_folder_title_open ").siblings("ul.sb_plmks").slideToggle("fast");
	});
}

function reInit(vgmlID) {
	var vgml = eval(vgmlID);
	if (vgml.vgmlDocument.folders.length == 1) {
		vgml.folderName = vgml.folderName+"_ALL";
		initVgmlDocument(vgml, vgmlID);
		if(vgml.sideBarContainerID != false){ document.getElementById(vgml.sideBarContainerID).innerHTML = vgml.vgmlDocument.toHTML(); }
		initMap(vgml);
	} else {
		vgml.folderName = vgml.folderName.substr(0, vgml.folderName.length-4);
		initVgmlDocument(vgml, vgmlID);
		if(vgml.sideBarContainerID != false){ document.getElementById(vgml.sideBarContainerID).innerHTML = vgml.vgmlDocument.toHTML(); }
		initMap(vgml);
	}
	
	// Assigne la fonction d'ouverture/fermeture au click sur le nom du titre de chaque catégorie
	$("div.sb_folder_title").click(function() {
		 $(this).toggleClass("sb_folder_title_open ").siblings("ul.sb_plmks").slideToggle("fast");
	});
}

function trafficControl(controlDiv, vgml) {
	// Si le "trafficLayer" n'a pas encore été initialisé...
	if (!('trafficLayer' in vgml)){
		vgml.trafficLayer = new google.maps.TrafficLayer();
	}
	
	controlDiv.style.padding = '5px';
	
	var controlUI = document.createElement('DIV');
	controlUI.className = 'trafficControl' + (vgml.traffic_on?' trafficControl_down':'');
	controlUI.innerHTML = vgml_dictio('trafic');
	controlDiv.appendChild(controlUI);
	
	controlUI.vgml = vgml;

	google.maps.event.addDomListener(controlUI, 'click', function() {
		if (this.vgml.traffic_on){
			this.className = 'trafficControl';
			this.vgml.trafficLayer.setMap(null);
			$(this.vgml.trafficLegend).fadeOut();
		}else{
			this.className = 'trafficControl trafficControl_down';
			this.vgml.trafficLayer.setMap(vgml.map);
			$(this.vgml.trafficLegend).fadeIn();
		}
		this.vgml.traffic_on = !this.vgml.traffic_on;
	});
	
	return (controlUI);
}
/*******************************/
function pistesControl(controlDiv, vgml) {
	// Si le "pisteLayer" n'a pas encore été initialisé...
	if (!('kmlLayer' in vgml)){
		vgml.kmlLayer = new google.maps.KmlLayer();
	}
	
	controlDiv.style.padding = '5px';
	
	var controlUI = document.createElement('DIV');
	controlUI.className = 'trafficControl' + (vgml.pistes_on?' trafficControl_down':'');
	if(vgml.menu_pistes){
	controlUI.innerHTML = 'Pistes cyclables';}
	else{controlUI.innerHTML = 'Bicycle Lanes';}
	controlDiv.appendChild(controlUI);
	
	controlUI.vgml = vgml;

	google.maps.event.addDomListener(controlUI, 'click', function() {
		if (this.vgml.pistes_on){
			this.className = 'trafficControl';
			
			this.vgml.kmlLayer.setMap(null);
		}else{
			this.className = 'trafficControl trafficControl_down';
			/*http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml'
			/pls/portal/docs/PAGE/TRANSPORT_V2_FR/MEDIA/XML/Montreal_reseau_cyclable_2011_6_21.kml*/
			if(vgml.menu_pistes){
				this.vgml.kmlLayer = new google.maps.KmlLayer('http://ville.montreal.qc.ca/pls/portal/docs/PAGE/HABITER_V2_FR/MEDIA/DOCUMENTS/XML/Montreal_reseau_cyclable_2011_6_21_desc.kml', {preserveViewport:true});}
			else{this.vgml.kmlLayer = new google.maps.KmlLayer('http://ville.montreal.qc.ca/pls/portal/docs/PAGE/HABITER_V2_FR/MEDIA/DOCUMENTS/XML/Montreal_reseau_cyclable_2011_6_21_desc_en.kml', {preserveViewport:true});}
			this.vgml.kmlLayer.setMap(vgml.map);
			
		}
		this.vgml.pistes_on = !this.vgml.pistes_on;
	});
	
	return (controlUI);
}
/*************************************/
function trafficLegend(controlDiv, vgml) {
	controlDiv.style.padding = '5px';
	
	var controlUI = document.createElement('DIV');
	controlUI.className = 'trafficLegend';
	$(controlUI).append($('<table cellspacing="0" cellpadding="0" border="0" style="width: 175px; height:28px;"><tbody><tr><td style="width:180px; padding:0 0 0 8px; white-space:nowrap;" rowspan="2" colspan="2"><b>'+vgml_dictio('trafic')+'</b></td><td align="center" style="width:60px; font-size:10px;">'+vgml_dictio('ralentie')+'</td><td align="center" style="width:60px; font-size:10px;">'+vgml_dictio('fluide')+'</td></tr><tr><td align="center" colspan="2"><img width="66" height="10" alt="" src="/pls/portal/docs/page/lib_fr/media/images/ui_frm/vgml_trafficLegend.png" style="vertical-align:top"></td></tr></tbody></table>'));
	controlDiv.appendChild(controlUI);
	
	return (controlUI);
}

// afficher la legende
function legende(controlDiv, vgml){
controlDiv.style.padding = '5px';
var controlUI = document.createElement('DIV');
	controlUI.className = 'trafficLegend';
	$(controlUI).append($(vgml.legend));
	controlDiv.appendChild(controlUI);
	
	return (controlUI);
}

function initMap(vgml) {
	var zoom = vgml.folderName == "" ? vgml.initMapZoom : vgml.zoomedIn;
	vgml.map = new google.maps.Map(document.getElementById(vgml.mapContainerID), {
		zoom: zoom,
		center: vgml.vgmlDocument.bounds.getCenter(),
		mapTypeId: google.maps.MapTypeId.ROADMAP
	});
	
	if(vgml.sideBarContainerID == false) { $('div.deux-cols div.map').css("width", "100%");}
	
	// Initialisation de la légende "Trafic"
	if (vgml.show_traffic_btn || vgml.traffic_on){
		var _trafficLegend = document.createElement('DIV');
		vgml.trafficLegend = new trafficLegend(_trafficLegend, vgml);
		if (vgml.traffic_on == false){
			$(vgml.trafficLegend).hide();
		}
		vgml.map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(_trafficLegend);
	}
	
	// Initialisation du bouton "Trafic"
	if (vgml.show_traffic_btn){
		// Bouton
		var _trafficControl = document.createElement('DIV');
		vgml.trafficControl = new trafficControl(_trafficControl, vgml);
		_trafficControl.index = 1;
		vgml.map.controls[google.maps.ControlPosition.TOP_RIGHT].push(_trafficControl);
	}
	// Initialisation du menu pistes
	if(vgml.menu_pistes || vgml.menu_lanes){
		// Bouton
		var _pistesControl = document.createElement('DIV');
		vgml.pistesControl = new pistesControl(_pistesControl, vgml);
		_pistesControl.index = 1;
		vgml.map.controls[google.maps.ControlPosition.TOP_RIGHT].push(_pistesControl);
	}

	// Initialisation de la legende 
	if (vgml.legendVisible || vgml.legendVisible_en){
		var _legend = document.createElement('DIV');
		
		vgml.legende = new legende(_legend, vgml);
		
		vgml.map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(_legend);
		
	}
	// Initialisation de la couche "Trafic"
	if (vgml.traffic_on){
		// Si le "trafficLayer" n'a pas encore été initialisé...
		if (!('trafficLayer' in vgml)){
			vgml.trafficLayer = new google.maps.TrafficLayer();
		}
		vgml.trafficLayer.setMap(vgml.map);
	}
	
	// Initialisation de la couche "Pistes"
	if (vgml.pistes_on){
		// Si le "layer de pistes" n'a pas encore été initialisé...
		if (!('kmlLayer' in vgml)){
						if(vgml.menu_pistes){
				this.vgml.kmlLayer = new google.maps.KmlLayer('http://ville.montreal.qc.ca/pls/portal/docs/PAGE/HABITER_V2_FR/MEDIA/DOCUMENTS/XML/Montreal_reseau_cyclable_2011_6_21_desc.kml', {preserveViewport:true});}
			else{this.vgml.kmlLayer = new google.maps.KmlLayer('http://ville.montreal.qc.ca/pls/portal/docs/PAGE/HABITER_V2_FR/MEDIA/DOCUMENTS/XML/Montreal_reseau_cyclable_2011_6_21_desc_en.kml', {preserveViewport:true});}
		}

		vgml.kmlLayer.setMap(vgml.map);
	}
	
	if (vgml.vgmlDocument.coordinates != null){
		new google.maps.Marker({
			position: vgml.vgmlDocument.coordinates,
			map: vgml.map,
			icon: new google.maps.MarkerImage(vgml.icon),
			visible: true
		});
	}

	for (var i=0;i<vgml.vgmlDocument.folders.length;i++) {
		var folder = vgml.vgmlDocument.folders[i];
		
		var placemarks = folder.placemarks.plmks;
		for (var k=0;k<placemarks.length;k++) {
			var placemark = placemarks[k];
			//KLR//var icon = placemark.icon == null? vgml.icon:placemark.icon;
			var icon_url = placemark.icon?vgml.icon:placemark.icon;
			var icon = new google.maps.MarkerImage(placemark.icon?placemark.icon:vgml.icon);
			
			if (placemark.point != null) {
				//console.log("new marker");
				var visible = folder.open || !vgml.toggleInvisibility?true:false;
				
				if(vgml.show_infoWindow){
					placemark.marker = new google.maps.Marker({
						position: placemark.point,
						map: vgml.map,
						icon: icon,
						visible: visible
					});
				}
				else{
					placemark.marker = new google.maps.Marker({
						position: placemark.point,
						map: vgml.map,
						icon: icon,
						visible: visible,
						clickable: false
					})
				;}
				
				addListenerM(vgml, placemark);
			} 
			if(placemark.linecolor != null){
				var opacite = folder.open || !vgml.toggleInvisibility?1:0;
				if(vgml.show_infoWindow){
				placemark.polyline = new google.maps.Polyline({
					path: placemark.pointsArray,
					map: vgml.map,
					strokeOpacity:1,
					strokeColor: "#" + placemark.linecolor
				});
				}
				else{
						placemark.polyline = new google.maps.Polyline({
					path: placemark.pointsArray,
					map: vgml.map,
					strokeOpacity:1,
					strokeColor: "#" + placemark.linecolor,
					clickable: false
				});
				
				}
				addListenerP(vgml, placemark);
				
			}
			else if (placemark.pointsArray != null) {
				//alert(placemark.pointsArray);
				var opacite = folder.open || !vgml.toggleInvisibility?1:0;
				placemark.polyline = new google.maps.Polyline({
					path: placemark.pointsArray,
					map: vgml.map,
					strokeOpacity:1,
					strokeColor: "#000"
				});
				addListenerP(vgml, placemark);
			}
		}
	}
}

function addListenerM(vgml, placemark){	
		if(vgml.show_infoWindow){
	google.maps.event.addListener(placemark.marker, 'click', function() {
		vgml.infoWindow = placemark.openInfoBubble(vgml.map, vgml.infoWindow)
	});
	}
}

function addListenerP(vgml, placemark){
if(vgml.show_infoWindow){
	google.maps.event.addListener(placemark.polyline, 'click', function() {
		vgml.infoWindow = placemark.openInfoBubble(vgml.map, vgml.infoWindow)
	});
	}
}

function openInfoBubble(vgmlID, uniqueID){
	var vgml = eval(vgmlID);
	var vgmlDocument = vgml.vgmlDocument;
	var placemark = vgmlDocument.findPlaceMark(uniqueID);
	
	vgml.infoWindow = placemark.openInfoBubble(vgml.map, vgml.infoWindow, vgml.show_infoWindow);
}

function closeInfoBubble(vgmlID) {
	var vgml = eval(vgmlID);
	if (typeof vgml.infoWindow != 'undefined') {
		vgml.infoWindow.close();
	}
}

function toggleFolder(vgmlRef, folderRef) {
	var vgml, folder;
	if (typeof vgmlRef == "string") {
		vgml = eval(vgmlRef);
	} else if (typeof vgmlRef == "object") {
		vgml = vgmlRef;
	}
	if (typeof folderRef == "string") {
		folder = vgml.vgmlDocument.folders[folderRef];
	} else if (typeof folderRef == "object") {
		folder = folderRef;
	}

	toggleFolderZoom(vgml, folder);
	
	if (folder.open) {
		folder.open = false;
	} else {
		folder.open = true;
	}
	
	if (vgml.toggleInvisibility) {
		toggleFolderVisibility(vgml, folder);
	}
}

function toggleFolderVisibility(vgml, folder) {
	for (var k=0;k<folder.placemarks.plmks.length;k++) {
		var placemark = folder.placemarks.plmks[k];
		if (placemark.point != null) placemark.marker.setVisible(folder.open);
		if (placemark.pointsArray != null) {
			var opacite = folder.open?1:0;
			placemark.polyline.setOptions(new google.maps.PolylineOptions({strokeOpacity:opacite}));
		}
	}
}

function toggleFolderZoom(vgml, folder) {
	if (folder != null) {
		if (folder.zoomedIn) {
			vgml.map.setZoom(vgml.initMapZoom);
			vgml.map.setCenter(vgml.vgmlDocument.bounds.getCenter());
			folder.zoomedIn = false;
		} else {
			vgml.map.setZoom(vgml.zoomedIn);
			vgml.map.panTo(folder.bounds.getCenter());
			folder.zoomedIn = true;
		}
	}
	closeInfoBubble(vgml.vgmlDocument.vgmlID);
}

function panToFolder(vgml, folder) {
	vgml.map.panTo(folder.bounds.getCenter());
}

function resetPan(vgml){
	vgml.map.setCenter(vgml.vgmlDocument.bounds.getCenter());
}

/*
Initialisation des données et construction des objets
 - Folder
 - Placemarks
 - Placemark
*/
function initVgmlDocument(vgml, vgmlID){
	vgmlDocument = new vgml.VGMLDocument();
	vgmlDocument.vgmlID = vgmlID;
	vgmlDocument.bounds = new google.maps.LatLngBounds();
	
	$.ajax({
		type: 'GET',
		url: vgml.vgmlURL, 
		dataType: 'xml',
		async: false,
		success: function(xml){
			if ($(xml).find("Document > Point").find("coordinates").text()){
				coords = $(xml).find("Document > Point").find("coordinates").text(); 
				if (coords){
					var long = new Number(coords.substring(0, coords.indexOf(',')));
					var lat = new Number(coords.substring(coords.indexOf(',')+1, coords.length));
					if (lat < long){
						var oldlat = lat;
						lat = long;
						long = oldlat;
					}
					vgmlDocument.coordinates = new google.maps.LatLng(lat, long);
				}
			}
			vgmlDocument.name = $(xml).find('name:first').text();
			vgmlDocument.description = $(xml).find('description:first').text();
			
			if(vgml.legendVisible){
			vgml.legend = $(xml).find('legend_fr:first').text();}
			if (vgml.legendVisible_en){vgml.legend = $(xml).find('legend_en:first').text();}
			
			var folders = new Array();
			$(xml).find('Folder').each(function(index){
				var folder = new vgml.Folder();
				folder.bounds = new google.maps.LatLngBounds();
				folder.uniqueID = index;
				folder.name = $(this).find('name:first').text();
				if (folder.name == vgml.folderName || vgml.folderName == "" || vgml.folderName.indexOf("_ALL") > 0) {
					folder.open = $(this).find('open:first').text()=="1"||vgml.folderName==folder.name;
					folder.zoomedIn = folder.open;
					var placemarks = new vgml.Placemarks();
					var plmks = new Array();
					$(this).find('Placemark').each(function(index){
						var placemark = new vgml.Placemark();
						placemark.uniqueID = folder.uniqueID+''+index;
						placemark.name = $(this).find('name:first').text();
						placemark.info_side_bar = $(this).find('info_side_bar:first').text();
						
						if (placemark.info_side_bar == "") {
							var desc =  $(this).find('description:first').text();
							var firstBR = desc.indexOf("<br/>");
							desc = desc.substring(firstBR+5, desc.indexOf("<br/>", firstBR+1));
							placemark.info_side_bar = desc;
						}
						placemark.description = $(this).find('description:first').text();
						if ($(this).find('iconID:first').text() != ''){
							var iconID = $(this).find('iconID:first').text();
							placemark.icon = $(xml).find('Icon').filter(function (index){
								return $(this).find("id:first").text() == iconID;
							}).find('image:first').text();
						}
						var latLong = $(this).find('Point:first').find('coordinates:first').text();
						if (latLong) {
							var long = new Number(latLong.substring(0, latLong.indexOf(',')));
							var lat = new Number(latLong.substring(latLong.indexOf(',')+1, latLong.length));
							if (lat < long) {
								var oldlat = lat;
								lat = long;
								long = oldlat;
							}
							placemark.point = new google.maps.LatLng(lat, long);
							folder.bounds.extend(placemark.point);
							vgmlDocument.bounds.extend(placemark.point);
						}
						var color = $(this).find('color:first').text();					
						if (color){ placemark.linecolor = color.substr(2);}
						
						var line = $(this).find('LineString:first').find('coordinates:first').text();
						if (line){
							var tempArray = jQuery.trim(line).split(",0");
							if (tempArray.length > 1) {
								placemark.pointsArray = new Array();
								for(var i = 0; i<tempArray.length; i++){
									if (tempArray[i].length > 0) {
										var elem = jQuery.trim(tempArray[i]);
										var long = new Number(elem.substring(0, elem.indexOf(',')));
										var lat = new Number(elem.substring(elem.indexOf(',')+1, elem.length));
										if (lat < long) {
											var oldlat = lat;
											lat = long;
											long = oldlat;
										}
										placemark.pointsArray.push(new google.maps.LatLng(lat, long));
										folder.bounds.extend(new google.maps.LatLng(lat, long));
										vgmlDocument.bounds.extend(new google.maps.LatLng(lat, long));
									}
								}
							}
						}
						plmks.push(placemark);	
					});
					placemarks.plmks = plmks;
					folder.placemarks = placemarks;
					folders.push(folder);
				}
			});
			vgmlDocument.folders = folders;
		}
	});
	vgml.vgmlDocument = vgmlDocument;
}
//google.maps.event.addListener(singleMap, 'tilesloaded', function(){infowindow.open(singleMap);} );
