﻿/**
 * YAHOO.widget.Calendar
 * @param  
 *         
 *         
 *         string   action:管理ｱｸｼｮﾝ
 *         string   defselected:選択した日付 2009/09/09,2009/10/10,
 *         pagedate デフォルトで表示される月 2009/09/09 or 2009/09
 */

YAHOO.namespace("cal");
//初期設定
function init(action,defselected,pagedate) {
YAHOO.cal.x1 = new YAHOO.widget.CalendarGroup("cal1", "calendarContainer");

    YAHOO.cal.x1.cfg.setProperty("title", "カレンダー");
    YAHOO.cal.x1.cfg.setProperty("close", false);
    YAHOO.cal.x1.cfg.setProperty("iframe", true);
    YAHOO.cal.x1.cfg.setProperty("MULTI_SELECT", true);
    YAHOO.cal.x1.cfg.setProperty("MONTHS_SHORT", ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]); 
    YAHOO.cal.x1.cfg.setProperty("MONTHS_LONG", ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]); 
    YAHOO.cal.x1.cfg.setProperty("WEEKDAYS_1CHAR", ["日", "月", "火", "水", "木", "金", "土"]); 
    YAHOO.cal.x1.cfg.setProperty("WEEKDAYS_SHORT", ["日", "月", "火", "水", "木", "金", "土"]); 
    YAHOO.cal.x1.cfg.setProperty("WEEKDAYS_MEDIUM",["日", "月", "火", "水", "木", "金", "土"]); 
    YAHOO.cal.x1.cfg.setProperty("WEEKDAYS_LONG", ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"]); 
    YAHOO.cal.x1.cfg.setProperty("MY_YEAR_POSITION", 1);
    YAHOO.cal.x1.cfg.setProperty("MY_MONTH_POSITION", 2);
    YAHOO.cal.x1.cfg.setProperty("MDY_YEAR_POSITION", 1);
    YAHOO.cal.x1.cfg.setProperty("MDY_MONTH_POSITION", 2);
    YAHOO.cal.x1.cfg.setProperty("MDY_DAY_POSITION", 3);
    //defult date
    if(pagedate != ""){
        YAHOO.cal.x1.cfg.setProperty("pagedate", pagedate);
    }
	if(action == "add"){
        YAHOO.cal.x1.selectEvent.subscribe(checkDate, YAHOO.cal.x1, true);
        YAHOO.cal.x1.deselectEvent.subscribe(checkDate, YAHOO.cal.x1, true);
        YAHOO.cal.x1.clearEvent.subscribe(clearHandler, YAHOO.cal.x1, true);
    }else if(action == "conf"){
        YAHOO.cal.x1.cfg.setProperty("mindate", "2999/12/31");
        YAHOO.cal.x1.cfg.setProperty("maxdate", "1000/01/01");
    }else if(action == "view"){
        YAHOO.cal.x1.cfg.setProperty("mindate", "2999/12/31");
        YAHOO.cal.x1.cfg.setProperty("maxdate", "1000/01/01");
    }
    //selected
    if(defselected != ""){
        defselected = defselected.replace(/,$/, '');
        YAHOO.cal.x1.cfg.setProperty("selected", defselected);
        if(action != "view"){
            checkDate();
        }
    }
    YAHOO.cal.x1.render(); 
	YAHOO.util.Event.addListener("clear", "click", YAHOO.cal.x1.clear, YAHOO.cal.x1, true);
}

//日付ﾁｪｯｸ・hidden出力
function checkDate(type,args,obj){
       var selList = YAHOO.cal.x1.getSelectedDates();
       var selFirst = selList.first();//prototype.jsが必要
       var selLast  = selList.last();//prototype.jsが必要
       document.getElementById("output_date_first").innerHTML = getDate(selFirst) + "<input type=\"hidden\" name=\"kikan_start\" value=\"" + getDate(selFirst) + "\" />";
       document.getElementById("output_date_last").innerHTML = getDate(selLast) + "<input type=\"hidden\" name=\"kikan_end\" value=\"" + getDate(selLast) + "\" />";
       var dateList = "";
       for (var i=0; i<selList.length; i++) { 
              var d = selList[i];
              dateList += getDate(d) + ",";
       }
       document.getElementById("output").innerHTML = "<input type=\"hidden\" name=\"kikan\" value=\"" + dateList + "\" />";;
}
//選択解除
function clearHandler(type, args, obj) {
       document.getElementById("output").innerHTML = '';
       document.getElementById("output_date_first").innerHTML = '&nbsp;';
       document.getElementById("output_date_last").innerHTML = '&nbsp;';
};
//日付整形
function getDate(date){
	return date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate();
}
//全選択
YAHOO.util.Event.addListener("allselect", "click", function(){
       var selList = YAHOO.cal.x1.getSelectedDates();
       if(selList.length > 0){
           var selFirst = selList.first();//prototype.jsが必要
           var selLast  = selList.last();//prototype.jsが必要
           YAHOO.cal.x1.cfg.setProperty("selected", getDate(selFirst)+"-"+getDate(selLast));
           checkDate();
           YAHOO.cal.x1.render();
       }
});
