

// 共通関数
/**
 * inputタグ、selectタグ全てに対して、入力可否設定を行う
 * @param boolean disabled true:入力不可 /false:入力可
 */
function disabledInput(disabled) {
	if (disabled) {
		$("input").attr("disabled", "disable");
		$("select").attr("disabled", "disable");
	} else {
		$("input").attr("disabled", "");
		$("select").attr("disabled", "");
	}
}

/**
 * SELECTタグ内に格納されているオプションのvalueを全て抜き出し
 * カンマ区切り文字列にして返す
 */
function getOptionValues(selectTagId) {
	var sta = '';
	$(selectTagId).children().each(function() {
		sta += this.value + ",";
	});
	if (sta.length > 0) {sta= sta.substring(0, sta.length - 1);}

	return sta;
}

/**
 * 選択しているチェックボックスのvalueを
 * カンマ区切り文字列にして返す
 * @param {string} checkBoxName 対象のチェックボックス名（name属性)
 */
function getSelectedCheckboxValue(checkBoxName) {
	var room = '';
	checkObj = $("input[@name='" + checkBoxName + "'][@checked]");
	
	if (checkObj.size() > 0) {
		checkObj.each(function() {
				room += this.value + ",";
		});
		room = room.substring(0, room.length - 1);
	}
	
	return room;
}

/**
 * QUERYパラメータを読み取って、
 * 連想配列に格納して戻す
 */
function getQueryParams()
{
 var qs=location.search;
 if (qs) {
  var qsa=qs.substring(1).split('&');
  var params={};
  for(var i=0; i<qsa.length; i++) {
   var pair=qsa[i].split('=');
   if (pair[0]) {
    params[pair[0]]=decodeURIComponent(pair[1]);
   }
  }
  return params;
 }
 return null;
}

/**
 * 配列をカンマ区切り文字列にして戻す
 * @param {array} arr 文字列配列
 */
function getArrayValues(arr) {
	var result = '';
	if (arr.length > 0) {
		$.each(arr, function(value) {
			result += this + ",";
		})
		result = result.substring(0, result.length - 1);	
	}
	return result;

}


/**
 * 連想配列を全てつなげてQUERYSTRING文字列を作成する
 * @param {array} parameters
 */
function toQueryString(parameters) {
	var s = '';
	for (var key in parameters) {
  		s += key + "=" + parameters[key] + "&";
	}
	
	if (s.length > 0) {s= s.substring(0, s.length - 1);}
	
	return s;
}

/**
 * クッキーから指定したキーの値を取得する。
 * キーが見つからない場合は、Nullを返す。
 * 
 * @param {string} key クッキーのキー
 * @return string 値(unescape済み)
 */
function getCookieValue(key)
{
	ck = document.cookie.split("; "); 

	for (i = 0; i < ck.length; i++) {
		data = ck[i].split("=");
		if (data[0] == key) {
			val = decodeURIComponent(data[1]);
			return val;
		}
	}
	
	return null;

}

function setCookieValue(key, value)
{
	if (value) {
		document.cookie = key + "=" + encodeURIComponent(value) + ";";
	}
}

function removeCookieValue(arr)
{
	$.each(arr, function(key, value) {
		document.cookie = value + '= ; expires=' + (new Date(1999, 0, 1)).toGMTString();
	});
}

function removeCookieAllState(isSessionDeleted)
{
	arr = new Array( /*'a_pre_sel',*/ 'a_seladdr',
					 'jp_corp','jp_media_sel','jp_pre','jp_room',
					 'mp_pos','rt_selsta','sc_list','sc_list_inf','sc_list_sel','sc_name','sc_pos',
					 'st_corp','st_corp_sel','st_line','st_line_sel','st_pre_sel','st_selsta',
					 'st_sta1','st_sta2','st_sta_sel',
					 'ta_addr','ta_addr1','ta_addr2','ta_addr_sel','ta_pre_sel','ta_seladdr',
					 'tmp_pos','tmp_scl', 
					 'tr_candidate','tr_candidate_sel','tr_line','tr_line_sel','tr_name','tr_station','tr_station_sel','tr_target',
					 'tr_target_sel','tr_time_sel',
					 'tsc_list','tsc_list_inf','tsc_list_sel','tsc_name','tsc_pos','tsc_scl',
					 'tst_corp','tst_corp_sel','tst_line','tst_line_sel','tst_pre_sel','tst_selsta','tst_sta1','tst_sta2', 'tst_sta_sel',
					 'a_map_l' /*, 'a_map_c'*/ );

	removeCookieValue(arr);
	
	// [通勤・通学時間から探す]画面以外はセッションを破棄
	if (true != isSessionDeleted) {
		$.ajaxSetup({async : false});
		$.get("ajax.php", { action : "transit_session", mode: "remove"} );
	}
}

function select_serialize(selId)
{
	result = '';
	$(selId + " option").each(function() {
    	result += this.value + ":" + this.innerHTML + ",";
	});
	if (result.length > 0) {result= result.substring(0, result.length - 1);}
	
	return result;
}

function select_deseiralize(data)
{
	result = '';
	split = data.split(",");
	$.each(split, function(key, value) {
		temp = value.split(":");
		result += "<option value=" + temp[0] +">" + temp[1] + "</option>\n";
	});
	
	return result;
}

