/*
lng 135.5278
lat 34.685427
*/
var gmap;
var keyword;
var event_name;
var infowindows = new Array();
var markers = new Array();

var implementSearch = function(){
	
	$('#search_button').unbind().click(function(){
		keyword = $('#search_text').val();
		if(keyword) requestWrite();
	});
	
};

var requestWrite = function(){
	
	implementSearch();
	
	if(markers) {
		$.each(markers, function(i, marker){
			marker.setMap(null);
		});
	}
	ne = gmap.getBounds().getNorthEast();
	sw = gmap.getBounds().getSouthWest();
	sendData = {
		'ne_lat': ne.lat(),
		'ne_lng': ne.lng(),
		'sw_lat': sw.lat(),
		'sw_lng': sw.lng()
	};
	if(keyword) sendData.keyword = keyword;
	
	$.ajax({
		url: '/ajax/index',
		dataType: 'json',
		data: sendData,
		type: 'post',
		beforeSend: function(){
			$('#icon_loader').show();
		},
		success: function(jsons){
			$.each(jsons.value, function(i, json){
				addMarker(json);
			});
		},
		error: function(){
			modal({'header':'データベース接続エラー', 'body':'データベースに接続に失敗しました。'});
		},
		complete: function(){
			$('#icon_loader').fadeOut();
		}
	});
	
};
var addMarker = function(json){

	html = '';
	image = '';
	$.each(json.News, function(j, news){
		if(news.image_thumbnail){
			image = news.image_thumbnail;
			return;
		}
	});
	
	html += '<div>'+json.address+'</div>';
	if(image) html += '<img src="'+image+'" style="padding: 0 10px 10px 0;" align="left" />';
	
	$.each(json.News, function(j, news){
		html += '<p>';
		html += '<span class="label"><a href="'+news.link+'" target="_blank">link</a></span> ';
		html += '<img src="http://b.hatena.ne.jp/entry/image/'+news.link+'" /> ';
		html += '<a href="#" rel="popover" title="'+news.title+'" data-content="'+news.description+'">'+news.title+'</a> ';
		html += '<small>'+news.created_at+'</small>';
		html += '</p>';
	});
	
	marker = new google.maps.Marker({
		position: new google.maps.LatLng(json.geo_lat, json.geo_lng),
		// icon: view_icon,
		// shadow: get_icon('shadow'),
		map: gmap
	});
	makeMarker(marker, html);
	
};
var makeMarker = function(marker, html){
	
	var infowindow = new google.maps.InfoWindow({
		content: html,
		maxWidth: 300
	});
	google.maps.event.addListener(infowindow, 'domready', function(){
	});
	google.maps.event.addListener(marker, 'mouseover', function() {
	});
	google.maps.event.addListener(marker, 'click', function() {
		infowindow.open(gmap, marker);
		if(gmap.lastInfoWindow) gmap.lastInfoWindow.close();
		gmap.lastInfoWindow = infowindow;
		$('a[rel=popover]').unbind().popover({'placement':'left'});
	});
	markers.push(marker);
	infowindows.push(infowindow);
	
};
var changeMapCanvas = function(){
	$('#map_canvas').css('height', $(window).height()-40);
};
var showTime = function(){
	d = new Date();
	$('#text_now').text(
		d.getFullYear()+'年'+
		((d.getMonth()+1) < 10 ? '0'+(d.getMonth()+1) : (d.getMonth()+1)) + '月' +
		(d.getDate() < 10 ? '0'+d.getDate() : d.getDate() ) + '日 '+
		(d.getHours() < 10 ? '0'+d.getHours() : d.getHours()) +
		(d.getSeconds()%2 ? ':' : ' ') +
		(d.getMinutes() < 10 ? '0'+d.getMinutes() : d.getMinutes())
	);
};
$(document).ready(function(){
	
	setInterval(showTime, 500);
	
	if($('#map_canvas').length){
		changeMapCanvas();
		
		event_name = 'loaded';
		var latlng = new google.maps.LatLng(35.689506, 139.691701);
		var myOptions = {
			zoom: 10,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.TERRAIN
		};
		gmap = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
		
		google.maps.event.addListener(gmap, 'zoom_changed', function() {
	    	requestWrite();
	  	});
		google.maps.event.addListener(gmap, 'dragend', function() {
	    	requestWrite();
	  	});
		google.maps.event.addListener(gmap, 'bounds_changed', function(){
			changeMapCanvas();
			if(event_name == 'loaded') requestWrite();
			event_name = null;
		});
		$("a[rel=popover]").popover({
			offset: 10
		})
		.click(function(e) {
			e.preventDefault()
		});
	}
	
});
