var _LONG_V = false;
var _SHORT_V = false;
var _LONG_H = false;
var _SHORT_H = false;
var currentShort;
var _DATE = new Object();
var _NOW = new Object();
var _SLIDE = new Object();

var _TT = new Array();
var _STATIONS = new Object();
var _ST_IDX = [61, 101, 102, 103, 104, 105, 106, 107, 108, 109];
var _ST_XY = new Object();
var _ST_LATLNG = new Object();

var _POINTS = new Array();

var _CURRENT_W;
var _CURRENT_H;
var _OFFSETX;
var _OFFSETY;
var _CENTER = {};
var _DEFAULT_LOCATION;
var _bounds;

var _INTERVAL = null;
var _INTERVAL_MV = new Object();

var dInterval = null;
var _FADE = null;

var _IMG = 256;
var _ZOOM = 14;
var _IGNORE_FLG = 0;
var _FUNC_FLG = false;

var _HOL_INIT_FLG = false;
var _TRACE = new Object();
_TRACE.flag = false;
_TRACE.id = 0;

var _gmap;
var _gls;

function setInitLocation(){
	_location = "Tokyo";
	_DEFAULT_LOCATION = new GLatLng(35.65394870599763, 139.6585464477539);

//	_gls.setCenterPoint(_location);	
	_gmap.setCenter(_DEFAULT_LOCATION, _ZOOM);	
	_bounds = _gmap.getBounds();
}
function rotate(){
	var h = window.innerHeight;
	var w = window.innerWidth;
	if(h == undefined){
		var h = document.body.clientHeight;
		var w = document.body.clientWidth;
	}
	var x = window.pageXOffset;
	var y = window.pageYOffset;
	_OFFSETX = x;
	_OFFSETY = y;
	var wrap_s = document.getElementById("wrapper").style;
	wrap_s.height = h  + "px";
	wrap_s.width = w  + "px";
	var map_s = document.getElementById("map").style;
	map_s.height = h  + "px";
	map_s.width = w  + "px";
	var rail = document.getElementById("rail");
	_SLIDE.lMargin = Math.round(w * 0.05) + 150 + 5 + 4;
	_SLIDE.x = Math.round(w * 0.9) - (150 + 200 + 10);
	rail.style.width = _SLIDE.x + "px";
	if(_DEFAULT_LOCATION != undefined){
		_ZOOM = _gmap.getBoundsZoomLevel(_bounds);
		_gmap.setCenter(_DEFAULT_LOCATION, _ZOOM);
		_gmap.clearOverlays();
		cancelTrace();
	}
}

function setStLatLng(){
//	_ST_LATLNG = {109,108,107,106,105,104,103,102,101,61};
//	alert(_ST_LATLNG);
	_ST_LATLNG[109] = ['35.66608287850653','139.64155197143555'];
	_ST_LATLNG[108] = ['35.6599811544156', '139.64200258255005'];
	_ST_LATLNG[107] = ['35.65386152854762', '139.6465516090393'];
	_ST_LATLNG[106] = ['35.64767168639375', '139.6449851989746'];
	_ST_LATLNG[105] = ['35.643591359152815', '139.646315574646'];
	_ST_LATLNG[104] = ['35.64348673263733', '139.6509289741516'];
	_ST_LATLNG[103] = ['35.64397498853752', '139.6552848815918'];
	_ST_LATLNG[102] = ['35.646050042827135', '139.65994119644165'];
	_ST_LATLNG[101] = ['35.644550429160944', '139.66633558273315'];
	_ST_LATLNG[61] = ['35.644097052046384', '139.66899633407593'];
}

function mapInit() {
	setWindowConst();
	rotate("cws");
	defineStation();
	if (GBrowserIsCompatible()) {
		_gmap = new GMap2(document.getElementById("map"));
		setInitLocation();
		ctrlObj = new GLargeMapControl();
		_gmap.addControl(new GMapTypeControl(),new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(20, 20)));
		_gmap.addControl(ctrlObj, new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(40, 40)));
		_SLIDE.obj = document.getElementById("slider");
		_SLIDE.obj.onmousedown = grabSlider;
		_SLIDE.obj.style.width = "15px";
		GEvent.addListener(_gmap, "drag", cancelTrace);
		triggerXmlHttp("/time.php", "get",getAllData);
	}
}

