//==========================================
//Purpose: 调用日历控件，选择日期
//参数:obj接收选中日期的文本框
//返回值:选中的日期(格式:mm/dd/yyyy)
//==========================================
function Calendar(obj)
{
	var objdt = new Object();
	if (obj == null ) return;
	
	objdt.value = obj.value;
	
	if(objdt.value != ""){
			var d = objdt.value.split("-");
			if(d.length != 3)
			{		 		
				window.alert("'"+obj.value+"' isn't a valid date.\n Correct date format:yyyy-mm-dd");
				obj.select();
				return;
			}	
			var yyyy = d[0];//get year
			var mm = d[1];//get month
			var dd = d[2];//get day
			
			if(mm.length == 1)
				mm = "0" + mm;
			if(dd.length == 1)
				dd = "0" + dd;
			objdt.value = mm+"/"+dd+"/"+yyyy;
	}
		
	if(!checkDate(obj)) return;
	
	var result;
	var arg=new Array();
		arg.currentDate=trim(objdt.value);
	var sUrl="Calendar.html"
	var sFeature="dialogWidth:280px;dialogHeight:200px;Status:0;resizable:0;help:0";
	result=window.showModalDialog(sUrl,arg,sFeature);
	if (result!=null){
		var s = result.split("/");
	   obj.value= s[2]+"-"+s[0]+"-"+s[1];
	}
	obj.focus();
}

//==========================================
//检查日期格式是否合格
//参数:obj接收选中日期的文本框
//返回值:选中的日期(格式:mm/dd/yyyy)
//==========================================
function checkDate(obj)
{
   try
   {
		if (trim(obj.value)!="")
		{	
			var objdt = new Object();
			var d = obj.value.split("-");	
			if(d.length != 3)
			{		 		
				window.alert("'"+obj.value+"' isn't a valid date.\n Correct date format:yyyy-mm-dd");
				obj.select();
				return;
			}	
			var yyyy = d[0];//get year
			var mm = d[1];//get month
			var dd = d[2];//get day
			
			if(mm.length == 1)
				mm = "0" + mm;
			if(dd.length == 1)
				dd = "0" + dd;
			objdt.value = mm+"/"+dd+"/"+yyyy;			
			
			 if	(isNaN(Date.parse(objdt.value)) || !parseDate(objdt))
			 {		 		
				window.alert("'"+obj.value+"' isn't a valid date.\n Correct date format:yyyy-mm-dd");
				obj.select();
				return false;
			 }	
		}
		return true;
   }
   catch (e)
   {
   }
}

//==========================================
//验证日期的正确性
//==========================================
function parseDate(obj)
{ 
	try
	{
		var d = obj.value.split("/");
		var yy = parseMyInt(d[2]); //get year
		var mm = parseMyInt(d[0]);  //get month
		var dd = parseMyInt(d[1]); //get day
		if ((yy<1900) || (yy>9999) || (mm>12) || (mm<=0) || (dd>31) || (dd<=0))
		{
				return false;
		}
		
		if (((mm==4) || (mm==6) || (mm==9) || (mm==11)) && (dd == 31))
		{
			return false;
		}
		if (mm == 2)
		{
			if ((dd>29) && isleapyear(yy))
			{
				return false;
			}

			if ((dd>28) && !isleapyear(yy))
			{
				return false;
			}		
		}
		
		if ((yy==1900) && (mm==1) && (dd=1))
		{
			return false;
		}
		
		return true;
	}
	catch (e)
	{
	}


}

function toDate(obj)
{
	if(obj == null || obj.value == "")
		return;
	var d = obj.value.split("-");
	var yyyy = d[0];//get year
	var mm = d[1];//get month
	var dd = d[2];//get day
	
	if(mm.length == 1)
		mm = "0" + mm;
	if(dd.length == 1)
		dd = "0" + dd;
	obj.value = mm +"/" + dd + "/" + yyyy;	
}

//==========================================
//将字符串转化成整数
//==========================================

function parseMyInt(s)
{
	var str = trim(s)
	  if (str == "") return 0;
	  try
	  {
		  for (var i=0;i<str.length;i++)
		  {
			 if (str.charAt(0) != '0')
				break;
			 else
				str = str.substring(1,str.length);
		  }
		 if (str == "")
			 return 0;
		 else
			return parseInt(str);
		  
	  }
	  catch (e)
	  {
		return 0;
	  }
      
}

//==========================================
//检查数据是否为NUMERIC型，为空则不校验
//i为整数部分要求的长度
//==========================================
function CheckFloatData(obj,i){
	if(obj != null && trim(obj.value) != "")
	{
		var arr = obj.value.split(".");
		
		if(arr[0].length > i){
			window.alert("'"+obj.value+"' isn't a valid data.\n The intergral part of the data contains " + i + "digits at most.");
			obj.select();
			return false;
		}	
	}			
	return true;
}

//==========================================
//检查数据是否为NUMERIC型，为空则不校验
//==========================================
function CheckNumericData(obj){
	if(obj != null && trim(obj.value) != "")
		if(!isNumeric(trim(obj.value))){
			window.alert("Invalid in this value!");
			obj.select();
			return false;
		}				
	return true;
}

//==========================================
//将输入字符转化为大写
//==========================================
function toJsUpperCase(obj)
{
	var s = obj.value;
	if (trim(s) == "") return;
	obj.value = s.toUpperCase();
}


