$(document).ready(function(){
	//グレイレイヤー
	$("#glayLayer").click(function(){
		$(this).hide()
		$("#overLayer").hide()
		$("#overLayer_z").hide()
	})
	if($.browser.msie && $.browser.version<7){
		$(window).scroll(function(){
			$("#glayLayer").css('top',$(document).scrollTop())
			$("#overLayer").css('top',($(document).scrollTop()+$(window).height()/2) +"px")
			$("#overLayer_z").css('top',($(document).scrollTop()+$(window).height()/2) +"px")
		})
	}

	//セッションの維持(10分に1回)
	setInterval("keeper()",600000);
});

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-3098678-5']);
_gaq.push(['_trackPageview']);

(function() {
	var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

var gm_map;
var geocoder;
var confirm_marker;
var confirm_marker_new;
var confirm_tid=0;
var marker_list = new google.maps.MVCArray();
var onair_marker;
var true_image;
var meter_min=-1;
var new_meter_min=0;
var edit_mode = false;

var infowindow = new google.maps.InfoWindow({
	maxWidth: 200
});

var confirm_image = new google.maps.MarkerImage(
			getIconURL("d_map_pin_letter_withshadow", null,"P","C00","FFF"),
			new google.maps.Size(37, 34),
			new google.maps.Point(0, 0),
			new google.maps.Point(10, 34)
	);

var private_image = new google.maps.MarkerImage(
			getIconURL("d_map_pin_letter_withshadow", null,"Z","00C","FFF"),
			new google.maps.Size(37, 34),
			new google.maps.Point(0, 0),
			new google.maps.Point(10, 34)
	);

var alert_image = new google.maps.MarkerImage(
			getIconURL("d_map_pin_letter_withshadow", null,"X","EF0","000"),
			new google.maps.Size(37, 34),
			new google.maps.Point(0, 0),
			new google.maps.Point(10, 34)
	);

var my_image = new google.maps.MarkerImage(
			getIconURL("d_map_pin_letter_withshadow", null,"i","FA0","FFF"),
			new google.maps.Size(37, 34),
			new google.maps.Point(0, 0),
			new google.maps.Point(10, 34)
	);

var onair_image = new google.maps.MarkerImage(
			getIconURL("d_map_pin_letter_withshadow", null,"O","3C3","FFF"),
			new google.maps.Size(37, 34),
			new google.maps.Point(0, 0),
			new google.maps.Point(10, 34)
	);


function initialize() {
	var current_lat = $("#current_lat").val();
	var current_lng = $("#current_lng").val();
	if( current_lat=="" || current_lng=="" ){
		return false;
	}
	var center_marker = 0;
	if( $("#center_marker").val()=="1" ){
		center_marker = 1;
	}
	var opened_marker = "";
	if( $("#opened_marker").val()!="" ){
		opened_marker = $("#opened_marker").val();
	}

	var z;
	if( $("#gm_zoom").val()!="" ){
		z = parseInt($("#gm_zoom").val());
	} else {
		z = 13;
	}

	geocoder = new google.maps.Geocoder();
	var latlng = new google.maps.LatLng(current_lat,current_lng);
	var myOptions = {
		zoom: z,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.HYBRID
	};
	gm_map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

	google.maps.event.addListener(gm_map, 'click', function(event) {
		if( is_login==0 ){
			alert("新しい報告をするには、\nまずログインをして下さい。");
		} else if( confirm_tid==0 ){
			confirm_marker_new = placeMarker(gm_map,event.latLng);
			if( center_marker==0 ){
				confirm_tid = setTimeout("putConfirm()",700);
			} else {
				confirm_tid = setTimeout("putMoveConfirm()",700);
			}
		}
	});

	//google.maps.event.addListener(gm_map, 'zoom_changed', function(event) {
	//	gm_save();
	//});

	if( center_marker==1 ){
		confirm_marker = placeMarker(gm_map,latlng);
	}

	if( !edit_mode ){
		gm_update();
	}
}

function placeMarker(map,location) {
	var id = new google.maps.Marker({
		position: location, 
		map: map,
		icon: confirm_image
	});
	map.panTo(location);
	return id;
}

function putConfirm(){
	var pos = gm_map.getCenter();
	if( window.confirm("このポイントに新しい報告をします。\nよろしいですか？") ){
		var pos = gm_map.getCenter();
		open_reset( pos );
	}
	confirm_tid = 0;
	confirm_marker_new.setMap(null);
}

function putMoveConfirm(){
	if( window.confirm("ポイントを変更します。\nよろしいですか？") ){
		confirm_marker.setMap(null);
		confirm_marker = confirm_marker_new;
		var pos = gm_map.getCenter();
		update_latlng( pos.lat() , pos.lng() );
	} else {
		confirm_marker_new.setMap(null);
	}
	confirm_tid = 0;
}

function setMarkers(map, locations , opened ) {
	if( locations.length==0 ){
		return false;
	}
	var c_id = $("#customer_id").val();
	for (var i=0; i<locations.length; i++) {
		var loc = locations[i];
		if( loc[1]=="" || loc[2]=="" ){
			continue;
		}
		if( ( loc[10]==0 || loc[11]==0 ) && loc[4]!=c_id ){
			continue;
		}

		var myLatLng = new google.maps.LatLng(loc[1], loc[2]);
		
		var marker = new google.maps.Marker({
			position: myLatLng,
			map: map,
			title: loc[0]+"の"+loc[8],
			p_name: loc[0],
			zIndex: loc[3],
			c_id: loc[4],
			c_name: loc[5],
			img_id: loc[6],
			f_id: loc[7],
			f_name: loc[8],
			date: loc[9],
			status: loc[10],
			admit_flag: loc[11]
		});

		if( loc[11]==0 ){
			marker.icon = alert_image;
		} else if( loc[10]==0 ){
			marker.icon = private_image;
		} else if( loc[4]==c_id ){
			marker.icon = my_image;
		}

		marker_list.push(marker);
		attachMessage(marker, loc[3]);

		if( opened==loc[3] ){
			open_infowindow( marker );
		}
	}
	gm_update();
};

function getIconURL(iconType, style, str, bgColor, textColor) {
	var params = [style, encodeURIComponent(str || ""), bgColor, (textColor || "")];

	if (!style) {
		params.shift();
	}
	return "//chart.googleapis.com/chart?chst=" + iconType + "&chld=" + params.join("|");
}

function gm_update(){
	//月日範囲
	var r = $("#gm_range_id").val();

	//花の種類
	var f = $("#gm_flower_id").val();
	
	var dt = new Date();

	$.ajax({
			type: "POST",
			url: "index.php",
			data: {
				"mod":"main",
				"act":"read",
				"f":f,
				"r":r,
				"m":6,
				"t":dt.getTime()
			},
			success: function(res){
				json = eval("("+res+")");
				clear_markers();
				update_markers(json);
				pmove(1);
				if( new_meter_min!=meter_min ){
					meter_min = new_meter_min;
					update_meter();
				}
			}
		});
}

function clear_markers(){
	marker_list.forEach(function(marker, idx) {
		marker.setMap(null);
	});
	marker_list = new google.maps.MVCArray();
}

function update_markers(json) {
	var c_id = $("#customer_id").val();
	var open_id = $("#opened_marker").val();

	for (var i=0; i<json.length; i++) {
		var topic = json[i];
		if( topic.lat=="" || topic.lng=="" ){
			continue;
		}
		if( ( topic.status==0 || topic.admit_flag==0 ) && topic.customer_id!=c_id ){
			continue;
		}

		var myLatLng = new google.maps.LatLng(topic.lat, topic.lng);
		
		var marker = new google.maps.Marker({
			position: myLatLng,
			map: gm_map,
			title: topic.topic_name,
			ken: topic.ken,
			p_name: topic.place_name,
			zIndex: parseInt(topic.topic_id),
			c_id: topic.customer_id,
			c_name: topic.nickname,
			img_id: topic.image_id[0],
			f_id: topic.flower_type_id,
			f_name: topic.flower_type_name,
			date: topic.report_date,
			new_flag: topic.new_flag,
			status: topic.status,
			admit_flag: topic.admit_flag
		});

		if( topic.admit_flag==0 ){
			marker.icon = alert_image;
		} else if( topic.status==0 ){
			marker.icon = private_image;
		} else if( topic.customer_id==c_id ){
			marker.icon = my_image;
		}

		marker_list.push(marker);
		attachMessage(marker, topic.topic_id);

		if( open_id==topic.topic_id ){
			open_infowindow( marker );
		}

		if( i==0 ){
			var z = $("#gm_zoom").val();
			gm_move( myLatLng , parseInt(z) );
		}
	}
};


function gm_update_old(){
	var months = 6;

	//まずは開始日（降順）
	var y = dt.getFullYear();
	var m = dt.getMonth()+1-r;
	if( m<1 ){
		m = m + 12;
		y = y - 1;
	}
	if( m>12 ){
		m = m - 12;
		y = y + 1;
	}

	var endDay = getMonthEndDay(y, m);
	var st = new Date( y , m , endDay );
	var st_time = st.getTime();

	//続いて終了日
	m = m - months + 1;
	if( m<1 ){
		m = m + 12;
		y = y - 1;
	}
	if( m>12 ){
		m = m - 12;
		y = y + 1;
	}
	var en = new Date( y , m , 1 );
	var en_time = en.getTime();


	marker_list.forEach(function(marker, idx) {
		var sp = marker.date.split(".");
		var d = new Date( sp[0] , sp[1] , sp[2] );
		if( d.getTime()>=en_time && d.getTime()<=st_time && (f==0 || marker.f_id==f) ){
			marker.setMap(gm_map);
		} else {
			marker.setMap(null);
		}
	});

	//gm_save();

	//リスト更新
	pmove(1);
}

function gm_save(){
	//セッションに保存
	//var r = $("#gm_range_id").val();
	//花の種類
	//var f = $("#gm_flower_id").val();
	var dt = new Date();

	$.ajax({
			type: "POST",
			url: "index.php",
			data: {
				"mod":"main",
				"act":"ajaxgm",
				"z":gm_map.getZoom(),
				"t":dt.getTime()
			},
			success: function(res){

			}
		});
}

function gm_move_p( lat , lng , zoom ){
	var latlng = new google.maps.LatLng(lat, lng);
	gm_move( latlng , zoom );
}

function gm_move( latlng , zoom ){
	if( latlng==null ){
		alert("この報告は場所が特定できません");
	} else {
		//var latlng = new google.maps.LatLng( lat, lng )
		gm_map.panTo(latlng);
		gm_map.setZoom(zoom);
	}
}

function attachMessage(marker, msg) {
	google.maps.event.addListener(marker, 'click', function(event) {
		open_topic_detail(marker.zIndex);
	});
	google.maps.event.addListener(marker, 'mouseover', function(event) {
		//marker.setIcon(i_image);
		open_infowindow(marker);
	});
}

function open_infowindow(marker){
	infowindow.setContent("<div class='infowindow'><p class='image'><a href='topic"+marker.zIndex+".html'><img src='images/user/"+marker.c_id+"/thumb/"+marker.img_id+".jpg' width='100' height='100' boder='0'></a></p><p class='data'><span class='f'>"+marker.f_name+"</span><br/><span class='p'>"+marker.p_name+"</span><br/><span class='c'>"+marker.c_name+"</span><br/><span class='d'>"+marker.date+"</span></p></div>");
	infowindow.open(gm_map,marker);
}

function close_infowindow(){
	infowindow.close();
}

function on_menu( id ){
	document.getElementById( "menu"+id+"_img" ).src = "images/default/menu/menu_r_0"+id+".gif";
}

function off_menu( id ){
	document.getElementById( "menu"+id+"_img" ).src = "images/default/menu/menu_0"+id+".gif";
}

function click_flower( id ){
	document.getElementById("flower_type_id").value = id;
	document.getElementById("input_form").submit();
}

function click_ken( id ){
	document.getElementById("ken_id").value = id;
	document.getElementById("input_form").submit();
}

function click_place( id ){
	document.getElementById("place_id").value = id;
	document.getElementById("input_form").submit();
}

function delete_check(){
	if( window.confirm("本当に削除してよろしいですか？") ){
		return true;
	}
	return false;
}

function confirm_check( str ){
	if( window.confirm(str+"\nよろしいですか？") ){
		return true;
	}
	return false;
}

function open_letter( html , w , h ){
	$("#letter_contents").html( html );

	$("#letter_contents").show();

	$("#overLayer_z").hide();
	$("#glayLayer").show();
	$("#overLayer").show();
	$("#overLayer").width( w );
	$("#overLayer").height( h );

	var left = Math.floor(($(window).width() - w - 60) / 2);
	var top  = Math.floor(($(window).height() - h - 200) / 2);
	$("#overLayer")
		.css({
			"top": top,  
			"left": left,  
			"opacity": 0  
		})
		.animate({opacity: "1"},{queue: true, duration: 500, easing: "linear", complete: function(){}});
}

function update_letter( html ){
	$("#letter_contents").html( html );
}

function close_letter(){
	$("#glayLayer").hide();
	$("#overLayer").hide();
}

function open_zoom( url , name ){
	$("#zoom_image").attr("src",url);
	$("#zoom_name").html( name );

	$("#overLayer").hide();
	$("#glayLayer").show();

	$("#zoom_image").bind('load', function() {
		$("#overLayer_z").show();
		var left = Math.floor(($(window).width() - $("#zoom_image").width()-60) / 2);
		var top  = Math.floor(($(window).height() - $("#zoom_image").height()-200) / 2);
		$("#overLayer_z")
			.css({
				"top": top,  
				"left": left,  
				"opacity": 0  
			})
			.animate({opacity: "1"},{queue: true, duration: 500, easing: "linear", complete: function(){}});
	});
}

function close_zoom(){
	$("#glayLayer").hide();
	$("#overLayer_z").hide();
}

function open_loading(str){
	var html = "<div class='loading'><img src='images/default/login/loading.gif'/><br/>"+str+"<br/>そのままお待ち下さい。</div>";
	open_letter(html,200,100);
}

function go_login(){
	open_loading("ログイン中です");

	var mail = $("#mail").val();
	var password = $("#password").val();
	var date = new Date();
	var params = "mod=main&act=ajaxlogin&mail="+mail+"&password="+password+"&t="+date.getTime();
	$.ajax({
			type: "POST",
			url: "index.php",
			data: params,
			success: function(res){
				if( res=="OK" ){
					window.location.href = "index.php";
				} else {
					update_letter("<div class='alert'>"+res+"</div>");
				}
			}
		});
}

function open_reset( latLng ){
	open_loading("データの準備中です");

	if (geocoder) {
		geocoder.geocode( { 'latLng': latLng ,'language': 'japanese' }, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				close_letter();
				$("#new_lat").val( latLng.lat() );
				$("#new_lng").val( latLng.lng() );
				$("#new_addr").val( results[0].formatted_address );
				$("#add_topic").submit();
			} else {
				alert("error: " + status);
			}
		});
	}
}