function triggerXmlHttp(url, method, func){
		_gmap.httpObj = GXmlHttp.create();
		_gmap.httpObj.open(method, url);
		_gmap.httpObj.onreadystatechange = function() {
			if ((_gmap.httpObj.readyState == 4) && (_gmap.httpObj.status == 200)){
				func();
			}
		}
		_gmap.httpObj.setRequestHeader("If-Modified-Since","Wed, 15 Nov 1995 00:00:00 GMT");
		_gmap.httpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		_gmap.httpObj.send(null);
}

function defineStation(){
	for(var i = 0; i <= _ST_IDX.length; i++){
		_STATIONS[_ST_IDX[i]] = i;
	}
}

function kickTT() {
	var xmlData = _gmap.httpObj.responseXML;
	_gmap.httpObj = null;
	var v = xmlData.getElementsByTagName("v");
//alert(v.length);
	for(var i = 0; i < v.length; i++){
		var id = v[i].getAttributeNode("id").nodeValue;
		_TT[i] = new Object();
		var item = v[i].getElementsByTagName("item");
		for(var n = 0; n < item.length; n++){
			var s= item[n].getAttributeNode("sec").nodeValue;
//alert("id" + id);
//			item[n].vid = id;
			if(_TT[i][s] == undefined){
				_TT[i][s] = new Object();
			}
			_TT[i][s] = item[n];
			_TT[i][s].setAttribute("vid", id);
		}
	}
	v = null;
	var s = xmlData.getElementsByTagName("s");
	for(var i = 0; i < s.length; i++){
		var id = s[i].getAttributeNode("id").nodeValue;
		_ST_XY[ id ] = new Object();
		var station = s[i].getElementsByTagName("station");
		for(var ii = 0; ii < station.length; ii++){
			pr = parseInt(station[ii].getAttributeNode("pr").nodeValue);
			_ST_XY[ id ][ pr ] = new Object();
			_ST_XY[ id ][ pr ].lon = parseFloat(station[ii].getAttributeNode("lon").nodeValue);
			_ST_XY[ id ][ pr ].lat= parseFloat(station[ii].getAttributeNode("lat").nodeValue);
		}
	}
	
	
	xmlData = null;	
	if(!_DATE.interval){
		_DATE.interval = setInterval("renewPlace()", 1000);
	}
}

function getAllData(){
	setDate();
	triggerXmlHttp("/xml/tt" + _NOW.isHoliday + ".xml", "get", kickTT);
}

function setDate(){
	var xmlData = _gmap.httpObj.responseXML;
	var d = new Date();
	var jsts = Math.round(d.getTime() / 1000);
	_NOW.s = parseInt(xmlData.getElementsByTagName("ts_today")[0].firstChild.nodeValue);
//alert(_gmap.httpObj.responseText);
	if(_NOW.s < 7200){
		_NOW.s += 3600 * 24;
	}
	_NOW.ts = parseInt(xmlData.getElementsByTagName("ts")[0].firstChild.nodeValue);
	_NOW.y = xmlData.getElementsByTagName("y")[0].firstChild.nodeValue;
	_NOW.m = xmlData.getElementsByTagName("m")[0].firstChild.nodeValue;
	_NOW.d = xmlData.getElementsByTagName("d")[0].firstChild.nodeValue;
	_NOW.w = parseInt(xmlData.getElementsByTagName("w")[0].firstChild.nodeValue);
	_NOW.isHoliday = parseInt(xmlData.getElementsByTagName("isHoliday")[0].firstChild.nodeValue);
	_NOW.scDiff = jsts - _NOW.ts;

//	alert(_NOW.scDiff + " " + _NOW.ts + " " + jsts);

	if(_NOW.interval == undefined){
		_NOW.interval = setInterval("cntTime()", 1000);
	}

}

