WM.markers = new Array();
/*
WM.refreshMapUpdate = function() {
	Element.hide('map_list_container');
	Element.show('all_updateList_container');
	WM.getMapMarks();
}
*/
WM.showOneMarker = function(id)
{
	WM.showOneTab('id_container',WM.infoContainer);
	$('mapItemList').innerHTML = "Loading...";
	Element.show('mapItemList');
	var url = "/getmarks.php";
	var pars = "act=id&id="+id;
	var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: WM.showMapItems, onFailure: showError});
}

WM.updateMapItemList = function()
{
	if(WM.opaqueListener)
	{
		GEvent.removeListener(WM.opaqueListener);
	}
	var url = "/getmarks.php";
	var pars = "act=refresh";
	var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: WM.showMapItems, onFailure: showError});
}

WM.getAreaMarks = function(bounds){
	if(WM.opaqueListener)
	{
		GEvent.removeListener(WM.opaqueListener);
	}
	WM.showOneTab('map_list_container',WM.infoContainer);
	$('mapItemList').innerHTML = "Loading...";
	Element.show('mapItemList');
	/*
	Element.hide('personal_container');
	Element.hide('markerInfo_container');
	Element.hide('all_updateList_container');
	Element.hide('mapItemList_tail');
	Element.hide('search_container');
	Element.show('map_list_container');
	*/
	if(!bounds)
	{
		bounds = WM.map.getBounds();
	}
	var southWest = bounds.getSouthWest();
	var S = southWest.lat();
	var W = southWest.lng();
	var northEast = bounds.getNorthEast();
	var N = northEast.lat();
	var E = northEast.lng();
	var zoom = WM.map.getZoom();
	var url = "/getmarks.php";
	var pars = "act=getMarks&E=" + E + "&S=" + S + "&W=" + W + "&N=" + N + "&zoom=" + zoom;
	var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: WM.showMapItems, onFailure: showError});
}

WM.getMapMarks = function()
{
	if(WM.opaqueListener)
	{
		GEvent.removeListener(WM.opaqueListener);
	}
	//WM.getAreaMarks(new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)));
	var bounds = new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180));
	WM.showOneTab('all_updateList_container',WM.infoContainer);
	$('mapItemList').innerHTML = "Loading...";
	Element.show('mapItemList');
	$('mapItemList').style.display = "block";
	var southWest = bounds.getSouthWest();
	var S = southWest.lat();
	var W = southWest.lng();
	var northEast = bounds.getNorthEast();
	var N = northEast.lat();
	var E = northEast.lng();
	var zoom = WM.map.getZoom();
	var url = "/getmarks.php";
	var pars = "act=getMarks&E=" + E + "&S=" + S + "&W=" + W + "&N=" + N + "&zoom=" + zoom;
	var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: WM.showMapItems, onFailure: showError});
}

