var map;
var area_mk;
var tmr;
var tmrpr;
var prtimer;
var num;

var page;

var tsubuyaki;
var curPos = 0;

var customInfoWindow1;
var customInfoWindow2;
var customInfoWindow3;
var marker1;
var marker2;
var marker3;

var prInfoWindow;

var custombox_latlng = new Array();

function customBox(latlng, message, box_id){
	this.latlng_ = latlng;
	this.message_ = message;
	this.box_id_ = box_id;
	this.custombox_latlng_ = custombox_latlng;
}

customBox.prototype = new GOverlay();
customBox.prototype.initialize = function(map){
	var div = document.createElement("div");
	div.style.position = "absolute";

	map.getPane(G_MAP_MARKER_PANE).appendChild(div);
	this.map_ = map;
	this.div_ = div;

}
customBox.prototype.remove = function(){
	this.div_.parentNode.removeChild(this.div_);
}
customBox.prototype.copy = function(){
	return new customBox(this.latlng_);
}
customBox.prototype.redraw = function(force){
	if (!force)
		return;
	var latlngbounds = map.getBounds();
	var southwest = this.map_.fromLatLngToDivPixel(latlngbounds.getSouthWest());
	var northeast = this.map_.fromLatLngToDivPixel(latlngbounds.getNorthEast());

	var px = this.map_.fromLatLngToDivPixel(this.latlng_);
	this.div_.style.width = "150px";
	this.div_.style.height = "50px";
	px.x = px.x+30;
	px.y = px.y-100;
	this.div_.style.left = (px.x) + "px";
	this.div_.style.top = (px.y) + "px";
	this.div_.innerHTML = this.message_;
}

/** 地図広告用設定 **/
var pr_box_latlng = new Array();

function prBox(latlng, message, box_id){
	this.pr_latlng_ = latlng;
	this.pr_message_ = message;
	this.pr_box_id_ = box_id;
	this.pr_box_latlng = pr_box_latlng;
}

prBox.prototype = new GOverlay();
prBox.prototype.initialize = function(map){
	var div = document.createElement("div");
	div.style.position = "absolute";

	map.getPane(G_MAP_FLOAT_PANE).appendChild(div);

	this.map_ = map;
	this.pr_div_ = div;

}
prBox.prototype.remove = function(){
	this.map_.getPane(G_MAP_FLOAT_PANE).removeChild(this.pr_div_ );
//	this.pr_div_.parentNode.removeChild(this.pr_div_);
}
prBox.prototype.copy = function(){
	return new prBox(this.pr_latlng_);
}
prBox.prototype.redraw = function(force){
	if (!force)
		return;
	var latlngbounds = map.getBounds();
	var southwest = this.map_.fromLatLngToDivPixel(latlngbounds.getSouthWest());
	var northeast = this.map_.fromLatLngToDivPixel(latlngbounds.getNorthEast());

	var px = this.map_.fromLatLngToDivPixel(this.pr_latlng_);
	this.pr_div_.style.width = "500px";
	this.pr_div_.style.height = "50px";
	px.x = px.x-23;
	px.y = px.y-23;
	this.pr_div_.style.left = (px.x) + "px";
	this.pr_div_.style.top = (px.y) + "px";
	this.pr_div_.innerHTML = this.pr_message_;
}
/************************/


function areaBox(){}

