// ************************************************************************************************
// ************   Make FireFox Support "innerText" Property Of Span Or DIV   **********************
// ************************************************************************************************
function isIE(){ //ie?   
if (window.navigator.userAgent.toLowerCase().indexOf("msie")>=1)   
    return true;   
else   
    return false;   
}   
  
if(!isIE()){ //firefox innerText define  
    HTMLElement.prototype.__defineGetter__("innerText",   
    function(){  
        var anyString = "";  
        var childS = this.childNodes;  
        for(var i=0; i<childS.length; i++) {
            if(childS[i].nodeType==1)  
                anyString += childS[i].innerText;  
            else if(childS[i].nodeType==3)  
                anyString += childS[i].nodeValue;  
        }  
        return anyString;  
    }   
    );   
    HTMLElement.prototype.__defineSetter__("innerText",   
    function(sText){  
        this.textContent=sText;
    }   
    );   
} 
// ************************************************************************************************
// ************************************************************************************************

var maxSpot = 5;

// the message array of checking user's input values(include start location and the end location)
var CheckUsersInputErrorMessage = new Array("", "");
// the checked result of checking user's input values(include start location and the end location)
var CheckUsersInputResult = new Array(true, true);

// start information :include spots and stations
var startInformation;
// arrive information :include spots and stations
var arvInformation;

var travelByFeet = new Array();
travelByFeet["SECONDS1S"] = -1;
travelByFeet["SECONDS2S"] = -1;
travelByFeet["SECONDS1A"] = -1;
travelByFeet["SECONDS2A"] = -1;

var firstStartSpot = "";
var firstArvSpot = "";

/* Function Name		:	redrawTxtStyle
 * Params						: なし 
 * Brief						:	redrawTxtStyle
 * Return Value			:	なし

 */
function redrawTxtStyle(){
	if(($("choosed_start_spot").value == $("dep_node").value) && ($("dep_node").value != "")){
		$("dep_node").style.backgroundColor = "SkyBlue";
	}else{
		$("dep_node").style.backgroundColor = "white";
	}
	
	if(($("choosed_end_spot").value == $("arv_node").value) && ($("arv_node").value != "")){
		$("arv_node").style.backgroundColor = "SkyBlue";
	}else{
		$("arv_node").style.backgroundColor = "white";
	}
}


/* Function Name		:	setStyleWhenChange
 * Params						: なし 
 * Brief						:	setStyleWhenChange
 * Return Value			:	なし

 */
function setStyleWhenChange(){
	if(!isIE()){
		window.onpageshow = redrawTxtStyle;
		
		$("dep_node").addEventListener("input",changeEditStatus,false);
		$("arv_node").addEventListener("input",changeEditStatus,false);	
	}else{
		$("dep_node").attachEvent("onpropertychange",changeEditStatus);
		$("arv_node").attachEvent("onpropertychange",changeEditStatus);
	}
}

/* Function Name		:	removeStyleWhenChange
 * Params						: なし 
 * Brief						:	removeStyleWhenChange
 * Return Value			:	なし

 */
function removeStyleWhenChange(){
	if(!isIE()){
		window.onpageshow = redrawTxtStyle;
		
		$("dep_node").removeEventListener("input",changeEditStatus,false);
		$("arv_node").removeEventListener("input",changeEditStatus,false);	
	}else{
		$("dep_node").detachEvent("onpropertychange",changeEditStatus);
		$("arv_node").detachEvent("onpropertychange",changeEditStatus);
	}
}


/* Function Name		:	initialize
 * Params						: なし 
 * Brief						:	initialize
 * Return Value			:	なし
 */
function initializeStyle() {
  setStyleWhenChange();
  redrawTxtStyle();
}

/* Function Name		:	doIndexSearch
 * Params						: なし
 * Brief						:	doIndexSearch
 * Return Value			:	なし
 */
function doIndexSearch(){
	var validInputSug = "";
	
	var tipCtrl = $("CKTIPFrm");
	if(typeof(tipCtrl) != "undefined" && tipCtrl != null){
		document.body.removeChild($("CKTIPFrm"));
	}
	
	if($("choosed_start_spot").value == $("dep_node").value && $("gm_dep_lat").value != "" && $("gm_dep_lng").value !=""){
		validInputSug = "S:0";
	}else if($("suggest_start_spot").value == $("dep_node").value){
		validInputSug = "S:1";
	}else{
		//validInputSug = "S:2";
		validInputSug = "S:1";
	}
	
	validInputSug += ";";
	
	if($("choosed_end_spot").value == $("arv_node").value && $("gm_arv_lat").value != "" && $("gm_arv_lng").value !=""){
		validInputSug += "A:0";
	}else if($("suggest_end_spot").value == $("arv_node").value){
		validInputSug += "A:1";
	}else{
		//validInputSug += "A:2";
		validInputSug += "A:1";
	}
	
	$("valid_isFromSuggest").value = validInputSug;
	
	searchRoute();
}

/* Function Name		:	GetScrollTop
 * Params						: なし
 * Brief						:	GetScrollTop
 * Return Value			:	なし

 */
function GetScrollTop(){
	var scTop;   
    if (typeof window.pageYOffset != 'undefined') {
        scTop = window.pageYOffset;          }
    else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
        scTop = document.documentElement.scrollTop;  }
    else if (typeof document.body != 'undefined') {
        scTop = document.body.scrollTop;   } 
        
    return scTop;
}



// *******************************************************************************************************************
// *******************************************************************************************************************
// window instance
var gm_window = null;

