gusucode.com > 学籍管理系统(毕业设计作品)源码程序 > InfoSite\js\My97DatePicker\WdatePicker.js

    /*****************************************************
 * My97 DatePicker Ver 3.0.1
 * BLOG: http://blog.csdn.net/my97/
 * MAIL: smallcarrot@163.com
 ****************************************************/
$position=0;
$dpPath='';
var $dp=null;if(!window.$){$ = function(){var elements = new Array();for (var i=0;i<arguments.length;i++){var element=arguments[i];
if (typeof element=='string'){element=document.getElementById(element);}if (arguments.length==1){return element;}elements.push(element);}return elements;}}
function $getClientWidthHeight(w){var win=w||window;if(win.document.documentElement&&win.document.documentElement.scrollTop){return{'width':win.document.documentElement.clientWidth,'height':win.document.documentElement.clientHeight};}
else if(win.document.body){return{'width':win.document.body.clientWidth,'height':win.document.body.clientHeight};}}
function $getScroll(w){var win=w||window;
if(win.document.documentElement&&win.document.documentElement.scrollTop){return{'top':win.document.documentElement.scrollTop,'left':win.document.documentElement.scrollLeft};}
else if(win.document.body){return{'top':win.document.body.scrollTop,'left':win.document.body.scrollLeft};}}
function $getAbsM(topWin)
{if(topWin==null){topWin=top;}
var leftM=0;var topM=0;
var tempWin=window;
while(tempWin!=topWin){var ifs=tempWin.parent.document.getElementsByTagName('iframe');
for(var i=0;i<ifs.length;i++){try{if(ifs[i].contentWindow==tempWin.window){var rc=$getBoundingClientRect(ifs[i]);
leftM+=rc.left;
topM+=rc.top;
break;}}
catch(e){continue;}}
tempWin=tempWin.parent;}
return{'leftM':leftM,'topM':topM};}
function $getBoundingClientRect(obj){if(navigator.product=='Gecko'){var objWin=null;
var top=obj.offsetTop;
var left=obj.offsetLeft;
var right=obj.offsetWidth;
var bottom=obj.offsetHeight;
while(obj=obj.offsetParent){
top+=obj.offsetTop;left+=obj.offsetLeft;
if(obj.tagName.toLowerCase()=="body"){objWin=obj.ownerDocument.defaultView;}}
var theScroll=$getScroll(objWin);
left-=theScroll.left;
top-=theScroll.top;
right+=left;
bottom+=top;
return{'left':left,'top':top,'right':right,'bottom':bottom};}
else{return obj.getBoundingClientRect();}}
if(navigator.product=='Gecko')
{Window.prototype.attachEvent = function(sType,fHandler){var shortTypeName=sType.replace(/on/,"");
fHandler._ieEmuEventHandler=function(e){window.event=e;	return fHandler();	};
this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);};Document.prototype.attachEvent=function(sType,fHandler){var shortTypeName=sType.replace(/on/,"");fHandler._ieEmuEventHandler=function(e){window.event=e;return fHandler();};
this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);};
Document.prototype.createStyleSheet=function(cssPath){var head=document.getElementsByTagName('HEAD').item(0);
var style=document.createElement('link');
style.href=cssPath;
style.rel='stylesheet';
style.type='text/css';
head.appendChild(style);};
HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){switch(where){case"beforeBegin":
this.parentNode.insertBefore(parsedNode,this);
break;
case"afterBegin":
this.insertBefore(parsedNode,this.firstChild);
break;
case"beforeEnd":
this.appendChild(parsedNode);
break;
case"afterEnd":
if(this.nextSibling){this.parentNode.insertBefore(parsedNode,this.nextSibling);}
else{this.parentNode.appendChild(parsedNode);}
break;}};
HTMLIFrameElement.prototype.__defineGetter__("Document",function(){return this.contentDocument});}
function WdatePicker(el,dateFmt,showTime,skin,onPicked){this.win=window;
this.top=window;
while(this.top.parent.document!=this.top.document&&this.top.parent.document.getElementsByTagName("frameset").length==0){this.top=this.top.parent;}
if(navigator.product=='Gecko'){if(!this.top.HTMLElement.prototype.insertAdjacentElement){this.top.HTMLElement.prototype.insertAdjacentElement=HTMLElement.prototype.insertAdjacentElement;}
if(!this.top.Document.prototype.attachEvent){this.top.Document.prototype.attachEvent=Document.prototype.attachEvent;}if(!this.top.Window.prototype.attachEvent){this.top.Window.prototype.attachEvent=Window.prototype.attachEvent;}}
this.eCont=(typeof el=='string')?document.getElementById(el):el;
this.dateFmt=dateFmt;
this.showTime=showTime;
this.skin=skin;
if(this.top.document.dateDiv==null){if($dpPath==''){$dpPath=this._createDpPath();}
this.dd=this.top.document.createElement("DIV");
this.dd.style.cssText='position:absolute;z-index:19700;';
this.dd.obj=this;
this.dd.className="WdateDiv";
this.dd.innerHTML='<iframe src="'+$dpPath+'My97DatePicker.htm#97" frameborder="0" border="0" width="1px" height="1px" scrolling="no" ></iframe>';
this.top.document.body.insertAdjacentElement('afterBegin',this.dd);
this.top.document.dateDiv=this.dd;}
else{var td=this.top.document.dateDiv;
td.obj.win=this.win;
td.obj.eCont=this.eCont;
td.obj.dateFmt=this.dateFmt;
td.obj.showTime=this.showTime;
td.obj.skin=this.skin;
var dwin=td.childNodes[0].contentWindow;
var d=dwin.$d;
this.dd=this.top.document.dateDiv;
d.obj.init();
d.yDiv.style.display=d.mDiv.style.display='none';
d.navLeftImg.src='skin/'+d.obj.skin+"/navLeft.gif";
d.leftImg.src='skin/'+d.obj.skin+"/left.gif";
d.rightImg.src='skin/'+d.obj.skin+"/right.gif";
d.navRightImg.src='skin/'+d.obj.skin+"/navRight.gif";
d.mInput.setAttribute('realValue',d.obj.month);
d.mInput.value=dwin.dpcfg.aMonStr[d.obj.month-1];
d.yInput.value=d.obj.year;
if(this.showTime){d.tDiv.style.display='block';
d.hhInput.value=d.obj.hour;
d.mmInput.value=d.obj.minute;
d.ssInput.value=d.obj.sec;}
else{d.tDiv.style.display='none';}
this.dd.style.display='block';
d.obj._setOkInput();
d.obj._setShowAndHide();
d.obj.redraw();}
$dp=this.top.$dp=this.top.document.dateDiv;
var objxy=$getBoundingClientRect(this.eCont);
var mm=$getAbsM(this.top);
var currWinSize=$getClientWidthHeight(this.top);
var theScroll=$getScroll(this.top);
var ddTop=mm.topM+objxy.bottom;
var ddLeft=mm.leftM+objxy.left;
var ddHeight=Math.max(parseInt(this.dd.offsetHeight),(this.dateFmt&&this.dateFmt.indexOf('%D')>0)?180:30);
var ddWidth=Math.max(parseInt(this.dd.offsetWidth),180);
if(($position==2)||(($position==0)&&((ddTop+ddHeight<currWinSize.height)||(ddTop-ddHeight<ddHeight*0.8))))
{this.dd.style.top=(theScroll.top+ddTop+1)+'px';}
else{this.dd.style.top=(theScroll.top+ddTop-ddHeight-this.eCont.offsetHeight-3)+'px';}
this.dd.style.left=-1+theScroll.left+Math.min(ddLeft,currWinSize.width-ddWidth-5)+'px';
if(!this.win.document.hasDispose){this.win.document.attachEvent('onmousedown',disposeDatePicker);
this.win.document.hasDispose=true;}
if(!this.top.document.hasDispose){this.top.document.attachEvent('onmousedown',disposeDatePicker);
this.top.document.hasDispose=true;}
if(!this.win.document.hasUnload){this.win.attachEvent('onbeforeunload',function(){$dp.style.display='none';});
this.win.document.hasUnload=true;}}
WdatePicker.prototype._createDpPath=function(){var path='';
var i;
path=$dpjspath
if(path.substring(0,1)!="/"&&path.indexOf('://')==-1){var a=this.top.location.href;
var b=location.href;
var al='',bl='',bls='';
var j,s='';
for(i=0;i<Math.max(a.length,b.length);i++){if(a.charAt(i).toLowerCase()!=b.charAt(i).toLowerCase()){j=i;
while(a.charAt(j)!='/'){if(j==0){break;}j-=1;}
al=a.substring(j+1,a.length);
al=al.substring(0,al.lastIndexOf('/'));
bl=b.substring(j+1,b.length);
bl=bl.substring(0,bl.lastIndexOf('/'));
break;}}
if(al!=''){for(i=0;i<al.split('/').length;i++){s+="../";}}
if(bl!=''){s+=bl+'/';}
path=s+path;}
return path;};
function disposeDatePicker(){var src=null;
if(window.event){src=event.srcElement||event.target;}
if($dp!=undefined&&$dp.obj!=undefined&&$dp.style.display!='none'&&src!=$dp.obj.eCont)
{var d=$dp.childNodes[0].contentWindow.$d;
if(d.obj.eCont.value==''||d.obj._judgeCorrectDateTime(d.obj.eCont.value)){d.obj._markValue(true);
if(d.obj.eCont.value!=''){d.obj._initDate(d.obj.eCont.value,d.obj.dateFmt);
d.obj._setRealValue();}
else{d.obj.eCont.setAttribute("REALVALUE","");}}
else{d.obj._markValue(false);}
$dp.style.display='none';}}
var $dpjspath;
var scripts=document.getElementsByTagName("script");
for(i=0;i<scripts.length;i++){if(scripts[i].src.substring(scripts[i].src.length-14).toLowerCase()=='wdatepicker.js'){$dpjspath=scripts[i].src.substring(0,scripts[i].src.length-14);
break;}}
document.createStyleSheet($dpjspath+'skin/WdatePicker.css');