areaBox.prototype = new GControl();
areaBox.prototype.initialize = function(map){
	var container = document.getElementById("map_area");
	map.getContainer().appendChild(container);
	return container;
}
areaBox.prototype.getDefaultPosition = function(){
	return new GControlPosition(G_ANCHOR_TOP_LEFT);
}
function addMarker(){
	if(!tsubuyaki){
		return false;
	}
	custombox_latlng = new Array();
	var latlngbounds = map.getBounds();
	var northeast = latlngbounds.getNorthEast();
	var southwest = latlngbounds.getSouthWest();

	if (customInfoWindow1) {
		map.removeOverlay(customInfoWindow1);
	}
	if (customInfoWindow2) {
		map.removeOverlay(customInfoWindow2);
	}
	if (customInfoWindow3) {
		map.removeOverlay(customInfoWindow3);
	}
	if (marker1) {
		map.removeOverlay(marker1);
	}
	if (marker2) {
		map.removeOverlay(marker2);
	}
	if (marker3) {
		map.removeOverlay(marker3);
	}
	var num = 0;
	$.each(tsubuyaki, function(i, item){
		if (curPos >= tsubuyaki['tsubuyaki_length']) {
			curPos = 0;
		}
		if (curPos == 50) {
			curPos = 0;
			i=0;
			return false;
		}
		if (i == curPos) {
			if (num < 3) {
				//サムネイル毎にマーカーの画像を作成
				var icon = new GIcon();
				icon.image = "/puppii/icon/img/"+item['img_mid'];
				icon.shadow = "/puppii/icon/img/map_icon_shadow.png";
				icon.iconSize = new GSize(35, 35);
				icon.shadowSize = new GSize(35, 35);
				icon.iconAnchor = new GPoint(0, 35);
				icon.infoWindowAnchor = new GPoint(18, 11);
				var message = item['message'];
				switch (num) {
					case 0:
						marker1 = new GMarker(new GLatLng(parseFloat(item['latitude']), parseFloat(item['longitude'])), {
							icon: icon
						});
						GEvent.addListener(marker1, 'click', function() {
								location.href = item['next_page'];
						});
						map.addOverlay(marker1);
						customInfoWindow1 = new customBox(new GLatLng(parseFloat(item['latitude']), parseFloat(item['longitude'])), message, 1)
						map.addOverlay(customInfoWindow1);
						break;
					case 1:
						marker2 = new GMarker(new GLatLng(parseFloat(item['latitude']), parseFloat(item['longitude'])), {
							icon: icon
						});
						GEvent.addListener(marker2, 'click', function() {
								location.href = item['next_page'];
						});
						map.addOverlay(marker2);
						customInfoWindow2 = new customBox(new GLatLng(parseFloat(item['latitude']), parseFloat(item['longitude'])), message, 2);
						map.addOverlay(customInfoWindow2);
						break;
					case 2:
						marker3 = new GMarker(new GLatLng(parseFloat(item['latitude']), parseFloat(item['longitude'])), {
							icon: icon
						});
						GEvent.addListener(marker3, 'click', function() {
								location.href = item['next_page'];
						});
						map.addOverlay(marker3);
						customInfoWindow3 = new customBox(new GLatLng(parseFloat(item['latitude']), parseFloat(item['longitude'])), message, 3)
						map.addOverlay(customInfoWindow3);
						break;
				}
				i = i + 1;
				curPos = curPos + 1;
				num = num + 1;
			}
		}
	});
}

