function AddMarkerControl(){}
AddMarkerControl.prototype = new GControl();
AddMarkerControl.prototype.initialize = function(map)
{
	var container = document.createElement("div");
	var btnDiv = document.createElement("div");
	this.setButtonStyle_(container, btnDiv);
	container.appendChild(btnDiv);
	btnDiv.appendChild(document.createTextNode("添加"));
	GEvent.addDomListener(btnDiv, "click", function(event) { btnClicked(event);});  	
  	map.getContainer().appendChild(container);
  	return container;
}

AddMarkerControl.prototype.getDefaultPosition = function() 
{
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100, 7));
}

AddMarkerControl.prototype.setButtonStyle_ = function(container, button)
{
	container.className = "gmap_btn_container";
	button.className = "gmap_btn_unselected";
}

function btnClicked(event) {
    var button = event.target;
    if (!button.selected) {
        button.className = "gmap_btn_selected";
    } else {
        button.className = "gmap_btn_unselected";
    }
    button.selected = !button.selected;
    app.btnClicked = button.selected;
}

function initGMap2(map, lat, lng, level, mapType)
{
	if(app.LOC_LAT && app.LOC_LNG)
	{
		getLocationInfo(app.cid, app.LOC_LAT, app.LOC_LNG, 0, setLocationInfo);
	}
	else
	{
		getLocationInfo(app.cid, app.DEF_LAT, app.DEF_LNG, 0, setLocationInfo);
	}
	map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT,  new GSize(10,50)));
    map.addControl(new GMapTypeControl());
    map.addControl(new AddMarkerControl());
    
    map.setCenter(new GLatLng(lat,lng), level, mapType);
    map.setMapType(G_NORMAL_MAP);  
    GEvent.addListener(map, "click", onMapClicked);    
}

function onMapClicked(marker, clickedPoint)
{	
	if(marker || !app.btnClicked){	return;	}
	if(!app.signed)
	{
		var info = "<div style='padding:50px 0;'>您需要<a href='"+app.login+"' style='color:green'>登录</a>(我们使用<a href='http://code.google.com/apis/accounts/index.html' target='_blank'>Google账号认证系统</a>，你无需注册，可以使用您拥有的Google账号登录，但是需要开通<a href='http://calendar.google.com' target='_blank'>Google Calendar</a>服务)才能添加房产信息</div>"
		app.map.openInfoWindowHtml(clickedPoint, info);
		return;
	}	
  	else 
  	{  			
    	addMarker(clickedPoint);
  	}
}

function addMarker(point)
{
	var marker = new GMarker(point, {draggable:true});
	var infoBody = $("newmarker").getElementsByTagName("div")[0].cloneNode(true);
	var fn = infoBody.getElementsByTagName('form')[0];
	
	var coord = create("input", {attr:{type:"hidden", id:"coordfield"}, value: point.lat()+","+point.lng()});
	var action = create("input", {attr:{type:"hidden", id:"act"}, value:"add"});
	fn.appendChild(coord);
	fn.appendChild(action);
	
	getLocationInfo(app.cid, point.lat(), point.lng(), 1, addLocationInfo);
	marker.removeable = true;	// the marker still could be removed
	marker.submitted = false;	// the marker data has not been submitted
	app.activeMarker = marker;
	marker.info = infoBody;
	
	GEvent.addListener(marker, 'infowindowclose', infowinClosedAdd);
	GEvent.addListener(marker, 'dragstart', infowinDragStart);
	GEvent.addListener(marker, 'dragend', infowinDragEnd);	
		
	app.map.addOverlay(marker);
	marker.openInfoWindow(infoBody);
}

function addLocationInfo(xmlhttp)
{
	var result = xmlhttp.responseText.evalJSON(true);
	if(result.status)
	{
		if(app.activeMarker)
		{
			if(!app.activeMarker.submitted)
			{				
				var i = app.map.getInfoWindow();
				var dom = i.getContentContainers()[0];
			
				var inputNodes = dom.getElementsByTagName("input");
				var inputSpans = dom.getElementsByTagName("span");
				var city = inputNodes["cityidfield"];
				var spanCity = inputSpans["cityidvalue"];
				if(result.city)
				{
					city.value = result.city.ID;
					spanCity.innerHTML = result.city.name;
				}
				if(result.districts)
				{
					spanCity.parentNode.appendChild(create("span", {html:"城区：", css:"label"}));
					spanCity.parentNode.appendChild(create("span", {html:result.districts[0].name, css:"labelvalue", attr:{id:"districtidvalue"}}));
					spanCity.parentNode.appendChild(create("input",{attr:{type:"hidden", id:"districtidfield"}, value:result.districts[0].ID}));
					if(result.districts.length > 1)
					{
						var changeBlock = create("span");
						changeBlock.appendChild( create("a", {html:"不正确?", href:"#", onclick:showDistrictList, attr:{id:"districtselectlink"}}));
						var wrapper = create("span", {attr:{id:"districtlistwrapper"}, css:"wrapper"});
						var disListNode = create("ul", {attr:{id:"districtlist"}});
						for(var i = 0; i< result.districts.length; i++)
						{
							var o = result.districts[i];
							var dopt = create("li", {attr:{id:"district_"+o.ID}});
							dopt.appendChild(create("a", {html:o.name, href:"#", onclick:selectDistrict}));
							disListNode.appendChild(dopt);
								
						}
						wrapper.appendChild(disListNode);
						changeBlock.appendChild(wrapper);
						spanCity.parentNode.appendChild(changeBlock);
						if(Element.visible(wrapper))
						{
							Element.hide(wrapper);
						}
					}
					
				}
			}
		}
	}
}
function getBaseIcon()
{
	var baseIcon = new GIcon();
	baseIcon.shadow = "http://www.google.com/intl/en_ALL/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	return baseIcon;
}
function rentIcon()
{
	var l = String.fromCharCode("R".charCodeAt(0));
	var i = new GIcon(getBaseIcon());
	i.image = "http://www.google.com/mapfiles/marker" + l + ".png";
	return i;
}

function saleIcon()
{
	var l = String.fromCharCode("S".charCodeAt(0));
	var i = new GIcon(getBaseIcon());
	i.image = "http://www.google.com/mapfiles/marker" + l + ".png";
	return i;
}

function showDistrictList(e)
{
	e = e||window.event;
	var t = e.target||e.srcElement;
	var dList = $("districtlistwrapper");
	if(dList)
	{
		if(Element.visible(dList))
		{
			Element.hide(dList);
			t.innerHTML = "不正确?";
		}
		else
		{
			Element.show(dList);
			t.innerHTML = "关闭";
		}
	}
}

function selectDistrict(e)
{
	e = e||window.event;
	var t = e.target||e.srcElement;
	var l = t.parentNode;
	var wrapper = l.parentNode.parentNode;
	var divNode = wrapper.parentNode.parentNode;
	var inputs = divNode.getElementsByTagName("input");
	var disInput = inputs["districtidfield"];
	var id = l.id.split("_")[1];
	var disName = $("districtidvalue");
	if(disName)
	{
		disName.innerHTML = t.innerHTML;
	}
	if(disInput)
	{
		disInput.value = id;
	}
	if(Element.visible(wrapper))
	{
		Element.hide(wrapper);
		var a = $("districtselectlink");
		if(a)
		{
			a.innerHTML = "不正确?";
		}
	}	
}