
// map.js
// jquery and gmap-api required 

// globals
var maps = [];
var icons = [];

jQuery.noConflict();
jQuery(document).ready(function(){
	var m = "map";
	var query = getQuery();
	var start = { lat: 33.742612777346885, lng: 133.4344482421875, zoom: 8, id:''};
	if(query.id){
		var latlng = jQuery("#ginfo #" + query.id + " .ginfo_latlng").text();
		start.id = query.id;
		start.lat = parseFloat(latlng.split(",")[0]);
		start.lng = parseFloat(latlng.split(",")[1]);
		start.zoom = 14;
	}
	createGMap(m,start.lat,start.lng,start.zoom);
	

	//アイコン定義
	addIcon("onsen",{
		image:"marker/i-onsen.png",
		shadow:"marker/i-shadow.png",
		width:30, height:39,
		anchorX:15, anchorY:39,
		infoAnchorX:20, infoAnchorY:10
	});
	addIcon("ashiyu"   ,{copyFrom:"onsen",image:"marker/i-ashiyu.png"});
	addIcon("chosen"   ,{copyFrom:"onsen",image:"marker/i-chosen.png"});
	addIcon("coffee"   ,{copyFrom:"onsen",image:"marker/i-coffee.png"});
	addIcon("kanko"    ,{copyFrom:"onsen",image:"marker/i-kanko.png"});
	addIcon("kanmi"    ,{copyFrom:"onsen",image:"marker/i-kanmi.png"});
	addIcon("kengaku"  ,{copyFrom:"onsen",image:"marker/i-kengaku.png"});
	addIcon("shokuji"  ,{copyFrom:"onsen",image:"marker/i-shokuji.png"});
	addIcon("shukuhaku",{copyFrom:"onsen",image:"marker/i-shukuhaku.png"});
	addIcon("taiken"   ,{copyFrom:"onsen",image:"marker/i-taiken.png"});

	addIcon("kagawa_onsen"    ,{copyFrom:"onsen",image:"marker/kagawa/i-onsen.png"});
	addIcon("kagawa_ashiyu"   ,{copyFrom:"onsen",image:"marker/kagawa/i-ashiyu.png"});
	addIcon("kagawa_chosen"   ,{copyFrom:"onsen",image:"marker/kagawa/i-chosen.png"});
	addIcon("kagawa_coffee"   ,{copyFrom:"onsen",image:"marker/kagawa/i-coffee.png"});
	addIcon("kagawa_kanko"    ,{copyFrom:"onsen",image:"marker/kagawa/i-kanko.png"});
	addIcon("kagawa_kanmi"    ,{copyFrom:"onsen",image:"marker/kagawa/i-kanmi.png"});
	addIcon("kagawa_kengaku"  ,{copyFrom:"onsen",image:"marker/kagawa/i-kengaku.png"});
	addIcon("kagawa_shokuji"  ,{copyFrom:"onsen",image:"marker/kagawa/i-shokuji.png"});
	addIcon("kagawa_shukuhaku",{copyFrom:"onsen",image:"marker/kagawa/i-shukuhaku.png"});
	addIcon("kagawa_taiken"   ,{copyFrom:"onsen",image:"marker/kagawa/i-taiken.png"});

	addIcon("kochi_onsen"    ,{copyFrom:"onsen",image:"marker/kochi/i-onsen.png"});
	addIcon("kochi_ashiyu"   ,{copyFrom:"onsen",image:"marker/kochi/i-ashiyu.png"});
	addIcon("kochi_chosen"   ,{copyFrom:"onsen",image:"marker/kochi/i-chosen.png"});
	addIcon("kochi_coffee"   ,{copyFrom:"onsen",image:"marker/kochi/i-coffee.png"});
	addIcon("kochi_kanko"    ,{copyFrom:"onsen",image:"marker/kochi/i-kanko.png"});
	addIcon("kochi_kanmi"    ,{copyFrom:"onsen",image:"marker/kochi/i-kanmi.png"});
	addIcon("kochi_kengaku"  ,{copyFrom:"onsen",image:"marker/kochi/i-kengaku.png"});
	addIcon("kochi_shokuji"  ,{copyFrom:"onsen",image:"marker/kochi/i-shokuji.png"});
	addIcon("kochi_shukuhaku",{copyFrom:"onsen",image:"marker/kochi/i-shukuhaku.png"});
	addIcon("kochi_taiken"   ,{copyFrom:"onsen",image:"marker/kochi/i-taiken.png"});

	addIcon("ehime_onsen"    ,{copyFrom:"onsen",image:"marker/ehime/i-onsen.png"});
	addIcon("ehime_ashiyu"   ,{copyFrom:"onsen",image:"marker/ehime/i-ashiyu.png"});
	addIcon("ehime_chosen"   ,{copyFrom:"onsen",image:"marker/ehime/i-chosen.png"});
	addIcon("ehime_coffee"   ,{copyFrom:"onsen",image:"marker/ehime/i-coffee.png"});
	addIcon("ehime_kanko"    ,{copyFrom:"onsen",image:"marker/ehime/i-kanko.png"});
	addIcon("ehime_kanmi"    ,{copyFrom:"onsen",image:"marker/ehime/i-kanmi.png"});
	addIcon("ehime_kengaku"  ,{copyFrom:"onsen",image:"marker/ehime/i-kengaku.png"});
	addIcon("ehime_shokuji"  ,{copyFrom:"onsen",image:"marker/ehime/i-shokuji.png"});
	addIcon("ehime_shukuhaku",{copyFrom:"onsen",image:"marker/ehime/i-shukuhaku.png"});
	addIcon("ehime_taiken"   ,{copyFrom:"onsen",image:"marker/ehime/i-taiken.png"});

	//マーカー定義
	jQuery("#ginfo > div").each(function(){
		//マーカー追加
		var latlng = jQuery(this).find(".ginfo_latlng").text();
		var lat = parseFloat(latlng.split(",")[0]);
		var lng = parseFloat(latlng.split(",")[1]);
		var icon = jQuery(this).find(".ginfo_marker").text();
		var idname = this.id;
		var open = (idname == start.id) ? true : false;

		addMarker("map",lat,lng,icon,idname,open);
	});

	//ラベル定義
	addGround(m,32.713355353177555, 133.802490234375, 33.63291573870478, 135.340576171875, "marker/tokushima-label.png");
	addGroundClick(m,32.90265033334125, 134.505615234375 , 32.97180377635758 , 135.06591796875 , function(){
		window.open('http://www.awanavi.jp','_blank');
	});
	addGroundClick(m,32.75494243654723 , 134.5166015625 , 32.81959486923976 , 135.0604248046875 , function(){
		window.open('http://www.awaawa.com','_blank');
	});
});

