var isMSIE = /*@cc_on!@*/false; 

//getNSWE
function getNSWE(map){
	var data = {
		n: map.getBounds().getNorthEast().lat(),
		s: map.getBounds().getSouthWest().lat(),
		w: map.getBounds().getSouthWest().lng(),
		e: map.getBounds().getNorthEast().lng()
	}
	return data;
}

//makeAendBox
function makeSendBox(){
//	if (_status == null) _status = 0;
	var s_uid = document.getElementById("s_uid").value;
	var s_name = '';
	var s_img_url = '';
	if (s_uid != '') {
		s_name = "<a target=_blank href='http://twitter.com/" + s_uid + "'>" + document.getElementById("s_name").value + "</a>";
		s_img_url = "<a target=_blank href='http://twitter.com/" + s_uid +"'>"
			+ "<img width=24 src='" + document.getElementById("s_img_url").value + "'/>" + "</a>";
	}

	var senddiv = document.createElement('div');
	
	var nametitle = document.createElement('span');
	if (s_img_url == '') {
		nametitle.innerHTML = "お名前　";
  } else {
		nametitle.innerHTML = s_img_url;
	}
	senddiv.appendChild(nametitle);
	
	if (s_name == '') {
		var names = document.createElement('input');
		names.name = "names";
		names.type = "text";
		senddiv.appendChild(names);
	} else {
		var names = document.createElement('span');
		names.innerHTML = s_name;
		senddiv.appendChild(names);
	}
	
	var br = document.createElement('br');
	senddiv.appendChild(br);
	
	var teltitle = document.createElement('span');
	teltitle.innerHTML = "電話番号";
	senddiv.appendChild(teltitle);
	
	var tel = document.createElement('input');
	tel.name = "tel";
	tel.type = "text";
	senddiv.appendChild(tel);
	
	var br = document.createElement('br');
	senddiv.appendChild(br);

//	if (_status != 4) {
		var icontitle = document.createElement('span');
		icontitle.innerHTML = "進捗:";
		senddiv.appendChild(icontitle);
		
		
		var r_btntitle = document.createElement('label');
		senddiv.appendChild(r_btntitle);
		
		var r_btn = document.createElement('input');
		r_btn.type = "radio";
		r_btn.name = "status";
		r_btn.value = "1";
		r_btn.defaultChecked = true;
		r_btntitle.appendChild(r_btn);
		
		var r_img = document.createElement('img');
		r_img.src = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		r_btntitle.appendChild(r_img);
		
		r_btntitle.innerHTML += "要請";
		
		
		var y_btntitle = document.createElement('label');
		senddiv.appendChild(y_btntitle);
		
		var y_btn = document.createElement('input');
		y_btn.type = "radio";
		y_btn.name = "status";
		y_btn.value = "2";
		y_btntitle.appendChild(y_btn);
		
		var y_img = document.createElement('img');
		y_img.src = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
		y_btntitle.appendChild(y_img);
		
		y_btntitle.innerHTML += "申出";
		
		
		var g_btntitle = document.createElement('label');
		senddiv.appendChild(g_btntitle);
		
		var g_btn = document.createElement('input');
		g_btn.type = "radio";
		g_btn.name = "status";
		g_btn.value = "3";
		g_btntitle.appendChild(g_btn);
		
		var g_img = document.createElement('img');
		g_img.src = "http://labs.google.com/ridefinder/images/mm_20_green.png";
		g_btntitle.appendChild(g_img);
		
		g_btntitle.innerHTML += "解決";
	// } else {
	// 	var b_btn = documentcreateElement('input');
	// 	b_btn.type = 'hidden';
	// 	b_btn.name = 'status';
	// 	b_btn.value = '4';
	// 	g_btntitle.appendChild(b_btn);
	// }
		
	var msgtitle = document.createElement('div');
	msgtitle.innerHTML = "メッセージ";
	senddiv.appendChild(msgtitle);
	
	var textarea = document.createElement('textarea');
	$(textarea).width(250);
	$(textarea).height(150);
	senddiv.appendChild(textarea);
	
	var br = document.createElement('br');
	senddiv.appendChild(br);
	
	var button = document.createElement('input');
	button.type = "button";
	button.value = "書き込み";
	senddiv.appendChild(button);
	
	return {"div":senddiv,"btn":button,"textarea":textarea,"names":names,"tel":tel};
}


