
function mgr_show_markers( docXML, msize ){
	docARRAY = xml2array(docXML);
	
	var div = document.getElementById('res');
	var div2 = document.getElementById('marker_count');

	var markercount=0;
	
	//for testing
	//if( docARRAY['root'] && div ){ div.innerHTML = dump(docARRAY);}
	
	//disp header information
	if( docARRAY['root']!=null && docARRAY['root']['header'] && div2 ){
		div2.innerHTML = fm_decode( docARRAY['root']['header'] );
	}
	
	//listing items
	if( docARRAY['root']!=null && docARRAY['root']['item'] ){
		items = docARRAY['root']['item'];
		
		for(var i in items) {
			
			if(typeof(items[i]) == 'object'){
				markercount++;
				var markerdata = items[i];
				map.addOverlay( mgr_addmarker( markerdata, msize ) );
			}else{ 
				markercount=1;
				var markerdata = items;
				map.addOverlay( mgr_addmarker( markerdata, msize ) );
				break;
			}
		}
	}
}


function mgr_list_items_big_map( docXML, msize ){
	docARRAY = xml2array(docXML);
	
	var div = document.getElementById('res');
	var div2 = document.getElementById('marker_count');
	var markercount=0;
	
	if( docARRAY['root']!=null && docARRAY['root']['item'] ){
		items = docARRAY['root']['item'];

		if(div) div.innerHTML = dump(docARRAY);
		
		for(var i in items) {
			if(typeof(items[i]) == 'object'){
				markercount++;
				var markerdata = items[i];
			}else{ 
				markercount=1;
				var markerdata = items;
				break;
			}
		}
		
		//displaying info (big map) about found items
		//$_XML_OUTPUT_ADDINFO="<total_places>$total_nr_places</total_places><total_accoms>$total_nr_accoms</total_accoms><total_txtaccoms>$total_nr_txtaccoms</total_txtaccoms>";
		if(docARRAY['root']['total_places']) alert('total places: '+docARRAY['root']['total_txtaccoms']);
			
	}else if(div) div.innerHTML = "Brak punktów";
	
	if(div2) div2.innerHTML = "Znaleziono: "+markercount;
}



function mgr_addmarker( markerdata, msize ){
	var inter = [];
	
	inter['ptype'] = markerdata['ptype'];
	inter['title'] = fm_decode(markerdata['title']);
	inter['link'] = markerdata['link'];
	inter['address'] = fm_decode(markerdata['address']);
	inter['folder'] = markerdata['folder'];
	inter['lat'] = markerdata['lat'];
	inter['lng'] = markerdata['lng'];
	inter['main_pic'] = markerdata['main_pic'];
	
	customIcon = mgr_customIcon( inter['ptype'], msize );
	
	//adding marker
	var center = new GLatLng(inter['lat'], inter['lng']);

	// Set up our GMarkerOptions object
	markerOptions = { icon:customIcon };
	var marker = new GMarker(center, markerOptions);
	
	marker.value = inter;
	
	//addlistner
	GEvent.addListener(marker, "click", function() {
			activemarkerdata = marker.value;
			mgr_show_info_on_map( marker.value );
	});
	
	return marker;
}


function mgr_customIcon( ptype, msize ){
	// Create our "tiny" marker icon
	var customIcon = new GIcon(G_DEFAULT_ICON);
	
	//need to differenciate between places and accomodations
	//so know that accom is h0 ( default ) or h1 ( faded )
	
	//inter['ptype']=1->miejsce, inter['ptype']=2->nocleg, inter['ptype']=3->text nocleg, , inter['ptype']=5->text nocleg
	//inter['ptype']=1A->miejsce, animated gif; inter['ptype']=2A->nocleg, animated gif
	
	if( msize=='normal' ) var prefix = '0'; if( msize=='small' ) var prefix = '1'; 
	
	
	if( ptype == '1' ){
		customIcon.image  = web_site_path+"images/googlemap_icons/type_places/"+prefix+".png";
		customIcon.shadow = web_site_path+"images/googlemap_icons/type_places/"+prefix+"shadow.png";
	}else if( ptype == '1A' ){
		customIcon.image  = web_site_path+"images/googlemap_icons/type_places/"+prefix+"A.gif";
		customIcon.shadow = web_site_path+"images/googlemap_icons/type_places/"+prefix+"Ashadow.png";
	}else if( ptype == '3' ){//txt accom
		customIcon.image  = web_site_path+"images/googlemap_icons/type_places/txt"+prefix+".png";
		customIcon.shadow = web_site_path+"images/googlemap_icons/type_places/txt"+prefix+"shadow.png";
	}else if( ptype == '5' ){//trips
		customIcon.image  = web_site_path+"images/googlemap_icons/type_places/t"+prefix+".png";
		customIcon.shadow = web_site_path+"images/googlemap_icons/type_places/t"+prefix+"shadow.png";
	}else if( ptype == '2A' ){//animated main icon
		customIcon.image  = web_site_path+"images/googlemap_icons/type_places/h"+prefix+"A.gif";
		customIcon.shadow = web_site_path+"images/googlemap_icons/type_places/h"+prefix+"shadow.png";
	}
	else{//should be normal accoms
		customIcon.image  = web_site_path+"images/googlemap_icons/type_places/h"+prefix+".png";
		customIcon.shadow = web_site_path+"images/googlemap_icons/type_places/h"+prefix+"shadow.png";
	}
	
	return customIcon;
}


