htc日历再贴
<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="oncontentready" ONEVENT="Init()"/>
<PUBLIC:PROPERTY PUT="setDate" NAME="DateValue" />
<PUBLIC:PROPERTY PUT="setYear" NAME="Year" />
<PUBLIC:PROPERTY PUT="setMonth" NAME="Month" />
<PUBLIC:PROPERTY PUT="setDay" NAME="Day" />
<PUBLIC:PROPERTY GET="getDate" NAME="DateValue" />
<PUBLIC:PROPERTY PUT="setDateFormat" NAME="DateFormat" />
<PUBLIC:PROPERTY PUT="setMessageText" NAME="MessageText" />
<PUBLIC:PROPERTY PUT="setTimeBreak" NAME="TimeBreak" />
<PUBLIC:PROPERTY PUT="setAllowNull" NAME="AllowNull" />
<PUBLIC:PROPERTY PUT="setRelated" NAME="Related" />
<PUBLIC:EVENT NAME="ondatechange" ID="eventID" />
<PUBLIC:ATTACH EVENT="ondatechange" ONEVENT="ResetDateTable()"/>
<SCRIPT LANGUAGE="javascript">
var cl_dpMaxYear=9999;
var cl_dpMaxMonth=11;
var cl_dpMaxDay=31;
var cl_dpMinYear=1600;
var cl_dpMinMonth=0;
var cl_dpMinDay=1;
var oDatePicker;
var oDateObject=new Date();
var oOldDateObject=new Date();
var oInputCtrl;
var oYearInput;
var oMonthInput;
var oDayInput;
var oDateIframe;
var oEvent;
var theName=""
var vt_lastState="";
var vt_dpFormat="yyyy/mm/dd";
var vt_MessageText="";
var bTimeBreak=false;
var bRelated=false;
var bAllowNull=false;
//Init();
///////////////////////////////////////////////////////////////////////////////////
///////////////////////HTC版日历,适用于IE 5.0以上版浏览器//////////////////////////
//为了使下拉日历表正确定位,请将绑定元素使用独立容器存放,例如使用两个不同的单元格///
///////////////////////////////////////////////////////////////////////////////////
function ResetDateTable()
{
//注意,此处不能再次调用设置绑定对象的任何方法,否则产生事件递归触发导致堆栈溢出
//此事件也可放在被绑定元素的HTML中触发.
//lStep=event.result;
}
function setDate(vValue)
{
oDateObject=date_getDateFromVT_DATE(vValue);
}
function setYear(vValue)
{
if(!isNaN(vValue))
{
if(oDateObject.getFullYear()!=parseInt(vValue))
{
oDateObject.setFullYear(vValue);
window.frames[theName].CurrentDate=oDateObject.clone();
dp_onDateChange();
}
}
}
function setMonth(vValue)
{
if(!isNaN(vValue))
{
if(oDateObject.getMonth()+1!=parseInt(vValue))
{
oDateObject.setMonth(parseInt(vValue)-1);
window.frames[theName].CurrentDate=oDateObject.clone();
dp_onDateChange();
}
}
}
function setDay(vValue)
{
if(!isNaN(vValue))
{
if(oDateObject.getDate()!=parseInt(vValue))
{
oDateObject.setDate(vValue);
window.frames[theName].CurrentDate=oDateObject.clone();
dp_onDateChange();
}
}
}
function setDateFormat(vValue)
{
if(vValue!="")
{
vt_dpFormat=vValue.replace(/-/g,"/");
}
}
function setMessageText(vValue)
{
if(vValue!="")
{
vt_MessageText=vValue;
}
}
function setTimeBreak(vValue)
{
bTimeBreak=true;
}
function setRelated(vValue)
{
bRelated=true;
}
function setAllowNull(vValue)
{
bAllowNull=true;
}
function getDate()
{
return oDateObject;
}
//公用函数开始
function KeyFilter(type)
{
event.returnValue=(event.keyCode>=48 && event.keyCode<=57)
}
function getOffsetLeft(src)
{
var set=0;
if(src)
{
if (src.offsetParent)
set+=src.offsetLeft+getOffsetLeft(src.offsetParent);
if(src.tagName!="BODY")
{
var x=parseInt(src.scrollLeft,10);
if(!isNaN(x))
set-=x;
}
}
return set;
}
function getOffsetTop(src)
{
var set=0;
if(src)
{
if (src.offsetParent)
set+=src.offsetTop+getOffsetTop(src.offsetParent);
if(src.tagName!="BODY")
{
var y=parseInt(src.scrollTop,10);
if(!isNaN(y))
set-=y;
}
}
return set;
}
//////////////////////
//日期类扩展函数开始//
function date_format(sFormat)
{
var dt=this;
if(sFormat==null || typeof(sFormat)!="string")
sFormat="";
sFormat=sFormat.replace(/yyyy/ig,dt.getFullYear());
sFormat=sFormat.replace(/mm/ig,dt.getMonth()+1);
sFormat=sFormat.replace(/dd/ig,dt.getDate());
sFormat=sFormat.replace(/hh/ig,dt.getHours());
sFormat=sFormat.replace(/mi/ig,dt.getMinutes());
sFormat=sFormat.replace(/ss/ig,dt.getSeconds());
return sFormat;
}
function date_clone()
{
return new Date(this.getFullYear(),this.getMonth(),this.getDate());
}
function date_compare(dtCompare)
{
var dt=this;
var hr=0;
if(dt && dtCompare)
{
if(dt.getFullYear()>dtCompare.getFullYear())
hr=1;
else if(dt.getFullYear()<dtCompare.getFullYear())
hr=-1;
else if(dt.getMonth()>dtCompare.getMonth())
hr=1;
else if(dt.getMonth()<dtCompare.getMonth())
hr=-1;
else if(dt.getDate()>dtCompare.getDate())
hr=1;
else if(dt.getDate()<dtCompare.getDate())
hr=-1;
}
return hr;
}
function date_getDateFromVT_DATE(dt)
{
dt=dt.replace(/-/g,"/");
dt=Date.parse(dt);
if(isNaN(dt))
dt=null;
else
dt=new Date(dt);
return dt;
}
function initDateObject()
{
Date.prototype.compare=date_compare;
Date.prototype.clone=date_clone;
Date.prototype.format=date_format;
}
//日期类扩展函数结束//
//////////////////////