/*@cc_on _d=document;eval('var document=_d')@*/

// ロード時
window.onload = function(){

	//アンロードイベント追加
	GEvent.addDomListener(window, "unload", function(){ GUnload(); });

	//GoogleMap　GMap2のインスタンス生成
	var map = new GMap2(document.getElementById("map_con"));
	map.addControl(new GMapTypeControl());
	map.addControl(new GLargeMapControl());
	map.addControl(new GOverviewMapControl(new GSize(120,100)));

	//メッセージエリア生成
	function MsgWin(holder){
		this.initialize.apply(this, arguments);
	}
	MsgWin.prototype = {
		initialize: function(holder){
			var me = this;
			var elm = document.createElement("div"); elm.id = "map_con_msg_win"; elm.style.cssText = "position:absolute; display:none; background-color:#ffffff;";
			var elm_top = document.createElement("div"); elm_top.id = "map_con_msg_win_top"; elm.appendChild(elm_top);
			var elm_msg = document.createElement("div"); elm_msg.id = "map_con_msg_win_msg"; elm.appendChild(elm_msg);
			var elm_btn = document.createElement("input"); elm_btn.id = "map_con_msg_win_btn"; elm_btn.type = "button"; elm_btn.value = "O K"; elm.appendChild(elm_btn);
			var elm_btm = document.createElement("div"); elm_btm.id = "map_con_msg_win_btm"; elm.appendChild(elm_btm);
			GEvent.addDomListener(elm_btn, "click", function(){ me.hideMsg(); });
			holder.appendChild(elm);
			this.elm = elm;
			this.msg = elm_msg;
			this.holder = holder;
		},
		showMsg: function(msg){
			this.msg.innerHTML = msg;
			this.elm.style.display = "";
			this.elm.style.left = ((this.holder.clientWidth - this.elm.clientWidth) / 2) + "px";
			this.elm.style.top = ((this.holder.clientHeight - this.elm.clientHeight) / 2) + "px";
		},
		hideMsg: function(){
			this.msg.innerHTML = "";
			this.elm.style.display = "none";
		}
	}
	var map_msg = new MsgWin(map.getContainer());


	//引数取得
	var getUriReq = function(){
		if(location.search.length > 1) {
			var get = new Object();
			var ret = location.search.substr(1).split("&");
			for(var i = 0; i < ret.length; i++) {
				var r = ret[i].split("=");
				get[r[0]] = r[1];
			}
			return get;
		} else {
			return false;
		}
	};
	//引数チェック
	var chkUriReq = function(reqstr){
		if(reqstr == undefined){
			return false;
		}else if(reqstr == ""){
			return false;
		}else if(reqstr.match(/[\D]/g)){
			return false;
		}else{
			return reqstr;
		}
	};

	var req   = getUriReq();
	var mapno = chkUriReq(req["mapno"]);
	var evt = chkUriReq(req["evt"]);

	if(evt){
		var import_file = document.getElementById("file_evt").value + "&mapno=" + mapno;
	}else{
		//地図データXMLファイル読込み
		var import_file = document.getElementById("file").value;
	}
	import_file = import_file.replace("%cache%", "cache=" + new Date().getTime());

	GDownloadUrl(import_file, function(xmldata, statuscode){
		if(statuscode != "200"){
			map_msg.showMsg("地図データファイルの読み込みに失敗しました。");
		}else{
			var xmlDoc = GXml.parse(xmldata);
			var mapdatas = xmlDoc.documentElement.getElementsByTagName("mapdata");
			for (var i=0; i<mapdatas.length; i++) {
				if(mapdatas[i].getAttribute("id") == mapno){
					var mapdata = mapdatas[i];
					break;
				}
			}
			if(!mapdata){
				map_msg.showMsg("地図データを取得できませんでした。");
			}else{
				var xml_linktitle = GXml.value(mapdata.getElementsByTagName("linktitle")[0]);
				var xml_lat = GXml.value(mapdata.getElementsByTagName("lat")[0]);
				var xml_lng = GXml.value(mapdata.getElementsByTagName("lng")[0]);
				var xml_zoom = GXml.value(mapdata.getElementsByTagName("zoom")[0]);
				var xml_memo = GXml.value(mapdata.getElementsByTagName("memo")[0]);
				var xml_line = GXml.value(mapdata.getElementsByTagName("line")[0]);
				var xml_color = GXml.value(mapdata.getElementsByTagName("color")[0]) || null;
				var xml_weight = GXml.value(mapdata.getElementsByTagName("weight")[0]) || null;
				var xml_opacity = GXml.value(mapdata.getElementsByTagName("opacity")[0]) || null;
				//初期マーカのバルーン設定
				var strWindowHtml = "";
				strWindowHtml += "<div class=\"map_infowindow\">";
				strWindowHtml += "<h1 class=\"map_iw_name\">" + xml_linktitle + "</h1>";
				if(mapdata.memo != ""){
					xml_memo = xml_memo.replace(/\r\n|\r|\n/ig ,"<br>");
					strWindowHtml += "<p class=\"map_iw_memo\">" + xml_memo + "</p>";
				}
				strWindowHtml += "</div>";

				//初期マーカ追加
				var ini_latlng = new GLatLng(parseFloat(xml_lat), parseFloat(xml_lng))
				var ini_marker = new GMarker(ini_latlng);
				map.setCenter(ini_latlng, parseInt(xml_zoom));
				map.addOverlay(ini_marker);
				//初期マーカクリックイベント設定
				GEvent.addListener(ini_marker, "click", function(overlay){
					this.openInfoWindowHtml(strWindowHtml, { "maxWidth" : 220 });
				});

				//初期ライン表示
				var lineData = eval(xml_line);
				if(lineData){
					var p = [];
					for (var i=0; i<lineData.length; i++) {
						p.push(new GLatLng(parseFloat(lineData[i].lat), parseFloat(lineData[i].lng)));
						pre_point = p[p.length - 1];
					}
					map.addOverlay(new GPolyline(p, xml_color, parseInt(xml_weight), xml_opacity));
				}
			}
		}
		if(!map.getCenter()){
			//デフォルト値取得
			var default_lat = parseFloat(document.getElementById("default_lat").value);
			var default_lng = parseFloat(document.getElementById("default_lng").value);
			var default_zoom = parseInt(document.getElementById("default_zoom").value);
			map.setCenter(new GLatLng(default_lat, default_lng), default_zoom);
		}
	});
};