WM.showMapItems = function(xmlHttp)
{
	//alert(xmlHttp.responseText);
	var xml = xmlHttp.responseXML;
	if(!xml)
	{
		$('mapItemList').innerHTML = 'Request overtimed!';
		return false;
	}
	var totalMark = WM.getXmlData(xml, "totalMark");
	if(totalMark === false)
	{
		$('mapItemList').innerHTML = 'Request overtimed!';
		return false;
	}
	if(totalMark == 0)
	{
		$('mapItemList').innerHTML = 'No result return!';
		return false;
	}
    var totalPage = WM.getXmlData(xml, "totalPage");
    var markers = WM.getXmlTag(xml, "marker");
	//var lat = WM.getXmlTag(markers, "lat");
	//alert(markers[0]);
    //var totalToday = WM.getXmlData(xml, "totalToday");
    //var totalMap = WM.getXmlData(xml, "totalMap");
	//var totalTag = WM.getXmlData(xml, "totalTag");
    var currPage = WM.getXmlData(xml, "currPage");
    var count = markers.length;	
	WM.markers.length = 0;  //clear the markers
	WM.map.clearOverlays(); // clear the markers
    var item = '';
	var maxLat = -90;
	var minLat = 90;
	var maxLng = -180;
	var minLng = 180;
    for(var i=0; i<count; i++)
    {
        var marker = markers[i];
        var id = WM.getXmlData(marker, "id");
        var lat = parseFloat(WM.getXmlData(marker, "lat"));
		maxLat  = maxLat > lat ?  maxLat : lat; 
		minLat = minLat < lat ? minLat : lat;
        var lng = parseFloat(WM.getXmlData(marker, "lng"));
		maxLng = maxLng > lng ? maxLng : lng;
		minLng = minLng < lng ? minLng : lng;
        var title = WM.getXmlData(marker, "title");
		var titlename	=	encodeURI(title);
		var zoom = WM.getXmlData(marker, "zoom");
        var content = WM.getXmlData(marker, "content");	
		//alert(content);
        var username = WM.getXmlData(marker, "username");
		var icon = WM.icons[i];
        //var favCount = WM.getXmlData(marker, "favCount");
        var update_time = WM.getXmlData(marker, "update_time");
		var map_tags = WM.getXmlData(marker, "map_tags");
		var arr_tags = map_tags.split(",");
		//var arr_tags = new Array();
		var str_tags = "";
		var tagsLen = arr_tags.length;
		for(var j = 0; j < tagsLen; j++)
		{
			str_tags += '<a class="mt" href="javascript: void(0)" onclick="WM.openTag(\'' + arr_tags[j] + '\')">' + arr_tags[j] + '</a> ';
		}
		//alert(map_tags);
		//map_tags = "1";
		//var favCount = 0;
		var showDetail = "";
		if(content.length > 200)
		{
			showDetail = '<a href="javascript: void(0)" id="markm" onclick="WM.showMarkerDetailInfo(' + id + ')">' + 'Detail' + '</a>';
		}
        var text = '<div class="markw">';
		text += '<div class="markt">' + title + '</div>';
		text += '<div class="markc">' + content + '</div>';
		text += '<div class="mark_tags">Tag: ' + str_tags + '</div>';
		text += '<div class="mark_control">' + 'Actions:&nbsp;' + '<a class="mu" href="javascript: void(0);" onclick="javascript: WM.showPeople(\'' + username + '\')">' + username + '</a> <a class="mf" onclick="WM.addFav(' + id + ')" href="javascript:void(0);">' + 'Save' + '</a> '+ showDetail +' <a href="http://www.gmapwiki.com/wiki/index.php?page=[MW' + id + ']' + titlename + '" target="_black" id="history">'+'History'+'</a> <a href="javascript: void(0)"><span id="edit" onclick="javascript: WM.editMarkerInfo(' + i + ')">' + 'Edit' + '</span></a></div>';
		text += '<div class="mark_address">' + 'URL:' + '<input class="marka" onmouseover="this.select() "  onclick = "this.select()" value="http://www.gmapwiki.com/id/' + id + '" readonly="ture" title="Ctrl+C' + 'copy' + '"/></div></div>';
        //item += '<div class="mapItemList"><a href="javascript: void(0)" ><span id="mi-' + id + '-' + i + '">' + title + '</a> <a class="mf">Save(' + favCount + ')</a></div>';
		item += '<div class="mapItemList">';
		item += '<div class="item_point"><div id="" class="item_info"><a href="javascript: void(0)" ><div id="mi-' + id + '-' + i + '" class="item_info_title"><span style="color:#FF0000">'+ String.fromCharCode("A".charCodeAt(0) + i) + "</span> " + title + '</div></a><div id="" class="item_info_user"><a href="javascript: void(0)" onclick="javascript: WM.showPeople(\'' + username + '\')"><span id="">' + username + '</span></a> '+'Update in' +' <span>' + update_time + '</span></div></div>'; 
		item += '<div class="item_control"><div class="item_control_edit"><a class="mf" onclick="WM.addFav(' + id + ')" href="javascript:void(0);">' + 'Save' + '</a></div></div>';
		item += '</div>';
		WM.createMarker(lat, lng, text, icon, 1, zoom, id);
    }
	var latZoom = 17;
	var lngZoom = 17;
	if(minLat==maxLat)
	{
		latZoom = 17;
	}
	else
	{
		latZoom = Math.floor(Math.log(450/(maxLat - minLat))/Math.LN2);
	}
	if(maxLng==minLng)
	{
		latZoom = 17;
	}
	else
	{
		lngZoom = Math.floor(Math.log(320/(maxLng - minLng))/Math.LN2);
	}
	var mapZoom = Math.min(latZoom,lngZoom);
		mapZoom = Math.max(mapZoom, 1);
	WM.map.setCenter(new GLatLng((maxLat+minLat)/2, (maxLng+minLng)/2), mapZoom);
	//Event.observe('markm', 'click', WM.more, false);
    $('mapItemList').innerHTML = item;
    $('pageInfo').innerHTML = '<span id="currPage">' + currPage + '</span>&nbsp;/&nbsp;<span id="totalPage">' + totalPage + '</span>,' + '&nbsp;Total:&nbsp;&nbsp;' + totalMark + '&nbsp;GmapWikis';
    $('mapItemList').setAttribute("totalPage", totalPage);
    Element.show('mapItemList_tail', 'mapItemList');
}

WM.createMarker = function(x, y , content, icon, p, zoom, id)
{
    //var icon = new LTIcon();
    //icon.setImageUrl( "" + i );
    var point = new GLatLng(x, y);
	var marker = WM.createMapMarker(point,icon,id,content);
    WM.map.addOverlay(marker);
    //WM.map.addOverLay(mark);
    if(p == 1)
	{
		WM.markers.push([marker, point, zoom, id, content]);
	}
}

WM.createMapMarker = function(point,icon,id,content) {
  var marker = new GMarker(point,icon);
  GEvent.addListener(marker, "click", function() {
	marker.openInfoWindowHtml(content);	
	//showMarkerInfo(marker, "act=get&id=" + id);
    //marker.openInfoWindowHtml(id+"showInfoWindow");
  });
  return marker;
}

WM.showMarker = function(index)
{
	WM.focusMarker(index);
	//showMarkerInfo(WM.markers[index][0], "action=get&id="+WM.markers[index][3]);
	WM.markers[index][0].openInfoWindowHtml(WM.markers[index][4]);	
}

WM.focusMarker = function(index)
{
	var zoom = parseFloat(WM.markers[index][2]);
    var poi = WM.markers[index][1];
	WM.map.setCenter(poi, zoom , G_SATELLITE_TYPE);
}