// 地点指定のWindowsを開く
function openMapWindow(deparv) {
	if(!checkGMapValid()){
	  	alert(HYP_GMAP_MESSAGE["007"]);
	  	return;
	}
	
	var tipCtrl = $("CKTIPFrm");
	if(typeof(tipCtrl) != "undefined" && tipCtrl != null){
		document.body.removeChild($("CKTIPFrm"));
	}
	
	// 出発地点 or 到着地点
	dest_type = $("gm_dest_type");
	// hiddenのinputに設定(Windowから使用される)
	dest_type.value = deparv;

	// WindowのTitle
	var titleStr = ""
		if(deparv == "dep") {
			titleStr = "出発地点の設定";
		} else {
			titleStr = "到着地点の設定";
		}

	// Windowの高さ (既定値=600)
	var windowHeight = 600;
	// Browserの高さ
	clHeight = document.documentElement.clientHeight;
	// 取得できた場合
	if(document.documentElement.clientHeight) {
		// 0.9を掛けた高さにする
		windowHeight = clHeight * 0.9;
	}

	// Windowの生成
	gm_window = new Window({url: "./cgi/ja/googlemaps.html", className: "alphacube", title: titleStr, width:800, height: windowHeight, destroyOnClose: false, recenterAuto:false});

	// Windowの表示
	gm_window.showCenter(true); 
}

// Google Maps Windowから地点を設定する
function setNode(deparv, nodename, lat, lng) {
	// 出発地点設定の場合
	if(deparv == "dep") {
		nodeText = $("dep_node");
		nodeLat = $("gm_dep_lat");
		nodeLng = $("gm_dep_lng");
		// 到着地点設定の場合
	} else {
		nodeText = $("arv_node");
		nodeLat = $("gm_arv_lat");
		nodeLng = $("gm_arv_lng");
	}

	// それぞれformに値を設定
	nodeText.__oldquery = encodeURI(nodename);
	nodeText.value = nodename;
	nodeText.style.backgroundColor = "SkyBlue";
	nodeLat.value = lat;
	nodeLng.value = lng;
	
	if(deparv == "dep") {
		$("choosed_start_spot").value = nodename;
	}else{
		$("choosed_end_spot").value = nodename;
	}

	// Google Maps Windowを閉じる
	gm_window.close(gm_window.getId());
}

// Google Maps Windowを閉じる
function closeGmWin() {
	// Google Maps Windowを閉じる
	gm_window.close(gm_window.getId());
}

// changeEditStatus
function changeEditStatus(ev){		
	var srcCtrl;	
	var browserTest = isIE();
	
	if(browserTest){
		srcCtrl = ev.srcElement;
	}else{
		srcCtrl = ev.target;
	}
	
	var id = srcCtrl.id;
	
	if(browserTest && ev.propertyName.toLowerCase() != "value"){
		ev.returnValue = false;
		return;
	}
	
	srcCtrl.style.backgroundColor = "white";
	
	if(id == "dep_node"){		
		$("choosed_start_spot").value = "";
		$("gm_dep_lat").value = "";
		$("gm_dep_lng").value = "";
		
		$("suggest_start_spot").value = "";
	}else{
		$("choosed_end_spot").value = "";
		$("gm_arv_lat").value = "";
		$("gm_arv_lng").value = "";
		
		$("suggest_end_spot").value = "";
	}
}

// reverse all information about dep_node and arv_node
function reserverAllInfoAboutNode(){
	var depLat = $("gm_dep_lat").value;
	var depLng = $("gm_dep_lng").value;
	var depSuggest = $("suggest_start_spot").value;
	var depChoosed = $("choosed_start_spot").value;
	
	var arvLat = $("gm_arv_lat").value;
	var arvLng = $("gm_arv_lng").value;	
	var arvSuggest = $("suggest_end_spot").value;
	var arvChoosed = $("choosed_end_spot").value;
	
	// reverse
	$("gm_dep_lat").value = arvLat;
	$("gm_dep_lng").value = arvLng;
	$("suggest_start_spot").value = arvSuggest;
	$("choosed_start_spot").value = arvChoosed;
	
	$("gm_arv_lat").value = depLat;
	$("gm_arv_lng").value = depLng;
	$("suggest_end_spot").value = depSuggest;
	$("choosed_end_spot").value = depChoosed;	
	
	redrawTxtStyle();
	setStyleWhenChange();
}

// setSpotFromCookie
function setSpotFromCookie(valueStr, node) {
	var vSpotAry = valueStr.split("|");
	var id = node.id;
	
	var nLat = null;
	var nLng = null;
	var nName = vSpotAry[0];
	var vlng = vSpotAry[1];
	var vlat = vSpotAry[2];
	
	if(!checkGMapValid() && vlng != "" && vlat != ""){
		alert(HYP_GMAP_MESSAGE["007"]);
	  	return;
	}
	// 出発地点設定の場合
	if(id == "dep_node") {		
		nLat = $("gm_dep_lat");
		nLng = $("gm_dep_lng");
		// 到着地点設定の場合
	} else {
		nLat = $("gm_arv_lat");
		nLng = $("gm_arv_lng");
	}

	// それぞれformに値を設定
	node.__oldquery = encodeURI(nName);
	node.value = nName;
	node.style.backgroundColor = "SkyBlue";
	nLat.value = vlat;
	nLng.value = vlng
	
	if(id == "dep_node") {
		$("choosed_start_spot").value = nName;
	}else{
		$("choosed_end_spot").value = nName;
	}
}

