var calendar_div;
var calendar_obj;
var calendar_tt;
var calendar_fmt = "YYYY年 MM月 DD日";


var hidden_select;
function get_pos(selectObj)
{
    var pos = new Array();
    
    var pos_x = 0, pos_y = 0;
    
    obj = selectObj;
    
    while(obj.offsetParent)
    {
        pos_y += parseInt(obj.offsetTop);
        pos_x += parseInt(obj.offsetLeft);
        
        obj = obj.offsetParent;
    }
    pos_x += parseInt(obj.offsetLeft);
    pos_y += parseInt(obj.offsetTop);
    

    pos.x = pos_x;
    pos.y = pos_y;
    pos.x2 = pos_x + selectObj.offsetWidth;
    pos.y2 = pos_y + selectObj.offsetHeight;
    
    return pos;
}

function hide_select(x, y, x2, y2)
{
/*
    var selects = document.getElementsByTagName('select');
    var hidden_count = 0;
    
    x = parseInt(x);
    y = parseInt(y);
    x2 = parseInt(x2);
    y2 = parseInt(y2);
    

    var x_cross = false;

    var y_cross = false;
    
    hidden_select = new Array();
    
    for(var i=0; i<selects.length; i++)
    {

        selects[i].pos = new Array();
        selects[i].pos = get_pos(selects[i]);
        

        if((x <= selects[i].pos.x && x2 >= selects[i].pos.x) || (x <= selects[i].pos.x2 && x2 >= selects[i].pos.x2))
            x_cross = true;
        else
            x_cross = false;
        

        if((y <= selects[i].pos.y && y2 >= selects[i].pos.y) || (y <= selects[i].pos.y2 && y2 >= selects[i].pos.y2))
            y_cross = true;
        else
            y_cross = false;
        

        if(x_cross == true && y_cross == true)
        {
            selects[i].style.visibility = "hidden";
            hidden_select[hidden_count++] = i;
        }
    }
*/
}


function show_select()
{
	/*
    var selects = document.getElementsByTagName('select');
    
    for(var i=0; i<hidden_select.length; i++)
    {
        selects[hidden_select[i]].style.visibility = "visible";
    }
    hidden_select = null;
	*/
}

function calendar_set(e)
{
    if(!e) var e = window.event;
    var click_obj = e.target || e.srcElement;
    

    var pos_x = 0;
    var pos_y = 0;
    var obj = click_obj;
    
    while(obj.offsetParent)
    {
        pos_y += parseInt(obj.offsetTop);
        pos_x += parseInt(obj.offsetLeft);
        
        obj = obj.offsetParent;
    }
    pos_x += parseInt(obj.offsetLeft);
    pos_y += parseInt(obj.offsetTop)+5;
    
    pos_y += click_obj.offsetHeight;
    
    calendar_div = document.getElementById('calendar_div');
    
    if(!calendar_div)
    {
        calendar_div = document.createElement("DIV");
        document.body.appendChild(calendar_div);
    }
    calendar_div.id = "calendar_div";
    calendar_div.style.cssText = "width:160px; padding:5px;background-color:#ffffff; border:1px; border-style:solid; border-color:#d0d0d0;z-index:199";
    calendar_div.style.position = "absolute";
    calendar_div.style.top = pos_y + 'px';
    calendar_div.style.left = pos_x + 'px';
    
    calendar_div.style.visibility = "visible";
    

    calendar_div.onmouseover = function(e) {
        if(calendar_tt)
            window.clearTimeout(calendar_tt);
    }
    

    calendar_div.onmouseout = function() {
        if(calendar_tt)
            window.clearTimeout(calendar_tt);
        calendar_tt = window.setTimeout("calendar_hide()", 300);
    }
    
    calendar_div.focus();
}

function calendar_close(e)
{
    if(!e) var e = window.event;
    document.getElementById('calendar_div').style.visibility = "hidden";
    document.getElementById('calendar_months').style.visibility = "hidden";
    document.getElementById('calendar_years').style.visibility = "hidden";
    
//    if(hidden_select)
  //      show_select();
    
    return false;
}

function calendar_years_change(calendar_y, calendar_m)
{
    var calendar_years = document.getElementById('calendar_years');
    var html = calendar_years_html(calendar_y, calendar_m);
    calendar_years.innerHTML = html;
}

