﻿function CalendarMinute(name,fName)
{
	this.name = name;
	this.fName = fName || "m_input";
	this.timer = null;
	this.fObj = null;
	
	this.toString = function()
	{
		var objDate = new Date();		
		var sMinute_Common = "class=\"m_input\" maxlength=\"2\" name=\""+this.fName+"\" onfocus=\""+this.name+".setFocusObj(this)\" onblur=\""+this.name+".setTime(this)\" onkeyup=\""+this.name+".prevent(this)\" onkeypress=\"if (!/[0-9]/.test(String.fromCharCode(event.keyCode)))event.keyCode=0\" onpaste=\"return false\" ondragenter=\"return false\"";
		var sButton_Common = "class=\"m_arrow\" onfocus=\"this.blur()\" onmouseup=\""+this.name+".controlTime()\" disabled"
		var str = "";
		str += "<table class=\"cal_drawtime\" cellspacing=\"0\" cellpadding=\"0\">"
		str += "<tr>"
		str += "<td>"
		str += "请选择时间："
		str += "</td>"
		str += "<td>"
		str += "<div class=\"m_frameborder\">"
		str += "<input radix=\"24\"  value=\""+this.formatTime(objDate.getHours())+"\" "+sMinute_Common+">:"
		str += "<input radix=\"60\"  value=\""+this.formatTime(objDate.getMinutes())+"\" "+sMinute_Common+">"
		//str += "<input radix=\"60\" value=\""+this.formatTime(objDate.getSeconds())+"\" "+sMinute_Common+">"
		str += "</div>"
		str += "</td>"
		str += "<td>"
		str += "<table class=\"cal_drawtime\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
		str += "<tr><td><button id=\""+this.fName+"_up\" "+sButton_Common+">5</button></td></tr>"		
		str += "<tr><td><button id=\""+this.fName+"_down\" "+sButton_Common+">6</button></td></tr>"
		str += "</table>"
		str += "</td>"
		str += "</tr>"
		str += "</table>"
		return str;
	}
	this.play = function()
	{
		this.timer = setInterval(this.name+".playback()",1000);
	}
	this.formatTime = function(sTime)
	{
		sTime = ("0"+sTime);
		return sTime.substr(sTime.length-2);
	}
	this.playback = function()
	{
		var objDate = new Date();
		var arrDate = [objDate.getHours(),objDate.getMinutes(),objDate.getSeconds()];
		var objMinute = document.getElementsByName(this.fName);
		for (var i=0;i<objMinute.length;i++)
		{
			objMinute[i].value = this.formatTime(arrDate[i])
		}
	}
	this.prevent = function(obj)
	{
		clearInterval(this.timer);
		this.setFocusObj(obj);
		var value = parseInt(obj.value,10);
		var radix = parseInt(obj.radix,10)-1;
		if (obj.value>radix||obj.value<0)
		{
			obj.value = obj.value.substr(0,1);
		}
	}
	this.controlTime = function(cmd)
	{
		event.cancelBubble = true;
		if (!this.fObj) return;
		clearInterval(this.timer);
		var cmd = event.srcElement.innerText=="5"?true:false;
		var i = parseInt(this.fObj.value,10);
		var radix = parseInt(this.fObj.radix,10)-1;
		if (i==radix&&cmd)
		{
			i = 0;
		}
		else if (i==0&&!cmd)
		{
			i = radix;
		}
		else
		{
			cmd?i++:i--;
		}
		this.fObj.value = this.formatTime(i);
		this.fObj.select();
		getDateTime();
	}
	this.setTime = function(obj)
	{
		obj.value = this.formatTime(obj.value);
	}
	this.setFocusObj = function(obj)
	{		
		eval("document.getElementById('"+this.fName+"_up')").disabled = eval("document.getElementById('"+this.fName+"_down')").disabled = false;
		this.fObj = obj;
	}
	this.getTime = function()
	{
		var arrTime = new Array(2);
		for (var i=0;i<document.getElementsByName(this.fName).length;i++)
		{
			arrTime[i] = document.getElementsByName(this.fName)[i].value;
            //alert(arrTime[i]);
        }
		return arrTime.join(":");
	}
}
//	Written by cloudchen, 2004/03/16
function CalendarCalendar(name,fName)
{
	this.name = name;
	this.fName = fName || "calendar";
	this.year = new Date().getFullYear();
	this.month = new Date().getMonth();
	this.date = new Date().getDate();
    //alert(this.month);
    //private
	this.toString = function()
	{
		var str = "";
		str += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" onselectstart=\"return false\">";
		str += "<tr>";
		str += "<td>";
		str += this.drawMonth();
		str += "</td>";
		str += "<td align=\"right\">";
		str += this.drawYear();
		str += "</td>";
		str += "</tr>";
		str += "<tr>";
		str += "<td colspan=\"2\">";
		str += "<div class=\"c_frameborder\">";
		str += "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"c_dateHead\">";
		str += "<tr>";
		str += "<td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td>";
		str += "</tr>";
		str += "</table>";
		str += this.drawDate();
		str += "</div>";
		str += "</td>";
		str += "</tr>";
		str += "</table>";
		return str;
	}
	//private
	this.drawYear = function()
	{
		var str = "";
		str += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
		str += "<tr>";
		str += "<td>";
		str += "<input class=\"c_year\" maxlength=\"4\" value=\""+this.year+"\" name=\""+this.fName+"\" id=\""+this.fName+"_year\" readonly>";
		//DateField
		str += "<input type=\"hidden\" name=\""+this.fName+"\" value=\""+this.date+"\" id=\""+this.fName+"_date\">";
		str += "</td>";
		str += "<td>";
		str += "<table cellspacing=\"2\" cellpadding=\"0\" border=\"0\">";
		str += "<tr>";
		str += "<td><button class=\"c_arrow\" onfocus=\"this.blur()\" onclick=\"event.cancelBubble=true;document.getElementById('"+this.fName+"_year').value++;"+this.name+".redrawDate()\">5</button></td>";
		str += "</tr>";
		str += "<tr>";
		str += "<td><button class=\"c_arrow\" onfocus=\"this.blur()\" onclick=\"event.cancelBubble=true;document.getElementById('"+this.fName+"_year').value--;"+this.name+".redrawDate()\">6</button></td>";
		str += "</tr>";
		str += "</table>";
		str += "</td>";
		str += "</tr>";
		str += "</table>";
		return str;
	}
	//priavate
	this.drawMonth = function()
	{     //alert(this.fName);
		var aMonthName = ["一","二","三","四","五","六","七","八","九","十","十一","十二"];
		var str = "";
		str += "<select class=\"c_month\" name=\""+this.fName+"\" id=\""+this.fName+"_month\" onchange=\""+this.name+".redrawDate()\">";
		for (var i=0;i<aMonthName.length;i++) {
			str += "<option value=\""+(i+1)+"\" "+(i==this.month?"selected":"")+">"+aMonthName[i]+"月</option>";
		}
		str += "</select>";
		return str;
	}
	//private
	this.drawDate = function()
	{
		var str = "";
		var fDay = new Date(this.year,this.month,1).getDay();
		var fDate = 1-fDay;
		var lDay = new Date(this.year,this.month+1,0).getDay();
		var lDate = new Date(this.year,this.month+1,0).getDate();
		str += "<table class=\"cal_drawdate\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" id=\""+this.fName+"_dateTable"+"\">";
		for (var i=1,j=fDate;i<7;i++)
		{
			str += "<tr>";
			for (var k=0;k<7;k++)
			{
				str += "<td><span"+(j==this.date?" class=\"selected\"":"")+" onclick=\""+this.name+".redrawDate(this.innerText)\">"+(isDate(j++))+"</span></td>";
			}
			str += "</tr>";
		}
		str += "</table>";
		return str;
		function isDate(n)
		{
			return (n>=1&&n<=lDate)?n:"";
		}
	}
	//public
	this.redrawDate = function(d)
	{
		this.year = document.getElementById(this.fName+"_year").value;
		this.month = document.getElementById(this.fName+"_month").value-1;
        //alert(this.date)
        this.date = d || this.date;
        //alert(this.date)
        document.getElementById(this.fName+"_year").value = this.year;
		document.getElementById(this.fName+"_month").selectedIndex = this.month;
		document.getElementById(this.fName+"_date").value = this.date;
		if (this.date>new Date(this.year,this.month+1,0).getDate()) this.date = new Date(this.year,this.month+1,0).getDate();
		document.getElementById(this.fName+"_dateTable").outerHTML = this.drawDate();
		//alert(this.year);
		//alert(this.month);
		//alert(this.date);
		getDateTime();
	}
	//public
	this.getDate = function(delimiter)
	{
        var s_month,s_date;
        s_month=this.month+1;
        s_date=this.date;
        s_month = ("0"+s_month);
        s_month=s_month.substr(s_month.length-2);
        s_date = ("0"+s_date);
        s_date=s_date.substr(s_date.length-2);
        if (!delimiter) delimiter = "-";
		var aValue = [this.year,s_month,s_date];
		return aValue.join(delimiter);
	}
}
function getDateTime(){
	//alert(c.getDate()+' '+m.getTime());	
	gdCtrl.value = cCalendarCalendar.getDate()+' '+mCalendarMinute.getTime(); 
}
var gdCtrl = new Object();
function showCal(popCtrl){	
	gdCtrl = popCtrl;
	event.cancelBubble=true;
	//alert(popCtrl);
	var point = fGetXY(popCtrl);
	//alert(point.x);
	//var point = new Point(100,100);
    //alert(gdCtrl.value);
    var gdValue=gdCtrl.value;
    var i_year,i_month,i_day,i_hour,i_minute;
    if(gdCtrl.value!="" && validateDate1(gdCtrl.value,'yyyy-MM-dd HH:mm')){
        i_year=gdValue.substr(0,4);                  
        if(gdValue.substr(5,1)=="0"){
            i_month=parseInt(gdValue.substr(6,1));
        }else{
            i_month=parseInt(gdValue.substr(5,2));
        }
        if(gdValue.substr(8,1)=="0"){
            i_day=parseInt(gdValue.substr(9,1));
        }else{
            i_day=parseInt(gdValue.substr(8,2));
        }
        i_hour1=gdValue.substr(11,2);
        i_minute=gdValue.substr(14,2);
        //alert(i_hour1+"aaa");
        //alert(i_minute);
        document.getElementById(cCalendarCalendar.fName+"_year").value = i_year;
        document.getElementById(cCalendarCalendar.fName+"_month").value= i_month;
		//document.getElementById(c.fName+"_date").value = i_day;          
        cCalendarCalendar.date=i_day;
        document.getElementsByName(mCalendarMinute.fName)[0].value=i_hour1;
        document.getElementsByName(mCalendarMinute.fName)[1].value=i_minute;
        cCalendarCalendar.redrawDate();
    }
    //c.month=
    with (dateTime.style) {
		left = point.x;
		top  = point.y+popCtrl.offsetHeight+1;
		width = dateTime.offsetWidth;
		height = dateTime.offsetHeight;
		//fToggleTags(point);
		visibility = 'visible';
		zIndex = 1000;
	}
	
	dateTime.focus();
}
function Point(iX, iY){
	this.x = iX;
	this.y = iY;
}
function validateDate1(date,format){
  var time=date;
  if(time=="") return;
  var reg=format;
  var reg=reg.replace(/yyyy/,"[0-9]{4}");
  var reg=reg.replace(/yy/,"[0-9]{2}");
  var reg=reg.replace(/MM/,"((0[1-9])|1[0-2])");
  var reg=reg.replace(/M/,"(([1-9])|1[0-2])");
  var reg=reg.replace(/dd/,"((0[1-9])|([1-2][0-9])|30|31)");
  var reg=reg.replace(/d/,"([1-9]|[1-2][0-9]|30|31))");
  var reg=reg.replace(/HH/,"(([0-1][0-9])|20|21|22|23)");
  var reg=reg.replace(/H/,"([0-9]|1[0-9]|20|21|22|23)");
  var reg=reg.replace(/mm/,"([0-5][0-9])");
  var reg=reg.replace(/m/,"([0-9]|([1-5][0-9]))");
  var reg=reg.replace(/ss/,"([0-5][0-9])");
  var reg=reg.replace(/s/,"([0-9]|([1-5][0-9]))");
  reg=new RegExp("^"+reg+"$");
  if(reg.test(time)==false){//验证格式是否合法
    //alert(alt);
    //date.focus();
    return false;
  }
  return true;
}
function fGetXY(aTag){	
	var oTmp=aTag;
	var pt = new Point(0,0);
	do {		
		pt.x += oTmp.offsetLeft;
		pt.y += oTmp.offsetTop;
		oTmp = oTmp.offsetParent;
	} while(oTmp.tagName!="BODY");
	
	return pt;
}
function hideCalendar(){
  dateTime.style.visibility = "hidden";
  /*for (i in goSelectTag)                                        //????????,goSelectTag????
  	goSelectTag[i].style.visibility = "visible";
  goSelectTag.length = 0;*/
}