function cntTime(){
	_NOW.s++;
	_NOW.ts++;
	var d = new Date();
	var jsts = Math.round(d.getTime() / 1000);
	var scDiff = _NOW.scDiff - (jsts - _NOW.ts);
//alert(scDiff + " " + _NOW.ts + " " + jsts);

	if(Math.abs(scDiff) > 2){
		if(_NOW.s + scDiff > 3600 * 26){
			clearInterval(_NOW.interval);
			_NOW.interval = null;
			triggerXmlHttp("/time.php", "get",setDate);
			return;
		}else{
			_NOW.s -= scDiff;
			_NOW.ts -= scDiff;
		}
	}
	var t = getTimeFromTs(_NOW.s);

	_NOW.h = t.h;
	_NOW.i = t.i;
	_NOW.sec = t.sec;
}

function renewPlace(){
	var myTbl     = new Array("日","月","火","水","木","金","土");
	_DATE.y = _NOW.y;
	_DATE.m = _NOW.m;
	_DATE.d = _NOW.d;
	_DATE.w = _NOW.w;
	_DATE.youbi = myTbl[_NOW.w];
	_DATE.h = _NOW.h;
	_DATE.i = _NOW.i;
	_DATE.s = _NOW.s;
	_DATE.sec = _NOW.sec;
	_DATE.isHoliday = _NOW.isHoliday;
//	_DATE.s = _DATE.s + (8*3600);
	getPlace(_DATE.s);
}

function restartCount(){
	if(!_DATE.interval){
		_DATE.interval = setInterval("renewPlace()", 1000);
	}
}

function grabSlider(e){
	if(_DATE.interval){
		clearInterval(_DATE.interval);
		_DATE.interval = null;
	}
	_SLIDE.grabbing = true;
		_SLIDE.last= Math.round((3600*22) * (parseInt(_SLIDE.obj.style.left.replace("/px/", "")) / _SLIDE.x)) + (3600 * 4);
	if(document.all){
		document.onmousemove = doSlide;
		document.onmouseup = releaseSlider;
	}else{
		addEvent(window, "mousemove", doSlide);
		addEvent(window, "mouseup", releaseSlider);
	}
	return false;
}
function releaseSlider(e){
	if(document.all){
		document.onmousemove = null;
		document.onmouseup = null;
	}else{
		rmEvent(window, "mousemove", doSlide);
		rmEvent(window, "mouseup", releaseSlider);
	}
	_SLIDE.grabbing = false;
	if(!_SLIDE.last){
	_SLIDE.last= Math.round((3600*22) * (parseInt(_SLIDE.obj.style.left.replace("/px/", "")) / _SLIDE.x)) + (3600 * 4);
	}
//	var t = getTimeFromTs(_SLIDE.last);
//	alert(_SLIDE.last + " " + t.h + ":" + t.i);
	getPlace(_SLIDE.last);
	return false;
}

function doSlide(e){
if(!_SLIDE.grabbing){
		return;
	}
	try{
		var x = e.clientX + window.pageXOffset;
	}catch(err){
		var x = window.event.clientX;
	}
	var xMargin = x - _SLIDE.lMargin;
	if(xMargin <= 0){
		xMargin = 0;
	}else if(xMargin > _SLIDE.x){
		xMargin = _SLIDE.x;
	}
	_SLIDE.obj.style.left = xMargin + "px";
	_SLIDE.last= Math.round((3600*22) * (parseInt(_SLIDE.obj.style.left.replace("/px/", "")) / _SLIDE.x)) + (3600 * 4);
	var t = getTimeFromTs(_SLIDE.last);
	var dateTxt = '<small class="today">' + _DATE.y + '年' + _DATE.m + '月' + _DATE.d + '日(';
	if(_DATE.isHoliday){
		dateTxt += '<span class="ho">' + _DATE.youbi + '</span>)</small>';
	}else{
		dateTxt += _DATE.youbi + ')</small>';
	}
//alert(dateTxt);
	document.getElementById("rightMargin").innerHTML = dateTxt  + "<br />" + t.h + ":" + t.i + ":" + t.sec;
	if(!document.all){
		getPlace(_SLIDE.last);
	}
	return false;
}

