// ==UserScript==
// @name           GoogleMapMaximizer
// @namespace      http://www.otchy.com/
// @include        http://maps.google.co.jp/*
// ==/UserScript==

(function() {
	function maximizeMap(resized) {
		var map = document.getElementById('map');
		var header = document.getElementById('header');
		var guser = document.getElementById('guser');
		var body = document.body;
		var s = map.style;
		s.zIndex = '9';
		s.left = '-8px';
		s.top = '-' + (guser.offsetHeight + header.offsetHeight) + 'px';
		s.width = (body.offsetWidth-10) + 'px';
		if (resized) {
			s.height = (window.offsetHeight+3) + 'px';
		} else {
			s.height = (body.offsetHeight) + 'px';
		}
		body.style.backgroundColor = '#999';
		document.getElementById('paneltoggle').style.backgroundColor = '#999';
	}

	function normalizeMap() {
		var map = document.getElementById('map');
		var s = map.style;
		s.zIndex = '1';
		s.left = '';
		s.top = '';
		s.width = '';
		s.height = '';
		document.body.style.backgroundColor = '';
		document.getElementById('paneltoggle').style.backgroundColor = '';
		unsafeWindow.onresize();
	}

	window.mapMaximized = false;
	window.addEventListener('keydown', function (event) {
		if (!event.shiftKey || !event.ctrlKey || event.keyCode != 77) return; // pressed Ctrl+Shift+M
		if (window.mapMaximized) {
			window.mapMaximized = false;
			normalizeMap();
		} else {
			window.mapMaximized = true;
			maximizeMap(false);
		}
	}, false);
	window.addEventListener('resize', function (event) {
		if (window.mapMaximized) {
			maximizeMap(true);
		}
	}, false);
})();

