/*------------------------------------------------------------------------
  日期控件（仇春）
  function Cal_dropdown(edit,min,max)
    弹出日历，可不给参数min和max，参数edit必须有

  function Cal_datevalid(edit,min,max)
    检查edit中值是否为大于等于min，小于等于max的有效日期格式字符串。

    是则返回 true，否则返回false
    可不给参数min和max(字符串格式)
    参数edit必须有，如果edit无，则必须是：edit为edit和img的父亲(如span、div)的第一个元素


*/
var Cal_today = new Date();
var Cal_editdate = new Date();
//var Cal_popup = window.createPopup();
var Cal_edit;
var Cal_img;
var pre_next_month_flag = 0;
var Cal_maxdate;
var Cal_mindate;

function Cal_clearTime(thedate)
{
  thedate.setHours(0);
  thedate.setMinutes(0);
  thedate.setSeconds(0);
  thedate.setMilliseconds(0);
}


Cal_clearTime(Cal_today);

//检查日期//
//editctrl：日期控件输入框
// false: 日期错误

function ChkCZDate(editctrl)
{
if(editctrl.value=='')
{ alert('请输入日期！')
  editctrl.select();
  editctrl.focus();
  return false;}
if(!Cal_datevalid(editctrl,'1910-01-01','3000-01-01'))
{
alert('日期格式不正确,日期有效范围为1910年到3000年');
editctrl.focus();
return false;
}
else
 return true;
}

function Cal_decDay(thedate,days)
{
  if (!days) days = 1;
  thedate.setTime(thedate - days*24*60*60*1000);
}

function Cal_incMonth(year,month)
{
	pre_next_month_flag =1;
  if (month == 11) {
    month = 0;
    year++;
  } else month++;
  Cal_writeHTML(year,month);
}

function Cal_decMonth(year,month)
{
	pre_next_month_flag =1;
  if (month == 0) {
    month = 11;
    year--;
  } else month--;
  Cal_writeHTML(year,month);
}

function Cal_decYear(year,month)
{
  Cal_writeHTML(year-1,month);
}

function Cal_incYear(year,month)
{
  Cal_writeHTML(year+1,month);
}
function offsetParent(element) {
    if (element.offsetParent) return element.offsetParent;
    if (element == document.body) return element;

    while ((element = element.parentNode) && element != document.body)
      if (element.style.position != 'static')
        return element;

    return document.body;
}    

function positionedOffset(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;      
      if (element) {
        p = element.style.position;
        if (p == 'relative' || p == 'absolute') break;
      }
    } while (element);
    return [valueL, valueT];
  }

