var arrMyDateObjects = [];
var oScripts = document.getElementsByTagName("script");
var myStyle = ["this.style.border='#888 1px solid'","this.style.border='#fff 1px solid'","this.className = 'TdOver'","if (this.cs != 'TdOver'){this.className='TdOut'}"];
function MyDatePicker(sName, sParent) {
	this.oParent = sParent;
	if(sParent) {
		this.oName = sParent + "." + sName;
		this.oRenderName = sName + sParent;
	} else {
		this.oName = sName;
		this.oRenderName = sName;
	}
	arrMyDateObjects.push(this.oName);

	var oScripts = document.getElementsByTagName("script");
	for(var i=0;i<oScripts.length;i++) {
		var sSrc = oScripts[i].src.toLowerCase();
		if(sSrc.indexOf("calendar.js")!=-1) {
			this.url = sSrc.replace(/calendar.js/,"");
		}
	}

	this.onShow		= function(){return true;};
	this.onHide		= function(){return true;};
	this.onPickDate = function(){return true;};

	this.show		= showMyDateTable;
	this.hide		= hideMyDateTable;
	this.hideAll	= hideAllMyDateTable;
	this.get		= GetDataStr;
	this.pick		= pickDate;
	this.write		= RewriteTableStr;
	this.select		= WriteSelect;
	this.jump		= JumpToRun;
	this.isActive	= false;
	this.align		= "left";
	this.year		= "";
	this.month		= "";
	this.tmpDate	= "";
	this.date		;
	this.RENDER		= drawDateTable;
}

function drawDateTable(){
	var WeekArray = ["<font color='red'>Su</font>","Mo","Tu","We","Th","Fr","<font color='orange'>Sa</font>"];
	var sHTMLDate =  "<link href='" + this.url + "calendar.css' type='text/css' rel='stylesheet' />";
	sHTMLDate += "<table id=dropMy" + this.oRenderName + " class='DateContainer' unselectable=on cellpadding=0 cellspacing=0 width='158' height='128'>\n";
	sHTMLDate += "<tr><td colspan='7' unselectable=on >";
	sHTMLDate += "<table width='100%' border='0' cellpadding='0' cellspacing='0' bgcolor='#dfdfdf' unselectable=on ><tr>\n";
	sHTMLDate += "<td width='16' unselectable=on class='JumpButton' id='" + this.oRenderName + "JumpButton' onclick=\""+this.oName+".jump('b');\" onmouseover=\"" + myStyle[0] + "\" onmouseout=\"" + myStyle[1] + "\"><img src=\"" + this.url + "style/ff.gif\" align='absmiddle' id='" + this.oRenderName + "JumpButtonB'/></td>\n";
//	sHTMLDate += "<td width='81' unselectable=on id='" + this.oRenderName + "YearTD' class='JumpButton' onclick='" + this.oName + ".select(this, this.innerText.split(\" \")[0], \"y\", false)' onmouseover=\"" + myStyle[0] + "\"  onmouseout=\"" + myStyle[1] + "\">" + this.year + " \u5e74</td>\n";
	//sHTMLDate += "<td width='41' unselectable=on id='" + this.oRenderName + "MonthTD' class='JumpButton' onclick='" + this.oName + ".select(this, this.innerText.split(\" \")[0], \"m\", false)' onmouseover=\"" + myStyle[0] + "\" onmouseout=\"" + myStyle[1] + "\">" + this.month + " \u6708</td>\n";
	sHTMLDate += "<td width='81' unselectable=on id='" + this.oRenderName + "YearTD' class='JumpButton' onmouseover=\"" + myStyle[0] + "\"  onmouseout=\"" + myStyle[1] + "\">" + this.year + " \u5e74</td>\n";
	sHTMLDate += "<td width='41' unselectable=on id='" + this.oRenderName + "MonthTD' class='JumpButton' onmouseover=\"" + myStyle[0] + "\" onmouseout=\"" + myStyle[1] + "\">" + this.month + " \u6708</td>\n";
	sHTMLDate += "<td width='16' unselectable=on class='JumpButton' id='" + this.oRenderName + "JumpButton' onclick=\""+this.oName+".jump('n');\" onmouseover=\"" + myStyle[0] + "\" onmouseout=\"" + myStyle[1] + "\"><img src=\"" + this.url + "style/fb.gif\" align='absmiddle' id='" + this.oRenderName + "JumpButtonN' /></td></tr></table>\n";
	sHTMLDate += "</td></tr>\n";
	sHTMLDate += "<tr bgcolor='#ffffff'>\n";
	for(var i=0; i < WeekArray.length; i++) {sHTMLDate += "<td class='WeekArray' unselectable=on>" + WeekArray[i] + "</td>\n";}
	sHTMLDate += "</tr>\n";
	for(var i = 0; i<6; i++){
		sHTMLDate += "<tr>\n";
		for(var j=0; j<7; j++){
			var nowDay = this.get(this.year, this.month)[i*7 + j];
			var CS = (new Date().getDate() == nowDay)?'TdOver':'TdOut';
			if (this.tmpDate != "") {CS = this.tmpDate == nowDay?'TdOver':'TdOut';}
			sHTMLDate += "<td id='" + this.oRenderName + "TD' class='" + CS + "' cs='" + CS + "' unselectable=on onclick=\""+this.oName+".pick(this);\"  onmouseover=\"" + myStyle[2] + "\" onmouseout=\"" + myStyle[3] + "\" unselectable=on>" + nowDay + "</td>\n";
		}
		sHTMLDate += "</tr>\n";
	}
	sHTMLDate += "</table>";
	document.write(sHTMLDate);
}

