/* ----------------------------------------------------- */
/* Functions for Serach sysytem */
/* ----------------------------------------------------- */

/* On Load for Top Site */
function srchOnLoad(mode){
	YUICalOnLoad();
	gmapOnLoad('st_map');
	if (mode == "") {
		mode = "sum";
	}
	srchselect(mode);
	srchTextOn("place", RadioCheckedValue(document.tlbmsrch.srchplace));
	srchTextOn("date", RadioCheckedValue(document.tlbmsrch.srchdate));
	setPlaceListInit(RadioCheckedValue(document.tlbmsrch.srchplace));
}
/* On Load for User Top Site */
function OnloadUser(strget, no){
	srchOnLoad("");
	if (no == true){
		onLoadTL('user_timeline', strget);
	}
}
function srchselect(mode){
	switch(mode){
		case "sum":
		 srcharea('none');
		 document.getElementById("srchoptshow").style.display='block';
		break;
		case "srch":
		 srcharea('block');
		 document.getElementById("srchoptshow").style.display='none';
		break;		
		default:
		 srcharea('none');
		 document.getElementById("srchoptshow").style.display='block';
		break;		
	}
}
function srcharea(disp){
	document.getElementById("srchoptcom").style.display=disp;
	document.getElementById("srchsetopt").style.display=disp;
	document.getElementById("srchtool").style.display=disp;
	
	if(disp=='block'){
		document.getElementById("srchsetting").style.width='655px';
		document.getElementById("srchsettopsrch").style.width='645px';
	}else{
		document.getElementById("srchsetting").style.width='895px';
		document.getElementById("srchsettopsrch").style.width='885px';
	}
}
function YUICalOnLoad(){
	function handleSelect(type, args, obj){
		var dates = args[0];
		var date = dates[0];
		var year = date[0], month = date[1], day = date[2];
		if (month < 10) {
			month = "0" + month;
		}
		if (day < 10) {
			day = "0" + day;
		}
		document.getElementById("srchtdate").value = year + "/" + month + "/" + day;
	}
	
	/*  Month Jumping Option */
	var navConfig = {
		strings: {
			month: "月を入力",
			year: "西暦を入力",
			submit: "OK",
			cancel: "Cancel",
			invalidYear: "Please enter a valid year"
		},
		monthFormat: YAHOO.widget.Calendar.SHORT,
		initialFocus: "year"
	};
	
	var cal = new YAHOO.widget.Calendar("cal", "st_calendar", {
		navigator: navConfig
	});
	cal.selectEvent.subscribe(handleSelect, cal, true);
	
	/* Date labels for Japanese locale */
	cal.cfg.setProperty("MDY_YEAR_POSITION", 1);
	cal.cfg.setProperty("MDY_MONTH_POSITION", 2);
	cal.cfg.setProperty("MDY_DAY_POSITION", 3);
	cal.cfg.setProperty("MY_YEAR_POSITION", 1);
	cal.cfg.setProperty("MY_MONTH_POSITION", 2);
	
	cal.cfg.setProperty("MONTHS_SHORT", ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]);
	cal.cfg.setProperty("MONTHS_LONG", ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]);
	cal.cfg.setProperty("WEEKDAYS_1CHAR", ["日", "月", "火", "水", "木", "金", "土"]);
	cal.cfg.setProperty("WEEKDAYS_SHORT", ["日", "月", "火", "水", "木", "金", "土"]);
	cal.cfg.setProperty("WEEKDAYS_MEDIUM", ["日", "月", "火", "水", "木", "金", "土"]);
	cal.cfg.setProperty("WEEKDAYS_LONG", ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"]);
	
	cal.cfg.setProperty("MY_LABEL_YEAR_POSITION", 1);
	cal.cfg.setProperty("MY_LABEL_MONTH_POSITION", 2);
	cal.cfg.setProperty("MY_LABEL_YEAR_SUFFIX", "年");
	cal.cfg.setProperty("MY_LABEL_MONTH_SUFFIX", "");
	cal.render();
}

