﻿<!--
document.write("<div id=meizzCalendarLayer style='position: absolute; z-index: 9999; width: 190; height: 203; display: none'>");
document.write("<iframe src='../include/blank.aspx' name=meizzCalendarIframe scrolling=no frameborder=0 width=100% height=100%></iframe></div>");
function writeIframe(){
    var strIframe = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"+
                    "<style>"+
                    "*{font-size: 12px; font-family: 宋体}"+
                    "table#tableMain{ width: 188; height: 190;color: "+ WebCalendar.DarkColor +";  border-left:3px outset lightgrey;border-top:3px outset lightgrey;border-right:3px inset lightgrey;border-bottom:3px inset lightgrey;}"+
                    "table#tableWeek td{ text-align:right;font-weight: bold;color: "+ WebCalendar.DarkColor +";background-color:lightgrey;}"+
                    "table#tableDay  td{ text-align:right}"+
                    ".tableFoot{ color: #000099;font-weight: bold;}"+
                    ".out { text-align: center;}"+
                    ".over{ text-align: center;}"+
                    "</style>"+
                    "<scr"+"ipt language=javascript>"+
                    "var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; "+
                    "function document.onmousemove(){"+
                    "   if(parent.WebCalendar.drag && drag){"+
                    "        if(o.style.left=='')o.style.left=0; "+
                    "        if(o.style.top=='')o.style.top=0;"+
                    "        o.style.left = parseInt(o.style.left) + window.event.clientX-cx;"+
                    "        o.style.top  = parseInt(o.style.top)  + window.event.clientY-cy;"+
                    "    }"+
                    "}"+
                    "function document.onkeydown(){ "+
                    "   switch(window.event.keyCode){"+
                    "        case 27 : parent.hiddenCalendar(); break;"+
                    "        case 37 : parent.prevM(); break; "+
                    "        case 38 : parent.prevY(); break; "+
                    "        case 39 : parent.nextM(); break; "+
                    "        case 40 : parent.nextY(); break;"+
                    "        case 84 : document.forms[0].today.click(); break;"+
                    "   }"+
                    "   window.event.keyCode = 0; "+
                    "   window.event.returnValue= false;"+
                    "}"+
                    "function dragStart(){"+
                    "   cx=window.event.clientX; cy=window.event.clientY; drag=true;"+
                    "}"+
                    "</scr"+"ipt>"+
                    "</head>"+
                    "<body onselectstart='return false' style='margin: 0px' oncontextmenu='return false'>"+
                    "<form name=meizz>"+
                    "  <table id=tableMain border=0 cellspacing=0 cellpadding=0>"+
                    "  <tr><td height=20 align=top align=center style='background-color:#6699CC'>"+
                    "        <table id=tableTitle border=0 width=180 cellpadding=0 cellspacing=0 onmousedown='dragStart()' onmouseup='drag=false' onmouseout='drag=false'>"+
                    "        <tr>"+
                    "           <td width=100 align=left style='color:#ffffff;font-weight:bold;font-size:13px'>&nbsp;选择日期</td>"+
                    "           <td align=right><input type=button style='font-wight:bold;border:0;text-align:middle' value='×' onclick='parent.hiddenCalendar()'></td>"+
                    "        </tr>"+
                    "        </table>"+
                    "      </td>"+
                    "  </tr>"+
                    "  <tr><td height=5>&nbsp;</td></tr>"+
                    "  <tr><td width=186 height=25 valign=top align=center>"+
                    "        <table id=tableHead border=0 width=180 cellpadding=0 cellspacing=0>"+
                    "        <tr>"+
                    "           <td align=center width=30 height=19 class=bg style='cursor: pointer ' onclick='parent.prevM()'><b>&lt;</b></td>"+
                    "           <td align=center>"+
                    "             <select name=tmpYearSelect onchange='parent.WebCalendar.thisYear =this.value;  parent.writeCalendar();'></select>"+
                    "             <select name=tmpMonthSelect onchange='parent.WebCalendar.thisMonth=this.value; parent.writeCalendar();'></select>"+
                    "           </td>"+
                    "           <td align=center width=30 height=19 class=bg style='cursor: pointer ' onclick='parent.nextM()'><b>&gt;</b></td>"+
                    "         </tr></table>"+
                    "      </td>"+
                    "  </tr>"+
                    "  <tr><td height=20 valign=middle align=center>"+
                    "        <table id=tableWeek border=0 width=180 cellpadding=0 cellspacing=0>"+
                    "        <tr align=center><td height=20>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>"+
                    "        </table>"+
                    "      </td>"+
                    "  </tr>"+
                    "  <tr><td valign=top align=center>"+
                    "        <table id=tableDay height=120 width=180 border=0 cellspacing=0 cellpadding=0>";
   for(var x=0; x<6; x++){ 
       strIframe += "        <tr>";
       for(var y=0; y<7; y++)  
           strIframe += "      <td class=out style='cursor:pointer ' id='meizzDay"+ (x*7+y) +"'></td>";
       strIframe += "        </tr>";
   }
   strIframe    +=  "          </table>"+
                    "      </td>"+
                    "   </tr>"+                    
                    "  </table>"+
                    " <script language=javascript>"+
                    "  parent.funYearSelect();parent.funMonthSelect();"+
                    " </script>"+
                    " </form>"+
                    "</body></html>";
                    //"   <tr>"+
                    //"      <td height=20 width=180 align=center class='tableFoot'>今天是:"+WebCalendar.today+"</td>"+
                    //"   </tr>"+
    with(WebCalendar.iframe) {
        document.writeln(strIframe); 
        document.close();
        for(var i=0; i<42; i++){
            WebCalendar.dayObj[i] = eval("meizzDay"+ i);
            WebCalendar.dayObj[i].onmouseover = dayMouseOver;
            WebCalendar.dayObj[i].onmouseout  = dayMouseOut;
            WebCalendar.dayObj[i].onclick     = returnDate;
        }
    }
}
function TWebCalendar(){ //初始化日历的设置
    this.regInfo    = "日历&#13;关闭的快捷键：[Esc]";
    this.daysMonth  = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    this.day        = new Array(42);            //定义日历展示用的数组
    this.dayObj     = new Array(42);            //定义日期展示控件数组
    this.dateStyle  = null;                     //保存格式化后日期数组
    this.objExport  = null;                     //日历回传的显示控件
    this.eventSrc   = null;                     //日历显示的触发控件
    this.inputDate  = null;                     //转化外的输入的日期(d/m/yyyy)
    this.thisYear   = new Date().getFullYear(); //定义年的变量的初始值
    this.thisMonth  = new Date().getMonth()+ 1; //定义月的变量的初始值
    this.thisDay    = new Date().getDate();     //定义日的变量的初始值
    this.today      = this.thisDay +"/"+ this.thisMonth +"/"+ this.thisYear;   //今天(d/m/yyyy)
    this.iframe     = window.frames("meizzCalendarIframe"); //日历的 iframe 载体
    this.calendar   = getObjectById("meizzCalendarLayer");  //日历的层
    this.dateReg    = "";           //日历格式验证的正则式

    this.yearFall   = 20;           //定义年下拉框的年差值
    this.format     = "yyyy-mm-dd"; //回传日期的格式
    this.timeShow   = false;        //是否返回时间
    this.drag       = true;         //是否允许拖动
    this.darkColor  = "#0000D0";    //控件的暗色
    this.lightColor = "#FFFFFF";    //控件的亮色
    this.btnBgColor = "#FFFFF5";    //控件的按钮背景色
    this.wordColor  = "#000080";    //控件的文字颜色
    this.wordDark   = "#DCDCDC";    //控件的暗文字颜色
    this.dayBgColor = "#E6E6FA";    //日期数字背景色
    this.todayColor = "#FF0000";    //今天在日历上的标示背景色
    this.DarkBorder = "#D4D0C8";    //日期显示的立体表达色
}   
var WebCalendar = new TWebCalendar();