function showMyDateTable(oEl) {
	if (!this.isActive) {
		var oHeight = document.body.scrollHeight > 530?document.body.scrollHeight:530;
		this.onShow();this.hideAll();
		var box = eval("dropMy" + this.oRenderName);
		box.style.display = "block";
		var nTop = 0;var nLeft = 0;	oElTmp = oEl;
		while(oElTmp.tagName != "BODY" && oElTmp.tagName != "HTML") {
			if(oElTmp.style.top != ""){nTop += oElTmp.style.top.substring(1, oElTmp.style.top.length-2)*1;} else {nTop += oElTmp.offsetTop;}
			oElTmp = oElTmp.offsetParent;
		}
		oElTmp = oEl;
		while(oElTmp.tagName != "BODY" && oElTmp.tagName != "HTML") {
			if(oElTmp.style.left != "") {nLeft += oElTmp.style.left.substring(1, oElTmp.style.left.length-2)*1;} else {nLeft += oElTmp.offsetLeft;}
			oElTmp = oElTmp.offsetParent;
		}
		if (document.compatMode && document.compatMode != "BackCompat") {nLeft = nLeft + 10;nTop = nTop + 15}
		if(this.align=="left") {box.style.left = nLeft;} else {box.style.left = nLeft - 143 + oEl.offsetWidth;}
		nHeight = nTop + document.getElementById('dropMy' + this.oRenderName).offsetHeight;
		if (oHeight > (nHeight - nTop) && nHeight > oHeight){box.style.top = nTop*2 - 1 - nHeight} else {box.style.top = nTop + 1 + oEl.offsetHeight;}
		if (navigator.appVersion.indexOf('MSIE 7.0') == -1){box.style.top = nTop + 1 + oEl.offsetHeight;}
	this.isActive = true;
	} else {this.hideAll();}
}

function hideMyDateTable(){
	this.onHide();
	var box = eval("dropMy" + this.oRenderName);
	box.style.display = "none";
	this.isActive = false;
}

function hideAllMyDateTable() {
	for(var i = 0;i < arrMyDateObjects.length;i++) {
		var sRenderName = eval(arrMyDateObjects[i]).oRenderName;
		var box = eval("dropMy" + sRenderName);
		box.style.display = "none";
		eval(arrMyDateObjects[i]).isActive = false;
	}
}

function pickDate(obj) {
	var nvv = "";var yyyy,mmmm,dddd;
	yyyy = eval(this.oRenderName + "YearTD").innerText.split(" ")[0] + "-";
	mmmm = eval(this.oRenderName + "MonthTD").innerText.split(" ")[0] + "-";
	dddd = obj.innerText;
	if (parseInt(dddd) > 0) {
		var td = eval(this.oRenderName + "TD");
		this.date = yyyy + mmmm + dddd;
		for (var i = 0;i < 42;i++){td[i].className = td[i].cs = 'TdOut';}
		obj.className = 'TdOver';obj.cs = 'TdOver';
		this.onPickDate();
		this.hideAll();
	}
}

function GetDataStr (y, m) {
	var DayArray = [];var j;
	for(var i=0;i < 42;i++){DayArray[i] = "&nbsp;";}
	for(var i=0;i < new Date(y, m, 0).getDate(); i++){
		j = i + new Date(y, m-1, 1).getDay();
		if (String((j)/7).indexOf('.') == -1) {DayArray[j] = "<font color='red'>" + (i+1) + "</font>";} else {DayArray[j] = i + 1;}
	}
	return DayArray;
}