function update_latlng(lat,lng){
	var date = new Date();
	var params = "mod=topic&act=latlng&lat="+lat+"&lng="+lng+"&t="+date.getTime();
	$.ajax({
			type: "POST",
			url: "index.php",
			data: params,
			success: function(res){

			}
		});

}

function change_gm_range( n ){
	$("#gm_range_id").val(n);
	$(".gm_m").removeClass("sel");

	if( n-meter_min>=24 ){
		var dt = new Date();
		new_meter_min = meter_min + 12;
		if( meter_min==0 ){
			new_meter_min = new_meter_min + dt.getMonth() + 1;
		}
		update_meter();
	} else if( n==meter_min && meter_min>0 ){
		new_meter_min = meter_min - 12;
		if( new_meter_min<0 ){
			new_meter_min=0;
		}
		update_meter();
	} else {
		for( var i=0 ; i<30 ; i++ ){
			var m = i+meter_min;
			if( m-n<6 && m-n>=0 ){
				$("#gm_m"+m).addClass("sel");
			}
		}
	}

	gm_update();
}

function change_gm_flower( n ){
	$("#gm_flower_id").val(n);
	$(".gm_f").removeClass("sel");
	$("#gm_f"+n).addClass("sel");
	gm_update();
}

function getMonthEndDay(year, month) {
	var dt = new Date(year, month, 0);
	return dt.getDate();
}

