WSO.EventTag = WSO.EventTag || {};
	/* イベントタグを挿入する */
	WSO.EventTag.setToTextarea = function(obj)
	{
		var Title		= obj.form.EventTitle.value;
		var RType		= obj.form.EventRType.value;
		var Type		= obj.form.EventType.value;

		//開始日時
		var SYear		= obj.form.EventStartYear.value;
		var SMonth		= ('00'+obj.form.EventStartMonth.value).substr(-2,2);
		var SDate		= ('00'+obj.form.EventStartDate.value).substr(-2,2);
		var SHours		= ('00'+obj.form.EventStartHours.value).substr(-2,2);
		var SMinutes	= ('00'+obj.form.EventStartMinutes.value).substr(-2,2);
		var Start		= new Date(SYear,SMonth - 1,SDate);
		var SDay		= Start.getDay();
		var StartD		= SYear+"-"+SMonth+"-"+SDate;
		var StartT		= '';
		var StartDT		= StartD;
		var STime		= 0;

		//継続時間
		var LDay		= ('00'+obj.form.EventLongDay.value).substr(-2,2);
		var LHours		= ('00'+obj.form.EventLongHours.value).substr(-2,2);
		var LMinutes	= ('00'+obj.form.EventLongMinutes.value).substr(-2,2);
		var Long		= LDay * 24 * 60 * 60 * 1000;
		var LongDT		= LDay;

		//終了時間
		var LYear		= obj.form.EventLastYear.value;
		var LMonth		= ('00'+obj.form.EventLastMonth.value).substr(-2,2);
		var LDate		= ('00'+obj.form.EventLastDate.value).substr(-2,2);
		var LastD		= LYear+"-"+LMonth+"-"+LDate;
		var Last		= new Date(LYear,LMonth - 1,LDate);

		//時間指定の場合
		if(Type == 0)
		{
			StartT	= SHours+":"+SMinutes;
			Start.setHours(SHours);
			Start.setMinutes(SMinutes);
			StartDT	= StartDT + " " + StartT;
			STime	= (SHours * 60 + SMinutes * 1) * 60 * 1000;
			Last.setHours(SHours);
			Last.setMinutes(SMinutes);
			LongDT	= LDay+" "+LHours+":"+LMinutes;
			Long	= Long + (LMinutes * 1 + LHours * 60) * 60 * 1000;
		}

		var End		= new Date();
		End.setTime(Start.getTime() + 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)
		{
			EndDT		= EndDT + " " + EHours + ":" + EMinutes;
		}

		var Location	= obj.form.EventLocation.value;

		//未定の場合
		if(Type == 3)
		{
			Start.setTime(0);
			StartDT	= "";
			End.setTime(0);
			EndDT	= "";
			Long	= 0;
		}

		//入力コード
		var tag = '\n=';

		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<EventDays.length;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 + "\"," + Type + ",\"" + StartDT + "\",\"" + EndDT + "\",\"" + Location + "\",\"イベント名;日時;場所\"){" + Title + "}\n";
			break;
			//毎日のイベント
			case '1':
				tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + StartD + "\",\"" + LastD + "\",\"" + Location + "\""
							+ "\"," + Type + ",\"" + StartT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\"){" + Title + "}\n";
				tag = tag + 'h:("回","開始時間","終了時間","場所")\n';
				for(var Time = Start.getTime() ; Time <= Last.getTime() ; Time = Time + 60 * 60 * 24 * 1000)
				{
					tag	= tag + WSO.EventTag.getEachEventTag(++Counter,Type,Time,Long,Location);
				}
			break;
			//毎週のイベント
			case '2':
				tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + StartD + "\",\"" + LastD + "\",\"" + Location + "\""
							+ "\"," + Type + ",\"" + StartT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Days.join(',') + "\"){" + Title + "}\n";
				tag = tag + 'h:("回","開始日","終了日","場所")\n';
				for(var Time = Start.getTime() ; Time <= Last.getTime() ; Time = Time + 60 * 60 * 24 * 7 * 1000)
				{
					for(var i = 0;i < EventDays.length;i++)
					{
						if(EventDays[i].checked)
						{
							var myTime	= ((i + 7 - SDay) % 7) * 60 * 60 * 24 * 1000;
							tag	= tag + WSO.EventTag.getEachEventTag(++Counter,Type,Time + myTime,Long,Location);
						}
					}
				}
			break;
			//毎月のイベント
			case '3':
				//日付指定がある時
				if(checkDate)
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + SYear + '-' + SMonth + "\",\"" + LYear + '-' + LMonth + "\",\"" + Location + "\""
							+ "\"," + Type + ",\"" + StartT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Dates.join(',') + "\"){" + Title + "}\n";
				}
				//日付指定がない時→週指定
				else
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + SYear + '-' + SMonth + "\",\"" + LYear + '-' + LMonth + "\",\"" + Location + "\""
							+ "\"," + Type + ",\"" + StartT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Weeks.join(',') + "\",\"" + Days.join(',') + "\"){" + Title + "}\n";
				}
				tag = tag + 'h:("回","開始日","終了日","場所")\n';
				for(var YearMonth = SYear * 12 + SMonth * 1 - 1;YearMonth <= LYear * 12 + LMonth * 1 - 1;++YearMonth)
				{
					var BMonth	= (YearMonth % 12) + 1;				//現在の月
					var BYear	= (YearMonth - (BMonth - 1)) / 12;	//現在の年
					var BaseDate= new Date(BYear,BMonth - 1,1);
					var Time 	= BaseDate.getTime();
					var BDay	= BaseDate.getDay();
					if(checkDate)
					{
						for(var i = 0;i < EventDates.length;i++)
						{
							if(EventDates[i].checked)
							{
								var myTime	= Time + i * 60 * 60 * 24 * 1000 + STime;
								tag	= tag + WSO.EventTag.checkAndGetEachEventTag(BMonth,++Counter,Type,myTime,Long,Location);
							}
						}
					}
					else
					{
						for(var i = 0;i < EventWeeks.length;i++)
						{
							if(EventWeeks[i].checked)
							{
								for(var j = 0;j < EventDays.length;j++)
								{
									if(EventDays[j].checked)
									{
										var myTime	= Time + (i * 7 + ((j + 7 - BDay) % 7)) * 60 * 60 * 24 * 1000 + STime;
										tag	= tag + WSO.EventTag.checkAndGetEachEventTag(BMonth,++Counter,Type,myTime,Long,Location);
									}
								}
							}
						}
					}
				}
			break;
			//毎年
			case '4':
				if(checkDate)
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + SYear + "\",\"" + LYear + "\",\"" + Location + "\""
							+ "\"," + Type + ",\"" + StartT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Months.join(',') + "\",\"" + Dates.join(',') + "\"){" + Title + "}\n";
				}
				else
				{
					tag = tag + "regular:(\"" + Title + "\"," + RType + ",\"" + SYear + "\",\"" + LYear + "\",\"" + Location + "\""
							+ "\"," + Type + ",\"" + StartT + "\",\"" + LongDT + "\",\"イベント名;期間;繰返;時間;場所\",\""
								+ Months.join(',') + "\",\"" + Weeks.join(',') + "\",\"" + Days.join(',') + "\"){" + Title + "}\n";
				}
				tag = tag + 'h:("回","開始日","終了日","場所")\n';
				for(var BYear = SYear;BYear <= LYear;++BYear)
				{
					for(var i = 1 ; i < EventMonths.length ; i++)
					{
						if(EventMonths[i].checked)
						{
							var BMonth	= i + 1;
							var BaseDate= new Date(BYear,BMonth - 1,1);
							var Time 	= BaseDate.getTime();
							var BDay	= BaseDate.getDay();
							if(checkMonth && checkDate)
							{
								for(var j = 0 ; j < EventDates.length ; j++)
								{
									if(EventDates[j].checked)
									{
										var myTime	= Time + j * 60 * 60 * 24 * 1000 + STime;
										tag	= tag + WSO.EventTag.checkAndGetEachEventTag(BMonth,++Counter,Type,myTime,Long,Location);
									}
								}
							}
							else
							{
								for(var i = 0;i < EventWeeks.length;i++)
								{
									if(EventWeeks[i].checked)
									{
										for(var j = 0;j < EventDays.length;j++)
										{
											if(EventDays[j].checked)
											{
												var myTime	= Time + (i * 7 + ((j + 7 - BDay) % 7)) * 60 * 60 * 24 * 1000 + STime;
												tag	= tag + WSO.EventTag.checkAndGetEachEventTag(BMonth,++Counter,Type,myTime,Long,Location);
											}
										}
									}
								}
							}
						}
					}
				}
			break;
		}

		//内容を空にする
		obj.form.EventTitle.value='';
		obj.form.EventLocation.value='';

		WSO.EditPoint.insertTag(obj,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 EventType	=	document.getElementById('EventForm').form.EventType;
		var EventRType	=	document.getElementById('EventForm').form.EventRType;

		var	Start		= document.getElementById('EventStart');
		var SMonth		= document.getElementById('EventStartMonth');
		var SDate		= document.getElementById('EventStartDate');
		var SHours		= document.getElementById('EventStartHours');
		var SMinutes	= document.getElementById('EventStartMinutes');
		var	Long		= document.getElementById('EventLong');
		var LHours		= document.getElementById('EventLongHours');
		var LMinutes	= document.getElementById('EventLongMinutes');
		var	Last		= document.getElementById('EventLast');
		var LMonth		= document.getElementById('EventLastMonth');
		var LDate		= document.getElementById('EventLastDate');
		var Month	= document.getElementById('EventMonth');
		var Date	= document.getElementById('EventDate');
		var Week	= document.getElementById('EventWeek');
		var Day		= document.getElementById('EventDay');

		Start.style.display		= 'block';
		SMonth.style.display	= 'inline';
		SDate.style.display		= 'inline';
		SHours.style.display	= 'none';
		SMinutes.style.display	= 'none';
		Long.style.display		= 'block';
		LHours.style.display	= 'none';
		LMinutes.style.display	= 'none';
		Last.style.display		='block';
		LMonth.style.display	= 'inline';
		LDate.style.display		= 'inline';
		Month.style.display		='none';
		Date.style.display		='none';
		Week.style.display		='none';
		Day.style.display		='none';

		switch(EventType.value)
		{
			case "0":	SHours.style.display='inline';	SMinutes.style.display='inline';	LHours.style.display='inline';	LMinutes.style.display='inline';	break;
			case "3":	Start.style.display='none';		Long.style.display='none';			Last.style.display='none';											break;
		}

		switch(EventRType.value)
		{
			case "4":
				SMonth.style.display= 'none';	SDate.style.display	= 'none';
				LMonth.style.display= 'none';	LDate.style.display	= 'none';
				Month.style.display	= 'block';	WSO.EventTag.changeMonth();
			break;
			case "3":
				SDate.style.display	= 'none';
				LDate.style.display	= 'none';
				Date.style.display	= 'block';	Week.style.display	= 'block';
				WSO.EventTag.changeWeek();	WSO.EventTag.changeDate();
			break;
			case "2":	Day.style.display	= 'block';																							break;
			case "0":	Last.style.display	= 'none';
		}
	}
	/* 月変更時の処理 */
	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	= myDate.getMonth() + 1;
		var theDate		= myDate.getDate();

		// 日付を挿入する
		var DateForm	= new WSO.TagForm('日付の挿入','DateForm','optionform','date');
		DateForm.setFormFunction
		(
			function(obj)
			{
				var year	= obj.form.DateYear.value;
				var month	= obj.form.DateMonth.value;
				var date	= obj.form.DateDate.value;
				var tag = "[date:"+year+"-"+month+"-"+date+"]";

				WSO.EditPoint.insertTag(obj,tag);
			}
		);
		DateForm.appendChild(WSO.CreateTagForm.selectDateEach('年','DateYear',theYear,1973,2030));
		DateForm.appendChild(WSO.CreateTagForm.selectDateEach('月','DateMonth',theMonth,1,12));
		DateForm.appendChild(WSO.CreateTagForm.selectDateEach('日','DateDate',theDate,1,31));
		DateForm.setToAll('挿入');

		//イベントの登録
		var Event	= new WSO.TagForm('イベントの登録','EventForm','optionform','event');
		Event.setFormFunction(WSO.EventTag.setToTextarea);

		Event.appendChild(WSO.CreateTagForm.inputText('イベント名','EventTitle','',45));

		var EventRType	= WSO.CreateTagForm.selectNumberText('繰返','EventRType',0,0,['一回','毎日','毎週','毎月','毎年']);
		EventRType.addEventListener('change',WSO.EventTag.changeEventType,false);
		Event.appendChild(EventRType);

		var EventType	= WSO.CreateTagForm.selectNumberText('種類','EventType',0,0,['時間指定','終日','開始日時','未定']);
		EventType.addEventListener('change',WSO.EventTag.changeEventType,false);
		Event.appendChild(EventType);

		Event.appendChild(WSO.CreateTagForm.selectDatetime('開始','EventStart',myDate));

		var EventLong	= WSO.CreateTagForm.fieldset('継続時間','EventLong');
		EventLong.appendChild(WSO.CreateTagForm.selectDateEach('日間','EventLongDay',0,0,50));
		EventLong.appendChild(WSO.CreateTagForm.selectDateEach('時間','EventLongHours',0,0,23));
		EventLong.appendChild(WSO.CreateTagForm.selectDateEach('分','EventLongMinutes',0,0,59));
		Event.appendChild(EventLong);

		var EventLast	= WSO.CreateTagForm.selectDate('終了','EventLast',myDate);
		EventLast.style.display='none';
		Event.appendChild(EventLast);

		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);

		Event.appendChild(WSO.CreateTagForm.inputText('場所','EventLocation','',25));

		Event.setToAll('挿入');

//		var EventButton	= WSO.CreateTagForm.input('button','EventButton','挿入');
//		EventButton.addEventListener('click',function(){WSO.EventTag.setToTextarea(event.target);},false);
//		EventForm.appendChild(EventButton);
//
//		makeWSO.TagForm.addForm(EventForm);
//		makeWSO.TagForm.addButton('event','イベントの挿入',function(){EventForm.style.display="block";});
	}
);