/* For Google map */
function gmapOnLoad(divid) {
 if (GBrowserIsCompatible()) {
 	map = new GMap2(document.getElementById(divid));
 	map.addControl(new GSmallMapControl());
 	map.addControl(new GMapTypeControl());
 	map.setCenter(center, 11);
 	var marker = new GMarker(center);
 	map.addOverlay(marker);
 	geocoder = new GClientGeocoder();
 	GEvent.addListener(map, "move", function(){
 		map.clearOverlays();
 		marker = new GMarker(new GLatLng(map.getCenter().lat(), map.getCenter().lng()));
 		map.addOverlay(marker);
 		/* marker.openInfoWindowHtml("［緯度:"+map.getCenter().lat()+"］<br />［経度："+map.getCenter().lng()+"］"); */
			document.getElementById("srchtlat").value = map.getCenter().lat();
			document.getElementById("srchtlon").value = map.getCenter().lng();
		});
	}
}
function showAddress(address){
	if (geocoder) {
		geocoder.getLatLng(address, function(point){
			if (!point) {
				alert("「" + address + "」が見つかりませんでした。");
			}
			else {
				map.clearOverlays();
				map.setCenter(point, 11);
				marker = new GMarker(point);
				map.addOverlay(marker);
				/* marker.openInfoWindowHtml(address+"<br />［緯度:"+map.getCenter().lat()+"］<br />［経度："+map.getCenter().lng()+"］"); */
			}
		});
	}
}
function gmapReLoad(divid){
  center=new GLatLng(document.getElementById("srchtlat").value, document.getElementById("srchtlon").value);	
  document.getElementById(divid).innerHTML="";
  gmapOnLoad(divid);
}
/* For Target Onsubmit Check */
function tgetSubmit(){
	var form = document.tlbmtget;
	var validate = true;
	var errocomment = "";
	var mnumber = new Array(3);
	mnumber[0] = "10";
	mnumber[1] = "15";
	mnumber[2] = "20";
	mnumber[3] = "30";
	tempvalid = formSeleckCheck(mnumber, form.tgetquantity.value);
	if (!tempvalid) {
		validate = false;
		alert("表示件数選択にエラーがあります。");
	}
	
	var mcategory = new Array(7);
	mcategory[0] = "none";
	mcategory[1] = "movie";
	mcategory[2] = "music";
	mcategory[3] = "art";
	mcategory[4] = "theatre";
	mcategory[5] = "sports";
	mcategory[6] = "event";
	
	var tempvalid = formSeleckCheck(mcategory, form.tgetcategory.value);
	if (!tempvalid) {
		validate = false;
		alert("カテゴリー選択にエラーがあります。");
	}
	
	var mdate = new Array(6);
	mdate[0] = "none";
	mdate[1] = "today";
	mdate[2] = "tomorrow";
	mdate[3] = "thiswkend";
	mdate[4] = "nextwkend";
	mdate[5] = "int";
	tempvalid = formSeleckCheck(mdate, form.tgetwhen.value);
	if (!tempvalid) {
		validate = false;
		alert("期間選択にエラーがあります。");
	}
	
	if (form.tgetcategory.value == "none" & form.tgetwhen.value == "none") {
		validate = false;
		alert("カテゴリー、期間のいずれかは選択してください。");
	}
	/* If all input's format is correct then submit.  */
	if (validate) {
		document.tlbmtget.submit();
	}
	else {
		return false;
	}
}
/* For Search Onsubmit Check */
function srchSubmit(){
	var form = document.tlbmsrch;
	var validate = true;
	var errocomment = "";
	var input = false;
	
	if (form.srchhot.checked) {
		input = true;
	}
	
	if (form.srchuser.checked) {
		input = true;
	}
	
	var mnumber = new Array(3);
	mnumber[0] = "10";
	mnumber[1] = "15";
	mnumber[2] = "20";
	mnumber[3] = "30";
	tempvalid = formSeleckCheck(mnumber, form.srchquantity.value);
	if (!tempvalid) {
		validate = false;
		alert("表示件数選択にエラーがあります。");
	}
	
	var mcategory = new Array(7);
	mcategory[0] = "none";
	mcategory[1] = "movie";
	mcategory[2] = "music";
	mcategory[3] = "art";
	mcategory[4] = "theatre";
	mcategory[5] = "sports";
	mcategory[6] = "event";
	
	if (form.srchword.value != "") {
		input = true;
	}
	
	var tempvalid = formSeleckCheck(mcategory, RadioCheckedValue(form.srchcategory));
	if (!tempvalid) {
		validate = false;
		alert("カテゴリー選択にエラーがあります。");
	}
	
	if (!form.srchcategory[0].checked) {
		input = true;
	}
	
	mdate = new Array(7);
	mdate[0] = "none";
	mdate[1] = "today";
	mdate[2] = "tomorrow";
	mdate[3] = "thiswkend";
	mdate[4] = "nextwkend";
	mdate[5] = "int";
	mdate[6] = "future";
	tempvalid = formSeleckCheck(mdate, RadioCheckedValue(form.srchdate));
	if (!tempvalid) {
		validate = false;
		alert("期間選択にエラーがあります。");
	}
	
	if (!form.srchdate[0].checked) {
		input = true;
	}
	
	if (RadioCheckedValue(form.srchdate) == "int") {
		if (!YMDCheck(form.srchdatint_f.value)) {
			validate = false;
			alert('検索期間の始まりのフォーマットにエラーがあります。「2007/01/01」のようなフォーマットで入力してください。');
		}
		if (!YMDCheck(form.srchdatint_t.value)) {
			validate = false;
			alert('検索期間の終わりのフォーマットにエラーがあります。「2007/01/01」のようなフォーマットで入力してください。');
		}
		/* If format is correct then Check the date is exsist */
		if (validate) {
			if (!DateExCheck(form.srchdatint_f.value)) {
				validate = false;
				alert('入力された検索期間の始まりは存在しません。');
			}
			if (!DateExCheck(form.srchdatint_t.value)) {
				validate = false;
				alert('入力された検索期間の終わりは存在しません。');
			}
		}
		/* If format is correct then Check the time order */
		if (validate) {
			var start = form.srchdatint_f.value.split("/");
			var startdate = new Date(parseInt(start[0]), parseInt(start[1]) - 1, parseInt(start[2]));
			var end = form.srchdatint_t.value.split("/");
			var enddate = new Date(parseInt(end[0]), parseInt(end[1]) - 1, parseInt(end[2]));
			var diff = enddate.getTime() - startdate.getTime();
			/* If Start date is later than End date.  */
			if (diff <= 0) {
				validate = false;
				alert("終了日時が開始日時より前になっています。");
			}
		}
	}
	
	mplace = new Array(4);
	mplace[0] = "none";
	mplace[1] = "latlon";
	mplace[2] = "pref";
	mplace[3] = "station";
	tempvalid = formSeleckCheck(mplace, RadioCheckedValue(form.srchplace));
	if (!tempvalid) {
		validate = false;
		alert("場所選択にエラーがあります。");
	}
	
	if (!form.srchplace[0].checked) {
		input = true;
	}
	
	if (RadioCheckedValue(form.srchplace) == "latlon") {
		if (!LatLonCheck(form.srchplclatlon_lat.value)) {
			validate = false;
			alert('緯度のフォーマットにエラーがあります。「35.69254」のようなフォーマットで入力してください。');
		}
		if (!LatLonCheck(form.srchplclatlon_lon.value)) {
			validate = false;
			alert('経度のフォーマットにエラーがあります。「139.6999」のようなフォーマットで入力してください。');
		}
	}
	
	if (RadioCheckedValue(form.srchplace) == "pref") {
		if (form.srchappref.value == "0") {
			validate = false;
			alert('都道府県が選択されていません。');
		}
	}
	
	if (RadioCheckedValue(form.srchplace) == "station") {
		if (form.srchstation.value == "0") {
			validate = false;
			alert('駅名が選択されていません。');
		}
	}
	
	mplacearea = new Array(5);
	mplacearea[0] = "300m";
	mplacearea[1] = "500m";
	mplacearea[2] = "1000m";
	mplacearea[3] = "3000m";
	mplacearea[4] = "5000m";
	tempvalid = formSeleckCheck(mplacearea, form.srchplcarea.options[form.srchplcarea.selectedIndex].value);
	if (!tempvalid) {
		validate = false;
		alert("範囲選択にエラーがあります。");
	}
	
	if (!input) {
		validate = false;
		alert("条件設定が不適切です。");
	}
	
	/* If all input's format is correct then submit.  */
	if (validate) {
		document.tlbmsrch.submit();
	}
	else {
		return false;
	}
}
function RadioCheckedValue(obj) {
	var rLength = obj.length;
	for(var i = 0; i < rLength; i++) {
		if(obj[i].checked) {
			return obj[i].value;
		}
	}
	return "";
}
function formSeleckCheck(select, inp){
	var validate = false;
	num = select.length;
	for (var i = 0; i < num; i++) {
		if (inp == select[i]) {
			validate = true;
			break;
		}
	}
	return validate;
}
function LatLonCheck(myLatLon) {
	if(myLatLon!=""){
		myLatLone=parseInt(myLatLon);
		return isFinite(myLatLon);
	}else{
		return false;
	}
}