function update_meter(){
	var dt = new Date();
	var sy = dt.getYear();
	var sm = dt.getMonth()+1;
	if( sy<1000 ){
		sy = sy + 1900;
	}
	var ls = $("#t_range");
	var r = 0;
	if( $("#gm_range_id").val()!="" ){
		r = r + parseInt($("#gm_range_id").val());
	}

	ls.children("div").remove();

	for(var i=0;i<meter_min;i++){
		sm--;
		if( sm==0 ){
			sy--;
			sm = 12;
		}
	}

	var y = 0;
	var m = sm;
	var n = 0;

	for(var i=0 ; i<30 ; i++ ){
		n = i+meter_min;
		if( y==0 || m==12 ){
			if( y==0 ){
				y = sy;
			}
			var d = $("<div>").addClass("gm_y").html(y);
			ls.append(d);
		}
		var cl = "gm_m";
		if( r<=n && r+6>n ){
			cl = cl + " sel";
		}
		var d = $("<div>").addClass(cl).attr("id","gm_m"+n).html( m ).click( function(n){
			return function(){
				change_gm_range(n);
			}
		}(n) );
		ls.append( d );
		m--;
		if( m==0 ){
			y--;
			m = 12;
		}
	}
}

function pmove(p){
	var st = (p-1)*9;
	var en = st+8;
	var n=0;
	$("#topic_list").children("div").remove();

	var ls = $("#topic_list");

	if(marker_list.length>0){
		if( p>1 ){
			var d = $("<div>").addClass("slide_l");
			d.click( function(){
				pmove( p-1 );
			});
			ls.append(d);
		} else {
			var d = $("<div>").addClass("slide_empty");
			ls.append(d);
		}

		marker_list.forEach(function(marker, idx) {
			if( n>=st && n<=en ){
				var d1 = $("<div>").addClass("box");
				var a = $("<a>").click(function(){
					open_topic_detail(marker.zIndex);
				});
				var im = $("<img>").attr("src","images/user/"+marker.c_id+"/thumb/"+marker.img_id+".jpg").attr("border","0").hover( function(){
					gm_move(marker.position,gm_map.getZoom());
					close_infowindow();
				});
				var p1 = $("<p>").html(marker.f_name+"（"+marker.p_name+"・"+marker.ken+"）");
				var p2 = $("<p>").addClass("recommend").html(marker.date);

				a.append(im);

				if( marker.new_flag==1 ){
					var s = $("<span>").addClass("new");
					d1.append(a).append(p1).append(s).append(p2);
				} else {
					d1.append(a).append(p1).append(p2);
				}

				ls.append(d1);
			}
			n++;
		});

		if( en<marker_list.length ){
			var d = $("<div>").addClass("slide_r");
			d.click( function(){
				pmove( p+1 );
			});
			ls.append(d);
		} else {
			var d = $("<div>").addClass("slide_empty");
			ls.append(d);
		}
	} else {
		var d = $("<div>").addClass("notopic").html("<br/><br/><br/>該当する報告が見つかりません");
		ls.append(d);
	}
}