function Cal_writeHTML(theyear,themonth,eImg)
{
	pre_next_month_flag = 1;//区分点击上下月份标志
  var html=
	'<div id="Cal_div1" style="position:absolute;display:none;width:231px;FONT-SIZE:9pt;background-color:#fffef5;border:black 1px solid">'+
	'<TABLE style="border-bottom:black 1px solid;FONT-SIZE: 9pt;background-color:#6699cc;color:white;'+
	'padding-top:2px;font-weight:bold;text-align:center" '+
	'cellSpacing="0" cellPadding="0" width="100%" border="0">'+
	'<TR>'+
	'<TD style="cursor:hand" align="left" width=24 onmouseover="this.style.background=' +
    "'#ffb468';" + '"' + ' onmouseout="this.style.background=' + "'#6699cc';" + '"' +
    ' onclick="parent.Cal_decMonth(' + theyear + ',' + themonth + ');" '+
    '><月</TD>'+
	'<TD align="center">';

  html += theyear + '年' + (themonth + 1) + '月</TD>'+
    '<TD style="cursor:hand" align="right" width=24 onmouseover="this.style.background=' +
    "'#ffb468';" + '"' + ' onmouseout="this.style.background=' + "'#6699cc';" + '"' +
    ' onclick="parent.Cal_incMonth(' + theyear + ',' + themonth + ');" '+
    '>月></TD>';

  html +=
	'</TR></TABLE>'+
	'<TABLE style="FONT-SIZE: 9pt;font-weight:bold;text-align:center;border-bottom:black 1px solid" '+
	'cellSpacing="2" cellPadding="0" width="100%" border="0">'+
	'<TR><TD>日</TD><TD>一</TD><TD>二</TD><TD>三</TD><TD>四</TD><TD>五</TD><TD>六</TD>'+
	'</TR></table>'+
	'<TABLE style="FONT-SIZE: 9pt;text-align:center;cursor:hand" cellSpacing="2" '+
	'cellPadding="0" width="100%" border="0">';

  var day1 = new Date(theyear,themonth,1);
  if (day1.getDay()!=0)
  Cal_decDay(day1,day1.getDay()); // 日历开始日
  for (var i=1;i<=6;i++) {
    html += '<TR>';
    for (var j=1;j<=7;j++) {
      html += '<TD';
      if (day1.getTime()==Cal_today.getTime())
        html += ' style="color:blue"';
      else
      if (day1.getTime()==Cal_editdate.getTime())
        html += ' style="color:red"';
      else
      if (day1.getMonth() != themonth)
        html += ' style="color:#aaaaaa"';
      html += ' onmouseover="this.style.background=' +
              "'aqua';" + '"'+
              ' onmouseout="this.style.background=' +
              "'#fffef5';" + '"';
      html += ' onclick="parent.Cal_clickday('+day1.getTime() + ');"';
      html +='>' + day1.getDate() + '</TD>';
      Cal_decDay(day1,-1);
    }
    html += '</TR>';
    if (day1.getMonth() != themonth) break;
  }

  html +=
	'</TABLE>'+
	'<div style="border-top:black 1px solid;text-align:center;padding:2px">今天是 '+
	'<span style="color:blue;cursor:hand;text-decoration:underline" onclick="javascript:parent.Cal_clickday('+
	Cal_today.getTime() + ');">'+
	Cal_today.getFullYear() + '-' + (Cal_today.getMonth()+1) + '-' + Cal_today.getDate() +
	'</span></div>'+
	'</div>';
	var calParentDiv = document.getElementById('calParentDiv');
	if(!calParentDiv){
		calParentDiv = document.createElement('div');
		calParentDiv.id = 'calParentDiv';
		document.body.appendChild(calParentDiv);
	}		
	calParentDiv.innerHTML = html;	
	var cal_div_obj = document.getElementById('Cal_div1');
	cal_div_obj.style.display = '';
	if(eImg) Cal_img = eImg;
	cal_div_obj.style.left = positionedOffset(Cal_img)[0] + Cal_img.offsetWidth/2;
	cal_div_obj.style.top = positionedOffset(Cal_img)[1] + Cal_img.offsetHeight;
	document.onclick = function(e){
	  e = e?e:window.event;
	  var t = e.srcElement?e.srcElement:e.target;
	  if(pre_next_month_flag== 1 && t.id != Cal_img.id){
	    cal_div_obj.style.display = 'none';
	    pre_next_month_flag =0;
	  }
   }	
}

// 字符串转换为日期
function Cal_strtodate(str)
{
  var date = Date.parse(str);
  if (isNaN(date)) {
    date = Date.parse(str.replace(/-/g,"/")); // 识别日期格式：YYYY-MM-DD
    if (isNaN(date)) date = 0;
  }
  return(date);
}

//返回日期间相差的天数
function Cal_DateDiff(Date1, Date2)
{
	return (Date2-Date1)/(24*60*60*1000);
}

//返回日期间相差的月数(最大误差小于一个月)
function Cal_MonthDiff(DateA, DateB)
{
	Date1=new Date();
	Date2=new Date();
	Date1.setTime(DateA);
	Date2.setTime(DateB);
	months = (Date2.getFullYear() - Date1.getFullYear()) * 12;
	addmonths = Date2.getMonth() - Date1.getMonth();
	months = months + addmonths;
	if(Date2.getDate() < Date1.getDate())
		months--;
	return months;
}

// 弹出日历，可不给参数min和max，参数edit必须有
function Cal_dropdown(event,edit,min,max) {
	var ev = event?event:window.event;
	var eImg;//日历图片	
  if (!edit) {
    if(ev.target) eImg = ev.target;
    else  eImg =ev.srcElement;
    edit = document.getElementById(eImg.id.replace('Img','')); 
    if(!edit) edit = eImg.previousSibling;  
    if ((edit.nodeType != 3) && (edit.type.toLowerCase() != "text")) return;
  }
  Cal_edit = edit;
  var date = Cal_strtodate(edit.nodeValue?edit.nodeValue:edit.value); 
  if (date == 0) date = Cal_today.getTime();
  if (max) Cal_maxdate = Cal_strtodate(max);
  else Cal_maxdate=0;
  if (min) Cal_mindate = Cal_strtodate(min);
  else Cal_mindate = 0;
  Cal_editdate.setTime(date);
  Cal_writeHTML(Cal_editdate.getFullYear(),Cal_editdate.getMonth(),eImg);
}

