
var _gs_month = "";
var _gs_year = "";

// バックエンドモジュールへのURL
var getdata_url = 'http://61.58.37.181/clema2130011/ViewToDo.aspx';
var getcalendar_url = 'http://61.58.37.181/clema2130011/ViewCalendar.aspx';

// イベントを付与
var _onLoadFunc = [getCalendarData, createTooltip];

for(var i in _onLoadFunc) {

	if(window.addEventListener) {
		window.addEventListener('load', _onLoadFunc[i], false); 
	} else if(window.attachEvent) {
		window.attachEvent('onload', _onLoadFunc[i]);
	} else {
		window['onload'] = _onLoadFunc[i];
	}

}

/*
 * カレンダーデータ取得リクエスト発行
 * 
 * @param
 * @return boolean (false)
 *
 */
function getCalendarData() {
	var httpobj = null;
	var i = 0;
	var arrParams = {};
	var name = "";
	var val = null;
/*	
	if (/MSIE/.test(navigator.userAgent)){
		_gs_month = _getElementsById("month")[1].innerText;
		_gs_year = _getElementsById("year")[1].innerText;
	}
	else if (/Firefox/.test(navigator.userAgent)){
		_gs_month = _getElementsById("month")[1].textContent;
		_gs_year = _getElementsById("year")[1].textContent;
	}
*/	

	// Modified By Hashimoto - 前ゼロがなかった場合に正常にデータの読み込みが出来ていなかった点を修正
	if(_gs_month < 10 && _gs_month.toString(10).length == 1) _gs_month = "0" + _gs_month;

	//if(!ChkBrowser("お使いのブラウザには対応していません。\n「Microsoft Internet Explorer 6.0」をご使用ください。")) return false;

	// 遷移しない + セッションに保存しない + チェックする
	//arrParams['join_date'] = _gs_year + "-" + _gs_month + "-01"; //"2008-12-01";
	//arrParams['data_type'] = "month";
	arrParams['gs_year'] = _gs_year;
	arrParams['gs_month'] = _gs_month;

	httpobj = sendRequest(readCalendarData, arrParams,'POST', getcalendar_url,true,true);
	
	return false;
}

/*
 * スケジュールデータ受信後読み取り
 * 
 * @param XMLHttpObject httpobj
 * @return null
 *
 */
function readCalendarData(httpobj) {
	var resdata = httpobj.responseText;
	var dummy = document.createElement("div");
	dummy.innerHTML = resdata;
	dummy.id = "schdata";
	
	document.getElementById("cal_body").appendChild(dummy);
	
	//dummy.cssText = "visibility: 'none';";
	
	//document.body.appendChild(dummy);
	
	//alert(document.getElementById("schdata").innerHTML);
	
	//setScheduleData(document.getElementById("schdata"));
	
	getScheduleData();
}


/*
 * スケジュールデータ取得リクエスト発行
 * 
 * @param
 * @return boolean (false)
 *
 */
function getScheduleData() {
	var httpobj = null;
	var i = 0;
	var arrParams = {};
	var name = "";
	var val = null;
/*	
	if (/MSIE/.test(navigator.userAgent)){
		_gs_month = _getElementsById("month")[1].innerText;
		_gs_year = _getElementsById("year")[1].innerText;
	}
	else if (/Firefox/.test(navigator.userAgent)){
		_gs_month = _getElementsById("month")[1].textContent;
		_gs_year = _getElementsById("year")[1].textContent;
	}
*/	
	//alert(_gs_month);
	//if(!ChkBrowser("お使いのブラウザには対応していません。\n「Microsoft Internet Explorer 6.0」をご使用ください。")) return false;

	// 遷移しない + セッションに保存しない + チェックする
	arrParams['join_date'] = _gs_year + "-" + _gs_month + "-01"; //"2008-12-01";
	arrParams['data_type'] = "month";

	httpobj = sendRequest(readScheduleData, arrParams,'POST', getdata_url,true,true);
	
	return false;
}

/*
 * スケジュールデータ受信後読み取り
 * 
 * @param XMLHttpObject httpobj
 * @return null
 *
 */
function readScheduleData(httpobj) {
	var resdata = httpobj.responseText;
	var dummy = document.createElement("div");
	dummy.innerHTML = resdata;
	dummy.id = "schdata";
	dummy.cssText = "visibility: 'none';";
	
	document.body.appendChild(dummy);
	//alert(document.getElementById("schdata").innerHTML);
	//setScheduleData(document.getElementById("schdata"));
	setScheduleData(dummy);
	
	dummy.parentNode.removeChild(dummy);
	dummy.innerHTML = "";
	dummy = null;

}

/*
 * スケジュールデータをカレンダーにセット
 * 
 * @param HtmlDivElement resdata
 * @return null
 *
 */