function getPlace(s){
	var po = 0;
	var timeMax = 3600 * 22;
	var ss = _SLIDE.obj.style;
	var leftPx = Math.round(5 + (_SLIDE.x  * ((s - (3600 * 4)) / timeMax)));
	if(leftPx > _SLIDE.x){
		leftPx = _SLIDE.x - parseInt(ss.width.replace("px", ""));
	}else if(leftPx <= 0){
		leftPx = 5;
	}
//	alert(_SLIDE.x + " " + parseInt(ss.width.replace("px", "")));
	ss.left = leftPx + "px";
	var ids = new Array();
	var ii = 0;
	var wrap = document.getElementById("trWrapper");
	wrap.innerHTML = "";
//	_gmap.clearOverlays() ;
	for(var i = 0; i < _POINTS.length; i++){
		_gmap.removeOverlay(_POINTS[i]);
	}
	for(var i = 0; i < _TT.length; i++){
		var p = s;
		var ii = 0;
		while(_TT[i][p] == undefined && p >= 0 && ii < 600){
			p--;
			ii++;
		}
		if(_TT[i][p] == undefined){
//alert("not found");
			continue;
		}else{
//			alert("time" + p);
		}
		var _train = _TT[i][p];
		var train = new Object();
		var diff = s - p;
		train.d = parseInt(_train.getAttributeNode("dir").nodeValue);
//		alert(train.d);
		train.k = _train.getAttributeNode("k").nodeValue;
		train.st = parseInt(_train.getAttributeNode("st").nodeValue);
		train.tid = _train.getAttributeNode("tid").nodeValue;
		train.sec = _train.getAttributeNode("sec").nodeValue;
		train.h = _train.getAttributeNode("h").nodeValue;
		train.m = _train.getAttributeNode("m").nodeValue;
		train.l = _train.getAttributeNode("l").nodeValue;
		train.vid = _train.getAttributeNode("vid").nodeValue;
		if(train.d == 1 && train.k == 1 && train.st == 106){
			if(diff > 105){
				continue;
			}
			var st_diff = 105;
		}else if(train.d == 2 && train.k == 1 && train.st == 104){
			if(diff > 45){
				continue;
			}
			var st_diff = 45;
		}else{
			var n = s + 1;
			while(_TT[i][n] == undefined && n <= 26 * 3600){
				n++;
			}
			var next_train = _TT[i][n];
			if(train.d == 1 && train.st == 101){
//				if(diff > 60){
//					continue;
//				}
				var st_diff = 60;
			}else if(train.d == 2 && train.st == 108){
//				if(diff > 120){
//					continue;
//				}
				var st_diff = 120;
			}else{
				var st_diff = (n - p);
				diff -= 15;
			}
		}
		var per = Math.round((diff / st_diff) * 100);
		if(per > 100){
			per = 100;
		}
		if(per < 0){
			per = 0;	
		}
		if(train.d == 1){
			train.std_station = train.st;
			train.percent = per;
//			train.scale = (parseInt(_STATIONS[train.std_station]) * 10) - parseInt((train.percent / 10));
			train.scale = (parseInt(_STATIONS[train.st]) * 10) - Math.floor(train.percent / 10) + 2;
		}else{
			train.std_station = _ST_IDX[_STATIONS[train.st]+1];
			train.percent = per;
//			train.percent = 100 - per;
//			train.scale = (parseInt(_STATIONS[train.std_station]) * 10) + parseInt((train.percent / 10));
			train.scale = (parseInt(_STATIONS[train.st]) * 10) + Math.floor(train.percent / 10) + 2;
		}
		var obj = document.getElementById("t_" + train.vid);

		if(train.d == 2){
			var map_station_id = train.st;
			var map_per = Math.round(train.percent / 10) * 10;
		}else{
			var map_station_id = getNextStation(train.st, train.d);
			var map_per = 100 - (Math.round(train.percent / 10) * 10);
		}
		if(obj){
//			var span = obj.getElementsByTagName("span")[0];
//			span.innerHTML = train.vid + "<br />" + train.d + "." + train.m + " " + train.scale + " " + train.st + " " + train.percent;
			var img = obj.getElementsByTagName("img")[0];
			img.title = train.vid + " " + train.d + " " + train.h + "." + train.m + " " + train.scale+ " " + train.st + " " + train.percent;
			img.src = "/img/t_" + train.d + ".png";
//alert(img.src);
			obj.style.top = train.scale + "%";

		}else{
			var wrap = document.getElementById("trWrapper");
			var div = document.createElement("div");
			div.style.position = "absolute";
			div.style.left = "0px";
			div.style.top = train.scale + "%";
			div.style.color = "#fff";
			div.style.fontSize = "8px";
			div.style.cursor = "pointer";
			div.setAttribute("id", "t_" + train.vid);
			div.style.width = "36px";			
			div.style.height = "14px";
			div.vid = train.vid;			
			div.onclick = doTrace;
			var img = document.createElement("img");
			img.src = "/img/t_" + train.d + ".png";
			img.style.left="23px";
//			img.title = train.vid + " " + train.d + " " + train.h + "." + train.m + " " + train.scale+ " " + train.st + " " + train.percent;
			img.title = "クリックで追跡";
//			div.innerHTML = "<span>" + train.vid + "<br />" + train.d + "." + train.m + " " + train.scale+ " " + train.st + " " + train.percent + "</span>";
			div.appendChild(img);
			wrap.appendChild(div);

/**
*	Mapping
*/

			var lon = _ST_XY[ map_station_id ][ map_per ].lon;
			var lat = _ST_XY[ map_station_id ][ map_per ].lat;
			var point = new GLatLng(lat, lon);
			var marker = new GMarker(point);
			marker.vid = train.vid;
			marker.lat = lat;
			marker.lng = lon;
			div.lat = lat;
			div.lng = lon;
			_POINTS[po] = marker;
			if(_TRACE.id == train.vid){
				_gmap.setCenter(point);	
				div.style.background = "#999";
			}else{
				div.style.background = "transparent";
			}
			GEvent.addListener(_POINTS[po],'click',doTrace);
			_gmap.addOverlay(_POINTS[po]);
			po++;
		}
		ids[ii] = train.vid;
		ii++;
	}
	var t = getTimeFromTs(s);
	var dateTxt = '<small class="today">' + _DATE.y + '年' + _DATE.m + '月' + _DATE.d + '日(';
	if(_DATE.isHoliday){
		dateTxt += '<span class="ho">' + _DATE.youbi + '</span>)</small>';
	}else{
		dateTxt += _DATE.youbi + ')</small>';
	}

	document.getElementById("rightMargin").innerHTML = dateTxt + '<br />' + t.h + ":" + t.i + ":" + t.sec;

}

