WSO.EventTag = WSO.EventTag || {};
	/* イベントタグを挿入する */
	WSO.EventTag.setToTextarea = function(obj)
	{
		var Title		= this.myForm.form.EventTitle.value;
		var RType		= this.myForm.form.EventRType.value;
		var Type		= this.myForm.form.EventType.value;

		var FirstD		= this.myForm.form.EventFirst.value;
		var LastD		= this.myForm.form.EventLast.value;

		var StartDT		= this.myForm.form.EventStart.value;
		var EndDT		= this.myForm.form.EventEnd.value;

		var Location	= this.myForm.form.EventLocation.value;

		var First		= new Date(FirstD);
		var Last		= new Date(LastD);

//		//継続時間
		var LDay		= ('00'+this.myForm.form.EventLongDay.value).substr(-2,2);
		var LTime       = this.myForm.form.EventLongTime.value;
		var LHours      = LTime.substr(0,2);
		var LMinutes    = LTime.substr(-2,2);
		var Long		= LDay * 24 * 60 * 60 * 1000;
		var LongDT		= LDay;

		//時間指定の場合
		if(Type == 0)
		{
			LongDT	= LDay+" "+LTime;
			Long	= Long + (LMinutes * 1 + LHours * 60) * 60 * 1000;
			First   = new Date(FirstD + " " + StartDT);
			Last    = new Date(LastD + " " + StartDT);
		}

		//未定の場合
		if(Type == 3)
		{
			StartDT	= "";
			EndDT	= "";
			Long	= 0;
		}

		//入力コード
		var tag = '';

		var EventDays	= document.getElementById('EventDay').getElementsByTagName('input');
		var EventDates	= document.getElementById('EventDate').getElementsByTagName('input');
		var EventWeeks	= document.getElementById('EventWeek').getElementsByTagName('input');
		var EventMonths	= document.getElementById('EventMonth').getElementsByTagName('input');
		//日付選択のチェック
		var Dates	= new Array();
		var checkDate;
		for(var i=0;i<EventDates.length;i++)
		{
			if(EventDates[i].checked)
			{
				checkDate	= 1;
				Dates.push(EventDates[i].value);
			}
		}
		//月選択のチェック
		var Months	= new Array();
		var checkMonth;
		for(var i=0;i<EventMonths.length;i++)
		{
			if(EventMonths[i].checked)
			{
				checkMonth	= 1;
				Months.push((['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])[EventMonths[i].value - 1]);
			}
		}
		//曜日選択のチェック
		var Days	= new Array();
		var checkDay;
		for(var i=0;i<7;i++)
		{
			if(EventDays[i].checked)
			{
				checkDay	= 1;
				Days.push((['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[EventDays[i].value - 1]);
			}
		}
		//週選択のチェック
		var Weeks	= new Array();
		var checkWeek;
		for(var i=0;i<EventWeeks.length;i++)
		{
			if(EventWeeks[i].checked)
			{
				checkWeek	= 1;
				Weeks.push((['1st','2nd','3rd','4th','5th'])[EventWeeks[i].value - 1]);
			}
		}

		var Counter = 0;

		switch(RType)//イベント型によって振り分け
		{
			//一回のイベント
			case '0':
				tag = tag + "event:" + Title+ "\n type=\"" + Type
					+ "\"\n start=\"" + StartDT + "\"\n end=\"" + EndDT
					+ "\"\n location=\"" + Location + "\"\n label=\"イベント名;日時;場所\"\n";
			break;
			//毎日のイベント
			case '1':
				tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + FirstD + "\",\"" + LastD + "\",\"" + Location + "\","
							 + Type + ",\"" + StartDT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\")\n";
			break;
			//毎週のイベント
			case '2':
				tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + FirstD + "\",\"" + LastD + "\",\"" + Location + "\","
							+ Type + ",\"" + StartDT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Days.join(',') + "\")\n";
			break;
			//毎月のイベント
			case '3':
				//日付指定がある時
				if(checkDate)
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + FirstD + "\",\"" + LastD + "\",\"" + Location + "\","
							+ Type + ",\"" + StartDT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Dates.join(',') + "\")\n";
				}
				//日付指定がない時→週指定
				else
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + FirstD + "\",\"" + LastD + "\",\"" + Location + "\","
							+ Type + ",\"" + StartDT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Weeks.join(',') + "\",\"" + Days.join(',') + "\")\n";
				}
			break;
			//毎年
			case '4':
				if(checkDate)
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + First.getFullYear() + "\",\"" + Last.getFullYear() + "\",\"" + Location + "\""
							+ "," + Type + ",\"" + StartDT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Months.join(',') + "\",\"" + Dates.join(',') + "\")\n";
				}
				else
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + First.getFullYear() + "\",\"" + Last.getFullYear() + "\",\"" + Location + "\""
							+ "," + Type + ",\"" + StartDT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Months.join(',') + "\",\"" + Weeks.join(',') + "\",\"" + Days.join(',') + "\")\n";
				}
			break;
		}
		if(RType != "0")
		{
			tag = tag + ' h:("回","開始日","終了日","場所")\n';
			for(var Time = First.getTime() ; Time <= Last.getTime() ; Time = Time + 60 * 60 * 24 * 1000)
			{
				if(RType != 4 || EventMonths[(new Date(Time)).getMonth()].checked)
				{
					if((RType == 3 || (RType == 4 && checkMonth)) && checkDate)
					{
						if(EventDates[(new Date(Time)).getDate() - 1].checked)
						{
							tag	= tag + WSO.EventTag.getEachEventTag(++Counter,Type,Time,Long,Location);
						}
					}
					else
					{
						if(RType ==1 || ((RType == 2 || EventWeeks[parseInt((new Date(Time)).getDate() / 7)].checked) && EventDays[(new Date(Time)).getDay()].checked))
						{
							tag	= tag + WSO.EventTag.getEachEventTag(++Counter,Type,Time,Long,Location);
						}
					}
				}
			}
		}

		//内容を空にする
		this.myForm.form.EventTitle.value='';
		this.myForm.form.EventLocation.value='';

		WSO.EditPoint.insertTag(this.myForm,tag);//テキストエリアにタグを挿入
	}
	/* 繰り返し時のイベントタグを取得する */
	WSO.EventTag.checkAndGetEachEventTag	= function(BMonth,Title,Type,myTime,Long,Location)
	{
		var myDate	= new Date();
		myDate.setTime(myTime);
		var myMonth	= myDate.getMonth() + 1;
		if(BMonth != myMonth) return('');	//当該月に指定日が存在しない時は戻る（31日や、2月の29日、30日など）
		return(WSO.EventTag.getEachEventTag(Title,Type,myTime,Long,Location));
	}
	/* 繰り返し時のイベントタグを取得する */
	WSO.EventTag.getEachEventTag	= function(Title,Type,Time,Long,Location)
	{
		var Start	= new Date();
		Start.setTime(Time);
		var SYear	= Start.getFullYear();
		var SMonth	= ('00'+(Start.getMonth() + 1)).substr(-2,2);
		var SDate	= ('00'+Start.getDate()).substr(-2,2);
		var SHours	= ('00'+Start.getHours()).substr(-2,2);
		var SMinutes= ('00'+Start.getMinutes()).substr(-2,2);
		var StartDT	= SYear+"-"+SMonth+"-"+SDate;

		var End		= new Date();
		End.setTime(Time + Long);
		var EYear	= End.getFullYear();
		var EMonth	= ('00'+(End.getMonth() + 1)).substr(-2,2);
		var EDate	= ('00'+End.getDate()).substr(-2,2);
		var EHours	= ('00'+End.getHours()).substr(-2,2);
		var EMinutes= ('00'+End.getMinutes()).substr(-2,2);
		var EndDT	= EYear+"-"+EMonth+"-"+EDate;

		if(Type == 0)
		{
			StartDT	= StartDT + " " + SHours + ":" + SMinutes;
			EndDT	= EndDT + " " + EHours + ":" + EMinutes;
		}

		return(" e:(\"" + Title + "\","+Type+",\""+StartDT+"\",\""+EndDT+"\",\""+Location+"\")\n");
	}
	/* イベント型変更時の処理 */
	WSO.EventTag.changeEventType	= function(event)
	{
		var myDate		= new Date();
		var theYear		= myDate.getFullYear();
		var theMonth	= ("00"+(myDate.getMonth() + 1).toString()).substr(-2,2);
		var theDate		= ("00"+myDate.getDate()).substr(-2,2);

		var form = event.target.form;
		var EventType	=	form.EventType;
		var EventRType	=	form.EventRType;

		var	Start		= document.getElementById('EventStart');
		var	StartInput	= form.EventStart;
		var	End			= document.getElementById('EventEnd');
		var	EndInput	= form.EventEnd;

		var	Long		= document.getElementById('EventLong');
		var LongTime    = form.EventLongTime;

		var Regular     = document.getElementById('EventRegular');
		var	FirstInput	= form.EventFirst;
		var	LastInput	= form.EventLast;

		var EventMonth	= document.getElementById('EventMonth');
		var EventDate	= document.getElementById('EventDate');
		var EventWeek	= document.getElementById('EventWeek');
		var EventDay	= document.getElementById('EventDay');

		Start.style.display		= 'block';
		End.style.display		= 'none';

		Long.style.display		= 'block';
		LongTime.style.display  = 'inline';

		Regular.style.display	='block';

		EventMonth.style.display	='none';
		EventDate.style.display		='none';
		EventWeek.style.display		='none';
		EventDay.style.display		='none';

		var StartValue = StartInput.value;
		var EndValue  = EndInput.value;
		switch(EventType.value)
		{
			case "0":
				StartInput.setAttribute('type',"time");
				EndInput.setAttribute('type',"time");
				StartInput.value = StartValue.match(/[0-2][0-9]:[0-5][0-9]$/);
				EndInput.value = EndValue.match(/[0-2][0-9]:[0-5][0-9]$/);
				break;
//			case "1":
			case "3":
			default:
				LongTime.style.display  = 'none';
				StartInput.setAttribute('type',"date");
				EndInput.setAttribute('type',"date");
				if(!StartValue.match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/))
				{
					StartInput.value = StartValue.match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}/) || (theYear + "-" + theMonth + "-" + theDate);
					EndInput.value = EndValue.match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}/) || theYear + "-" + theMonth + "-" + theDate;
				}
				Start.style.display='none';
				End.style.display='none';
				break;
		}

		switch(EventRType.value)
		{
			case "4":
				EventMonth.style.display	= 'block';
				WSO.EventTag.changeMonth();
			break;
			case "3":
				EventDate.style.display	= 'block';
				EventWeek.style.display	= 'block';
				WSO.EventTag.changeWeek();
				WSO.EventTag.changeDate();
			break;
			case "2":
				EventDay.style.display	= 'block';
				break;
			case "1":
				break;
			case "0":
				Start.style.display='block';
				End.style.display='block';
				switch(EventType.value)
				{
					case "0":
						StartInput.setAttribute('type',"datetime-local");
						EndInput.setAttribute('type',"datetime-local");
						if(StartValue.match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/))
						{
							StartInput.value = StartValue + "T12:00";
							EndInput.value = EndValue + "T12:00";
						}
						else if(StartValue.match(/^[0-2][0-9]:[0-5][0-9]$/))
						{
							StartInput.value = theYear + "-" + theMonth + "-" + theDate + "T" + StartValue;
							EndInput.value = theYear + "-" + theMonth + "-" + theDate + "T" + EndValue;
						}
						break;
					case "3":
						Start.style.display='none';
						End.style.display='none';
						Long.style.display='none';
						break;
				}
				Regular.style.display = 'none';
				Long.style.display  = 'none';
		}
		EndInput.setAttribute('min',StartInput.value);
	}
	/* 期間変更時 */
	WSO.EventTag.changeFirst	= function(e)
	{
		var form = e.target.form;
		var First = form.EventFirst;
		var Last  = form.EventLast;
		Last.setAttribute('min',First.value);
		if(Last.value < First.value) Last.value = First.value;
	}
	/* 日時変更時 */
	WSO.EventTag.changeStart	= function(e)
	{
		var form = e.target.form;
		var Start = form.EventStart;
		var End  = form.EventEnd;
		End.setAttribute('min',Start.value);
		if(End.value < Start.value) End.value = Start.value;
	}
	/* 月変更時の処理 */
	WSO.EventTag.changeMonth	= function()
	{
		var myElements	=	document.getElementById('EventMonth').getElementsByTagName('input');
		var Week	= document.getElementById('EventWeek');
		var Date	= document.getElementById('EventDate');
		var Day		= document.getElementById('EventDay');
		Week.style.display	='none';
		Date.style.display	='none';
		Day.style.display	='none';
		for(var i=0;i<myElements.length;i++)
		{
			if(myElements[i].checked)
			{
				WSO.EventTag.changeDate();
				WSO.EventTag.changeWeek();
			}
		}
	}
	/* 日付変更時の処理 */
	WSO.EventTag.changeDate	= function()
	{
		var myElements	= document.getElementById('EventDate').getElementsByTagName('input');
		var Week	= document.getElementById('EventWeek');
		Week.style.display	='block';
		for(var i=0;i<myElements.length;i++)
		{
			if(myElements[i].checked)
			{
				Week.style.display	='none';
			}
		}
	}

	/* 週変更時の処理 */
	WSO.EventTag.changeWeek	= function()
	{
		var myElements	= document.getElementById('EventWeek').getElementsByTagName('input');
		var Date	= document.getElementById('EventDate');
		var Day		= document.getElementById('EventDay');
		Date.style.display	='block';
		Day.style.display	='none';
		for(var i=0;i<myElements.length;i++)
		{
			if(myElements[i].checked)
			{
				Date.style.display	='none';
				Day.style.display	='block';
			}
		}
	}
