//判断某年是否为闰年
function isleapYear(nYear)
{
	var thisYear = nYear * 1;

	return ((thisYear % 4 == 0) && !(thisYear % 100 == 0)) || (thisYear % 400 == 0);
}
//得到日期的yyyy-mm-dd表达方式
function getDate_FromDatetimeStr(datetimeStr)
{
	var dataStr = datetimeStr.split(' ');
    dataStr = dataStr[0];
	dataStr = dataStr.split('T');
	dataStr = dataStr[0];
	return dataStr;
}
function getNowDate()
{   
   	var now = (arguments[0] == null) ? (new Date()) : arguments[0];
  	var yy = now.getYear();
   	var mm = now.getMonth()+1;
	var dd = now.getDate();
	return yy + "-" + formatNumOO(mm) + "-" + formatNumOO(dd);
}
function getNowYear()
{
	var now = (arguments[0] == null) ? (new Date()) : arguments[0];
  	return now.getMonth()+1;
}
function getNowMonth()
{
	var now = (arguments[0] == null) ? (new Date()) : arguments[0];
  	return now.getYear();
}
function getTheYear(theDate)
{
	var temp = theDate.split('-');
	return temp[0];
}
function getTheMonth(theDate)
{
	var temp = theDate.split('-');
	return formatNumOO(temp[1]);
}
function getTheDay(theDate)
{
	var temp = theDate.split('-');
	return formatNumOO(temp[2]);
}
function formatTheDate(theDate)
{
	var temp = theDate.split('-');
	return temp[0] + "-" + formatNumOO(temp[1]) + "-" + formatNumOO(temp[2]);
}
//格式化为"00"格式
function formatNumOO(strNum)
{
	var num = parseInt(strNum);
	if(num < 10 && strNum.toString().length < 2)
    {
        strNum = "0" + strNum;
    }
    return strNum;
}
//格式化日期为yyyy-mm-dd格式
function formatDate(strDate)
{
	var arr = strDate.split("-");
	return arr[0] + "-" + formatNumOO(arr[1]) + "-" + formatNumOO(arr[2]);
}
//比较两个字符串的日期格式
function compareDate(strDate1, strDate2)
{
	var nResult = -2;

	if (strDate1 != null && strDate2 != null)
	{
		var vDate1 = strDate1.split("-");
		var vDate2 = strDate2.split("-");
		
		if (typeof(vDate1) != "undefined" && typeof(vDate2) != "undefined")
		{
			var dt1 = new Date(vDate1[0], vDate1[1]-1, vDate1[2]);
			var dt2 = new Date(vDate2[0], vDate2[1]-1, vDate2[2]);

			if (dt1.getTime() < dt2.getTime())
				nResult = -1;
			else if (dt1.getTime() > dt2.getTime())
				nResult = 1;
			else if (dt1.getTime() == dt2.getTime())
				nResult = 0;
		}
	}
	
	return nResult;
}
/******************** begin 日期控件 **********************/
//绑定文本框到日期控件
function bindCalenderToInput(objInput, isDisabled, isLimitNowDate)
{
	var img = document.createElement("IMG");
	var rootPath = getRootDir();
	img.src = rootPath + "/javascript/calenderDrop.gif";
	img.style.width = "16px";
	img.style.height = "14px";
	img.style.position = "relative";
	img.align = "absmiddle";
	img.onmouseover = onCalenderImgMouseOver;
	img.onmouseout = restoreImage;
	img.onclick = onDataSelectedImgClick;

	img.objInput = objInput;
	img.disabled = isDisabled;
	objInput.LimitNowDate = isLimitNowDate;
	objInput.disabled = isDisabled;
	objInput.onblur= onDateCheckBlur;
	//objInput.onchange = onDateCheckChange;
	objInput.parentNode.insertAdjacentElement("beforeEnd", img);
}