function cancelTrace(){
	if(_TRACE.id){
		var old = document.getElementById("t_" + _TRACE.id);
		if(old){
			old.style.background = "transparent";
		}
		_TRACE.id = 0;
		_TRACE.flag = false;
	}
}

function doTrace(){
	if(_TRACE.id){
		var old = document.getElementById("t_" + _TRACE.id);
		if(old){
			old.style.background = "transparent";
		}
	}
	if(_TRACE.id != this.vid){
		var n = document.getElementById("t_" + this.vid);
		n.style.background = "#999";
		_TRACE.id = this.vid;
		_TRACE.flag = true;
		var loc = new GLatLng(this.lat, this.lng);
		_gmap.setCenter(loc, 19);
	}else{
		_TRACE.id = 0;
		_TRACE.flag = false;
		_gmap.setCenter(_DEFAULT_LOCATION, _ZOOM);	
	}
}

function getNextStation(stid, direction){
	if(direction == 1){
		stid--;
	}else{
		stid++;
	}
	switch(stid){
		case 62:
			stid = 101;
		break;
		case 100:
			stid = 61;
		break;
		case 110:
			stid = 108;
		break;
	}
	return stid;
}

function getTimeFromTs(s){
	var h = Math.floor(s / 3600);
	h = h.toString();
	var i = Math.floor((s - (3600 * h)) / 60);
	i = i.toString();
	var sec = s - ((3600 * h) + (60 * i));
	sec = sec.toString();
	if(sec.length == 1){
		sec = "0" + sec;
	}
	if(h.length == 1){
		h = "0" + h;
	}
	if(i.length == 1){
		i = "0" + i;
	}
	var result = new Object;
	result.h = h;
	result.i = i;
	result.sec = sec;
	return result;
}

