/* ----------------------------------------------------- */
/* Functions for Calendar sysytem */
/* ----------------------------------------------------- */

 function CalLoad(){
 	document.tlbmset.reset();
 	gmapOnLoad('calmap');
 	daysetting('start');
 	daysetting('end');
 	timesetting('start');
 	timesetting('end');
 	onplcset();
 	onendset();
 	onsuburl();
	setPlaceSelect('site');
 }
 
 function tlbmcalsubmit(){
 	var validate = true;
 	var comment = "";
 	var startcheck = InputDateCheck('start');
 	/* Check start date Format.  */
		if (startcheck == "OK") {
			/* If end date is enabled.  */
			if (document.tlbmset.onend.checked == true) {
				var endcheck = InputDateCheck('end');
				/* Check end date Format.  */
				if (endcheck == "OK") {
					var startday = dayset('start');
					var starttime = timeset('start');
					/* alert(startday);  */
					var starttimehm = starttime.split(':');
					var startdate = new Date(document.tlbmset.startyear.value, document.tlbmset.startmonth.value - 1, startday, starttimehm[0], starttimehm[1], 0);
					var endday = dayset('end');
					var endtime = timeset('end');
					var endtimehm = endtime.split(':');
					var enddate = new Date(document.tlbmset.endyear.value, document.tlbmset.endmonth.value - 1, endday, endtimehm[0], endtimehm[1], 0);
					var diff = enddate.getTime() - startdate.getTime();
					/* If Start date is later than End date.  */
					if (diff <= 0) {
						validate = false;
						alert("終了日時が開始日時より前になっています。");
					}
				}
				else {
					validate = false;
					alert(endcheck);
				}
			}
		}
		else {
			validate = false;
			alert(startcheck);
		}
		/* If all input's format is correct then submit.  */
		if (validate) {
			document.tlbmset.submit();
		}
		else {
			return false;
		}
}
function tlbmcaldelbut(){
  /* If confirmed by user then submit.  */
  if(confirm("このデータを削除してよろしいですか？")){
   document.tlbmcaldel.submit();
  }else{
   return false;
  }
}
 function InputDateCheck(type){
 	var validate = true;
 	var comment = '';
 	if (type == 'start') {
 		var year = parseInt(document.tlbmset.startyear.value, 10);
 		var month = parseInt(document.tlbmset.startmonth.value, 10);
 		var day = parseInt(document.tlbmset.startday1.value, 10);
 		var time = document.tlbmset.starttime1.value;
 		var dayset = document.tlbmset.startdayset;
 		var timeset = document.tlbmset.starttimeset;
 		var commenthead = '開始';
 	}
 	else 
 		if (type == 'end') {
 			var year = parseInt(document.tlbmset.endyear.value, 10);
 			var month = parseInt(document.tlbmset.endmonth.value, 10);
 			var day = parseInt(document.tlbmset.endday1.value, 10);
 			var time = document.tlbmset.endtime1.value;
 			var dayset = document.tlbmset.enddayset;
 			var timeset = document.tlbmset.endtimeset;
 			var commenthead = '終了';
 		}
 	year = parseInt(year);
 	month = parseInt(month);
 	day = parseInt(day);
 	/* Check Year Format */
		if (isNaN(year) || year < 2000 || year > 2099) {
			validate = false;
			comment += commenthead + "年のフォーマットが不適切です。半角4桁（2000～2099）で入力ください。\n";
		}
		/* Check Month Format */
		if (isNaN(month) || month < 1 || month > 12) {
			validate = false;
			comment += commenthead + "月のフォーマットが不適切です。半角1～2桁(1～12)で入力ください。\n";
		}
		/* If Day is enabeld. */
		if (dayset.checked == true) {
			/* Check Day Format */
			if (isNaN(day) || day < 1 || day > 31) {
				validate = false;
				comment += commenthead + "日のフォーマットが不適切です。半角1～2桁(1～31)で入力ください。\n";
			}
			/* If format is correct then Check the date is exsist */
			if (validate) {
				month = month - 1;
				var checkdate = new Date(year, month, day);
				var checkyear;
				var tempval = true;
				if (checkdate.getYear() >= 2000) {
					checkyear = checkdate.getYear();
				}
				else {
					checkyear = checkdate.getYear() + 1900;
				}
				if (year != checkyear) {
					tempval = false;
				}
				if (month != checkdate.getMonth()) {
					tempval = false;
				}
				if (day != checkdate.getDate()) {
					tempval = false;
				}
				if (!tempval) {
					validate = false;
					comment += '入力された' + commenthead + '日は存在しません。\n';
				}
			}
		}
		
		/* If Time is enabeld. */
		if (timeset.checked == true) {
			/* Check Time Format  */
			var tempvalid2 = true;
			var splittime = time.split(':');
			if (splittime.length == 2) {
				var hour = parseInt(splittime[0], 10);
				var minu = parseInt(splittime[1], 10);
				if (isNaN(hour) || hour < 1 || hour > 24 || isNaN(minu) || minu < 0 || minu > 59) {
					tempvalid2 = false;
				}
			}
			else {
				tempvalid2 = false;
			}
			if (!tempvalid2) {
				validate = false;
				comment += commenthead + "時間のフォーマットが不適切です。24時間表記半角(例；17:33)で入力ください。\n";
			}
		}
		if (validate) {
			return "OK";
		}
		else {
			return comment;
		}
	}
 function dayset(type){
 	var setday;
 	if (type == "start") {
 		var day1 = parseInt(document.tlbmset.startday1.value, 10);
 		var day2 = document.tlbmset.startday2.value;
 		var dayset = document.tlbmset.startdayset;
 		var dayoffset = 0;
 		var dayoffset2 = 0;
 		var dayoffset3 = 0;
 	}
 	else 
 		if (type == "end") {
 			var year = parseInt(document.tlbmset.endyear.value, 10);
 			var month = parseInt(document.tlbmset.endmonth.value, 10);
 			var day1 = parseInt(document.tlbmset.endday1.value, 10);
 			var day2 = document.tlbmset.endday2.value;
 			var dayset = document.tlbmset.enddayset;
 			var dayoffset = 9;
 			var dim = daysinmonth(year, month);
 			var dayoffset2 = dim - 21;
 			var dayoffset3 = dim - 1;
 		}
 	
 	if (dayset.checked == true) {
 		setday = day1;
 	}
 	else 
 		if (day2 == '上') {
 			setday = 1 + dayoffset;
 		}
 		else 
 			if (day2 == '中') {
 				setday = 11 + dayoffset;
 			}
 			else 
 				if (day2 == '下') {
 					setday = 21 + dayoffset2;
 				}
 				else {
 					setday = 1 + dayoffset3;
 				}
 	return setday;
 }
 function timeset(type){
  var settime;
  if (type == 'start') {
  	var time1 = document.tlbmset.starttime1.value;
  	var time2 = document.tlbmset.starttime2.value;
  	var timeset = document.tlbmset.starttimeset;
  	var timehoffset = 0;
  	var timehoffset2 = 0;
  	var timemoffset = 0;
  }
  else 
  	if (type == 'end') {
  		var time1 = document.tlbmset.endtime1.value;
  		var time2 = document.tlbmset.endtime2.value;
  		var timeset = document.tlbmset.endtimeset;
  		var timehoffset = 11;
  		var timehoffset2 = 23;
  		var timemoffset = 59;
  	}
 
  if (timeset.checked) {
  	settime = time1;
  }
  else 
  	if (time2 == '午前') {
  		settime = 0 + timehoffset + ':' + timemoffset;
  	}
  	else 
  		if (time2 == '午後') {
  			settime = 12 + timehoffset + ':' + timemoffset;
  		}
  		else {
  			settime = 0 + timehoffset2 + ':' + timemoffset;
  		}
  return settime;
 }

 function tlbmcalreset(){
 	var alertp = document.getElementById('endsetalert');
 	document.tlbmset.endyear.disabled = false;
 	document.tlbmset.endmonth.disabled = false;
 	document.tlbmset.endday1.disabled = false;
 	document.tlbmset.endday2.disabled = false;
 	document.tlbmset.endtime1.disabled = false;
 	document.tlbmset.endtime2.disabled = false;
 	document.tlbmset.enddayset.disabled = false;
 	document.tlbmset.endtimeset.disabled = false;
 	alertp.style.display = 'none';
 	alertp.style.visibility = 'hidden';
 	new Effect.Appear('endset');
 }

 function daysetting(type){
 	var spanday1 = document.getElementById(type + 'spanday1');
 	var spanday2 = document.getElementById(type + 'spanday2');
 	var dayset = document.getElementById(type + 'dayset');
 	if (dayset.checked == true) {
 		spanday1.style.display = 'inline';
 		spanday1.style.visibility = 'visible';
 		spanday2.style.display = 'none';
 		spanday2.style.visibility = 'hidden';
 	}
 	else {
 		spanday1.style.display = 'none';
 		spanday1.style.visibility = 'hidden';
 		spanday2.style.display = 'inline';
 		spanday2.style.visibility = 'visible';
 	}
 }

 function timesetting(type){
 	var spantime1 = document.getElementById(type + 'spantime1');
 	var spantime2 = document.getElementById(type + 'spantime2');
 	var timeset = document.getElementById(type + 'timeset');
 	if (timeset.checked == true) {
 		spantime1.style.display = 'inline';
 		spantime1.style.visibility = 'visible';
 		spantime2.style.display = 'none';
 		spantime2.style.visibility = 'hidden';
 	}
 	else {
 		spantime1.style.display = 'none';
 		spantime1.style.visibility = 'hidden';
 		spantime2.style.display = 'inline';
 		spantime2.style.visibility = 'visible';
 	}
 }

 function onendset(){
  var onend=document.getElementById('onend');
  var alertp=document.getElementById('endsetalert');
  if (onend.checked == true) {
	var amazau=false;
  	if (!!document.tlbmset.onamazauto) {
		if (document.tlbmset.onamazauto.checked == true) {
			amazau=true;
		}
	}
	if(amazau){
		alert("AMAZON 発売日自動アップデート機能がONの時は、終了日は設定できません。");
		onend.checked = false;
	}
	else {
		document.tlbmset.endyear.disabled = false;
		document.tlbmset.endmonth.disabled = false;
		document.tlbmset.endday1.disabled = false;
		document.tlbmset.endday2.disabled = false;
		document.tlbmset.endtime1.disabled = false;
		document.tlbmset.endtime2.disabled = false;
		document.tlbmset.enddayset.disabled = false;
		document.tlbmset.endtimeset.disabled = false;
		alertp.style.display = 'none';
		alertp.style.visibility = 'hidden';
		new Effect.Appear('endset');
	}  	
  }
  else {
  	document.tlbmset.endyear.disabled = true;
  	document.tlbmset.endmonth.disabled = true;
  	document.tlbmset.endday1.disabled = true;
  	document.tlbmset.endday2.disabled = true;
  	document.tlbmset.endtime1.disabled = true;
  	document.tlbmset.endtime2.disabled = true;
  	document.tlbmset.enddayset.disabled = true;
  	document.tlbmset.endtimeset.disabled = true;
  	alertp.style.display = 'inline';
  	alertp.style.visibility = 'visible';
  	new Effect.Fade('endset', {
  		to: 0.5
  	});
  }
 }