WSO.Onload
(
	function()
	{
		var myDate		= new Date();
		var theYear		= myDate.getFullYear();
		var theMonth	= ("00"+(myDate.getMonth() + 1).toString()).substr(-2,2);
		var theDate		= ("00"+myDate.getDate()).substr(-2,2);
		var theDateTime = theYear + "-" + theMonth + "-" + theDate +"T12:00"

		// 日付を挿入する
		var DateForm	= new WSO.TagForm('日付の挿入','DateForm','optionform','date');
		DateForm.setFormFunction
		(
			function(e)
			{
				var myForm = this.myForm;
				var tag = "[date:"+this.myForm.form.DateDate.value+"]";

				WSO.EditPoint.insertTag(this.myForm,tag);
			}
		);
		DateForm.appendChild(WSO.CreateTagForm.inputText('日付','DateDate',theYear + "-" + theMonth + "-" + theDate,10,'date'));
		DateForm.setToAll('挿入');

		//イベントの登録
		var Event	= new WSO.TagForm('イベントの登録','EventForm','optionform','event');
		Event.setFormFunction(WSO.EventTag.setToTextarea);

		Event.appendChild(WSO.CreateTagForm.inputText('イベント名','EventTitle','',45));

		//期間
		var EventRegular= document.createElement('fieldset');
		EventRegular.setAttribute('id',"EventRegular");
		var EventRegularLegend = document.createElement('legend');
		EventRegularLegend.appendChild(document.createTextNode('期間'));
		EventRegular.appendChild(EventRegularLegend);

		var EventFirst	= WSO.CreateTagForm.input('date','EventFirst',theYear + "-" + theMonth + "-" + theDate,15);
		EventRegular.appendChild(EventFirst);
		EventRegular.appendChild(document.createTextNode('～'));
		EventFirst.addEventListener('change',WSO.EventTag.changeFirst,false);

		var EventLast	= WSO.CreateTagForm.input('date','EventLast',theYear + "-" + theMonth + "-" + theDate,15);
		EventLast.setAttribute('min',theYear + "-" + theMonth + "-" + theDate);
		EventRegular.appendChild(EventLast);
		EventRegular.style.display='none';

		Event.appendChild(EventRegular);

		//繰り返し
		var EventRType	= WSO.CreateTagForm.selectNumberText('繰返','EventRType',0,0,['一回','毎日','毎週','毎月','毎年']);
		EventRType.addEventListener('change',WSO.EventTag.changeEventType,false);
		Event.appendChild(EventRType);

		//月
		var EventMonth	= WSO.CreateTagForm.checkbox('月','EventMonth',1,12,['1','2','3','4','5','6','7','8','9','10','11','12']);
		EventMonth.addEventListener('change',WSO.EventTag.changeMonth,false);
		EventMonth.style.display="none";
		Event.appendChild(EventMonth);
		//日付
		var EventDate	= WSO.CreateTagForm.checkbox('日付','EventDate',1,31);
		EventDate.addEventListener('change',WSO.EventTag.changeDate,false);
		EventDate.style.display="none";
		Event.appendChild(EventDate);
		//週
		var EventWeek	= WSO.CreateTagForm.checkbox('週','EventWeek',1,5,['第一週','第二週','第三週','第四週','第五週']);
		EventWeek.addEventListener('change',WSO.EventTag.changeWeek,false);
		EventWeek.style.display="none";
		Event.appendChild(EventWeek);
		//曜日
		var EventDay	= WSO.CreateTagForm.checkbox('曜日','EventDay',1,7,['日','月','火','水','木','金','土']);
		EventDay.style.display="none";
		Event.appendChild(EventDay);

		//イベント型
		var EventType	= WSO.CreateTagForm.selectNumberText('時間','EventType',0,0,['時間','終日','有効期間','未定']);
		EventType.addEventListener('change',WSO.EventTag.changeEventType,false);
		Event.appendChild(EventType);

		//日時
		var EventStart = WSO.CreateTagForm.inputText('開始','EventStart',theDateTime,15,'datetime-local');
		EventStart.getElementsByTagName('input')[0].addEventListener('change',WSO.EventTag.changeStart,false);
		Event.appendChild(EventStart);
		var EventEnd   = WSO.CreateTagForm.inputText('終了','EventEnd',theDateTime,15,'datetime-local');
		EventEnd.getElementsByTagName('input')[0].setAttribute('min',theDateTime);
		Event.appendChild(EventEnd);

		var EventLong	= document.createElement('label');
		EventLong.setAttribute('id',"EventLong");
		EventLong.appendChild(document.createTextNode('日数'));
		var EventLongDay = WSO.CreateTagForm.input('number','EventLongDay','0',4)
		EventLongDay.setAttribute('min',"0");
		EventLong.appendChild(EventLongDay);
		EventLong.appendChild(WSO.CreateTagForm.input('time','EventLongTime',"00:00",15));

		Event.appendChild(EventLong);
		EventLong.style.display = "none";

		Event.appendChild(WSO.CreateTagForm.inputText('場所','EventLocation','',25));

		Event.setToAll('挿入');
	}
);

