/*  モデルコース用ライブラリ
 *  (c) 2006 Kaneda brothers
 *  charset: UTF-8
 * 
 * 以下のライブラリに依存しています。
 * prototype.js  version 1.4.0 see: http://prototype.conio.net/
 * base.js
 * map.js
 *--------------------------------------------------------------------------*/

var AMS_marker;
var AMS_result;
var AMS_list = new Array();
var fa;

function mapSetUpModelCourse(format_no){
	mapWidthCenteringNomap();
	OSK_moviMapNomap();
	if(GBrowserIsCompatible()){
		fa = 0;
		map = new GMap2($("mc_map"));
		map.addControl(new GSmallMapControl());
		new Ajax.Request('/db/course/' + format_no + '/data.js', { method:'get', onSuccess:setResult });
	}
	OSK_onLoaded = true;
}

function setResult(req) {
	var txt = decodeURIComponent(req.responseText);
	eval('AMS_result = ' + txt);
	if (AMS_result.error != '0') return;
	var course_no = AMS_result.course_no;
	AMS_list[course_no] = AMS_result;
	setMap(AMS_result);
}

function setMap(result) {
	map.clearOverlays();
	AMS_marker = new Array();
	
	var lat = result.latitude;
	var lng = result.longitude;
	var z   = parseInt(result.zoom);
	map.setCenter(new GLatLng(lat, lng), z);
	var cnt = result.detail.length;
	var i;
	for (i = 0; i < cnt; i++) {
		var x = result.detail[i].longitude;
		var y = result.detail[i].latitude;
		var name = result.detail[i].name;
		var icon = createGicon(i);
		var point = new GPoint(x, y);
		AMS_marker[i] = createMarker(point, icon, name);
		map.addOverlay(AMS_marker[i]);
	}
	fa = 1;
}

/* -------------------------------------------------------------------------------------------------- */
function moveLAYER(idName,x,y){
	
	if(document.getElementById){
		document.getElementById(idName).style.left = x+'px';
		document.getElementById(idName).style.top = y+'px';
	}
	else if(document.all){
		document.all(idName).style.pixelLeft = x;
		document.all(idName).style.pixelTop = y;
	}
	else if(document.layers){
		document.layers[idName].moveTo(x,y);
	}
}

function getINNERWIDTH(){
	if(window.opera){
		return window.innerWidth;          //o6,o7
	}
	else if(document.all){
		return document.body.clientWidth;  //e4,e5,e6
	}
	else if(document.layers){
		return window.innerWidth;          //n4
	}
	else if(document.getElementById){
		return  window.innerWidth;         //n6,n7,m1,s1
	}
	return null;
}

function getINNERHEIGHT(){
	if(window.opera){
		return window.innerHeight;         //o6,o7
	}else if(document.all){
		return document.body.clientHeight; //e4,e5,e6
	}else if(document.layers){
		return  window.innerHeight;        //n4
	}else if(document.getElementById){
		return window.innerHeight;         //n6,n7,m1,s1
	}
	return null;
}

//OS判別
function checkOS() {
	var os="OT";
	var uAnt = navigator.userAgent;
	if(uAnt.indexOf("Win") != -1) os = "WIN";
	if(uAnt.indexOf("Mac") != -1) {
		os = "OS9";
		for (i=0; i<navigator.plugins.length; i++) if (navigator.plugins[i].filename.indexOf(".") >= 0) os = "OSX";
	}
	if (uAnt.indexOf("X11") > -1) os = "UNIX";
	return os;
}

//ブラウザ判別
function checkBrowser() {
	var uAnt = navigator.userAgent;
	if (uAnt.indexOf("Safari") > -1) return "SF";
	if (uAnt.indexOf("Opera") > -1) return "OP";
	if (uAnt.indexOf("Firefox") > -1) return "FF";
	if (uAnt.indexOf("MSIE") > -1) return "IE";
	if (document.layers) return "NN4";
	if (document.getElementById && !document.all) return "NN6";
	return "OT";
}

/////////////////////////////////////////////////////////////////////////////////////////////

function createGicon(id){
	var icon = new GIcon();
	icon.image = "/common/gicon/gi_"+id+".png";
	icon.shadow = "/common/gicon/shadow.png";
	icon.iconSize = new GSize(20, 26);
	icon.shadowSize = new GSize(37, 26);
	icon.iconAnchor = new GPoint(10, 26);
	icon.infoWindowAnchor = new GPoint(10, 1);
	return icon;
}

function mapSetUp(format_no) {
	fa = 0;
	if (GBrowserIsCompatible()) {
		map = new GMap2($("map"));
		new Ajax.Request('/db/course/' + format_no + '/data.js', { method:'get', onSuccess:setResult });
		mapWidthCentering();
		OSK_moviMap();
	}
}

function OSK_zoomIn(){
	map.zoomIn();
	OSK_zoom++;
}

function OSK_zoomOut(){
	map.zoomOut();
	OSK_zoom--;
}

////////// block over out

function OSK_over(format_no, idname, color){
	if (fa > 0) {
		map.closeInfoWindow();
		fa = 0;
		var course_no = parseInt(format_no);
		if (AMS_list[course_no]) {
			setMap(AMS_list[course_no]);
		} else {
			new Ajax.Request('/db/course/' + format_no + '/data.js', { method:'get', onSuccess:setResult });
		}
		if (document.getElementById) {
			$(idname).style.backgroundColor = blockColor[color];
		}
	}
}

function OSK_out(id, idname, color){
	if(document.getElementById){
		document.getElementById(idname).style.backgroundColor = blockColor[color];
	}
}


function OSK_moviMap(){
	
	var PosLeft;
	var PosTop;
	
	clearTimeout(timerID);
	timerID = setTimeout("OSK_moviMap()",10);
	
	if(document.all){
		PosLeft = document.body.parentNode.scrollLeft;
		PosTop = document.body.parentNode.scrollTop;
	}
	else if(document.layers){
		PosLeft = window.pageXOffset;
		PosTop = window.pageYOffset;
	}
	else if(document.getElementById){
		PosLeft = window.pageXOffset;
		PosTop = window.pageYOffset;
	}
	
	OSK_tay = PosTop + OSK_ofy;
	OSK_say = OSK_say + (OSK_tay - OSK_say) / 6;
	
	moveLAYER(OSK_map,OSK_x,OSK_say);
}

function mapWidthCentering(){
	var setx = getINNERWIDTH() / 2 + OSK_centerBaf + OSK_dec;
	if(getINNERWIDTH() < OSK_contetsWith){
		setx = OSK_contetsWith / 2 + OSK_centerBaf + OSK_dec;
	}
	OSK_x = setx;
	moveLAYER(OSK_map,OSK_x,OSK_say);
}

//Google Maps API"
//
// Create a marker whose info window displays the given number.
function createMarker(point, icon, html) {
	//var marker = new GMarker(point);
	var marker = new GMarker(point, icon);

	GEvent.addListener(marker, 'click', function() {
	marker.openInfoWindowHtml(html);
	});
	
	return marker;
}