// 点击日期
function Cal_clickday(day,edit)
{
	pre_next_month_flag =0;
  if (Cal_maxdate != 0) day = Math.min(day,Cal_maxdate);
  day = Math.max(day,Cal_mindate);
  Cal_editdate.setTime(day);
  if(edit){
  	if(edit.nodeValue) edit.nodeValue = Cal_DateToString(Cal_editdate);
  	else edit.value = Cal_DateToString(Cal_editdate);
  }else{
  	if(Cal_edit.nodeValue) Cal_edit.nodeValue = Cal_DateToString(Cal_editdate);
  	else Cal_edit.value = Cal_DateToString(Cal_editdate);
  }
  Cal_edit.focus();
  document.getElementById('Cal_div1').style.display = 'none';
  if(document.getElementById("personnumDiv")!=null)
  	document.getElementById("personnumDiv").style.display="";
}

//将日期转换成格式yyyy-MM-dd字符串

function Cal_DateToString(paradate)
{
  var im;
  var id;
  if ((paradate.getMonth()+1)<10)
  {
   im = paradate.getMonth()+1;
   im = '0' + im;
  }
  else
   im = paradate.getMonth()+1;
  if ((paradate.getDate())<10)
   id = "0"+paradate.getDate();
  else
   id = paradate.getDate();
  return  paradate.getFullYear() + "-" + im + "-"
                   + id;
}

function Cal_datevalid(edit,min,max)
{
  // 检查edit中值是否为大于等于min，小于等于max的有效日期格式字符串。

  var date = Cal_strtodate(edit.value);
  if (date == 0) return false;
  if (max) {
    var max = Cal_strtodate(max);
    if ((max!=0)&&(date>max)) return false;
  }
  if (min) {
    var min = Cal_strtodate(min);
    if ((min!=0)&&(date<min)) return false;
  }
  date = new Date(date);
  edit.value = date.getFullYear() + "-" + (date.getMonth()+1) +
			   "-" + date.getDate();
  return true;
}

// 弹出日历
function Cal_dropdown2()
{
  var edit = event.srcElement;
  if (edit.previousSibling)
  {
    edit = edit.previousSibling;
    if ((!edit.type) || (edit.type.toLowerCase() != "text"))
    {
        return;
    }
  }
  else
  {
    return;
  }

  Cal_edit = edit;
  var prevdate = new String();
  prevdate = edit.value;
  var date = Cal_strtodate(prevdate);
  if (date == 0) date = Cal_today.getTime();
  Cal_maxdate = Cal_strtodate('3000-01-01');
  Cal_mindate = Cal_strtodate('1900-01-01');

  Cal_editdate.setTime(date);
  Cal_writeHTML(Cal_editdate.getFullYear(),Cal_editdate.getMonth());
  //Cal_popup.show(0, edit.offsetHeight, 231, 149,edit);
  //Cal_popup.show(0, edit.offsetHeight, 231, Cal_popup.document.all("Cal_div1").offsetHeight,edit);
}
//************************日期比较的方法*******************************************************
function dateCompare(DateA,DateB){
	Date1=new Date();
	Date2=new Date();
	Date1.setTime(Cal_strtodate(DateA));
	Date2.setTime(Cal_strtodate(DateB));

	var years=Date2.getFullYear()-Date1.getFullYear();

	if(years<0){
		alert("起始日期不能大于终止日期！");return 0;
	}else if(years==0){
		var months=Date2.getMonth() - Date1.getMonth();
		//alert(months);
		if(months<0){
			alert("起始日期不能大于终止日期！");return 0;
		}else if(months==0){
			var days=Date2.getDate() - Date1.getDate();
			if(days<0){
				alert("起始日期不能大于终止日期！");return 0;
			}
		}
	}
}