function drawMap(){
	map.clearOverlays();
	//表示されているデータを取得
	var latlngbounds = map.getBounds();
	var southwest = latlngbounds.getSouthWest();
	var northeast = latlngbounds.getNorthEast();

	var param =
		"Module=ajax"+
		"&Action=getAreaTsubuyaki"+
		"&page="+page+
		"&area_master_id="+$('#area_master_id').val()+
		"&swlat="+ southwest.lat()+
		"&swlng="+ southwest.lng()+
		"&nelat="+ northeast.lat()+
		"&nelng="+ northeast.lng();
	$.ajax({
			type:"POST"
			,url: "/puppii/ajax/ajax.php"
			,data: param
			,success: function(data){
					if(data['token']){
						$('#Token').val(data['token']);
					}
					if(data['area_spot']){
						//オリジナルマーカーの画像を作成
						var icon = new GIcon();
						icon.image = "/puppii/icon/img/map_ato_on.png";
						icon.shadow = "/puppii/icon/img/map_ato_on_shadow.png";
						icon.iconSize = new GSize(35, 35);
						icon.shadowSize = new GSize(35, 35);
						icon.iconAnchor = new GPoint(0, 35);
						icon.infoWindowAnchor = new GPoint(18, 11);
						$.each(data['area_spot'], function(k){
							var area_data = data['area_spot'][k];
							var area_mk = new GMarker(new GLatLng(area_data['latitude'], area_data['longitude']),icon);
							GEvent.addListener(area_mk, 'click', function() {
									location.href = area_data['next_page'];
							});
							map.addOverlay(area_mk);
						});
					}
					if(data['area'] && map.getZoom() > 8){
						//オリジナルマーカーの画像を作成
						var icon = new GIcon();
						icon.image = "/puppii/icon/img/map_ato_off.png";
						icon.shadow = "/puppii/icon/img/map_ato_off_shadow.png";
						icon.iconSize = new GSize(35, 35);
						icon.shadowSize = new GSize(35, 35);
						icon.iconAnchor = new GPoint(0, 35);
						icon.infoWindowAnchor = new GPoint(18, 11);
						$.each(data['area'], function(j){
							var area_data = data['area'][j];
							var area_mk = new GMarker(new GLatLng(area_data['latitude'], area_data['longitude']),icon);
							GEvent.addListener(area_mk, 'click', function() {
									location.href = area_data['next_page'];
							});
							map.addOverlay(area_mk);
						});
					}
					if (tsubuyaki = data['tsubuyaki']) {
						clearInterval(tmr);
						addMarker();
						tmr = setInterval("addMarker()", 5000);
					}
			}
			,dataType: "json"
	});

	/**地図広告表示**/
	if(page=='default'||page=='guest_default'){
		if (prInfoWindow) {
			map.removeOverlay(prInfoWindow);
		}
		var latlngbounds = map.getBounds();
		var prparam =
			"Module=ajax"+
			"&Action=getPr"+
			"&page="+page+
			"&area_master_id="+$('#area_master_id').val()+
			"&swlat="+ southwest.lat()+
			"&swlng="+ southwest.lng()+
			"&nelat="+ northeast.lat()+
			"&nelng="+ northeast.lng();
		var prdata=null;
		$.ajax({
				type:"POST"
				,url: "/puppii/ajax/ajax.php"
				,data: prparam
				,success: function(prdata){
						if(prdata['token']){
							$('#Token').val(prdata['token']);
						}
						if(prdata['map_pr']){
							if(prdata['map_pr_count']>50){
								prdata['map_pr_count']=50;
							}
							clearInterval(prtimer);
							//広告画像を作成
//初期対応ここから
//							var i = Math.floor(Math.random()*prdata['map_pr_count']);
							var i = 0;
//初期対応ここまで
							//広告画像を作成
							if (prInfoWindow) {
								map.removeOverlay(prInfoWindow);
							}
							if (prdata['map_pr'][i]) {
								prInfoWindow = new prBox(new GLatLng(parseFloat(prdata['map_pr'][i]['latitude']), parseFloat(prdata['map_pr'][i]['longitude'])), prdata['map_pr'][i]['message'], 1)
								map.addOverlay(prInfoWindow);
							}
//初期対応ここから
//							if(prdata['map_pr_count']>1){
//								prtimer = setInterval(
//									function(){
//										if (prInfoWindow) {
//											map.removeOverlay(prInfoWindow);
//										}
//										//広告画像を作成
//										 i = Math.floor(Math.random()*prdata['map_pr_count']);
//										if(prdata['map_pr'][i]){
//											if (prInfoWindow) {
//												map.removeOverlay(prInfoWindow);
//											}
//											prInfoWindow = new prBox(new GLatLng(parseFloat(prdata['map_pr'][i]['latitude']), parseFloat(prdata['map_pr'][i]['longitude'])), prdata['map_pr'][i]['message'], 1)
//											map.addOverlay(prInfoWindow);
//										}
//									}
//								, 5000);
//							}else{
//								setTimeout(function(){ map.removeOverlay(prInfoWindow) }, 15000);
//							}
							if(prdata['map_pr_count']>1){
								prtimer = setInterval(
									function(){
										if (prInfoWindow) {
											map.removeOverlay(prInfoWindow);
										}
										//広告画像を作成
										i++;
										if(prdata['map_pr'][i]){
											if (prInfoWindow) {
												map.removeOverlay(prInfoWindow);
											}
											prInfoWindow = new prBox(new GLatLng(parseFloat(prdata['map_pr'][i]['latitude']), parseFloat(prdata['map_pr'][i]['longitude'])), prdata['map_pr'][i]['message'], 1)
											map.addOverlay(prInfoWindow);
										}
									}
								, 3000);
							}else{
								setTimeout(function(){ map.removeOverlay(prInfoWindow) }, 3000);
							}
//初期対応ここまで
						}else{
							clearInterval(prtimer);
						}
				}
				,dataType: "json"
		});
	}
	/************/
}