function createGMap(divid,posLat,posLng,zoom){
	if (GBrowserIsCompatible()) {
		if(!posLat){ posLat = 35; }
		if(!posLng){ posLng = 135; }
		if(!zoom)   { zoom = 5; }
		
		maps[divid] = new GMap2(jQuery("#"+divid).get(0));
		maps[divid].setCenter(new GLatLng(posLat,posLng),zoom);
		jQuery(document).unload(function(){ GUnload(); });
		maps[divid].enableContinuousZoom();
		maps[divid].enableScrollWheelZoom();
		maps[divid].addControl(new GMenuMapTypeControl());
		maps[divid].addControl(new GLargeMapControl());

	} else {
		jQuery("#"+divid).html("ご利用のブラウザはGoogleMapに対応していません");
	}
}
function addGroundClick(divid,p1Lat,p1Lng,p2Lat,p2Lng,func){
	if(!maps[divid]){ return false; }
	
	var points = [];
	points[0] = new GLatLng(p1Lat,p1Lng);
	points[1] = new GLatLng(p1Lat,p2Lng);
	points[2] = new GLatLng(p2Lat,p2Lng);
	points[3] = new GLatLng(p2Lat,p1Lng);
	points[4] = new GLatLng(p1Lat,p1Lng);
	var polygon = new GPolygon(points,"#FF0000",1,0,"#0000FF",0);
	maps[divid].addOverlay(polygon);
	GEvent.addListener(polygon,'click',func);
}
function addGround(divid,p1Lat,p1Lng,p2Lat,p2Lng,image){
	if(!maps[divid]){ return false; }
	
	var bounds = new GLatLngBounds( new GLatLng(p1Lat,p1Lng), new GLatLng(p2Lat,p2Lng));
	var ground = new GGroundOverlay(image,bounds);
	maps[divid].addOverlay(ground);
}

function addMarker(divid,pointLat,pointLng,iconName,infoId,open){
	if(!maps[divid]){ return false; }

	var point  = new GLatLng(pointLat,pointLng);
	var marker;
	if(iconName){
		var markerOp = []; markerOp.icon = icons[iconName];
		marker = new GMarker(point,markerOp);
	} else {
		marker = new GMarker(point);
	}
	if(infoId){
		marker.bindInfoWindow(jQuery("#"+infoId).get(0));
	}
	maps[divid].addOverlay(marker);
	
	if(open){ marker.openInfoWindow(jQuery("#"+infoId).get(0)); }
}

function addIcon(iconName,op){
	//op = {copyFrom,image,width,height,anchorX,anchorY,shadow,infoAnchorX,infoAnchorY}
	
	if(op['copyFrom']){
		icons[iconName] = new GIcon(icons[op['copyFrom']]);
	} else {
		icons[iconName] = new GIcon();
	}

	if(op['image']){ icons[iconName].image = op['image']; }
	if(op['shadow']){ icons[iconName].shadow = op['shadow']; }
	if(op['width'] && op['height']){
		icons[iconName].size = new GSize(op['width'],op['height']); }
	if(op['anchorX'] && op['anchorY']){
		icons[iconName].iconAnchor = new GPoint(op['anchorX'],op['anchorY']); }
	if(op['infoAnchorX'] && op['infoAnchorY']){
		icons[iconName].infoWindowAnchor = new GPoint(op['infoAnchorX'],op['infoAnchorY']); }
}

// utils

function getQuery(){
	var results = [];
	if(location.search == "") return results;
	var pair = location.search.slice(1).split('&');
	for(var i=0; i < pair.length; i++){
		var q = pair[i].split('=');
		results[q[0]] = q[1];
	}
	return results;
}