function goTo(idx){
		document.getElementById("c").focus();
	 	document.s.style.display = "block";
	 	document.select.style.display = "none";
	if(idx == "cancel"){
	 	return false;
	}
	var tgt = _gls.results[idx];
	var lat = parseFloat(tgt.lat);
	var lng = parseFloat(tgt.lng);
//	rotate("cws");
//	var it = setTimeout("panTo(" + lat + "," + lng + ")", 2000);
 	panTo(lat, lng);
 	return false;
}

function panTo(lat, lng){
	_gmap.setCenter(new GLatLng(lat, lng), _ZOOM);
}

function setWindowConst(){
	var h = window.innerHeight;
	var w = window.innerWidth;
	if(h > w){
		_LONG_V = h;
		_SHORT_V = w;
	}else{
		_LONG_H = w;
		_SHORT_H = h;
	}
}


function replaceMovePanels(){
	var w = Math.floor(currentShort / 3);

	var div = document.getElementById("move").getElementsByTagName("div");
	var i;

	var wh = window.innerHeight;
	var ww = window.innerWidth;

	var left = 0;
	var center = Math.round((ww / 2) - (w / 2));
	var right = ww - w;
	var top = 0;
	var middle = Math.round((wh / 2) - (w / 2));
	var bottom = wh - w;
	
	var hScheme = [left, center, right, left, center, right, left, center, right];
	var vScheme = [top,top,top,middle,middle,middle,bottom,bottom,bottom]
	
	for(i = 0; i < div.length; i++){
		div[i].style.width = w + "px";
		div[i].style.height = w + "px";
		div[i].style.left = hScheme[i] + "px";
		if(i < 6){
			div[i].style.top = vScheme[i] + "px";
		}else{
			div[i].style.bottom = "0px";
		}
	}
}

function triggerFade(tgtId, opacity, speed, ms){
	_FADE = setInterval("fade('" + tgtId + "'," + opacity + "," + speed + ")", ms);
}

function fade(tgtId, opacity, speed){
	speed = speed / 10;
	tgt = document.getElementById(tgtId);
	var op = parseFloat(tgt.style.opacity);
	if(!opacity){
		opacity = 0;
	}
	if(op == opacity){
		clearInterval(_FADE);
		_FADE = null;
		return;
	}else	if(!op){
		op = 0;
	}
	if(opacity > op){
		if(op + speed > opacity){
			tgt.style.opacity = opacity;	
		}else{
			tgt.style.opacity = op + speed;
		}

	}else if(opacity < op){
		if(op - speed < opacity){
			tgt.style.opacity = opacity;	
		}else{
			tgt.style.opacity = op - speed;
		}
	}
}

function waitWinMove(){
	var h = window.innerHeight;
	var w = window.innerWidth;
	if(parseInt(document.getElementById("map").style.height.replace("/px/", "")) == h){
//alert("xxx"+h);
//	window.scrollTo(0, 60);
		clearInterval(_INTERVAL);
		_INTERVAL= null;
		_CURRENT_H = h;
		_CURRENT_W = w;	
		execCheckWin();
	}
}

function checkWinState(){
	var h = window.innerHeight;
	var w = window.innerWidth;
//	document.getElementById("map").innerHTML = "<br><br><br><br>" + _IGNORE_FLG + "<br>" + _CURRENT_H + "<br>" + h; 
	if(_CURRENT_H != h || _CURRENT_W != w){
		if(_CURRENT_H == undefined || _CURRENT_W == undefined){
			_CURRENT_W = w;	
			_CURRENT_H = h;
			return;
		}
		_CURRENT_W = w;	
		_CURRENT_H = h;
		rotate("cws");
	}
}

function execCheckWin(){
	_INTERVAL = setInterval("checkWinState()", 500);
}

