//<![CDATA[

//GLOBAL VARIABLES ---
var INIT_ZOOM_LEVEL = 9;
var PICUP_ZOOM_LEVEL = 10;
var INIT_LAT = 43.822143;
var INIT_LNG = 144.648743;
var g_data_xml = "/cgi-bin/WebObjects/scenic-okhotsk.woa/wa/BlogView/map";
var map;
var sm;
var isInitMarker = true;
var isAutoMove = false;
var isLoaded = false;

var q_entryId;

var baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

function initialize() {
	if (GBrowserIsCompatible()) {
		
		var url = window.location;
		var entryId = getUrlParameter(url, "entryId");
		if (entryId) {
			q_entryId = entryId;
		}

		initMap(INIT_LAT, INIT_LNG);
		initEvents();
		
		makeUpdateToViewButton();
		
		sm = new ScenicMap({map: map});
		create();
		
		//var overview = document.getElementById("map_overview");
		//document.getElementById("map").appendChild(overview); 
	} else {
		alert("お使いのブラウザでは地図を表示することができません。Internet Explorer 6.0以降か、Firefox 1.0以降をおすすめします。");
	}
}

function initMap(cx, cy){
	var initialGPoint = new GLatLng(cx, cy);
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	//map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GScaleControl());

	//  ======== Add a map overview ========== 
	var overview = new GOverviewMapControl(new GSize(100, 100));
	map.addControl(overview);
	map.setCenter(initialGPoint, INIT_ZOOM_LEVEL);
	
}

function initEvents(){
	// initialize evenet handler

	GEvent.addListener(map, "moveend", function(){
		try{
			if(isInitMarker && isAutoMove == false){
				create();
			}
		} catch(e) {
			isInitMarker = true;
		}
		isAutoMove = false;
	});

	GEvent.addListener(map, "click", function(marker, point) {
		if (marker) {
		} else {
			map.closeInfoWindow();
			isInitMarker = true;
		}
	})

}

function makeUpdateToViewButton() {
    var mapDiv = document.getElementById("map");
    var mapDivs = mapDiv.childNodes;
    var imgDiv = mapDivs[0];
    var buttonDiv;
    buttonDiv = document.createElement("div");
    buttonDiv.setAttribute("id", "div_updateToView");
    buttonDiv.innerHTML = "<span id='button_updateToView'></span>";
    mapDiv.childNodes[4].appendChild(buttonDiv);
}

function setCenter(center) {
	var lat;
	var lng;
	var zoom;
	if (center == "" || center == "WONoSelectionString" || center == undefined) {
		zoom = INIT_ZOOM_LEVEL;
		lat = INIT_LAT;
		lng = INIT_LNG;
	} else {
		var tempStr = center.split(',');
		zoom = PICUP_ZOOM_LEVEL;
		lat = tempStr[1];
		lng = tempStr[2];
	}
	var centerPoint = new GLatLng(lat, lng);
	map.setCenter(centerPoint,  zoom);
}

function create() {
	var query_string = makeQueryString();
	renderingMarkers(query_string);
}

function renderingMarkers(qs){

	sm.createScenicMap(qs);

}

function moveDefaultView() {
	redrawMap(true);
	map.setCenter(new GLatLng(INIT_LAT, INIT_LNG), INIT_ZOOM_LEVEL);
}


function makeQueryString(){
	var wbounds = map.getBounds();
	var sw = wbounds.getSouthWest();
	var ne = wbounds.getNorthEast();

	var a = new Array();
	document.getElementsByClassName('landmarkClasses').each(function(landmarkClass){
		if (landmarkClass.checked == true) {
			a.push(landmarkClass.value);
		}
	});
	var landmarkClasses = a.join();

	/*var area = "";
	if ($('area').value == "" || $('area').value == "WONoSelectionString") {
	} else {
		var tempStr = $('area').value.split(',');
		area = tempStr[0];
	}*/
	
	var state = {
		'landmarkClasses' : landmarkClasses,
		//'area' : area,
		'minX' : sw.lng(),
		'maxX' : ne.lng(),
		'minY' : sw.lat(),
		'maxY' : ne.lat(),
		'seasonSpring' : ($('seasonSpring').checked) ? '1' : '',
		'seasonSummer' : ($('seasonSummer').checked) ? '1' : '',
		'seasonAutumn' : ($('seasonAutumn').checked) ? '1' : '',
		'seasonWinter' : ($('seasonWinter').checked) ? '1' : '',
		'cache' : (new Date()).getTime()
	};
	var state_hash = $H(state);
	var cond = state_hash.toQueryString();

	var qs = g_data_xml + '?' + cond;
	if (q_entryId) {
		qs += "&entryId=" + q_entryId;
	}
	
	return qs;
}

function getWindowHeight() {
	if (window.self && self.innerHeight) {
		return self.innerHeight;
	}
	if (document.documentElement && document.documentElement.clientHeight) {
		return document.documentElement.clientHeight;
	}
	return 0;
}

function resizeMap() {
	var offset = 0;
	for (var elem = document.getElementById("map"); elem != null; elem = elem.offsetParent) {
		offset += elem.offsetTop;
	}
	var windowHeight = getWindowHeight();
	var height = windowHeight - offset - 90;
	if (height >= 0) {
		document.getElementById("map").style.height = height + "px";
	}
}

function resizeList() {
	var offset = 0;
	for (var elem = document.getElementById("listarea"); elem != null; elem = elem.offsetParent) {
		offset += elem.offsetTop;
	}
	var windowHeight = getWindowHeight();
	var height = windowHeight - offset - 90;
	if (height >= 0) {
		document.getElementById("listarea").style.height = height + "px";
	}
}

/*
function GUnload() {
	if (window.GUnloadApi) {
		GUnloadApi();
	}
}
*/

//  ======== A function to adjust the positioning of the overview ========
function positionOverview(mapDiv, x, y) {
	alert(mapDiv + "_overview");
	var omap = document.getElementById(mapDiv + "_overview");
	alert();
	omap.style.left = x+"px";
	omap.style.top = y+"px";
	
	// == restyling ==
	omap.firstChild.style.border = "1px solid gray";
	
	omap.firstChild.firstChild.style.left="4px";
	omap.firstChild.firstChild.style.top="4px";
	omap.firstChild.firstChild.style.width="290px";
	omap.firstChild.firstChild.style.heigh="190px";
}

/*
//  ======== A function to adjust the positioning of the overview ========
function positionOverview(mapDiv,x,y) {
	var omap=(this.ownerDocument||document).getElementById(mapDiv.id+"_overview");
	omap.style.position = "relative";
	omap.style.left = x+"px";
	omap.style.top = y+"px";
	mapDiv.appendChild(omap);
} 
*/

function getUrlParameter(a,b){
	var c=new RegExp("&?\\b"+b+"=([^&]*)");
	var d="";
	if(c.test(a)){
		var e=c.exec(a);
		d=decodeURIComponent(debeautify(e[1]));
	}
	return d
};

function debeautify(a){
	return a.replace(/\+/g," ");
}


//]]>
