var gmap_map = null;
var gmap_cfg ="gmapCfg";

function gmap(mapId,dataSet,newSourceName) {
	
	var data = dataSet.getData();
	var sourceName;
	
	if(newSourceName == undefined) {
		sourceName = dataSet.getSourceName();
	} else {
		sourceName = newSourceName;
	}
	
	createMap(mapId);
	createMarkers(data,sourceName);
	
}

function getXPath(sourceName,property) {
	return eval(gmap_cfg + "." + sourceName + "." + property);
}

///////////////////////////////////////////////////////////
function createMap(mapId) {
	if (GBrowserIsCompatible()) {
    
		// mapオブジェクトを生成する
		gmap_map = new GMap2(document.getElementById(mapId));

		// controlを追加する
		gmap_map.addControl(new GLargeMapControl());
		gmap_map.addControl(new GMapTypeControl());
		
		// 初期位置(東京)を指定する
    gmap_map.setCenter(new GLatLng(35.681391, 139.766103), 4);

  }
}

function createMarkers(data,sourceName) {
	
	var base = getXPath(sourceName,"base");
	var name = getXPath(sourceName,"name");
	var address = getXPath(sourceName,"address");
	var latitude = getXPath(sourceName,"latitude");
	var longitude = getXPath(sourceName,"longitude");
	var url = getXPath(sourceName,"url");
	
	$(data).find(base).each(function(){
		
		createMarker( $(name,this).text(),
									$(address,this).text(),
									$(latitude,this).text(),
									$(longitude,this).text(),
									$(url,this).text() );
	});
	
}

function createMarker(name, address, latitude, longitude, url) {
	
	var marker = null;
	
	var point = new GLatLng(latitude, longitude);
	
	if (!point) {
				alert(address + " not found");
	} else {
		
		// マーカを作成する
		marker = new GMarker(point);
		
		// マーカをクリックしたときwindowを表示させるようにする
		var html = markerDataToHtml(name,url,address);
		//alert(html);
		GEvent.addListener(marker, "click", function() {
			if(marker) {
				marker.openInfoWindowHtml( html );
			}
		});
		
		// マーカを表示させる
		if(marker) {
			gmap_map.addOverlay(marker);
		}
			
	}
}

function markerDataToHtml(name,url,address) {
	
	var html = "<a href=\"" +url + "\"><b>" + name + "</b></a><br />" + address;
	return html;
	
}