function triggerMoveObj(tgtId, distX, distY, speed, ms, funcName){
	if(_INTERVAL_MV[tgtId] != undefined && _INTERVAL_MV[tgtId] != null){
		setTimeout("triggerMoveObj('" + tgtId + "'," + distX + "," + distY + "," + speed + "," + ms + "," + funcName + ")", 100);
		return false;
	}
	_INTERVAL_MV[tgtId] = setInterval("moveObj('" + tgtId + "','" + distX + "','" + distY + "'," + speed + ", " + funcName + ")", ms);
	return true;
}

function moveObj(tgtId, distX, distY, speed, func){
	var d = document;
	var obj = d.getElementById(tgtId);
	var left = parseInt(obj.style.left);
	var top = parseInt(obj.style.top);
	if(!left){
		left = 0;
	}
	if(!top){
		top = 0;
	}
	var lengthX = distX - left;
	var lengthY = distY - top;
	var i;
	var flg_mx = false;
	var flg_my = false;
	if(lengthX != 0 && Math.abs(lengthX) <= speed){
		if(lengthX > 0){
			var moveX = 1;
		}else{
			var moveX = -1;
		}
		flg_mx = true;
	}
	if(lengthY != 0 && Math.abs(lengthY) <= speed){
		if(lengthY > 0){
			var moveY = 1;
		}else{
			var moveY = -1;
		}
		flg_my = true;
	}
	for(i = speed; i > 0; i-- ){
		if(!flg_mx){
			var moveX = lengthX / speed;
		}
		if(!flg_my){
			var moveY = lengthY / speed;
		}
		if(moveX > 0){
			flg_mx = true;
		}
		if(moveY > 0){
			flg_my = true;
		}
		if(flg_mx && flg_my){
			break;
		}
	}
	var nextX = left + Math.ceil(moveX);
	var nextY = top + Math.ceil(moveY);
//alert(moveY);
	if((nextX > distX && moveX > 0) || (nextX < distX && moveX < 0) || (moveX < 1 && moveX > -1)){
		nextX = distX;
	}
	if(nextY > distY && moveY > 0 || (nextY < distY && moveY < 0) || (moveY < 1 && moveY > -1)){
		nextY = distY;
//alert("t:" + top + "x: " + lengthY + "s: " + speed + "m " + moveY + "n " + nextY);
	}

	obj.style.left = nextX + "px";
	obj.style.top = nextY + "px";
	if(nextX == distX && nextY == distY){
		clearInterval(_INTERVAL_MV[tgtId]);
		_INTERVAL_MV[tgtId] = null;
		if(func != undefined){
			func();
		}
	}

}

function stAction(){
	var img = document.getElementById("stWrapper").getElementsByTagName("img");
	var i;
	for(i = 0; i < img.length; i++){
		img[i].onclick = getStInfo;
		img[i].style.cursor = "pointer";
	}
}
function getStInfo(){
	cancelTrace()
	setStLatLng();
	var stno = this.src.match(/[0-9]+/);
	_gmap.setCenter(new GLatLng(_ST_LATLNG[stno][0], _ST_LATLNG[stno][1]), 17);
	triggerXmlHttp("/getNear.php?st=" + stno, "get", drawInfo);

//	alert(stno);
}