function showCalender(){ //主调函数
    var e = window.event.srcElement;   
    writeIframe();
    var o = WebCalendar.calendar.style; 
    WebCalendar.eventSrc = e;
    if (arguments.length == 0) 
       WebCalendar.objExport = e;
    else 
       WebCalendar.objExport = eval(arguments[0]);

    WebCalendar.iframe.tableTitle.style.cursor = WebCalendar.drag ? "move" : "default";
    var t = e.offsetTop,  h = e.clientHeight, l = e.offsetLeft, p = e.type;
    while (e = e.offsetParent){
    	t += e.offsetTop; 
    	l += e.offsetLeft;
    }
    o.display = ""; 
    WebCalendar.iframe.document.body.focus();
    var cw = WebCalendar.calendar.clientWidth, ch = WebCalendar.calendar.clientHeight;
    var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;
    
    if (document.body.clientHeight + dt - t - h >= ch) {
       o.top = (p=="image")? t + h : t + h + 6;
       //alert("a:"+o.top);
    }else {
       o.top  = (t - dt < ch) ?  ((p=="image")? t + h : dt + h + 6):(t - ch) ;
       //alert("b:"+o.top+","+(t + h + 6));
    }
    if (dw + dl - l >= cw) 
       o.left = l; 
    else 
       o.left = (dw >= cw) ? dw - cw + dl : dl;

    if  (!WebCalendar.timeShow)
       WebCalendar.dateReg = /^(\d{1,4})(-|\/|.)(\d{1,2})\2(\d{1,2})$/;
    else 
       WebCalendar.dateReg = /^(\d{1,4})(-|\/|.)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;

    try{
        if (WebCalendar.objExport.value.trim() != ""){
            WebCalendar.dateStyle = WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);
            if (WebCalendar.dateStyle == null){
                WebCalendar.thisYear   = new Date().getFullYear();
                WebCalendar.thisMonth  = new Date().getMonth()+ 1;
                WebCalendar.thisDay    = new Date().getDate();
                alert("原文本框里的日期有错误！\n可能与你定义的显示时分秒有冲突！");
                writeCalendar(); return false;
            }else{
                WebCalendar.thisYear   = parseInt(WebCalendar.dateStyle[1], 10);
                WebCalendar.thisMonth  = parseInt(WebCalendar.dateStyle[3], 10);
                WebCalendar.thisDay    = parseInt(WebCalendar.dateStyle[4], 10);
                WebCalendar.inputDate  = parseInt(WebCalendar.thisDay, 10) +"/"+ parseInt(WebCalendar.thisMonth, 10) +"/"+ parseInt(WebCalendar.thisYear, 10); 
                writeCalendar();
            }
        }
        else
            writeCalendar();
    }  catch(e){
    	writeCalendar();
    }
}