function pmove_old(p){
	var date = new Date();
	$("#slide_p").val(p);
	var f = $("#gm_flower_id").val();
	var r = $("#gm_range_id").val();

	$.ajax({
			type: "POST",
			url: "index.php",
			data: {
				"mod":"main",
				"act":"list",
				"p":p,
				"f":f,
				"r":r,
				"t":date.getTime()
			},
			success: function(res){
				$("#topic_list").html( res );
			}
		});

}

function pager(p , c_id , key){
	open_loading("読み込み中です");

	var date = new Date();
	var params = "mod=mypage&act="+key+"&customer_id="+c_id+"&p="+p+"&t="+date.getTime();

	$.ajax({
			type: "GET",
			url: "index.php",
			data: params,
			success: function(res){
				$("#"+key+"_list").html( res );
				close_letter();
			}
		});
}


function open_topic_detail( topic_id ){
	var dt = new Date();
	open_loading("読み込み中");

	var params = "mod=main&act=detail&topic_id="+topic_id+"&t="+dt.getTime();
	$.ajax({
			type: "GET",
			url: "index.php",
			data: params,
			success: function(res){
				$("#topic_detail").removeClass("nodisplay");
				$("#map_canvas").removeClass("map_canvas_full");
				$("#map_canvas").addClass("map_canvas_half");
				$("#topic_detail").html( res );

				google.maps.event.trigger(gm_map, 'resize');
				gm_map.setZoom( gm_map.getZoom() );

				open_topic_photos( topic_id );
			}
		});

	onair( topic_id );
}

