(function(c){var a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type="mousewheel";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery);

var py;
var sy = -1;
var oy;
var vy = 0;
var betamap;
var currentinfowindow;


$(document).ready(function(){
	$('<div id="alphaback" class="whiteglass"></div>').css({'opacity':'0.5'}).prependTo('#container');
	$('<div id="betaback" class="whiteglass"></div>').width($('#beta').width()).height($('#beta').height()).css({'opacity':'0.5'}).prependTo('#container');
	setContentPosition();
	addShareModule();
	$('.module-header').click(function() {
		$(this).next().slideToggle('slow');
	});
	$('.module-header').hover(function() {
		$(this).css({'background-color':'#880000'});
	},function(){
		$(this).css({'background-color':'#000088'});
	});
	$('.module-maps .module-header').click(function(){
		google.maps.event.trigger(betamap, 'resize');
	});
	$('.comments-open-header').click(function() {
		$(this).next().slideToggle('slow');
	});
	$('#trackback').click(function() {
		$(this).next().slideToggle('slow');
	});
	$(window).resize(function(){
		setContentPosition();
	});
	jQuery.extend(jQuery.easing,{
		easeOutCirc: function (x, t, b, c, d) {
			return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
		}
	});
	$('#alpha').mousedown(mouseDownHandler);
	$('#alpha').mousemove(mouseMoveHandler);
	$('#alpha').mouseup(mouseUpHandler);
	$('#alpha').mouseleave(mouseOutHandler);
	$('#beta').mousedown(mouseDownHandler);
	$('#beta').mousemove(mouseMoveHandler);
	$('#beta').mouseup(mouseUpHandler);
	$('#beta').mouseleave(mouseOutHandler);
/*
	$('#alpha').mousewheel(mouseWheelHandler);
	$('#beta').mousewheel(mouseWheelHandler);
*/

	// For Wiki
	if ($('#bgcanvas.wiki').length) {
		viewWikiMap();
		tweetInit();
	}
	// For NonIE Wheel Scroll
	//if (window.addEventListener) {
	//	window.addEventListener('DOMMouseScroll', mapWheelHandler, false);
	//}
	if ($('#betamaps').length) {
		loadMaps();
		$('.module-maps .module-content').show();
	}
	//loadTitle();
});

function mouseDownHandler(e) {
	sy = py = e.clientY;
	vy = 0;
	oy = $(this).css({'cursor':'n-resize'}).scrollTop();
	return false;
}
function mouseMoveHandler(e) {
	if (sy==-1) return;
	$(this).scrollTop(oy+sy-e.clientY);
	vy = py - e.clientY;
	py = e.clientY;
	return false;
}
function mouseUpHandler(e) {
	if (sy==py) {
		var d;
		if ($(this).is('#alpha')) {
			d = e.clientY - ($('body').height()-170)/2 -50;
		} else {
			d = e.clientY - ($('body').height()-450)/2 -20;
		}
		$(this).animate({scrollTop:$(this).scrollTop()+d}, 'slow');
	} else {
		if (vy<0) {
			vy = $(this).scrollTop() + parseInt(80/vy) - 50 + vy;
		} else if (vy>0) {
			vy = $(this).scrollTop() + parseInt(80/vy) + 50 + vy;
		} else {
			vy = $(this).scrollTop();
		}
		$(this).stop().animate({scrollTop:vy}, 'slow', 'easeOutCirc');
	}
	sy = -1;
	$(this).css({'cursor':'auto'});
	return false;
}
function mouseOutHandler(e) {
	if (sy==-1) return;
	sy = -1;
	$(this).css({'cursor':'auto'});
	return false;
}
function mouseWheelHandler(event, delta) {
	$(this).scrollTop($(this).scrollTop()-delta*30);
}
function setContentPosition() {
	$('#alpha').css({'height':$('body').height()-170,'width':$('body').width()-450});
	if ($('#betamaps').length) {
		$('#beta').css({'height':$('body').height()-40});
	} else {
		$('#beta').css({'height':$('body').height()-450});
	}
	$('#alphaback').width($('#alpha').width()).height($('#alpha').height()).css({'top':$('#alpha').css('top'),'left':$('#alpha').css('left')});
	$('#betaback').height($('#beta').height()).css({'top':$('#beta').css('top'),'right':$('#beta').css('right')});
}
function getBackgroundFlash() {
	return $.support.noCloneEvent ? (document["backimg"].loadMarker ? document["backimg"] : $('#backimage embed').get(0)) : window["backimg"];
}
function viewEntryMap(id) {
	var player = getBackgroundFlash();
	player.loadMarker("http://tdrview.net/kml/entrykml.cgi?eid="+id);
}
function viewWikiMap() {
	//var player = getBackgroundFlash();
	//player.loadMarker("http://tdrview.net/kml/wikikml.cgi?wn="+encodeURI($('#alpha h1').text()));
	$.get('http://tdrview.net/kml/wikikml.cgi',{wn:$('#alpha h1').text()},function(kml){
		$(kml).find('Placemark').each(function(){
			var name = $(this).find('name').text().replace(/^.*\//,'');
			var coords = $(this).find('coordinates').text().split(',');
			var latlng = new google.maps.LatLng(parseFloat(coords[1]),parseFloat(coords[0]));
			var marker = new google.maps.Marker({map:betamap,position:latlng,title:name});
			var infowindow = new google.maps.InfoWindow({content:'<div><h4>'+name+'</h4></div>' }); 
			google.maps.event.addListener(marker,'click',function(){
				if (currentinfowindow) currentinfowindow.close();
				infowindow.open(betamap,marker);
				currentinfowindow = infowindow;
			});
		});
	});
}
function tweetInit() {
	if ($('.tweetsearch').length) {
		$('.tweetsearch').each(function(){
			$(this).html('<button onclick="tweetOpen(this);">「<span>'+$(this).text()+'</span>」でTwitterを検索</button>');
		});
	}
}
function tweetOpen(btn) {
	$.getJSON("http://search.twitter.com/search.json?callback=?",{q:$(btn).find('span').text()}, function(json){
		var container = $(btn).parent();
		container.empty();
		if (json.results.length) {
			var tweets='';
			for (var i=0;i<json.results.length;i++) {
				tweets += '<div class="tweetresult"><div class="tweetimg"><img src="'+json.results[i].profile_image_url+'" alt="" /></div><div class="tweetusername">'+json.results[i].from_user+'</div><div class="tweettext">'+json.results[i].text+'</div></div>';
			}
			container.append(tweets);
		} else {
			container.append('<p>検索結果がありませんでした。</p>');
		}
	});
}
function addShareModule() {
	var url = location.href.replace(/#.*$/,'').replace(/&alias%5B%5D=[^&]+/,'');
	var share = '<div id="sharetwitter"><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="tdrview" data-lang="ja">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>';
	share += '<div id="shareplusone"><script type="text/javascript" src="http://apis.google.com/js/plusone.js">{lang: "ja"}</script><g:plusone size="medium"></g:plusone></div>';
	share += '<iframe scrolling="no" frameborder="0" allowTransparency="true" style="overflow:hidden;border:0;width:380px;height:80px" src="http://plugins.mixi.jp/favorite.pl?href='+encodeURI(url)+'&service_key=1fbba9d7005d52a423d904322a84c1920449d949&show_faces=true&width=380"></iframe>';
	share += '<iframe src="http://www.facebook.com/plugins/like.php?href='+encodeURI(url)+'&amp;layout=button_count&amp;show_faces=true&amp;width=380&amp;action=like&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:380px; height:21px;" allowTransparency="true"></iframe>';
	share = '<div id="sharemodule" class="module"><h2 class="module-header">&raquo; SHARE</h2><div class="module-content">'+share+'</div></div>';
	$('.module-search').before(share);
}
//function loadTitle() {
//	var player = document.all? window["backimg"] : document["backimg"];
//	player.loadTitle($('h1#banner-header').html(),$('h2#banner-description').html());
//}
/*
function mapWheelHandler(e) {
	//alert(e.x);
	//var player = getBackgroundFlash();
	//player.wheelMap(e.detail);
}
*/

function loadMaps() {
	betamap = new google.maps.Map($('#betamaps')[0], {
		zoom: 14,
		center: new google.maps.LatLng(35.629,139.884),
		disableDefaultUI: true,
		mapTypeId: google.maps.MapTypeId.SATELLITE
	});
	//$('#betamaps').after('<input id="betamapsrotate" type="range" value="0" min="-180" max="180" onchange="rotateMap()" />');
	$('#betamaps').after('<div id="betamapsbuttons"></div>');
	$('#betamaps').after('<div id="betamapsrotater"><button id="betamapsminify" class="betamapbutton" onclick="zoomMap(-1)">-</button><button id="betamapsmagnify" class="betamapbutton" onclick="zoomMap(1)">+</button><div id="betamapsrotaterknob"></div></div>');
	$('#betamapsbuttons').after('<button id="betamapsblog" class="betamapbutton" onclick="loadMarker(\'http://tdrview.net/kml/blog.cgi?exp=\')">Blog</button>');
	$('#betamapsbuttons').after('<button id="betamapslandrest" class="betamapbutton" onclick="loadMarker(\'http://tdrview.net/kml/l_restaurant.kml\')">Land Restaurant</button>');
	$('#betamapsbuttons').after('<button id="betamapsseashop" class="betamapbutton" onclick="loadMarker(\'http://tdrview.net/kml/s_shop.kml\')">Sea Shop</button>');
	$('#betamapsbuttons').after('<button id="betamapssearest" class="betamapbutton" onclick="loadMarker(\'http://tdrview.net/kml/s_restaurant.kml\')">Sea Restaurant</button>');
	$('#betamapsrotaterknob').mousedown(startRotateMap).mouseup(endRotateMap).mousemove(doRotateMap).mouseout(endRotateMap);
}
var isMapRotating = false;
var timerRotater;
var currentDegree = 0;
function startRotateMap() {
	isMapRotating = true;
	if (timerRotater) clearInterval(timerRotater);
	return false;
}
function doRotateMap(e) {
	if (isMapRotating) {
		var cx = e.pageX - 10 - $('#betamapsrotater').offset().left;
		if (cx<0) cx = 0;
		if (cx>360) cx = 360;
		$('#betamapsrotaterknob').css({left:cx+'px'});
		rotateMap(cx-180);
	}
	return false;
}
function endRotateMap() {
	isMapRotating = false;
	timerRotater = setInterval(rotateMapZero,33);
	return false;
}
function rotateMapZero() {
	if (Math.abs(currentDegree)<1) {
		rotateMap(0);
		$('#betamapsrotaterknob').css({left:'180px'});
		clearInterval(timerRotater);
	} else {
		rotateMap(currentDegree*0.8);
		$('#betamapsrotaterknob').css({left:parseInt(currentDegree*0.8+180)+'px'});
	}
}
function rotateMap(d) {
	currentDegree = d;
	$('#betamaps').css({
		'transform':'rotate('+d+'deg)',
		'-webkit-transform':'rotate('+d+'deg)',
		'-moz-transform':'rotate('+d+'deg)',
		'-ms-transform':'rotate('+d+'deg)',
		'-o-transform':'rotate('+d+'deg)'
	});
}
function zoomMap(d) {
	betamap.setZoom(betamap.getZoom()+d);
}
function loadMarker(kmlurl) {
	$.get(kmlurl,function(kml){
		$(kml).find('Placemark').each(function(){
			var name = $(this).find('name').text().replace(/^.*\//,'');
			var coords = $(this).find('coordinates').text().split(',');
			var latlng = new google.maps.LatLng(parseFloat(coords[1]),parseFloat(coords[0]));
			var marker = new google.maps.Marker({map:betamap,position:latlng,title:name});
			var infowindow = new google.maps.InfoWindow({content:'<div><h4>'+name+'</h4></div>' }); 
			google.maps.event.addListener(marker,'click',function(){
				if (currentinfowindow) currentinfowindow.close();
				infowindow.open(betamap,marker);
				currentinfowindow = infowindow;
			});
		});
	});
}