function setScheduleData(resdata) {
	var imgNodes = document.getElementsByTagName("img");
	var tmpdate = "";
	var tmpday = "";
	var tmpres = null;
	var j=0, k=0;
	var tdNode = "";
	// 予定がない場合にセルがつぶれてしまうので2行分あける設定
	var dummySch = new Array();
	var tmpDummy;
	var cntDummy = 2;
	
	for(var i=0;i < imgNodes.length;i++) {
		tdNode = imgNodes[i].parentNode;
		tmpday = imgNodes[i].alt;
		if(!tmpday.match(/[^0-9]/g) && tmpday) { 
			// Modified By Hashimoto - 前ゼロがなかった場合に正常にデータの読み込みが出来ていなかった点を修正
			if(imgNodes[i].alt < 10) tmpdate = _gs_year + "/" + _gs_month + "/0" + imgNodes[i].alt;
			else tmpdate = _gs_year + "/" + _gs_month + "/" + imgNodes[i].alt;
			tmpres = _getElementsById("schedule_" + tmpdate);
			if(tmpres.length == 0) {
				for(k=0; k < cntDummy; k++) {
					dummySch.push(document.createElement("div"));
					tmpDummy = dummySch[dummySch.length-1];
					tmpDummy.innerHTML = "&nbsp;";
					tdNode.appendChild(tmpDummy);
				}
			}
			for(j=0;j < tmpres.length;j++) {
				tdNode.appendChild(tmpres[j]);
			}
		}
	}
}

// 更新
function changeCalendar(sYear, sMonth) {
	_gs_year = sYear;
	_gs_month = sMonth;
	
	document.getElementById("cal_body").innerHTML = "";
	
	getCalendarData();
	
	return false;
}

/*
 * 同じIDを持つエレメントを取得
 * 
 * @param string v - 取得対象のID
 * @return Array DomElement - 対象エレメントの配列
 *
 */
function _getElementsById(v) {
	var nodes = [];
	var elem = document.getElementById(v);
	while(elem){
	  nodes.push(elem);
	  elem.id = "";
	  elem = document.getElementById(v);
	}
	
	for(var i=0;i < nodes.length;i++) {
	  nodes[i].id=v;
	}
	
	return nodes;
}

/*
 * 同じIDを持つエレメントを取得(基点配下のみ)
 * 
 * @param string v - 取得対象のID
 *  param DomElement data - 基点となるエレメント 
 * @return Array DomElement - 対象エレメントの配列
 *
 */
function _getElementsByIdFromData(v, data) {
	var nodes = [];
	var elem = data.getElementById(v);
	while(elem){
	  nodes.push(elem);
	  elem.id = "";
	  elem = data.getElementById(v);
	}
	
	for(var i=0;i < nodes.length;i++) {
	  nodes[i].id=v;
	}
	
	return nodes;
}

targetPos = null;

/*
 * スケジュール詳細取得リクエスト発行
 * 
 * @param string sid - 
 *  param DomElement elm 
 * @return boolean (false)
 *
 */
function showDetail(sid, elm) {
	var httpobj = null;
	var i = 0;
	var arrParams = {};
	var name = "";
	var val = null;
	
	//alert(_gs_month);
	//if(!ChkBrowser("お使いのブラウザには対応していません。\n「Microsoft Internet Explorer 6.0」をご使用ください。")) return false;

	// 遷移しない + セッションに保存しない + チェックする
	arrParams['join_date'] = _gs_year + "-" + _gs_month + "-01"; //"2008-12-01";
	arrParams['data_type'] = "single";
	arrParams['sid'] = sid;
	
	//targetPos = new positionInfo(document.getElementById("detail_" + sid));
	targetPos = new positionInfo(elm);

	httpobj = sendRequest(readScheduleDetail, arrParams,'POST', getdata_url,true,true);
	
	return false;
}

/*
 * スケジュール詳細受信後読み取り
 * 
 * @param XMLHttpObject httpobj
 * @return null
 *
 */
function readScheduleDetail(httpobj) {
	var resdata = httpobj.responseText;
	var dummy = document.getElementById("cal_tooltip");

	if(!dummy) {
		dummy = createTooltip();
	}
	
	//alert(resdata);

	dummy.innerHTML = resdata;
	dummy.style.visibility = "visible";
	dummy.style.top = targetPos.getElementBottom() + 'px';
	dummy.style.left = targetPos.getElementLeft() + 'px';
}

/*
 * スケジュール詳細表示ウィンドウ消去
 * 
 * @return null
 *
 */
function hideDetail() {
	var dummy = document.getElementById("cal_tooltip");
	dummy.style.visibility = "hidden";
	//targetPos = null;
}

/*
 * スケジュール詳細表示ウィンドウ作成
 * 
 * @return DomElement dummy
 *
 */
function createTooltip() {
	var dummy = null;
	dummy = document.createElement("div");
	dummy.id = "cal_tooltip";
	dummy.cssText = "visibility: 'hidden'; position: 'absolute'; left: 0px; top: 0px; width: 200px; height: 100px;";
	dummy.style.visibility = "hidden";
	dummy.style.position = "absolute";
	dummy.style.backgroundColor = "white";
	dummy.style.width = "200px";
	dummy.style.height = "100px";
	dummy.style.border = "1px solid green";
	document.body.appendChild(dummy);
	return dummy;
}