function RewriteTableStr(y, m){
	var TArray = GetDataStr(y, m);
	var td = eval(this.oRenderName + "TD");
	for(var i = 0; i < TArray.length; i++){
		td[i].className = 'TdOut';td[i].cs = 'TdOut';td[i].innerHTML = TArray[i];
		if(new Date().getYear() == y && new Date().getMonth()+1 == m && TArray[i] == new Date().getDate()){td[i].className = 'TdOver';td[i].cs = 'TdOver';}
	}
}

function JumpToRun(action){
	var YearNO = document.getElementById(this.oRenderName + 'YearTD').innerText.split(' ')[0];
	var MonthNO = document.getElementById(this.oRenderName + 'MonthTD').innerText.split(' ')[0];
	if(action == "b"){
		if(MonthNO == "1"){
			MonthNO = 13;
			YearNO = YearNO-1;
			if (YearNO < (new Date().getYear())) {MonthNO = 2;YearNO = new Date().getYear();}
		} else {
			if (YearNO == (new Date().getYear())) {
				if (parseInt(MonthNO) == parseInt(new Date().getMonth()+1)) {MonthNO = new Date().getMonth()+2;}
			}
		}
		document.getElementById(this.oRenderName + 'MonthTD').innerText = MonthNO-1 + " \u6708";
		document.getElementById(this.oRenderName + 'YearTD').innerText = YearNO + " \u5e74";
		this.write(YearNO, MonthNO - 1);
	}
	if(action == "n"){
		if(MonthNO == "12"){
			MonthNO = 0;
			YearNO = YearNO-(-1);
			if (YearNO > (new Date().getYear()) + 2) {MonthNO = 11;YearNO = YearNO - 1}
		}
		document.getElementById(this.oRenderName + 'YearTD').innerText = YearNO + " \u5e74";
		document.getElementById(this.oRenderName + 'MonthTD').innerText = MonthNO-(-1) + " \u6708";
		this.write(YearNO, MonthNO-(-1));
	}
}

function WriteSelect(obj, values, action, getobj){
	if (values == "") return;
	if (getobj){
		obj.innerHTML = values + (action == "y"?" \u5e74":" \u6708");
		this.write(document.getElementById(this.oRenderName + 'YearTD').innerText.split(" ")[0], document.getElementById(this.oRenderName + 'MonthTD').innerText.split(" ")[0]);
		return false;
	}
	var StrArray = [];
	if(action == "y"){
		var sy;
		for(var i=0; i < 3; i++){
			var nyear = new Date().getYear() + i;
			StrArray[i] = "<option value='" + nyear + "' " + (values == nyear?"selected":"") + "> " + nyear + "\u5e74</option>\n";
			sy = values == new Date().getYear()?values:"";
		}

		obj.innerHTML = "<select id='" + this.oRenderName + "select1' onchange='" + this.oName + ".select(this.parentElement, this.value, \"y\", true);' onblur='document.getElementById(\"" + this.oRenderName + "YearTD\").innerHTML=this.value+\" \u5e74\"'>\n" + StrArray.join("") + "</select>";
		eval(this.oRenderName + "select1").focus();
		if (!!values && sy == parseInt(values) && parseInt(values) != (new Date().getYear())) {
			var MonthObj = document.getElementById(this.oRenderName + 'MonthTD');
			var MonthNO = MonthObj.innerText.split(' ')[0];
			if (parseInt(MonthNO) < parseInt(new Date().getMonth()+1)){
				MonthObj.innerText = parseInt(new Date().getMonth()+1) + ' \u6708';
			}
		}
		

	}
	if(action == "m"){
		var yobj = document.getElementById(this.oRenderName + "YearTD").innerText.replace('\u5e74',"");
		var ii = (parseInt(yobj) > (new Date().getYear()))?1:(new Date().getMonth()+1);
		for(var i=ii; i < 13; i++) {
			StrArray[i] = "<option value='" + i + "' " + (i == values?"selected":"") + "> " + i + "\u6708</option>\n";
		}
		obj.innerHTML = "<select id='" + this.oRenderName + "select2' style='width:47' onchange='" + this.oName + ".select(this.parentElement, this.value, \"m\", true);' onblur='document.getElementById(\"" + this.oRenderName + "MonthTD\").innerHTML=this.value+\" \u6708\"'>\n" + StrArray.join("") + "</select>";
		eval(this.oRenderName + "select2").focus();
	}
}