// JavaScript Document
//XMLHttpRequestオブジェクト生成
function createHttpRequest(){

	if(window.ActiveXObject){
		try {
		  return new ActiveXObject("Msxml2.XMLHTTP") 
		} catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP") 
			} catch (e2) {
				return null
			}
		}
	} else if(window.XMLHttpRequest){
		return new XMLHttpRequest() 
	} else {
		return null
	}
}

//受信内容を確認してイベントを起動
function getFile( data , method , dir , async , year , month){
	
	fileName = dir + "/schedule.txt?"+getDateLabel();
	
	//XMLHttpRequestオブジェクト生成
	var httpoj = createHttpRequest()
	httpoj.open( method , fileName , async )

	//受信時に起動するイベント
	httpoj.onreadystatechange = function(){
		if (httpoj.readyState==4){
			//コールバック
			on_loaded(httpoj , year , month , dir)
		}
	}
	httpoj.send( data )
}

//コールバック関数 ( 受信時に実行されます )
function on_loaded(oj , year , month , dir){
			dispTxt = oj.responseText;
			//整形して表示
			//var aryIn = dispTxt.split("\n");
			CalendarDisp(year,month,'',dispTxt,dir);
}

//当月のイベントのみ読み込み
function seikei(aryIn,year,month){
	var aryIn = aryIn.split("\n");
	var txtArray = buf = new Array();
	
	for (var i = 0 ; i < aryIn.length ; i++){
		//txtArray[i] = new Array();
		var line = aryIn[i];
		if (line == "") {
			dispTxt += "\n";
		} else {
			buf = line.split(",");
			if(buf[0] == year && buf[1] == month){
				txtArray = line.split(",");
			}
		}
	}
	
	return txtArray;
}

//カレンダー生成
function CalendarDisp(year,month,day,dispTxt,dir) {

	var CssClass = new Array('ev1','ev2','ev3','ev4','ev5','ev6');
	
	today = new Date();
	if(!year) var year = today.getFullYear(); //年判定
	if(!month) var month = today.getMonth()+1; //月判定
	if(!day) var day = today.getDate(); //日判定
	
	var EvArray = new Array();
	var EvArray = seikei(dispTxt,year,month);
	
	if(EvArray == ""){
		EvArray = [year,month,"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","9"];
	}
	EvArray.splice(0,1);
	//閏年判定
	var leap_year = false;
	if((year%4 == 0 && year%100 != 0) || (year%400 == 0)){
		leap_year = true;
	}
	
	lom = new Array(0,31,28+leap_year,31,30,31,30,31,31,30,31,30,31); //Length Of Month
	dow = new Array("日","月","火","水","木","金","土"); //Day Of Week
	var days = 0; //カレンダー開始位置
	
	for (var i = 1 ; i < month ; i++){
		days += lom[i];
	}
	var week = Math.floor((year*365.2425+days)%7);
	var j = 0;
	var when = year+"年 "+month+"月";
	var disp = "<table class=\"schedule\" summary=\""+when+"のカレンダー\">\n";
	
	disp += "<caption>";
	
	if( month == 1) disp += "<a href=\"javascript:void(0);\" onClick=\"getFile('','GET','"+dir+"',true,"+(year-1)+","+12+");\">&lt;&lt;</a> ";
	else            disp += "<a href=\"javascript:void(0);\" onClick=\"getFile('','GET','"+dir+"',true,"+year+","+(month-1)+");\">&lt;&lt;</a> ";
	
	disp += when;
	
	if( month == 12) disp += " <a href=\"javascript:void(0);\" onClick=\"getFile('','GET','"+dir+"',true,"+(year+1)+","+1+");\">&gt;&gt;</a>";
	else             disp += " <a href=\"javascript:void(0);\" onClick=\"getFile('','GET','"+dir+"',true,"+year+","+(month+1)+");\">&gt;&gt;</a>";
	
	disp += "<\/caption>\n<tr>";
	
	for (i = 0 ; i < 7 ; i++){
		if(i == 0){
			disp += "<th class=red>"+dow[i]+"<\/th>";
		}else if(i == 6){
			disp += "<th class=blue>"+dow[i]+"<\/th>";
		}else{
			disp += "<th>"+dow[i]+"<\/th>";
		}
	}
	disp += "<\/tr>\n<tr>";
	for (i = 0 ; i < week ; i++,j++){
		disp += "<td><\/td>\n";
	}
	
	var span = "";
	
	for (i = 1 ; i <= lom[month] ; i++){	
		if(EvArray[i].indexOf("[",0) != -1){
			//kigou1 = EvArray[i].indexOf("～",0);
			//kigou2 = EvArray[i].substr(0,kigou1+1);
			//kigou3 = EvArray[i].substr(kigou1+1);
			//EvArray[i] = kigou2+"<br>"+kigou3;
			str1 = EvArray[i].indexOf("[",0)+1;
			str2 = EvArray[i].lastIndexOf("]")-2;
			str3 = EvArray[i].substr(str1,str2);
			str4 = EvArray[i].substr(0,1);
			disp += "<td class=\"" +CssClass[str4]+ "\""
			span = "<br><span class=\"fs\">" + str3 + "<\/span>";
		}else{
			disp += "<td class=\"" +CssClass[EvArray[i]]+ "\"";
		}
		disp += ">"+i+span+"<\/td>\n";
		span = "";
		j++;
		if(j > 6){
			disp += "<\/tr>\n<tr>";
			j = 0;
		}
	}
	for (i = j ; i > 6 ; i++){
		disp += "<td><\/td\n>";
	}
	disp += "<\/tr>\n<\/table>\n";
	calendarDisp.innerHTML = disp;
}

function getDateLabel(){
	currentDateObject     = new Date();
	
	currentYear		= currentDateObject.getYear()
	currentFullYear	= currentDateObject.getYear()+1900 ;
	currentMonth	= to2String(currentDateObject.getMonth() + 1);
	currentDate		= to2String(currentDateObject.getDate());
	currentHour		= to2String(currentDateObject.getHours());
	currentMinute	= to2String(currentDateObject.getMinutes());
	currentSecond	= to2String(currentDateObject.getSeconds());
	
	dateString=currentFullYear + currentMonth + currentDate + currentHour + currentMinute + currentSecond;
	return dateString;
}
function to2String(value){
	label=""+value;
	if(label.length<2){
		label="0"+label;
	}
	return label;
}