function onair( id ){
	if( onair_marker ){
		onair_marker.setIcon( true_image );
	}
	marker_list.forEach(function(marker, idx) {
		if( marker.zIndex==id ){
			onair_marker = marker;
			true_image = marker.getIcon();
			marker.setIcon(onair_image);
		}
	});
}



function open_topic_photos( topic_id ){
	var dt = new Date();

	var params = "mod=main&act=photos&topic_id="+topic_id+"&t="+dt.getTime();
	$.ajax({
			type: "GET",
			url: "index.php",
			data: params,
			success: function(res){
				$("#topic_photos").removeClass("nodisplay");
				$("#topic_photos").html( res );
				close_letter();
			}
		});
}

function clap( topic_id , c_id ){
	var dt = new Date();

	var params = "mod=search&act=ajaxclap&topic_id="+topic_id+"&c="+c_id+"&t="+dt.getTime();
	$.ajax({
			type: "GET",
			url: "index.php",
			data: params,
			success: function(res){
				open_topic_detail(topic_id);
			}
		});
}

function elevate_photo( id1 , add ){
	var id2 = id1 + add;
	if( id2<0 || id2>4 ){
		return false;
	}

	var image_id1 = $("#image_id"+id1).val();
	var image_id2 = $("#image_id"+id2).val();

	//ガイド保護
	if( document.getElementById("photo_guide"+image_id1) ){
		var guide1 = document.getElementById("photo_guide"+image_id1).value;
	}
	if( document.getElementById("photo_guide"+image_id2) ){
		var guide2 = document.getElementById("photo_guide"+image_id2).value;
	}

	//行
	var html = $("#photo_tr"+id1).html();
	$("#photo_tr"+id1).html( $("#photo_tr"+id2).html() );
	$("#photo_tr"+id2).html( html );

	//ガイド挿入
	if( document.getElementById("photo_guide"+image_id1) ){
		document.getElementById("photo_guide"+image_id1).value = guide1;
	}
	if( document.getElementById("photo_guide"+image_id2) ){
		document.getElementById("photo_guide"+image_id2).value = guide2;
	}

	//画像ID
	$("#image_id"+id1).val( image_id2 );
	$("#image_id"+id2).val( image_id1 );
}