/* AMAZON Auto Check control*/
function amazautoset(){
  var onamazauto=document.tlbmset.onamazauto;
  if (onamazauto.checked == true) {
  	document.tlbmset.onend.checked = false;
	onendset();
	document.tlbmset.startdayset.checked=true;
	daysetting('start');
	var start=asinrelease.split("-");
  	document.tlbmset.startyear.value = start[0];
  	document.tlbmset.startmonth.value = start[1];
  	document.tlbmset.startday1.value = start[2];
  }	
}
/* For Google map Control*/
function gmapOnLoad(divid) {
 if (GBrowserIsCompatible()) {
 	map = new GMap2(document.getElementById(divid));
 	map.addControl(new GSmallMapControl());
 	map.addControl(new GMapTypeControl());
 	map.setCenter(center, 13);
 	centmarker = new GMarker(center);
 	map.addOverlay(centmarker);
 	geocoder = new GClientGeocoder();
 	GEvent.addListener(map, "moveend", function(){
		centmarker.setLatLng(new GLatLng(map.getCenter().lat(), map.getCenter().lng()));
 		/* marker.openInfoWindowHtml("［緯度:"+map.getCenter().lat()+"］<br />［経度："+map.getCenter().lng()+"］"); */
			if (document.tlbmset.onplc.checked == true) {
				if (document.tlbmset.autoplc.checked == true) {
					document.tlbmset.plclatlon_lat.value = map.getCenter().lat();
					document.tlbmset.plclatlon_lon.value = map.getCenter().lng();
				}
			}
		});
	}
}
/* if submitted by enter then cancel submit. */
function refuseEnter(e){
  if (!e) {
  	var e = window.event;
  }
	if (e.keyCode == 13) {
		return false;
	}
}
function mapSearchByEnter(e){
  if (!e) {
  	var e = window.event;
  }
  if(e.keyCode == 13){
   searchAddress(document.tlbmset.splace.value);
   return false;
  }
}

