// カレンダーオブジェクト
var cal1;
// 選択中日付テキストボックスオブジェクト
var selectedText;
// カレンダー表示用DIVのID名
var calName = 'cal1Container';
// 初期表示年月
var defaultYM = '';
// 初期表示年月日
var defaultYMD = '';
// 最小選択年月日
var minDate = '';

/**
  * カレンダー作成(onload時に呼ぶ)
  */
function makeCalendar() {

	if (defaultYM == '') {
	//	today = new Date();
	//	defaultYM = (today.getMonth() + 1) + "/" + today.getFullYear();
	//	defaultYMD = (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getFullYear();
	}
	var options1 = {
		//close:true
		pagedate:defaultYM,
		selected:defaultYMD,
		//mindate:minDate
		mindate:minDate
	}
	/* YUIカレンダー */
	cal1 = new YAHOO.widget.Calendar("cal1", calName, options1);
	cal1.cfg.setProperty("MDY_YEAR_POSITION", 1);
	cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
	cal1.cfg.setProperty("MDY_DAY_POSITION", 3);

	cal1.cfg.setProperty("MY_YEAR_POSITION", 1);
	cal1.cfg.setProperty("MY_MONTH_POSITION", 2);

	// Date labels for Japanese locale

	cal1.cfg.setProperty("MONTHS_SHORT",   ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]);
	cal1.cfg.setProperty("MONTHS_LONG",    ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]);
	cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "T", "W", "T", "F", "S"]);
	cal1.cfg.setProperty("WEEKDAYS_SHORT", ["日", "月", "火", "水", "木", "金", "土"]);
	cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"]);
	cal1.cfg.setProperty("WEEKDAYS_LONG",  ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"]);


	var changePageHandler = function(type, args, obj) {
		//createClearBtn();
	};
    // args から選択した日付が取得できる。
	var selectHandler = function(type, args, obj) {
		var err = false;
		var selDate = (args + "").replace(',', '/');
		selDate = selDate.replace(',', '/');
		calSetDate = getYmdString(selDate, '/');

		selectedText.value = calSetDate;
		//closeCal();
		//cal1.clear();
	};
	var clearHandler = function(type, args, obj) {
	};
	

	// カスタムイベントに登録
    cal1.selectEvent.subscribe(selectHandler, cal1, true);
    cal1.clearEvent.subscribe(clearHandler, cal1, true);
    cal1.changePageEvent.subscribe(changePageHandler, cal1, true);
	// 年月表示
    cal1.Locale.MY_LABEL_MONTH_POSITION = 2;
    cal1.Locale.MY_LABEL_YEAR_POSITION = 1;
    render();
}

function render() {
	// 祝日設定
	for (var i = 0, len = holidayList.length; i < len; i ++) {
		cal1.addRenderer(holidayList[i], cal1.renderCellStyleHighlight3);
	}
	cal1.render();
}

/**
 * カレンダーを非表示にする
 */
function closeCal(){
	document.getElementById(calName).style.display = 'none';
}

/**
 * カレンダーの表示を切り替える。
 * @param obj テキストオブジェクト
 * @param top 上からの絶対位置
 * @param left 左からの絶対位置
 */
function chgCalDisp(txtObj, top, left){
	selectedText = txtObj;
	if(txtObj.value == ''){
		cal1.clear();
	}else{
		var y = (selectedText.value).substr(0, 4);
		var m = (selectedText.value).substr(4, 2);
		var d = (selectedText.value).substr(6, 2);
		cal1.cfg.setProperty("pagedate", y+"/"+m);
		cal1.cfg.setProperty("selected", y+"/"+m+"/"+d);
		render();
	}

	obj = document.getElementById(calName);
	obj.style.display = 'block';
	obj.style.top = top;
	obj.style.left = left;
	//createClearBtn();
}
/**
 * 日付クリアボタンを作成する。
 */
function createClearBtn(){
/*	if(document.getElementById('cls') == undefined){
		var ele = document.createElement('div');
		ele.id = "cls";
		ele.innerHTML = '<br><input type="button" value="日付クリア" style="font-size:12px" onclick="clearDate();closeCal()">';
		document.getElementById(calName).appendChild(ele);
	}*/
}
/**
 * 日付テキストボックス内容をクリアする。
 */
function clearDate(){
	selectedText.value ="";
}
/**
 * 日付をYYYYMMDDに変換する。
 */
function getYmdString(data, split) {
	var time = Date.parse(data);

	//ミリ秒から日付を求める
	var date = new Date();
	date.setTime(time);
	var rtnData = date.getFullYear() + "" + split;
	if ((date.getMonth() + 1) < 10) {
		rtnData += '0' + (date.getMonth() + 1);
	} else {
		rtnData += '' + (date.getMonth() + 1);
	}
	rtnData += '' + split;
	if (date.getDate() < 10) {
		rtnData += '0' + date.getDate();
	} else {
		rtnData += '' + date.getDate();
	}

	return rtnData;
}