function keeper(){
	dt = new Date();
	var params = "mod=main&act=keeper&t="+dt.getTime();
	$.ajax({
			type: "POST",
			url: "index.php",
			data: params,
			success: function(res){

			}
		});
}

function open_comment( topic_id ){
	open_loading("読み込み中");
	var dt = new Date();
	var params = "mod=comment&act=list&topic_id="+topic_id+"&t="+dt.getTime();
	$.ajax({
			type: "POST",
			url: "index.php",
			data: params,
			success: function(res){
				open_letter(res,400,550);
			}
		});
}

function send_comment( topic_id ){
	var dt = new Date();
	var mes = document.getElementById("newcomment").value;

	open_loading("送信中");
	var params = "mod=comment&act=add&topic_id="+topic_id+"&mes="+mes+"&t="+dt.getTime();
	$.ajax({
			type: "POST",
			url: "index.php",
			data: params,
			success: function(res){
				open_comment(topic_id);
			}
		});
}

function remove_comment( topic_id , comment_id ){
	if( window.confirm("このコメントを削除します。\nよろしいですか？") ){
		var dt = new Date();
		open_loading("削除中");
		var params = "mod=comment&act=remove&comment_id="+comment_id+"&t="+dt.getTime();
		$.ajax({
				type: "POST",
				url: "index.php",
				data: params,
				success: function(res){
					open_comment(topic_id);
				}
			});
	}
}