function showAddress(address){
	if (address != "") {
		if (geocoder) {
			geocoder.getLatLng(address, function(point){
				if (!point) {
					alert("「" + address + "」が見つかりませんでした。");
				}
				else {
					map.panTo(point, 13);
				}
			});
		}
	}
}
function searchAddress(address){
	if (address != "") {
		/*Get new information*/
		new Ajax.Request('http://www.seunze.com/placesearch.html?place=' + encodeURIComponent(address), {
			onSuccess: function(oj){
				var res=eval("(" + oj.responseText + ")");
				var items = res['items'];
				if (res['items'] != "empty") {
					cadPlace_src = res['items'];
					if(document.tlbmset.stypeselect.options.length==2){
						document.tlbmset.stypeselect.options[2] = new Option('検索結果', 'search');
					}
					document.tlbmset.stypeselect.selectedIndex=2;
					setPlaceSelect('search');
					onPlaceSelect(document.tlbmset.scandselect.options[document.tlbmset.scandselect.selectedIndex].value);
				}
				else {
					alert("「" + address + "」が見つかりませんでした。");
				}
			}
		});
	}
}
function URLtoAdd(json){
	if (json != "") {
		for (i = 0; i < json.length; i++) {
			cadPlace_url[i] = json[i];
		}
	}
}
function setPlaceSelect(type){
	var selsetlen;
	var selsettitle=new Array();
	var candsel = document.getElementById("scandselect");
	var candsellen = candsel.options.length;
	switch(type){
		case "site":
			selsetlen=cadPlace_url.length;
			selsettitle=cadPlace_url;
		break;
		case "history":
			selsetlen=cadPlace_htr.length;
			for (i = 0; i < selsetlen; i++) {
				var elm = cadPlace_htr[i];
				if(elm['PlaceName']!=""){
					selsettitle[i]=elm['PlaceName'];
				}else{
					selsettitle[i]=elm['address'];
				}
			} 
		break;
		case "search":
			selsetlen=cadPlace_src.length;
			for (i = 0; i < selsetlen; i++) {
				var elm = cadPlace_src[i];
				if(elm['title']!=""){
					selsettitle[i]=elm['title'];
				}else{
					selsettitle[i]=elm['address'];
				}
			} 
		break;
	}
	for (i = 0; i <= candsellen; i++) {
		candsel.options[0] = null
	}
	if (selsettitle.length > 0) {
		for (i = 0; i < selsetlen; i++) {
			candsel.options[i] = new Option(selsettitle[i], i);
		}
		candsel.selectedIndex=0;
		if (pset == "") {
			onPlaceSelect(0);
			pset=1;
		}
	}else{
		candsel.options[0] = new Option("候補がありません。", 0);
	}

}
function onPlaceSelect(place){
	var type=document.tlbmset.stypeselect.options[document.tlbmset.stypeselect.selectedIndex].value;
	var text=document.tlbmset.scandselect.options[document.tlbmset.scandselect.selectedIndex].text;
	if (text != "候補がありません。") {
		switch (type) {
			case "site":
				showAddress(cadPlace_url[place]);
				break;
			case "history":
				var elm = cadPlace_htr[place];
				map.panTo(new GLatLng(elm['lat'], elm['lon']), 11);
				break;
			case "search":
				var elm = cadPlace_src[place];
				map.panTo(new GLatLng(elm['lat'], elm['lon']), 11);
				break;
		}
	}
}
function srchPlace(){
	var obj = document.tlbmset.splace;
	if (obj.value == "地名を入力して検索") {
		obj.value = "";
	}
}

function onplcset(){
	var onplc = document.getElementById('onplc');
	if (onplc.checked == true) {
		document.tlbmset.plclatlon_lat.disabled = false;
		document.tlbmset.plclatlon_lon.disabled = false;
		document.tlbmset.autoplc.disabled = false;
		Effect.Appear('placeset');
	}
	else {
		document.tlbmset.plclatlon_lat.disabled = true;
		document.tlbmset.plclatlon_lon.disabled = true;
		document.tlbmset.autoplc.disabled = true;
		Effect.Fade('placeset', {
			to: 0.5
		});
	}
	onautoplcset();
}
function onautoplcset(){
	document.tlbmset.plclatlon_lat.value = map.getCenter().lat();
	document.tlbmset.plclatlon_lon.value = map.getCenter().lng();
}
function onsuburl(){
	if (subable != "") {
		document.tlbmset.suburl.disabled = true;
	}
}