/* For Clear Search Keyword Default Comment */
function srchKeyword(){
 if(document.tlbmsrch.srchword.value=="検索キーワードを入力してください"){
  document.tlbmsrch.srchword.value="";
 }
 srcharea("block");
}
function srchPlace(){
 if(document.tlbmgmapsrch.srchtplace.value=="地名を入力して検索"){
  document.tlbmgmapsrch.srchtplace.value="";
 }
}
/* For Change Abailability of Text Box */
function srchTextOn(cat, select){
	switch (cat) {
		case "place":
			switch (select) {
				case "latlon":
					document.tlbmsrch.srchplclatlon_lat.disabled = false;
					document.tlbmsrch.srchplclatlon_lon.disabled = false;
					document.tlbmsrch.srchparea.disabled = true;
					document.tlbmsrch.srchappref.disabled = true;
					document.tlbmsrch.srchprefecture.disabled = true;
					document.tlbmsrch.srchline.disabled = true;
					document.tlbmsrch.srchstation.disabled = true;
					document.tlbmsrch.srchplcarea.disabled = false;
					break;
				case "station":
					document.tlbmsrch.srchplclatlon_lat.disabled = true;
					document.tlbmsrch.srchplclatlon_lon.disabled = true;
					document.tlbmsrch.srchparea.disabled = true;
					document.tlbmsrch.srchappref.disabled = true;
					document.tlbmsrch.srchprefecture.disabled = false;
					document.tlbmsrch.srchline.disabled = false;
					document.tlbmsrch.srchstation.disabled = false;
					document.tlbmsrch.srchplcarea.disabled = false;
					break;
				case "pref":
					document.tlbmsrch.srchplclatlon_lat.disabled = true;
					document.tlbmsrch.srchplclatlon_lon.disabled = true;
					document.tlbmsrch.srchparea.disabled = false;
					document.tlbmsrch.srchappref.disabled = false;
					document.tlbmsrch.srchprefecture.disabled = true;
					document.tlbmsrch.srchline.disabled = true;
					document.tlbmsrch.srchstation.disabled = true;
					document.tlbmsrch.srchplcarea.disabled = true;
					break;
				default:
					document.tlbmsrch.srchplclatlon_lat.disabled = true;
					document.tlbmsrch.srchplclatlon_lon.disabled = true;
					document.tlbmsrch.srchprefecture.disabled = true;
					document.tlbmsrch.srchline.disabled = true;
					document.tlbmsrch.srchstation.disabled = true;
					document.tlbmsrch.srchplcarea.disabled = true;
					break;
			}
			break;
		case "date":
			switch (select) {
				case "int":
					document.tlbmsrch.srchdatint_f.disabled = false;
					document.tlbmsrch.srchdatint_t.disabled = false;
					break;
				default:
					document.tlbmsrch.srchdatint_f.disabled = true;
					document.tlbmsrch.srchdatint_t.disabled = true;
					break;
			}
			break;
	}
}
/* For Change Setting when link for Tool is Clicked */
function srchToolSelect(tool){
	switch (tool) {
		case "word":
			srchKeyword();
			srchtooltab_change(0);
			break;
		case "calendar":
			document.tlbmsrch.srchdatint.checked = true;
			srchTextOn('date', 'int');
			srchtooltab_change(1);
			break;
		case "map":
			document.tlbmsrch.srchplclatlon.checked = true;
			srchTextOn('place', 'latlon');
			srchtooltab_change(2)
			gmapReLoad('st_map');
			break;
	}
}
function SrchWordIn(str){
     document.tlbmsrch.srchword.value=str;
}
function SrchDateIn(mode){
 switch(mode){
 	case "start":
     document.tlbmsrch.srchdatint_f.value=document.getElementById("srchtdate").value;
     /*　document.tlbmsrch.srchdatint_t.focus();　*/
	break;
	case "end":
     document.tlbmsrch.srchdatint_t.value=document.getElementById("srchtdate").value;
     /*　document.tlbmsrch.srchdatint_f.focus();　*/
	break;
 }
 srchToolSelect('calendar');
}
function SrchLatlonIn(){
	document.getElementById("srchplclatlon_lat").value = document.getElementById("srchtlat").value;
	document.getElementById("srchplclatlon_lon").value = document.getElementById("srchtlon").value;
	srchToolSelect('map');
}
function SrchStationIn(){
	document.tlbmsrch.srchplcstation_txt.value = document.getElementById("srchtstation").value;
	srchToolSelect('train');
}
function PrefectureSelect(code){
  	new Ajax.Request('http://www.seunze.com/getpref.html?id='+code,{onSuccess:setprefs});	
}

