﻿//主调用函数是 showCalendar,例如：
//<input name="startDate" type="text" size="10" maxlength="6" onclick="event.cancelBubble=true;javascript:showCalendar(this,'startDate',false,'startDate',null,'');">

document.write('<iframe id=CalFrame name=CalFrame frameborder=0 src=js/calendar.htm style=display:none;position:absolute;z-index:100></iframe>');
document.onclick=hideCalendar;

/**
 * @param tt          this
 * @param sImg        日历弹出位置的控件的名称
 * @param bOpenBound  true:日期不受限制 false:日期只可选今日以后 
 * @param sFld1       取得日期的控件名称
 * @param sFld2       弹出日历默认日期，空为NULL
 * @param sCallback   函数调用
 */
function showCalendar(tt,sImg,bOpenBound,sFld1,sFld2,sCallback) {
  var fld1,fld2;
  var cf=document.getElementById("CalFrame");
  var wcf=window.frames.CalFrame;
  var oImg=document.getElementById(sImg);
  if(!oImg){alert("控制对象不存在");return;}
  if(!sFld1){alert("输入控件未指定");return;}
  fld1=document.getElementById(sFld1);
  if(!fld1){alert("输入控件不存在");return;}
  //输入控件类型TEXT
  if(fld1.tagName!="INPUT"||fld1.type!="text"){alert("输入控件类型错误");return;}
  if(sFld2) {
    fld2=document.getElementById(sFld2);
    if(!fld2){alert("参考控件不存在");return;}
    if(fld2.tagName!="INPUT"||fld2.type!="text"){alert("参考控件类型错误");return;}
  }
  if(!wcf.bCalLoaded){alert("日历未成功装载！请刷新页面");return;}
  if(cf.style.display=="block"){cf.style.display="none";return;}
  
  var eT=0,eL=0,p=oImg;
  var sT=document.body.scrollTop,sL=document.body.scrollLeft;
  var eH=0,eW=oImg.width;
  var ttt=0,ttl=0;
  
  ttt=tt.offsetTop; 
  ttl=tt.offsetLeft;
  eH = tt.clientHeight;
  while (tt = tt.offsetParent) {
    ttt+=tt.offsetTop; 
    ttl+=tt.offsetLeft;
  }	
  cf.style.top=ttt+eH;
  cf.style.left=ttl;    
  cf.style.display="block";
  
  wcf.openbound=bOpenBound;
  wcf.fld1=fld1;
  wcf.fld2=fld2;
  wcf.callback=sCallback;
  wcf.initCalendar();
}

function hideCalendar() {
  var cf=document.getElementById("CalFrame");
  cf.style.display="none";
}