//日期小图标翻转
function onCalenderImgMouseOver()
{
	var rootPath = getRootDir();
	var imageSrc = rootPath + "/javascript/calenderDrop1.gif";
	swapImage(imageSrc);
}
//显示时间控件
function onDataSelectedImgClick()
{
	var objInput = window.event.srcElement.objInput;

	//var left = absLeft(objInput) + window.screenLeft;
	//var top = absTop(objInput) + objInput.offsetHeight + window.screenTop;;
	var left = event.screenX - event.offsetX  - 187 ; 
	var top = event.screenY - event.offsetY + 18;
	
	if ((top + 210) > screen.height)
	   top = event.screenY - event.offsetY - 210 - 5;
	if (left < 0) 
	   left = 0;
	
	var dtInput = objInput.value;

	var dt = null;
	if (dtInput.length > 0)
	{
		var arr = dtInput.split("-");

		dt = new Date(arr[0], arr[1] - 1, arr[2]);
	}
	var sFeature = "dialogWidth:197px; dialogHeight:210px;dialogLeft:" + left + ";dialogTop:" + top + ";center:no;help:no;resizable:no;scroll:no;status:no";
	var rootPath = getRootDir();
	var sPath = rootPath + "/javascript/CalendarDlg.htm";
		
	var objDateValue = window.showModalDialog(sPath, dt, sFeature);
	
	if(objDateValue != null) objInput.value = objDateValue;
}
//挂在日期输入控件的onChange事件上
function onDateCheckBlur()
{
	var obj;

	if (arguments.length > 0 && typeof(arguments[0]) == "object")
		obj = arguments[0];
	else
		obj = window.event.srcElement;

	var strLenMsg = "";

	try
	{
		if (obj.value.length > 0)
			obj.value = dateCheck(obj.value);
		
		obj.formatValue = obj.value;
		
		if(obj.LimitNowDate == true)
			bindSmallNowCheck(obj);
		window.event.returnValue = true;
		obj.originValue = obj.value;
		return true;
	}
	catch(e)
	{
		window.alert(e);
		window.event.returnValue = false;
		if (isDefined(obj.originValue))
			obj.value = obj.originValue;
		else
			obj.value = "";
		return false;
	}
}
function dateCheck(dr)
{
	var nLen = dr.length;

	//trueThrow(dr.length == 0, "必需输入内容");

	var datePart = new Array("", "", "");
	var nSegment = 0;

	//过滤掉时间部分
	var nFirstTimeSept = -1;
	for (var i = 0; i < nLen; i++)
		if (dr.substr(i, 1) == ":")
		{
			nFirstTimeSept = i;
			break;
		}

	if (nFirstTimeSept != -1)	//有时间分割符
		for (var i = nFirstTimeSept; i >= 0; i--)
			if (dr.substr(i, 1) == " ")
			{
				nLen = i;
				break;
			}

	for (var i = nLen - 1; i >= 0; i--)
	{
		var ch = dr.substr(i, 1);

		if (ch == "-" || ch == "/" || ch == "." || ch == "\\")
		{
			nSegment++;
		}
		else
		if (ch != " ")
		{
			trueThrow(ch < "0" || ch > "9", "日期中出现非法字符'" + ch + "'");
			trueThrow(nSegment > 2, "日期格式错误，无法正确分清年月日各部分");
				
			if (nSegment < 2)
			{
				if (datePart[nSegment].length == 2)
					nSegment++;
			}
			datePart[nSegment] = ch + datePart[nSegment];
		}
	}

	trueThrow(datePart[0].length == 0, "日期格式错误");
	trueThrow(datePart[1].length == 0, "日期格式错误，没有输入正确的月份");
	trueThrow(datePart[1] * 1 < 1 || datePart[1] * 1 > 12, "日期格式错误，月份必需在1-12月之间");

	var dToday = new Date();
	var strYear = dToday.getYear();
	var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	if (datePart[2].length == 0)
		datePart[2] = strYear;
	else
	{
		if (datePart[2].length == 4)
		{
			trueThrow(datePart[2] < YEAR_MIN, "日期输入错误，年份必需大于" + YEAR_MIN + "年");
			trueThrow(datePart[2] > YEAR_MAX, "日期输入错误，年份必需小于" + YEAR_MAX + "年");
		}
		else
		if (datePart[2].length == 2)
		{
			if (datePart[2] * 1 > 50)
				datePart[2] = "19" + datePart[2];
			else
				datePart[2] = strYear.toString().substr(0, 2) + datePart[2];
		}
		else
			throw "日期格式错误，年的位数必需为两位或四位";
	}

	if (isleapYear(datePart[2]))
		daysInMonth[1] = daysInMonth[1] + 1;

	trueThrow(datePart[0] * 1 < 1 || datePart[0] * 1 > daysInMonth[datePart[1] * 1 - 1],
				"日期输入错误，" + datePart[1] * 1 + "月的日期必需在1-" + daysInMonth[datePart[1] * 1 - 1] + "号之间");

	if (datePart[1].length == 1) 
		datePart[1] = "0" + datePart[1];
	if (datePart[0].length == 1) 
		datePart[0] = "0" + datePart[0];
			
	return datePart[2] + "-" + formatNumOO(datePart[1].toString()) + "-" + formatNumOO(datePart[0]);
}
//检验输入日期是否大于当前日期
function bindSmallNowCheck(obj)
{
	var tempDate = obj.value;
	var theDate = getNowDate();
	if(tempDate > theDate)
	{
		obj.value = "";
		obj.focus();
		throw "日期 " + tempDate + " 大于当前日期 " + theDate;
	}
}
/******************** end 日期控件 **********************/
//得到小时
function getNowHour()
{
	var now = (arguments[0] == null) ? (new Date()) : arguments[0];
  	return now.getHours();
  	return hh;
}
//得到分钟
function getNowMinute()
{
	var now = (arguments[0] == null) ? (new Date()) : arguments[0];
    return now.getMinutes();
}
//得到秒钟
function getNowSecond()
{
	var now = (arguments[0] == null) ? (new Date()) : arguments[0];
    var ss = now.getTime() % 60000;
    ss = (ss - (ss % 1000)) / 1000;
    return ss;
}
function getTheHour(theTime)
{
	var temp = theTime.split(':');
	return formatNumOO(temp[1]);
}
function getTheMinute(theTime)
{
	var temp = theTime.split(':');
	return formatNumOO(temp[2]);
}
function getTheSecond(theTime)
{
	var temp = theTime.split(':');
	return formatNumOO(temp[2]);
}
function formatTheTime(theTime)
{
	var temp = theDate.split(':');
	return temp[0] + ":" + formatNumOO(temp[1]) + ":" + formatNumOO(temp[2]);
}