function setprefs(oj){
	var res = oj.responseText;
	var srchappref = document.getElementById("srchappref");
	var optionIndex = srchappref.options.length;
	for (i = 0; i <= optionIndex; i++) {
		srchappref.options[0] = null
	}
	srchappref.options[0] = new Option("都道府県を選択", 0);
	var len = 0;
	if (res != "") {
		var prefs = res.split(':');
		len = prefs.length;
		srchappref.options[1] = new Option("全て", "PREF00");
		for (i = 0; i < len; i++) {
			var id_name = prefs[i].split(',');
			srchappref.options[i + 2] = new Option(id_name[1], id_name[0]);
		}
		srchappref.value = appref;
		appref = "0";
	}
}
function StationSelect(type, code){
	var s = document.getElementsByTagName("head")[0].appendChild(document.createElement("script"));
	s.type = "text/javascript";
	s.charset = "utf-8";
	var line_el = document.getElementById("srchline");
	var station_el = document.getElementById("srchstation");
	var optionIndex0 = line_el.options.length;
	var optionIndex1 = station_el.options.length;
	if (type == 0) {
		for (i = 0; i <= optionIndex0; i++) {
			line_el.options[0] = null
		}
		for (i = 0; i <= optionIndex1; i++) {
			station_el.options[0] = null
		}
		station_el.options[0] = new Option("駅を選択", 0);
		if (code == 0) {
			line_el.options[0] = new Option("路線を選択", 0);
		}
		else {
			s.src = "http://www.ekidata.jp/api/p/" + code + ".json";
		}
	}
	else {
		for (i = 0; i <= optionIndex1; i++) {
			station_el.options[0] = null
		} //駅削除
		if (code == 0) {
			station_el.options[0] = new Option("駅を選択", 0); //駅OPTIONを空に
		}
		else {
			s.src = "http://www.ekidata.jp/api/l/" + code + ".json"; //駅JSONデータURL
		}
	}
}
function setPlaceListInit(selected){
	if (selected == "pref") {
		document.tlbmsrch.srchparea.value = aparea;
		PrefectureSelect(aparea);
	}
	else 
		if (selected == "station") {
			document.tlbmsrch.srchprefecture.value = stpref;
			StationSelect(0, stpref);
		}
}