var calObj = restArr;

var targetDateObj = null;
var targetYear = 0;
var targetMonth = 0;
var targetDay = "";
var targetDate = 0;
//
var eachStartDateObj = null;

window.onload = function()
{
	imgFixFunc();
}

function getDateObjStr()
{
	var returnStr = "";
	var retrunDate = new Date(targetDateObj);
	//
	returnStr = retrunDate.getFullYear();
	returnStr += ""+zeroSap((retrunDate.getMonth()+1));
	returnStr += ""+zeroSap(retrunDate.getDate());
	
	return returnStr;
}

function zeroSap(iValue)
{
	var strReturn = "";
	if(iValue < 10) strReturn = "0"+iValue;
	else strReturn = iValue;
	
	return strReturn;
}

function loadJson()
{
	var strValue = getDateObjStr();	
	var script = document.createElement('script');
	script.type = "text/javascript";
	script.charset = "UTF-8";
	script.src = './restGet.php?callback=setJsonObj&trg='+strValue;
	
	var head = document.getElementsByTagName('head').item(0);
	head.appendChild(script);
}

function init()
{
	setStartDate(getDateObj());
	writeController();
	
	calObj = restArr
	writeCal();
}

function writeController()
{
	$("#calController").html("");
	//
	$("#calController").append("<p>"+getPeriod(0)+"</p>");
	$("#calController").append(getNavi());
	
	$("#calPrev").css("display","block");
	$("#calPrev").click(function()
	{	
		ownKill(-1);
		return false;
	});
	//
	$("#calNext").css("display","block");
	$("#calNext").click(function()
	{
		ownKill(1);
		return false;
	});	
}

function returnToday()
{
	var day = new Date();
	day.setDate(1);
	return day;
}

function returnFuturDay()
{
	var day = new Date();
	day.setDate(1);
	day.setMonth(day.getMonth()+2);
	
	return day;
}

function ownKill(nValue)
{
	$("#calController").html("");
	$("#targetArea").html("");
	
	var moveDate = getDateObj();
	moveDate.setMonth(moveDate.getMonth()+nValue);
	moveDate.setDate(1);
	setDateObj(moveDate);
	
	init();
}

function getPeriod(iNum)
{
	var returnStr = "";
	var currentDate = getDateObj();
	if(iNum != 0) currentDate.setMonth(currentDate.getMonth()+iNum);
	
	returnStr = currentDate.getFullYear()+"年";
	returnStr += (currentDate.getMonth()+1)+"月";
	
	return returnStr;
}

function getNavi()
{
	var returnStr = "";
	returnStr = '<ul>';
	if(getDateObj()>returnToday())
	{
		returnStr += '<li id="calPrev"><a href="#" title="'+getPeriod(-1)+'を確認する">'+getPeriod(-1)+'を確認する</a></li>';
	}
	if(getDateObj()<=returnFuturDay())
	{
		returnStr += '<li id="calNext"><a href="#" title="'+getPeriod(1)+'を確認する">'+getPeriod(1)+'を確認する</a></li>';
	}
	returnStr += '</ul>';
	
	return returnStr;

}

function setJsonObj(objValue)
{
	calObj = objValue;
	writeCal();
}

function checkJsonObj(strValue)
{
	var bReturn = false;
	var iLength = calObj.length;
	var i = 0;
	for(i = 0;i < iLength;i++)
	{
		if(strValue == calObj[i])
		{
			bReturn = true;
			break;
		}
	}
	
	return bReturn;
}

function writeCal()
{
	//alert("コールバック // "+objValue.length);
	$("#targetArea").html("");
	
	var iCnt = 0;
	var eachDate = null;
	var strWrite = "";
	strWrite += getTableHead();
	
	var i = 0,j = 0;
	for(i = 0; i < 6; i++)
	{
		strWrite += "<tr>";
		for(j = 0; j < 7; j++)
		{
			eachDate = null;
			eachDate = getStartDate();
			eachDate.setDate(eachDate.getDate() + iCnt);
			
			if(checkJsonObj(returnFullString(eachDate)))
			{
				strWrite += '<td class="restDay">';
			}
			else strWrite += "<td>";
			strWrite += eachDate.getDate()+"</td>";
			
			iCnt++;
		}
		strWrite += "</tr>";
	}
	
	$("#targetArea").html(strWrite);
}

function returnFullString(objValue)
{
	var strReturn = "";
	var returnObj = new Date(objValue);
	strReturn = returnObj.getFullYear();
	strReturn += ""+zeroSap((returnObj.getMonth()+1));
	strReturn += ""+zeroSap(returnObj.getDate());
	
	return strReturn;
}

function getTableHead()
{
	var strReturn = "";
	strReturn = "<table>";
	strReturn += "<tr>";
	strReturn += "<td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td>";
	strReturn += "</tr>";
	
	return strReturn;
}

function setStartDate(objValue)
{
	var tempStartObj = objValue;
	tempStartObj.setDate(1);
	
	eachStartDateObj = new Date(tempStartObj.setDate(-1*(tempStartObj.getDay()-1)));
}
function getStartDate()
{
	return new Date(eachStartDateObj);
}

function setCalProp()
{
	setDateObj(new Date());
}

function setDateObj(dateObj)
{
	targetDateObj = dateObj;
	targetDateObj.setDate(1);
	targetDateObj.setHours(0);
	targetDateObj.setMinutes(0);
	targetDateObj.setSeconds(0);
}
function getDateObj()
{
	return new Date(targetDateObj);
}

//
function setTargetYear(iYearValue)
{
	targetYear = iYearValue;
}