function mgr_clear_markers(){
	map.clearOverlays();
}

function mgr_show_info_on_map( markerdata ){
	//when clieking on marker
	var title = markerdata['title'];
	var ptype = markerdata['ptype'];
	var link = markerdata['link'];
	var address = markerdata['address'];
	var folder = markerdata['folder'];
	var lat = markerdata['lat'];
	var lng = markerdata['lng'];
	var main_pic = markerdata['main_pic'];
	
	if( ptype == '1' ){placetype='miejsce';}else if( ptype == '2' ){placetype='nocleg';}else if( ptype == '3' ){placetype='nocleg';}
	
	info = "<div style=\"font-size:10px;\"><a href='"+link+"'>"+title+"</a>";
	info = info + "<hr width='200px'><table width='200px'><tr><td><p class='txt'>" + address +"</p></td><td><a href='"+web_site_path+link+"'><img alt=\"Zdjęcie\" src='" + main_pic + "' width='75px' border='0'></a></td></tr></table></div>";

	var center = new GLatLng(lat, lng);
	map.openInfoWindowHtml(center, info);
	//hide_loading_info();
}


function mgr_prepare_marker_info( docXML ){
	docARRAY = xml2array(docXML);
	
	if(docARRAY['root']['item']){
		markerdata = docARRAY['root']['item'];
		
		var inter = [];
		
		inter['ptype'] = markerdata['ptype'];
		inter['title'] = fm_decode(markerdata['title']);
		inter['link'] = markerdata['link'];
		inter['address'] = fm_decode(markerdata['address']);
		inter['folder'] = markerdata['folder'];
		inter['lat'] = markerdata['lat'];
		inter['lng'] = markerdata['lng'];
		inter['main_pic'] = markerdata['main_pic'];
	
		mgr_show_info_on_map( inter );
		//hide_loading_info();
	}
}



function mgr_drawCircle( center, radius, color ) {
	//redius in km
	var accuracy = 180;
	var lat = center.lat();
	var lng = center.lng();
	
	var d2r = Math.PI/180;                // degrees to radians
	var r2d = 180/Math.PI;                // radians to degrees
	var Clat = (radius/6378.8) * r2d;     //  using 6378.8 as earth's radius in km
	var Clng = Clat/Math.cos(lat*d2r);
	
	var points = [];

	for (var i = 0 ; i <= accuracy ; i++){
		var theta = Math.PI * (i/(0.5 * accuracy));
		Cx = lng + (Clng * Math.cos(theta));
		Cy = lat + (Clat * Math.sin(theta));
		points.push(new GLatLng(Cy,Cx));
	}

	points.push(points[0]);
	//var p = new GPolyline(points, color, thickness, opacity);
	var p = new GPolygon(points, color, 2, 0.7, color, 0.1);
	map.addOverlay(p);
}




function  mgr_drawPolys( docXML ){
	docARRAY = xml2array(docXML);
	
	if(docARRAY['root']['polys']){
		var polys = docARRAY['root']['polys'];
		
		for(var i in polys) {
			if( polys[i]['points'] ){
				//has multi poly
				//alert('e1'+dump(polys[i]['points']) );
				mgr_drawPolyline( polys[i]['points'] );
			}else {
				//has one poly
				//alert('e2'+dump(polys[i]) );
				mgr_drawPolyline( polys[i] );
			}
		}
	}
}




function mgr_drawPolyline( pointsXML ) {

	var color = '#FF9601';
	var points=[];
	
	for(var i in pointsXML) {
		//alert(pointsXML[i]['lat']);
		
		var Cy = pointsXML[i]['lat'];
		var Cx = pointsXML[i]['lng'];
		
		points.push(new GLatLng(Cy,Cx));
		//break;
	}

	points.push(points[0]);
	
	//var div = document.getElementById('res');
	//if(div) div.innerHTML = dump(points);
	
	
	//var p = new GPolyline(points, color, thickness, opacity);
	var p = new GPolygon(points, color, 2, 0.7, color, 0.1);
	map.addOverlay(p);
}





//DUMP FUNCTION AS PRINT_R IN PHP
/**
 * Function : dump()
 * Arguments: The data - array,hash(associative array),object
 *    The level - OPTIONAL
 * Returns  : The textual representation of the array.
 * This function was inspired by the print_r function of PHP.
 * This will accept some data as the argument and return a
 * text that will be a more readable version of the
 * array/hash/object that is given.
 * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php
 */
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}