function calendar_years_html(calendar_y, calendar_m)
{
    var html = "";
    var margin_top = 0;
    var margin_left = 0;
    var prev_year, next_year;
    
    var year = Number(parseInt((Number(calendar_y) - 1)  / 10) * 10 + 1);
    for(var i=0; i<10; i++)
    {
        margin_top = (i >= 4)? 2 : 0;
        margin_left = (i % 4 == 0)? 0 : 2;
        html += "<div style=\"margin-top:"+margin_top+"px; margin-left:"+margin_left+"px; float:left; width:35px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+String(year+i)+String(calendar_m)+"01')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">"+String(year+i)+"</div>";
    }
    
    prev_year = (year - i);
    next_year = (year + i);
    html += "<div style=\"margin-top:"+margin_top+"px; margin-left:"+margin_left+"px; float:left; width:35px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_years_change('"+String(prev_year)+"', '"+String(calendar_m)+"')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">＜</div>";
    html += "<div style=\"margin-top:"+margin_top+"px; margin-left:"+margin_left+"px; float:left; width:35px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_years_change('"+String(next_year)+"', '"+String(calendar_m)+"')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">＞</div>";
    
    return html;
}

function calendar_draw(set_date)
{
    var days_arr = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    
    var html = "<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border:1px solid #EEE\">";
    var calendar_date, calendar_t;
    

    if(set_date && (set_date.length == 6 || set_date.length == 8))
    {
        calendar_date = set_date;
        var y = calendar_date.substring(0, 4);
        var m = calendar_date.substring(4, 6);
        var s_t = new Date(y, m-1, 1);
        if(s_t.getMonth()+1 != Number(m))
            calendar_t = null;
        else
            calendar_t = new Date(y, m-1, 1);
    }
    

    var t = new Date();
    var today = t.getFullYear();
    
    if(t.getMonth()+1 < 10)
        today += '0' + String(t.getMonth()+1);
    else
        today += String(t.getMonth()+1);
    
    if(t.getDate() < 10)
        today += '0' + String(t.getDate());
    else
        today += String(t.getDate());
    

    if(!calendar_t)
    {
        var y = t.getFullYear();
        var m = t.getMonth();
        
        calendar_t = new Date(y, m, 1);
    }
    

    var calendar_yymm = calendar_t.getFullYear();
    calendar_yymm += (calendar_t.getMonth()+1 < 10)? String('0' + (calendar_t.getMonth() + 1)) : String(calendar_t.getMonth()+1);
    var calendar_y = Number(calendar_yymm.substring(0, 4));
    var calendar_m = Number(calendar_yymm.substring(4, 6));
	var prev_m;
    if(Number(calendar_m) == 1)
    {
        prev_m = String(calendar_y - 1);
        prev_m += '12';
    }
    else
    {
        prev_m = String(calendar_y);
        prev_m += (calendar_m - 1 < 10)? '0' + (calendar_m - 1) : calendar_m - 1;
    }
    
    var next_m;
    if(Number(calendar_m) == 12)
    {
        next_m = String(calendar_y + 1);
        next_m += '01';
    }
    else
    {
        next_m = String(calendar_y);
        next_m += (calendar_m + 1 < 10)? '0' + (calendar_m + 1) : calendar_m + 1;
    }
    

    calendar_m = (calendar_m < 10)? String('0' + calendar_m) : String(calendar_m);
    var prev_y = String(calendar_y-1) + calendar_m;
    var next_y = String(calendar_y+1) + calendar_m;
    
    html += "<tr height=\"20\">";
    html += "<td colspan=\"7\" width=\"100%\" align=\"center\" valign=\"center;\">";
    html += "<span style=\"cursor:pointer; font-size: 12px;\" onClick=\"calendar_draw('"+prev_y+"')\"><img src=\"/img/paging_nn.gif\" style=\"vertical-align:-1px\"> </span>&nbsp;";
    html += "<span style=\"cursor:pointer; font-size: 12px;\" onClick=\"calendar_draw('"+prev_m+"')\"><img src=\"/img/paging_n.gif\" style=\"vertical-align:-1px\"></span>&nbsp;&nbsp;&nbsp;&nbsp;";
    html += "<span style=\"font-size: 12px; cursor:pointer;\" onClick=\"//calendar_years_toggle()\">"+calendar_y+"年</span>&nbsp;";
//    html += "<span style=\"font-size: 12px; cursor:pointer;\" onClick=\"calendar_years_toggle()\">↕"+calendar_y+"</span>&nbsp;";
    html += "<span style=\"cursor:pointer; font-size: 12px;\" onClick=\"//calendar_months_toggle()\">"+calendar_m+"月</span>&nbsp;&nbsp;&nbsp;";
//    html += "<span style=\"cursor:pointer; font-size: 12px;\" onClick=\"calendar_months_toggle()\">↕"+calendar_m+"</span>&nbsp;";
    html += "<span style=\"cursor:pointer; font-size: 12px;\" onClick=\"calendar_draw('"+next_m+"')\"><img src=\"/img/paging_p.gif\" style=\"vertical-align:-1px\"></span>&nbsp;";
    html += "<span style=\"cursor:pointer; font-size: 12px;\" onClick=\"calendar_draw('"+next_y+"')\"> <img src=\"/img/paging_pp.gif\" style=\"vertical-align:-1px\"></span>";
    html += "</td>";
//    html += "<td align=\"right\" valign=\"center;\"><span style=\"cursor:pointer; font-size: 12px; font-weight:bold;\" onClick=\"calendar_close(event)\"><img src=\"/img/x3.gif\"></span></td>";
    html += "</tr>";

    html += "<tr height=\"20\">";
    html += "<td style=\"background-color:#f0f0f0; text-align:center; font-weight:bold; font-size:12px;color:#F00;width:20px\">日</td>";
    html += "<td style=\"background-color:#f0f0f0; text-align:center; font-weight:bold; font-size:12px;width:20px\">月</td>";
    html += "<td style=\"background-color:#f0f0f0; text-align:center; font-weight:bold; font-size:12px;width:20px\">火</td>";
    html += "<td style=\"background-color:#f0f0f0; text-align:center; font-weight:bold; font-size:12px;width:20px\">水</td>";
    html += "<td style=\"background-color:#f0f0f0; text-align:center; font-weight:bold; font-size:12px;width:20px\">木</td>";
    html += "<td style=\"background-color:#f0f0f0; text-align:center; font-weight:bold; font-size:12px;width:20px\">金</td>";
    html += "<td style=\"background-color:#f0f0f0; text-align:center; font-weight:bold; font-size:12px;color:#00F;width:20px\">土</td>";
    html += "</tr>";
    
    var week = calendar_t.getDay();
    for(var i=0; i<week; i++)
    {
        html += "<td>&nbsp;</td>\n";
    }
    

    if(String(calendar_t.getMonth()+1) == '2')
        max_days = ((( calendar_y % 4 == 0) && (calendar_y % 100 != 0)) || (calendar_y % 400 == 0))? 29 : 28;
    else
        max_days = days_arr[calendar_t.getMonth()];
    

    var this_date;
    for(var i=1; i<=max_days; i++)
    {
        if(week > 6)
        {
            html += "</tr>";
            week = 0;
        }
        if(week == 0)
        {
            html += "<tr height=\"20\">";
        }
        

        this_date = calendar_yymm;

        this_date += (i <= 9)? String('0' + i) : String(i);
        
        var style = "width:20px;cursor:pointer; font-size:12px; text-align:center;";
        if(set_date == this_date)
            style += " text-decoration:underline;";
        if(today == this_date)
            style += " font-weight:bold;";
        if(week == 0)
            style += " color:red;";
        if(week == 6)
            style += " color:blue;";
        html += "<td style=\""+style+"\" onClick=\"calendar_set_date('"+this_date+"');\">"+i+"</td>";
        week ++;
    }
    
    if(week < 6)
    {
        for(var i=week; i<=6; i++)
        {
            html += "<td>&nbsp;</td>\n";
        }
    }
    html += "</tr>";
    html += "</table>";
    
    html += "<div id=\"calendar_years\" style=\"position:absolute; padding-left:4px; width:160px; visibility:hidden; background-color:#ffffff;\">";
    html += calendar_years_html(calendar_y, calendar_m);
    html += "</div>";
    
    html += "<div id=\"calendar_months\" style=\"position:absolute; padding:4px; width:170px; visibility:hidden; background-color:#ffffff;\">";
    html += "<div style=\"float:left; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"01')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">1</div>";
    html += "<div style=\"float:left; margin-left:2px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"02')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">2</div>";
    html += "<div style=\"float:left; margin-left:2px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"03')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">3</div>";
    html += "<div style=\"float:left; margin-left:2px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"04')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">4</div>";
    html += "<div style=\"float:left; margin-left:2px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"05')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">5</div>";
    html += "<div style=\"float:left; margin-left:2px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"06')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">6</div>";
    html += "<div style=\"float:left; margin-top:1px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"07')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">7</div>";
    html += "<div style=\"float:left; margin-left:2px; margin-top:1px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"08')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">8</div>";
    html += "<div style=\"float:left; margin-left:2px; margin-top:1px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"09')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">9</div>";
    html += "<div style=\"float:left; margin-left:2px; margin-top:1px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"10')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">10</div>";
    html += "<div style=\"float:left; margin-left:2px; margin-top:1px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"11')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">11</div>";
    html += "<div style=\"float:left; margin-left:2px; margin-top:1px; width:22px; height:20px; text-align:center; padding-top:2px; border:1px solid #d2d2d2; background-color:#f5f5f5; font-size:12px; cursor:pointer;\" onClick=\"calendar_draw('"+calendar_y+"12')\" onMouseOver=\"this.style.backgroundColor='#e0e0e0';\" onMouseOut=\"this.style.backgroundColor='#f5f5f5';\">12</div>";
    html += "</div>";
    
    calendar_div.innerHTML = html;
    
   // if(hidden_select)
//        show_select();
    
    if(navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Firefox') == -1 && navigator.userAgent.indexOf('Safari') == -1)
    {
	//        hide_select(parseInt(calendar_div.style.left), parseInt(calendar_div.style.top), parseInt(calendar_div.style.left) + parseInt(calendar_div.offsetWidth), parseInt(calendar_div.style.top) + parseInt(calendar_div.offsetHeight));
    }
}

function calendar_set_date(set_date)
{
    if(calendar_obj)
    {
        var year = set_date.substring(0,4);
        var month = set_date.substring(4,6);
        var day = set_date.substring(6,8);
        
        var calendar_value = calendar_fmt;
        calendar_value = calendar_value.replace(/yyyy/i, year);
        calendar_value = calendar_value.replace(/mm/i, month);
        calendar_value = calendar_value.replace(/dd/i, day);
        
        calendar_obj.value = calendar_value;
    }
    calendar_close();
	Js_notice(1);
	Js_notice(2);
	Js_notice(3);
	Js_checkcalendar();
}
function calendar_hide()
{
    if(calendar_tt)
        window.clearTimeout(calendar_tt);
    calendar_close();
}
function calendar_afterHide()
{
    if(calendar_tt)
        window.clearTimeout(calendar_tt);
    this.t = window.setTimeout("calendar_hide()", 300);
}

function calendar_clearT()
{
    if(calendar_tt)
        window.clearTimeout(calendar_tt);
}

function calendar_years_toggle()
{
    var calendar_div = document.getElementById('calendar_div');
    var calendar_years = document.getElementById('calendar_years');
    var calendar_months = document.getElementById('calendar_months');
    
    calendar_months.style.visibility = "hidden";
    
    var top = parseInt(calendar_div.style.top) + 20;
    var left = parseInt(calendar_div.style.left);
    
    calendar_years.style.top = '20px';
    calendar_years.style.left = '0px';
    
    if(calendar_years.style.visibility == "hidden")
        calendar_years.style.visibility = "visible";
    else
        calendar_years.style.visibility = "hidden";
}

function calendar_months_toggle()
{
    var calendar_div = document.getElementById('calendar_div');
    var calendar_months = document.getElementById('calendar_months');
    var calendar_years = document.getElementById('calendar_years');
    
    calendar_years.style.visibility = "hidden";
    

    var top = parseInt(calendar_div.style.top) + 20;
    var left = parseInt(calendar_div.style.left);
    

    calendar_months.style.top = '20px';
    calendar_months.style.left = '0px';
    
    if(calendar_months.style.visibility == "hidden")
        calendar_months.style.visibility = "visible";
    else
        calendar_months.style.visibility = "hidden";
}

function calendar(e, obj_name, fmt)
{
    if(!e) var e = window.event;
    calendar_obj = document.getElementById(obj_name);

    var default_date = calendar_obj.value.replace(/[^0-9]/g, '');
    
    if(default_date.length != 6 && default_date.length != 8)
        default_date = '';
    
    if(!calendar_obj)
    {
        alert(calendar_obj + ' object is null');
        return;
    }
    
    if(fmt)
        calendar_fmt = fmt;
    else
        calendar_fmt = "YYYY-MM-DD";
    

    calendar_set(e);
    calendar_draw(default_date);
}