/**
 * オプションの選択状態を設定する。
 * @param {JQuery Object} obj 選択状態にするoptionオブジェクト
 */
function option_selected(obj)
{
	if (isMSIE()) {
		obj.each(function() {this.setAttribute("selected", true);});
	} else {
		obj.attr("selected", "selected");
	}
}

/**
 * SELECTボックスを非選択状態にする
 * @param {JQuery Object} objSelect SELECTオブジェクト
 */
function select_release(objSelect)
{
	objSelect.each(function(){this.selectedIndex = -1;});
}

/**
 * IEかどうかを判別する
 */
function isMSIE()
{
	return /*@cc_on!@*/false; 
}

//URLエンコード
function encodeURL(str) {
  var character = '';
  var unicode   = '';
  var string    = '';
  var i         = 0;

  for (i = 0; i < str.length; i++) {
    character = str.charAt(i);
    unicode   = str.charCodeAt(i);

    if (character == ' ') {
      string += '+';
    } else {
      if (unicode == 0x2a || unicode == 0x2d || unicode == 0x2e || unicode == 0x5f || ((unicode >= 0x30) && (unicode <= 0x39)) || ((unicode >= 0x41) && (unicode <= 0x5a)) || ((unicode >= 0x61) && (unicode <= 0x7a))) {
        string = string + character;
      } else {
        if ((unicode >= 0x0) && (unicode <= 0x7f)) {
          character   = '0' + unicode.toString(16);
          string += '%' + character.substr(character.length - 2);
        } else if (unicode > 0x1fffff) {
          string += '%' + (oxf0 + ((unicode & 0x1c0000) >> 18)).toString(16);
          string += '%' + (0x80 + ((unicode & 0x3f000) >> 12)).toString(16);
          string += '%' + (0x80 + ((unicode & 0xfc0) >> 6)).toString(16);
          string += '%' + (0x80 + (unicode & 0x3f)).toString(16);
        } else if (unicode > 0x7ff) {
          string += '%' + (0xe0 + ((unicode & 0xf000) >> 12)).toString(16);
          string += '%' + (0x80 + ((unicode & 0xfc0) >> 6)).toString(16);
          string += '%' + (0x80 + (unicode & 0x3f)).toString(16);
        } else {
          string += '%' + (0xc0 + ((unicode & 0x7c0) >> 6)).toString(16);
          string += '%' + (0x80 + (unicode & 0x3f)).toString(16);
        }
      }
    }
  }

  return string;
}

function escapeStationName(paramStr)
{
    paramStr = paramStr.replace(/線/g, '*1');
    paramStr = paramStr.replace(/名/g, '*2');
    paramStr = paramStr.replace(/駅/g, '*3');
    paramStr = paramStr.replace(/\,/g, '*4');
    paramStr = paramStr.replace(/東急/g, '*5');
    paramStr = paramStr.replace(/東部/g, '*6');
    paramStr = paramStr.replace(/西部/g, '*7');
    paramStr = paramStr.replace(/鉄道/g, '*8');
    paramStr = paramStr.replace(/電鉄/g, '*9');
    paramStr = paramStr.replace(/京/g, '*A'); 
    paramStr = paramStr.replace(/東武/g, '*B'); 
    paramStr = paramStr.replace(/西武/g, '*C'); 
    paramStr = paramStr.replace(/東/g, '*D'); 
    paramStr = paramStr.replace(/町/g, '*E'); 
    paramStr = paramStr.replace(/王/g, '*F'); 
    paramStr = paramStr.replace(/近/g, '*G'); 
    paramStr = paramStr.replace(/名鉄/g, '*H'); 
    paramStr = paramStr.replace(/上/g, '*I'); 
    paramStr = paramStr.replace(/中/g, '*J'); 
    paramStr = paramStr.replace(/小田/g, '*K'); 
	
	return paramStr;
}
function unescapeStationName(paramStr)
{
	paramStr = paramStr.replace(/\*1/g, '線');
	paramStr = paramStr.replace(/\*2/g, '名');
	paramStr = paramStr.replace(/\*3/g, '駅');
	paramStr = paramStr.replace(/\*4/g, ',');
	paramStr = paramStr.replace(/\*5/g, '東急');
	paramStr = paramStr.replace(/\*6/g, '東部');
	paramStr = paramStr.replace(/\*7/g, '西部');
	paramStr = paramStr.replace(/\*8/g, '鉄道');
	paramStr = paramStr.replace(/\*9/g, '電鉄');
	paramStr = paramStr.replace(/\*A/g, '京');
	paramStr = paramStr.replace(/\*B/g, '東武');
	paramStr = paramStr.replace(/\*C/g, '西武');
	paramStr = paramStr.replace(/\*D/g, '東');
	paramStr = paramStr.replace(/\*E/g, '町');
	paramStr = paramStr.replace(/\*F/g, '王');
	paramStr = paramStr.replace(/\*G/g, '近');
	paramStr = paramStr.replace(/\*H/g, '名鉄');
	paramStr = paramStr.replace(/\*I/g, '上');
	paramStr = paramStr.replace(/\*J/g, '中');
	paramStr = paramStr.replace(/\*K/g, '小田');
	
	return paramStr;
}