function funMonthSelect(){ //月份的下拉框
    var m = isNaN(parseInt(WebCalendar.thisMonth, 10)) ? new Date().getMonth() + 1 : parseInt(WebCalendar.thisMonth);
    var e = WebCalendar.iframe.document.forms[0].tmpMonthSelect;
    for (var i=1; i<13; i++) 
        e.options.add(new Option(i +"月", i));
    //e.style.display = ""; 
    e.value = m; 
    //e.focus(); 
    //window.status = e.style.top;
}
function funYearSelect(){ //年份的下拉框
    var n = WebCalendar.yearFall;
    var e = WebCalendar.iframe.document.forms[0].tmpYearSelect;
    var y = isNaN(parseInt(WebCalendar.thisYear, 10)) ? new Date().getFullYear() : parseInt(WebCalendar.thisYear);
        y = (y <= 1000)? 1000 : ((y >= 9999)? 9999 : y);
    var min = 1980;//(y - n >= 1000) ? y - n : 1000;
    var max = 2020;//(y + n <= 9999) ? y + n : 9999;
        //min = (max == 9999) ? max-n*2 : min;
       // max = (min == 1000) ? min+n*2 : max;
    for (var i=min; i<=max; i++){
        e.options[e.options.length] = new Option(i +"年", i+"", true, true);//e.options.add(new Option(i +"年", i));
    }
    //e.style.display = "";
    e.value = y; //e.focus();
}
function prevM(){  //往前翻月份
    WebCalendar.thisDay = 1;
    if (WebCalendar.thisMonth==1){
        WebCalendar.thisYear--;
        WebCalendar.thisMonth=13;
    }
    WebCalendar.thisMonth--; 
    writeCalendar();
}
function nextM(){  //往后翻月份
    WebCalendar.thisDay = 1;
    if (WebCalendar.thisMonth==12){
        WebCalendar.thisYear++;
        WebCalendar.thisMonth=0;
    }
    WebCalendar.thisMonth++; 
    writeCalendar();
}
function prevY(){
    WebCalendar.thisDay = 1; 
    WebCalendar.thisYear--; 
    writeCalendar();
}//往前翻 Year
function nextY(){
    WebCalendar.thisDay = 1; 
    WebCalendar.thisYear++; 
    writeCalendar();
}//往后翻 Year
function hiddenSelect(e){
    for(var i=e.options.length; i>-1; i--)
       e.options.remove(i); 
    e.style.display="none";
}
function getObjectById(id){ 
    if(document.all) 
       return(eval("document.all."+ id)); 
    return(eval(id)); 
}
function hiddenCalendar(){
    getObjectById("meizzCalendarLayer").style.display = "none";
};
function appendZero(n){
    return(("00"+ n).substr(("00"+ n).length-2));
}//日期自动补零程序
function String.prototype.trim(){
    return this.replace(/(^\s*)|(\s*$)/g,"");
}
function dayMouseOver(){
    this.className = "over";
    this.style.backgroundColor = WebCalendar.darkColor;
    if(WebCalendar.day[this.id.substr(8)].split("/")[1] == WebCalendar.thisMonth)
    this.style.color = WebCalendar.lightColor;
}
function dayMouseOut(){
    this.className = "out"; 
    var d = WebCalendar.day[this.id.substr(8)], a = d.split("/");
    this.style.removeAttribute('backgroundColor');
    if(a[1] == WebCalendar.thisMonth && d != WebCalendar.today){
        if(WebCalendar.dateStyle && a[0] == parseInt(WebCalendar.dateStyle[4], 10))
           this.style.color = WebCalendar.lightColor;
    this.style.color = WebCalendar.wordColor;
    }
}
function writeCalendar(){ //对日历显示的数据的处理程序
    var y = WebCalendar.thisYear;
    var m = WebCalendar.thisMonth; 
    var d = WebCalendar.thisDay;
    WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28;
    if (!(y<=9999 && y >= 1000 && parseInt(m, 10)>0 && parseInt(m, 10)<13 && parseInt(d, 10)>0)){
        alert("对不起，你输入了错误的日期！");
        WebCalendar.thisYear   = new Date().getFullYear();
        WebCalendar.thisMonth  = new Date().getMonth()+ 1;
        WebCalendar.thisDay    = new Date().getDate(); }
    y = WebCalendar.thisYear;
    m = WebCalendar.thisMonth;
    d = WebCalendar.thisDay;
    WebCalendar.iframe.document.forms[0].tmpYearSelect.value=y;
    WebCalendar.iframe.document.forms[0].tmpMonthSelect.value=parseInt(m, 10);
    WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28; //闰年二月为29天
    var w = new Date(y, m-1, 1).getDay();
    var prevDays = m==1  ? WebCalendar.daysMonth[11] : WebCalendar.daysMonth[m-2];
    for(var i=(w-1); i>=0; i--){ //这三个 for 循环为日历赋数据源（数组 WebCalendar.day）格式是 d/m/yyyy
        WebCalendar.day[i] = prevDays +"/"+ (parseInt(m, 10)-1) +"/"+ y;
        if(m==1) WebCalendar.day[i] = prevDays +"/"+ 12 +"/"+ (parseInt(y, 10)-1);
        prevDays--;
    }
    for(var i=1; i<=WebCalendar.daysMonth[m-1]; i++) 
        WebCalendar.day[i+w-1] = i +"/"+ m +"/"+ y;
    for(var i=1; i<42-w-WebCalendar.daysMonth[m-1]+1; i++){
        WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ (parseInt(m, 10)+1) +"/"+ y;
        if(m==12) WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ 1 +"/"+ (parseInt(y, 10)+1);
    }
    for(var i=0; i<42; i++){    //这个循环是根据源数组写到日历里显示
        var a = WebCalendar.day[i].split("/");
        WebCalendar.dayObj[i].innerText    = a[0];
        WebCalendar.dayObj[i].title        = a[2] +"-"+ appendZero(a[1]) +"-"+ appendZero(a[0]);
        //WebCalendar.dayObj[i].bgColor      = WebCalendar.dayBgColor;
        if(i%7==0)
           WebCalendar.dayObj[i].style.color  = "red";
        else if(i%7==6)
           WebCalendar.dayObj[i].style.color  = "green";
        else
           WebCalendar.dayObj[i].style.color  = WebCalendar.wordColor;
        if ((i<10 && parseInt(WebCalendar.day[i], 10)>20) || (i>27 && parseInt(WebCalendar.day[i], 10)<12)){
            WebCalendar.dayObj[i].style.color = WebCalendar.wordDark;
            //WebCalendar.dayObj[i].innerText="";
            //WebCalendar.dayObj[i].title="";  //不显示
        }
        if (WebCalendar.inputDate==WebCalendar.day[i]){    //设置输入框里的日期在日历上的颜色
            WebCalendar.dayObj[i].bgColor = WebCalendar.darkColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;
        }
         
         if (WebCalendar.day[i] == WebCalendar.today){      //设置今天在日历上反应出来的颜色
            WebCalendar.dayObj[i].bgColor = WebCalendar.todayColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;
        }
       
    }
}
function returnDate(){ //根据日期格式等返回用户选定的日期
    if(WebCalendar.objExport){
        var returnValue;
        var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split("/") : arguments[0].split("/");
        var d = WebCalendar.format.match(/^(\w{4})(-|\/|.|)(\w{1,2})\2(\w{1,2})$/);
        if(d==null){
            alert("你设定的日期输出格式不对！\r\n\r\n请重新定义 WebCalendar.format ！"); 
            return false;
        }
        var flag = d[3].length==2 || d[4].length==2; //判断返回的日期格式是否要补零
        returnValue = flag ? a[2] +d[2]+ appendZero(a[1]) +d[2]+ appendZero(a[0]) : a[2] +d[2]+ a[1] +d[2]+ a[0];
        if(WebCalendar.timeShow){
            var h = new Date().getHours(), m = new Date().getMinutes(), s = new Date().getSeconds();
            returnValue += flag ? " "+ appendZero(h) +":"+ appendZero(m) +":"+ appendZero(s) : " "+  h  +":"+ m +":"+ s;
        }
        WebCalendar.objExport.value = returnValue;
        hiddenCalendar();
    }
}
function document.onclick(){
    if(WebCalendar.eventSrc != window.event.srcElement) hiddenCalendar();
}
//-->