/**
 * Information about the regular points on the map
 * Send the DIV id
 */
function get_info_from_regular(id){
	var evl = ["Sem endereço","Sem valor",0,0,null];
	try {
		var obj = document.getElementById(id);
		if(!obj)
			return evl; 
		var div	= get_elements_by_class_name(obj,"leftcontent")[0];
		var info	= get_elements_by_class_name(div,"info")[0];
		var lat	= parseFloat(get_elements_by_class_name(info,"lat")[0].innerHTML);
		var lon	= parseFloat(get_elements_by_class_name(info,"long")[0].innerHTML);
		var img	= info.getElementsByTagName("img")[0].src;
		var addr	= get_elements_by_class_name(div,"address")[0].getElementsByTagName("a")[0].innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");
		var ext  = get_elements_by_class_name(div,"extra_data")[0];
		var val	= get_elements_by_class_name(ext,"val_imv")[0].innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");
		var fea	= get_elements_by_class_name(ext,"feat_imv")[0].innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");
		return [addr,val,lat,lon,img,fea];
	}catch(e){
		alert("ERRO lendo regular: "+e+" ("+id+")");
		return evl; 
	}
}

/**
 * Information about THE bold point on the map
 * Send the DIV id
 */
function get_info_from_bold(id){
	var evl = ["Sem endereço","Sem valor",0,0,null];
	try {
		var div = document.getElementById(id);
		if(!div)
			return evl; 
		var hea  = div.getElementsByTagName("h2")[0];
		if(!hea)
			return evl;
		var spa  = hea.getElementsByTagName("span")[0];
		var ref  = spa ? spa : hea;
		var addr	= ref.innerHTML.split("-")[0].replace(/^\s+/,"").replace(/\s+$/,""); 
		var det	= get_elements_by_class_name(div,"detailLeft")[0];
		var val  = det.getElementsByTagName("span")[0].innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");
		var fea  = det.getElementsByTagName("span")[1].innerHTML.replace(/^\s+/,"").replace(/\s+$/,"");
		var info	= get_elements_by_class_name(div,"info")[0];
		var lat	= parseFloat(get_elements_by_class_name(info,"lat")[0].innerHTML);
		var lon	= parseFloat(get_elements_by_class_name(info,"long")[0].innerHTML);
		var img	= info.getElementsByTagName("img")[0].src;
		return [addr,val,lat,lon,img,fea];
	}catch(e){
		alert("ERRO lendo bold: "+e+" ("+id+")");
		return evl; 
	}
}

/**
 *	Configure the map from the collection of objects found 
 *	Send the IDs of the regular and bold points
 */
function map_from_collection(regular_id,bold_id){
	var lat, lon, img, info, dic, spe, ids;
	var icons = [];

	if(typeof(regular_id)=="string"){
		ids	= [regular_id,bold_id];
		icons.push(regular_icon);
		icons.push(bold_icon);
	}
	else {
		ids = [];
		for(var c=0; c<regular_id.length; c++){
			ids.push(regular_id[c]["id"]);
			icons.push(regular_id[c]["icon"]);
		}
	}

	var max_lat				= -999999999;
	var max_long			= -999999999;
	var min_lat				= 9999999999;
	var min_long			= 9999999999;
	var map_lat				= -1;
	var map_long			= -1;
	var map_valid			= false;
	var prop_collection	= [];

	for(var i=0; i<ids.length; i++){
		var id = ids[i];
		if(!id)
			continue;
		var div	= document.getElementById(id);
		if(!div)
			continue;
		var divs = div.getElementsByTagName("div");

		for(var d=0; d<divs.length; d++){
			var idc = divs[d].id;
			var spe = id==bold_id;
			if(!idc)
				continue;
			if(!/^\d+$/.test(idc))
				continue;
			if(idc==0)
				continue;
			var info = spe ? get_info_from_bold(idc) : get_info_from_regular(idc);
			var lat	= info[2];
			var lon	= info[3];
			var img	= info[4];
			var fea  = info[5];
			prop_collection[idc] = Array(info[0],info[1],spe,lat,lon,img,fea,icons[i]);

			// statistics
			if(lat==0 || lon==0)
				continue;

			if(spe){
				max_lat	= lat;
				max_long	= lon;
				min_lat	= lat;
				min_long	= lon;
			}else{
				max_lat	= Math.max(lat,max_lat);
				max_long	= Math.max(lon,max_long);
				min_lat	= Math.min(lat,min_lat);
				min_long	= Math.min(lon,min_long);
			}
			map_valid = true;
		}
	}

	// find default coordinates
	var default_lat	= 0.00;
	var default_long	= 0.00;
	try{
		var default_coord = document.getElementById("info");
		if(default_coord){
			default_lat		= parseFloat(get_elements_by_class_name(default_coord,"lat")[0].innerHTML);
			default_long	= parseFloat(get_elements_by_class_name(default_coord,"long")[0].innerHTML);
		}
	}catch(d){};

	try {
		if(!map)
			prepare_map();

		// remove all markers
		map.clearOverlays();
		markers = [];

		// center the map
		if(map_valid){
			map_lat	= min_lat +((max_lat-min_lat)/2.0);
			map_long	= min_long+((max_long-min_long)/2.0);
			point		= new GLatLng(map_lat,map_long);

			// put the points
			for(var i in prop_collection){
				var obj	= prop_collection[i];
				if(obj[3]==0.00 && obj[4]==0.00)
					continue;
				add_marker(i,create_marker(i,obj[3],obj[4],obj[0],obj[1],obj[5],obj[6],obj[7]));
			}

			var zoom = -1;
			if(typeof(zoom_detail)=="undefined"){
				var top_p	= new GLatLng(min_lat,min_long);
				var bot_p	= new GLatLng(max_lat,max_long);
				var rect		= new GLatLngBounds(top_p,bot_p);
				zoom			= map.getBoundsZoomLevel(rect);
			}else{
				zoom			= zoom_detail;
			}
			map.setZoom(zoom);
			map.panTo(point);
		}else{
			if(default_lat!=0.00 && default_long!=0.00){
				// TODO: invert this!
				point = new GLatLng(default_long,default_lat);
				map.panTo(point);
			}else{
				var div = document.getElementById("map");
				div.style.background = "white";
				div.innerHTML="<img src=\"http://static.vericia.com/img/semmapa.png\" width=\"260\"/>";
				map = null;
			}
		}
	}catch(e){
		alert("ERRO lendo objetos:"+e);
	}
}