function getMapPr(){
	if (prInfoWindow) {
		map.removeOverlay(prInfoWindow);
	}
	var latlngbounds = map.getBounds();
	var southwest = latlngbounds.getSouthWest();
	var northeast = latlngbounds.getNorthEast();
	var param =
		"Module=ajax"+
		"&Action=getPr"+
		"&page="+page+
		"&area_master_id="+$('#area_master_id').val()+
		"&swlat="+ southwest.lat()+
		"&swlng="+ southwest.lng()+
		"&nelat="+ northeast.lat()+
		"&nelng="+ northeast.lng();
	$.ajax({
			type:"POST"
			,url: "/puppii/ajax/ajax.php"
			,data: param
			,success: function(data){
					if(data['token']){
						$('#Token').val(data['token']);
					}
					if(data['map_pr']){
						//広告画像を作成
						prInfoWindow = new prBox(new GLatLng(parseFloat(data['map_pr']['latitude']), parseFloat(data['map_pr']['longitude'])), data['map_pr']['message'], 1)
						map.addOverlay(prInfoWindow);
					}
			}
			,dataType: "Script"
	});
}

function checkArea(){
	var center = map.getCenter();
	var scope = map.getZoom();
	var param =
		"Module=ajax"+
		"&Action=checkArea"+
		"&clat="+  center.lat()+
		"&clng="+ center.lng();
	$.ajax({
			type:"POST"
			,url: "/puppii/ajax/ajax.php"
			,data: param
			,success: function(data){
				if (data['area_master_id'] == $('#area_master_id').val()) {
					drawMap();
					return false;
				}
				else {
					$('#area_master_id').val(data['area_master_id']);
					$('div.icon>p').html(data['area_name']);
					drawMap();
					if (page != "user_index" && page != "guest_index") {
						//最新のつぶやき取得
						var param_latest = {
							Module: "ajax",
							Action: "searchTsubuyakiList",
							List: "latest",
							Key: data['area_master_id'],
							Name: data['area_name'],
							Page: page
						}
						$.get("/puppii/ajax/ajax.php", param_latest, function(data){
							$('#tubuyaki_new').html(data);
						});

						//なわばりキング取得
						var param_ranking = {
							Module: "ajax",
							Action: "searchTsubuyakiList",
							List: "area_ranking",
							Key: data['area_master_id'],
							Name: data['area_name'],
							Page: page
						}
						$.get("/puppii/ajax/ajax.php", param_ranking, function(data){
							$('#area_ranking').html(data);
						});

						//地図広告取得
						var param_map_pr = {
							Module: "ajax",
							Action: "searchTsubuyakiList",
							List: "map_pr",
							Key: data['area_master_id'],
							Name: data['area_name'],
							Page: page
						}
						$.get("/puppii/ajax/ajax.php", param_map_pr, function(data){
							$('#pr').html(data);
						});

					}
					return false;
				}
			}
		,dataType: "json"
	});
}

function stopMaps(){
	map.clearOverlays();
}

function addTsubuyaki(){
	custombox_latlng = new Array();
	var latlngbounds = map.getBounds();
	var northeast = latlngbounds.getNorthEast();
	var southwest = latlngbounds.getSouthWest();
	var param =
		"Module=ajax"+
		"&Action=getTsubuyaki"+
		"&user_type="+page+
		"&user_tsubuyaki_id="+$('#user_tsubuyaki_id').val();
	$.ajax({
			type:"POST"
			,url: "/puppii/ajax/ajax.php"
			,data: param
			,success: function(data){
				if (data) {
					//サムネイル毎にマーカーの画像を作成
					var icon = new GIcon();
					icon.image = "/puppii/icon/img/" + data['img_mid'];
					icon.shadow = "/puppii/icon/img/map_icon_shadow.png";
					icon.iconSize = new GSize(35, 35);
					icon.shadowSize = new GSize(35, 35);
					icon.iconAnchor = new GPoint(0, 35);
					icon.infoWindowAnchor = new GPoint(18, 11);
					marker1 = new GMarker(map.getCenter(), {
						icon: icon
					});
					GEvent.addListener(marker1, 'click', function() {
							location.href = data['next_page'];
					});
					map.addOverlay(marker1);
				}
			}
			,dataType: "json"
	});
}
