/*****************************************************
 * 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;var d = win.document;
	if(d.documentElement&& !(d.documentElement.scrollTop==undefined||d.documentElement.scrollTop==0)) {
		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;var d = win.document;
	if(d.documentElement&& !(d.documentElement.scrollTop==undefined||d.documentElement.scrollTop==0)) {
		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+'datepicker.html" 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/datepicker.css');