//==========================================
//将输入字符转化为大写
//==========================================
function jsUpperCase()
{
	if ((window.event.keyCode>=97) && (window.event.keyCode<=122))
	window.event.keyCode = window.event.keyCode-32;
}

//==========================================
//将输入字符转化为小写
//==========================================
function jsLowerCase()
{
	if ((window.event.keyCode>=65) && (window.event.keyCode<=90))
		window.event.keyCode = window.event.keyCode+32;
}

//==========================================
//将输入字符转化为小写
//==========================================
function toJsLowerCase(obj)
{
	var s = obj.value;
	if (trim(s) == "") return;
	obj.value = s.toLowerCase();
}

//==========================================
//只能输入整数
//==========================================
function typenumeric()
{
	if ((window.event.keyCode<48) || (window.event.keyCode>57))
		window.event.returnValue = false;
}

//==========================================
//只能输入浮点数
//==========================================
function typefloat(obj)
{ 	
	if ((obj.value.indexOf(".") > 0) && (window.event.keyCode == 46))
	{
		window.event.returnValue = false;
		return;
	}
	if (((window.event.keyCode<48) || (window.event.keyCode>57)) && (window.event.keyCode != 46) )
		window.event.returnValue = false;		
}

// 获取天数之差。
function GetPeriod(startDT, endDT) {
	return Math.ceil((endDT - startDT) / (1000 * 60 * 60 * 24) + 1);
}

// 是否合法的日期,其格式为: yyyy-mm-dd
function isDate(date) {
	var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})( (\d{1,2})(:(\d{1,2})(:(\d{1,2}))*)*)*$/;
	return (date.match(reg) != null);
}

// 返回日期类型。
function getDate(date) {
	var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})( (\d{1,2})(:(\d{1,2})(:(\d{1,2}))*)*)*$/;
	var result = date.match(reg);
	if (result == null) {
		window.alert("date is invalid, the format should be yyyy-mm-dd.");
		return null;
	}
	
	return new Date(result[1], result[2]-1, result[3]);
}

//==========================================
//将字符转化为整数
//==========================================

function parseMyInt(s)
{
	var str = trim(s)
	  if (str == "") return 0;
	  try
	  {
		  for (var i=0;i<str.length;i++)
		  {
			 if (str.charAt(0) != '0')
				break;
			 else
				str = str.substring(1,str.length);
		  }
		 if (str == "")
			 return 0;
		 else
			return parseInt(str);
		  
	  }
	  catch (e)
	  {
		return 0;
	  }      
}

// 保留小数点后两位
function Fix(number, fractionDigits) {
	var aryNumber = number.toString().split(".");

	var lastDigit;
	
	if (aryNumber.length > 1 && aryNumber[1].length >= (fractionDigits + 1)) {
		lastDigit = aryNumber[1].charAt(fractionDigits);
	}

	var fraction = (lastDigit == "5" ? 1/Math.pow(10, fractionDigits) : 0.5 / Math.pow(10, fractionDigits));

	var numRound = number + fraction;
	var numFormat = numRound.toString();

	var aryNum = numFormat.split(".");
	var reuslt = aryNum[0] + "." + aryNum[1].substring(0, fractionDigits);

	return reuslt;
}

// 将数字的整数部分从右到左，每隔三位，添加“，”进行格式化
function CommaFormat(number) {
	var rgExp = /,/g;
	var num = number.replace(rgExp, "");

	if (num == null || num == "" || isNaN(num)){
		return "";
	}

	var result = "";
	var aryNumber = num.split(".");

	var intFraction = "";
	for (i = 0, count = 1, len = aryNumber[0].length; i < len; i++, count ++) {
		intFraction = (aryNumber[0].charAt(len - i - 1) + intFraction);
		if (count % 3 == 0 && count < len)
			intFraction = ("," + intFraction);
	}

	if (aryNumber.length > 1)
		result = intFraction + "." + aryNumber[1];
	else
		result = intFraction;

	return result;
}

function ConvertNumeric(number) {
	var rgExp = /,/g;
	var num = number.replace(rgExp, "");

	return num;
}

// Year is leap or not
function isLeapYear(year)
{
	if (year == undefined || year == null || year == "")
		return false;

	if((year%4==0 && year%100!=0)||(year%400==0))
	{
		return true;
	} 

	return false;
}

function daysOfYear(year) {
	return isLeapYear(year) ? 366 : 365;
}

// Trim left spaces
function ltrim(str) {
	if (str==null) {
		return null;
	}
	var rtnStr;
	rtnStr="";
	for (var i=0;i<str.length;i++) {
		if (str.charAt(i)!=" ") {
			rtnStr=str.substr(i);
			break;
		}
	}
	return rtnStr;
}

// Trim right spaces
function rtrim(str) {
	if (str==null) {
		return null;
	}
	var rtnStr;
	rtnStr="";
	for (var i=str.length-1;i>=0;i--) {
		if (str.charAt(i)!=" ") {
			rtnStr=str.substring(0,i+1);
			break;
		}
	}
	return rtnStr;
}

// Trim both left and right spaces
function trim(str){
	return(ltrim(rtrim(str)));
}
function callVessel( ) 
{ 
   carrier = form1.carrier.value;
   showModelessDialog("kline_selectvoy.jsp?carrier=" + carrier ,window,"status:false;dialogWidth:800px;dialogHeight:600px"); 
	
} 

function updateVessel() 
{ 
	form1.txtVessel.value = vslnme;
	form1.txtVoyage.value = voyage;
} 