function initialize() {
	if (GBrowserIsCompatible()) {
    // Create and Center a Map
    var map = new GMap2(document.getElementById("map_canvas"));
    var center = new GLatLng(38.00482, 141.844482);
	map.setCenter(center, 7);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
	//map.enableScrollWheelZoom();
	
	GEvent.addListener(map, "dragend", function() {
		mapRefresh()
	});
	GEvent.addListener(map, "zoomend", function() {
		mapRefresh()
	});
	
	//search
	$("#search_btn").click(function(){
		mapRefresh()
	})
	
	//Refresh
	function mapRefresh(){
		var sendData = getNSWE(map);
		sendData.q = $("#input_search").val();
		new $.ajax({
			url: 'getdata.php',
			type: "POST",
			dataType: 'json',
			data: sendData, 
			success: function(data,datatype){getDataSuccess(data,datatype),makeNewPoint()}
		})
	}
	
	var iconColor = ["","red","yellow","green","blue"];
	
	var getDataSuccess = function(data, dataType){
		map.clearOverlays();
		$("#comm").empty();
		
		var pointTmp = new Array();
		var loops = (isMSIE)?data.result.length-1:data.result.length;
		for(i=0;i<loops;i++){
			var tinyIcon = new GIcon();
			tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_"+iconColor[data.result[i].status]+".png";
			tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
			tinyIcon.iconSize = new GSize(12, 20);
			tinyIcon.shadowSize = new GSize(22, 20);
			tinyIcon.iconAnchor = new GPoint(6, 20);
			tinyIcon.infoWindowAnchor = new GPoint(5, 1);
			var markerOptions = {icon:tinyIcon};
			
			if(! pointTmp[data.result[i].lat+''+data.result[i].lng]){
				pointTmp[data.result[i].lat+''+data.result[i].lng] = true;
			
				var point = new GLatLng(data.result[i].lat, data.result[i].lng);
				var marker = new GMarker(point, markerOptions);
			
				makePoint(marker,data.result[i]);
				makeMessage(marker,data.result[i]);
			}
		}
		//makeNewPoint();
	}
	
	function makePoint(marker,result){
		GEvent.addListener(marker, "mouseup", function(){
			openPointWindow(marker,result);
		});
		map.addOverlay(marker);
	}
	
	function makeMessage(marker,result){
		var messdiv = document.createElement('div');
		
		var times = document.createElement('div');
		times.innerHTML = result.date_time;
		$(times).css({fontSize:"small"});
		messdiv.appendChild(times);
		
		var mess = document.createElement('div');
		mess.innerHTML = result.message.substring(0,140)+"…";
		messdiv.appendChild(mess);
		
		var printlink = document.createElement('div');
		var lat = marker.getLatLng().lat();
		var lng = marker.getLatLng().lng();
		printlink.innerHTML = "<a href='print.php?lat="+lat+"&lng="+lng+"' target='_blank'>印刷画面</a>";
		messdiv.appendChild(printlink);
		
		var hr = document.createElement('hr');
		messdiv.appendChild(hr);
		
		$(messdiv).width(175);
		
		$(messdiv).hover(function(){
			$(messdiv).css({backgroundColor:"#EEEEEE"});
		},function(){
			$(messdiv).css({backgroundColor:"#FFFFFF"});
		});
		
		$(messdiv).click(function(){
			openPointWindow(marker,result);
		});
		
		$("#comm").append(messdiv);
	}
	
	
	function openPointWindow(marker,result){
		var data = {
			lat: result.lat,
			lng: result.lng
		}
		
		var getPointSuccess = function(data, dataType) { 
			var messdiv = document.createElement('div');
			
			var loops = (isMSIE)?data.result.length-1:data.result.length;
			for(i=0;i<loops;i++){
				
				var na_te = document.createElement('div');
				na_te.innerHTML = data.result[i].names;
				if(data.result[i].tel){
					na_te.innerHTML += " (TEL:"+data.result[i].tel+")";
				}
				messdiv.appendChild(na_te);
				
				var times = document.createElement('div');
				times.innerHTML = data.result[i].date_time;
				$(times).css({fontSize:"small"});
				messdiv.appendChild(times);
				
				var disc = document.createElement('div');
				disc.innerHTML = data.result[i].message;
				messdiv.appendChild(disc);

				if (data.result[i].status == 4) {
					var pic = document.createElement('div');
					pic.innerHTML = '<img src="data/' + data.result[i].mid + 'picture.png">';
					messdiv.appendChild(pic);
				}
				
				var hr = document.createElement('hr');
				messdiv.appendChild(hr);
			}
			
			// var senddiv = makeSendBox(data.result[i].status);
			var senddiv = makeSendBox();
			
			messdiv.appendChild(senddiv.div);
			$(messdiv).css({
				overflow:"auto",
				overflowX:"hidden",
				height:200,
				width:300
			})
			
			marker.openInfoWindowHtml(messdiv);
			
			//SendData
			var postSuccess = function(data, dataType) { 
				if(data.result == "OK"){
					map.closeInfoWindow();
					alert("書き込みました。");
				}else{
					alert("何らかの理由で失敗しました。");
				}
			}
			
			$(senddiv.btn).click(function(){
				var lat = marker.getLatLng().lat();
				var lng = marker.getLatLng().lng();
				
				var data = {
					lat: lat,
					lng: lng,
					message: $(senddiv.textarea).val(),
					pass: 'pass',
					names: $(senddiv.names).val(),
					tel: $(senddiv.tel).val(),
					status:$("input:radio[name=status]:checked").val()
				}
				
				if(!data["status"]){data["status"] = 1;}
				
				new $.ajax({
					url: 'post.php',
					type: "POST",
					dataType: 'json',
					data: data, 
					success : postSuccess
				})
			})
		}
		
		new $.ajax({
			url: 'getdata.php',
			type: "POST",
			dataType: 'json',
			data: data, 
			success: getPointSuccess
		})
	}
	
	
	
	var sendData = getNSWE(map);
	sendData.q = $("#input_search").val();
	
	new $.ajax({
		url: 'getdata.php',
		type: "POST",
		dataType: 'json',
		data: sendData, 
		success: function(data,datatype){getDataSuccess(data,datatype),makeNewPoint()}
	})
	
	//geo
	var geocoder = new GClientGeocoder();
	function showAddress(address) {
		geocoder.getLatLng(
			address,
			function(latlng) {
			  if (!latlng) {
				alert(address + " が見つかりません。住所を少し短くしてみてください。");
			  } else {
				map.setCenter(latlng, 15);
				var marker = makeNewPoint();
				marker.openInfoWindowHtml("ポイントは掴んで移動できます。画面上から見失ったら<br />地図の下にある「ポイントを画面の中央に表示」ボタンを押してください。");
			  }
			}
		);
	}
	
	$("#add").click(function(){
		map.clearOverlays();
		showAddress($("#address").val());
	});
	$("#centerbtn").click(function(){
		map.clearOverlays();
		var marker = makeNewPoint();
		marker.setLatLng(map.getCenter());
	});
	
	
	//new
	function makeNewPoint(){
		
		var marker = new GMarker(map.getCenter(), {draggable: true});
			
		GEvent.addListener(marker, "dragstart", function() {
			map.closeInfoWindow();
		});
		
		var formdiv = document.createElement('div');
		
		var disc = document.createElement('div');
		disc.innerHTML = "この場所から発言";
		formdiv.appendChild(disc);
		
		var senddiv = makeSendBox();
		
		formdiv.appendChild(senddiv.div);
		
		GEvent.addListener(marker, "dragend", function() {
			marker.openInfoWindow(formdiv);
		});
		
		GEvent.addListener(marker, "mouseup", function() {
			marker.openInfoWindow(formdiv);
		});
		
		//SendData
		var postSuccess = function(data, dataType) { 
			if(data.result == "OK"){
				map.closeInfoWindow();
				alert("書き込みました。");
				location.reload();
			}else{
				alert("何らかの理由で失敗しました。");
			}
		}
		
		$(senddiv.btn).click(function(){
			var lat = marker.getLatLng().lat();
			var lng = marker.getLatLng().lng();
			
			var data = {
				lat: lat,
				lng: lng,
				message: $(senddiv.textarea).val(),
				pass: 'pass',
				names: $(senddiv.names).val(),
				tel: $(senddiv.tel).val(),
				status:$("input:radio[name=status]:checked").val()
			}
			
			if(!data["status"]){data["status"] = 1;}
			
			new $.ajax({
				url: 'post.php',
				type: "POST",
				dataType: 'json',
				data: data, 
				success : postSuccess
			})
		})
		
		map.addOverlay(marker);
		
		return marker;
		
	}
	}
}


//GSearch.setOnLoadCallback(initialize);

