var JWEEK = new Array( "日","月","火","水","木","金","土" );
var MAX_LIST30 = 30;

function GetCSV( objId ) {
	var xmlhttp = XMLHttp();
	var objId = objId;
	var csvFile = SCHEDULE;
	var currentDate = new Date();
	var list30 = new Array();
	var firstDate;
	var lastDate;
	this.open = function () {
		xmlhttp.open( "GET", DIR+csvFile+".csv", true );
		xmlhttp.onreadystatechange = get_csv;
		xmlhttp.setRequestHeader( 'If-Modified-Since', 'Thu, 01 Jan 1970 00:00:00 GMT' );
		xmlhttp.send( "" );
	}
	var get_csv = function () {
		if ( xmlhttp.readyState == 4 ) {
			if ( xmlhttp.status == 200 ) {
				var str = main( xmlhttp.responseText );
				document.getElementById( objId ).innerHTML = str;
			} else {
				document.getElementById( objId ).innerHTML = ERROR_GET_HTML;
			}
		}
	}
	var main = function ( data ) {
		make_list30();
//		alert( firstDate + "   " + lastDate );;
		var lines = data.split( "\n", 100 );
		var link;
		for ( var i in lines ) {
			if ( lines[i].match( /^#/ ) ) continue;
			var csv = lines[i].split( ",", 4 );
			if ( ! csv[0].match( /^\d{4}-\d{2}-\d{2}$/ ) ) continue;
			if ( csv[0] < firstDate || lastDate < csv[0] ) continue;
			switch( csv.length ) {
			case 3 :
				if ( csv[2] == CLOSED ) {
					var s = list30[csv[0]];
					list30[csv[0]] = s.replace( /open/, "closed" );
					link = csv[1];
				} else {
					link = "<a onclick=\"htmlFile.open('"+csv[2]+"')\")>"+csv[1]+"</a>";
				}
				break;
			case 2 :
				link = csv[1];
				break;
			case 1 :
				link = "&nbsp;";
			default :
				continue;
			}
			list30[csv[0]] += "<td>" + link + "</td></tr>";
		}
		var str = "<h1>スクールカレンダー</h1><table>";
		for ( i in list30 ) str += list30[i];
		str += "</table>";
		return str;
	}
	var make_key = function () {
		var year = currentDate.getFullYear();
		var month = currentDate.getMonth() + 1;
		var day = currentDate.getDate();
		return year + "-" + sprintf2( month ) + "-" + sprintf2( day );
	}
	var make_list30 = function () {
		var month = currentDate.getMonth() + 1;
		var month2 = 0;
		for ( var i = 0; i < MAX_LIST30; i++ ) {
			var day = currentDate.getDate();
			var week = currentDate.getDay();
			var key = make_key();
			if ( i == 0 ) firstDate = key;
			if ( i == MAX_LIST30 - 1 ) lastDate = key;
			list30[key] = make_tags( month, month2, day, week );
			month2 = month;
			toTomorrow();
			month = currentDate.getMonth() + 1;
		}
	}
	make_tags = function ( month, month2, day, week ) {
		var str = month == month2 ? "" : month + "/ ";
		var jweek = JWEEK[week];
		str += day + "(" + jweek + ")";
		var	cls =  ( week == 0 || week == 6 ) ? "closed" : "open";
		return "<tr><th class=\"" + cls + "\">" + str + "</th>";
	}
	var sprintf2 = function ( n ) {
		if ( n < 10 ) return "0" + n;
		else return "" + n;
	}
	var toTomorrow = function () {
		currentDate.setDate( currentDate.getDate() + 1 );
	}
}