function getnode(obj, tagName){
	var val = obj.getElementsByTagName(tagName);
	var res = "";
	if(val.length > 0){
		if(val[0].firstChild){
			res = val[0].firstChild.nodeValue;
		}
	}
	return res;
}
function drawInfo(){
		var xmlData = _gmap.httpObj.responseXML;
		var item = xmlData.getElementsByTagName("Item");
		var i;
//alert(_gmap.httpObj.responseText);
//alert(item.length);
		var m = new Array();
		for(i = 0; i < item.length; i++){
			var cat = item[i].getElementsByTagName("Category")[0].firstChild.nodeValue;
			var name = item[i].getElementsByTagName("RestaurantName")[0].firstChild.nodeValue;
			var url = item[i].getElementsByTagName("TabelogUrl")[0].firstChild.nodeValue;
			var tel = item[i].getElementsByTagName("Tel")[0].firstChild.nodeValue;
			var hour = getnode(item[i], "BusinessHours");
			var holiday = getnode(item[i], "Holiday");
			var address = getnode(item[i], "Address");
			
			if(item[i].getElementsByTagName("TotalScore")[0].firstChild){
				var score = parseFloat(item[i].getElementsByTagName("TotalScore")[0].firstChild.nodeValue);
			}else{
				var score = 0;	
			}
			var iconX = 52;
			if(score < 1){
				var suffix = "";
				iconX = 28;
			}else if(score < 2){
				var suffix = "1";
			}else if(score < 3){
				var suffix = "2";
			}else if(score < 4){
				var suffix = "3";
			}else if(score < 5){
				var suffix = "4";
			}else{
				var suffix = "5";
			}
			if(cat.match("カフェ") || cat.match("喫茶")){
				var iconName = "cafe" + suffix + ".gif";
			}else if((cat.match("バー") && !cat.match("ハンバーガー") && !cat.match("ハンバーグ")) || cat.match("酒") || cat.match("焼酎")){
				var iconName = "krog" + suffix + ".gif";
			}else{
				var iconName = "rest" + suffix + ".gif";
			}
			var lat = parseFloat(item[i].getElementsByTagName("Latitude")[0].firstChild.nodeValue);
			var lng = parseFloat(item[i].getElementsByTagName("Longitude")[0].firstChild.nodeValue);
			var icon = new GIcon();
			icon.image   = "/img/" + iconName;
			icon.shadow  = null;
			icon.iconSize   = new GSize(iconX, 28);
			icon.shadowSize   = new GSize(1,1);
			icon.iconAnchor = new GPoint(26,14);
			icon.infoWindowAnchor = new GPoint(10, 1);	
			m[i] = new GMarker(new GLatLng(lat, lng), icon);
			m[i]._name = name;
			m[i]._url = url;
			m[i]._tel = tel;
			m[i]._cat = cat;
			m[i]._hour = hour;
			m[i]._holiday = holiday;
			m[i]._address = address;
			var eve = "click"
			GEvent.addListener(m[i], eve, function() {
				if(this._hour){
					var eigyo_str = "営業時間：" + this._hour + "<br />";
				}else{
					var eigyo_str = "";
				}
				if(this._holiday){
					var hol_str = "休み：" + this._holiday;
				}else{
					var hol_str = "";
				}
				if(this._address){
					var add_str = "所在地：" + this._address + "<br />";
				}else{
					var add_str = "";
				}
				if(this._tel == "非公開"){
					var tel_str = "";
				}else{
					var tel_str = "<br />" + this._tel;
				}
    			this.openInfoWindowHtml("<div class='baloon'><h4>【"+this._cat+"】</h4><div><a href='" + this._url + "' target='_blank'>" + this._name + "</a>" + tel_str + "<div class='eigyou'>" + add_str + eigyo_str + hol_str  + "</div></div></div>");
			});
			_gmap.addOverlay(m[i]);
//			alert("/img/" + iconName);
		}
		
}

function dialog(url){
	triggerXmlHttp(url + ".txt", "GET", showDialog);
	return false;
}
function showDialog(){
	var html = _gmap.httpObj.responseText;
	var nt = document.getElementById("navTgt");
	var nf = document.getElementById("navFrame");
	nf.innerHTML = "";
	nt.style.display = "block";
	var div = document.createElement("div");
	div.setAttribute("id", "navTgtInner");
	div.style.width = "100%";
	div.style.height = "100%";
	div.style.top = "-800px";
	div.innerHTML = html;
	nf.appendChild(div);
	triggerMoveObj("navTgtInner", 0, 0, 13, 15);
}
function cDialog(){
	var h = window.innerHeight;
	var w = window.innerWidth;
	if(h == undefined){
		var h = document.body.clientHeight;
		var w = document.body.clientWidth;
	}
	triggerMoveObj("navTgtInner", 0, h + 1, 13, 15, function(){	var nt = document.getElementById("navTgt");nt.style.display = "none";});
	
}

addEvent(window, "load", mapInit);
addEvent(window, "load", stAction);
addEvent(window, "resize", rotate);
//addEvent(window, "load", execCheckWin);
//addEvent(window, "scroll", replaceMovePanels);
