/*
 * Copyright(C) 2004 Overseas Worker Group
 * 项目名称　：　
 *   基础输入项目客户端检测
 * 概要　：
 *   共通JavaScript。
 * 备注　：
 *   无
 * 修改履历　：
 *   日期      版本      姓名       内容
 * $Id: check.js,v 1.0 2005/04/27 09:26 李卫民 Exp $
 * $Log: check.js,v $
 *
 *
 */


/*
 * 函数名称 ：
 *   checkRequired
 * 功能说明 ：
 *   该项文字列输入是必要的CHECK
 * 参数 ：
 *   String      strValue      文字列  (IN)
 * 返回值 ：
 *      true  ： 正常
 *      false ： 异常
 * 备注 ：
 *   无
 */
function checkRequired(strValue) {
	if (strValue == null || strValue == "") {
		return false;
	} else {
	    return true;
	}
	
}

function getRequiredMsg(strItemName) {
	return "" + strItemName + "不能为空值。" + strItemName + "请输入正确的值。";
}

/*
 * 函数名称 ：
 *   checkRGRequired
 * 功能说明 ：
 *   RadioGroup是否被选择
 * 参数 ：
 *   String      strValue      对象名称文字列  (IN)
 * 返回值 ：
 *      true  ： 正常
 *      false ： 异常
 * 备注 ：
 *   无
 */
function checkRGRequired(strValue) {
	var objT = eval(strValue);	
	for (var intI=0;intI<objT.length;intI++)
	{
		if(objT[intI].checked) 
		{
	        return true;
		}
	}
	return false;
}

function getRGRequiredMsg(strItemName) {
	return "" + strItemName + "必须选择，请选择适合的值。";
}



/*
 * 函数名称 ：
 *   checkZenkaku
 * 功能说明 ：
 *   该项文字列为全角字符串的CHECK
 * 参数 ：
 *   String      strValue      文字列  (IN)
 * 返回值 ：
 *      true  ： 全角
 *      false ： 其他
 * 备注 ：
 *   无
 */
function checkZenkaku(strValue) {
    for (var i = 0; i < strValue.length; i++) {
        var c = strValue.charCodeAt(i);
        /* 不允许输入半角字符串 */
        if (c < 256 || (c >= 0xff61 && c <= 0xff9f)) {
            return false;
        }
    }
    return true;
}

function getZenkakuMsg(strItemName) {
	return "" + strItemName + "是全角字符串，请输入正确的值。";
}



/*
 * 函数名称 ：
 *   checkHankaku
 * 功能说明 ：
 *   该项文字列为半角字符串的CHECK
 * 参数 ：
 *   String      strValue      文字列  (IN)
 * 返回值 ：
 *      true  ： 半角
 *      false ： 其他
 * 备注 ：
 *   无
 */
function checkHankaku(strValue) {
    var num;
    var temp;

    for (var i = 0; i < strValue.length; i++)
    {
        temp = (strValue).charCodeAt(i);
        num = temp >>> 8;

        if (num != 0)
        {
            return false;
        }
    }

    return true;
}

function getHankakuMsg(strItemName) {
	return "" + strItemName + "是半角字符串，请输入正确的值。";
}


/*
 * 函数名称 ：
 *   checkYearMonDay
 * 功能说明 ：
 *   yyyy/MM/dd形式的 CHECK
 * 参数 ：
 *   String    strValue      文字列
 * 返回值 ：
 *      true  ： 正常
 *      false ： 异常
 * 备注 ：
 *   无
 */
function checkYearMonDay(strValue) {
    if (strValue.length == 0) {
        return true;
    }
    if (strValue.length != 10) {
        return false;
    }
    if ((strValue.charAt(4) != "/") ||
        (strValue.charAt(7) != "/")) {
        return false;
    }

    var str_yy  = strValue.substr(0,4);
    var str_mm  = strValue.substr(5,2);
    var str_dd  = strValue.substr(8,2);

    if ((checkNumber(str_yy) == false) || (checkNumber(str_mm) == false)
        || (checkNumber(str_dd) == false)) {
        return false;
    }
    var y = Number(str_yy);
    var m = Number(str_mm);
    var d = Number(str_dd);
    if (y < 1 || m < 1 || m > 12 || d < 1 || d > 31) {
        return false;
    }
    if ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30) {
        return false;
    }
    if (m == 2 && d > 29) {
        return false;
    }
    if (m == 2 && (y % 4 != 0 || (y % 100 == 0 && y % 400 != 0)) && d > 28) {
        return false;
    }
    return true;
}

function getYearMonDayMsg(strItemName) {
	return "" + strItemName + "是日期型数据、请输入“YYYY/MM/DD”或者“YYYYMMDD”格式的值。";
}

/*
 * 函数名称 ：
 *   checkYearMonDay2
 * 功能说明 ：
 *   yyyy-MM-dd形式的 CHECK
 * 参数 ：
 *   String    strValue      文字列
 * 返回值 ：
 *      true  ： 正常
 *      false ： 异常
 * 备注 ：
 *   无
 */
function checkYearMonDay2(strValue) {
    if (strValue.length == 0) {
        return true;
    }
    if (strValue.length != 10) {
        return false;
    }
    if ((strValue.charAt(4) != "-") ||
        (strValue.charAt(7) != "-")) {
        return false;
    }

    var str_yy  = strValue.substr(0,4);
    var str_mm  = strValue.substr(5,2);
    var str_dd  = strValue.substr(8,2);

    if ((checkNumber(str_yy) == false) || (checkNumber(str_mm) == false)
        || (checkNumber(str_dd) == false)) {
        return false;
    }
    var y = Number(str_yy);
    var m = Number(str_mm);
    var d = Number(str_dd);
    if (y < 1 || m < 1 || m > 12 || d < 1 || d > 31) {
        return false;
    }
    if ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30) {
        return false;
    }
    if (m == 2 && d > 29) {
        return false;
    }
    if (m == 2 && (y % 4 != 0 || (y % 100 == 0 && y % 400 != 0)) && d > 28) {
        return false;
    }
    return true;
}

function getYearMonDayMsg2(strItemName) {
	return "" + strItemName + "是日期型数据、请输入“YYYY-MM-DD”格式的值。";
}



/*
 * 函数名称 ：
 *   csFormatDate
 * 功能说明 ：
 *     日期型字符串的格式化
 * 　　输入字符串按照规定的格式 YYYY/MM/DD  进行转换。
 * 参数：
 *          str  日期值字符串
 * 返回值：    
 *         格式化后的日期字符串（输入字符串被容许的格式的场合）
 *         用户输入的日期型字符串（输入字符串不是被容许格式的场合）
 * 备注：
 *  １．作为编辑前的日期格式被容许为以下样式
 *　　　　　YYYY/MM/DD　（YYYY:4位or2位、MM:1～2位、DD:1～2位）
 *　　　　　YYYYMMDD　（YYYY:4位or2位、MM:2位、DD:2位）
 *  ２．没有进行日期值的有效性CHECK。
 *  ３．年份值如果为2位的场合，则在前加上“20”。
 *
 */
function csFormatDate(str){
    var re;
    
    //YYYY/MM/DD的格式
    re = new RegExp("^(\\d{2}|\\d{4})/\\d{1,2}/\\d{1,2}$");
    if (re.test(str)) {
    
        //年月日的分割
        var array  = str.split("/")
        var y = array[0];
        var m = array[1];
        var d = array[2];
        
        //年月日の组合
        if(y.length == 2){
            y = "20" + y;
        }
        if(m.length == 1){
            m = "0" + m;
        }
        if(d.length == 1){
            d = "0" + d;
        }
        
        return y + "/" + m + "/" + d;
    }

    //YYYYMMDD的格式
    re = new RegExp("^(\\d{6}|\\d{8})$");
    if (re.test(str)) {

        //年份值如果为2位的场合，「20」要被添加
        if(str.length == 6){
            str = "20" + str;
        }
        
        //年月日的分割
        var y = str.substring(0,4);
        var m = str.substring(4,6);
        var d = str.substring(6);
        
        return y + "/" + m + "/" + d;
    }

    return str;
}

/*
 * 函数名称 ：
 *   csFormatDateOnBlur
 * 功能说明 ：
 * 　　对被指定了的textbox内的字符串进行日期字符串的格式化。
 * 参数：
 *          obj      textbox控件 (IN/OUT)
 * 返回值：    
 *          无
 * 备注：
 * 　日期格式的方法参照函数「日期型字符串的格式化」
 *
 */
function csFormatDateOnBlur(obj){
    obj.value = csFormatDate(obj.value);
}



/*
 * 函数名称 ：
 *   csFormatYearMonth
 * 功能说明 ：
 *     年月字符串的格式化
 * 　　输入字符串按照规定的格式 YYYY/MM  进行转换。
 * 参数：
 *          str  年月字符串
 * 返回值：    
 *         格式化后的年月字符串（输入字符串被容许的格式的场合）
 *         用户输入的年月字符串（输入字符串不是被容许格式的场合） 
 * 备注：
 * 
 *  １．作为编辑前的年月格式被容许为以下样式
 *　　　　　YYYY/MM　（YYYY:4位or2位、MM:1～2位）
 *　　　　　YYYYMM　（YYYY:4位or2位、MM:2位）
 *  ２．没有进行年月值的有效性CHECK。
 *  ３．年份值如果为2位的场合，则在前加上“20”。
 *
 */
function csFormatYearMonth(str){
    var re;
    
    //YYYY/MM的格式
    re = new RegExp("^(\\d{2}|\\d{4})/\\d{1,2}$");
    if (re.test(str)) {
    
        //年月的分割
        var array  = str.split("/")
        var y = array[0];
        var m = array[1];
        
        //年月的组合
        if(y.length == 2){
            y = "20" + y;
        }
        if(m.length == 1){
            m = "0" + m;
        }
        
        return y + "/" + m;
    }

    //YYYYMM的格式
    re = new RegExp("^(\\d{4}|\\d{6})$");
    if (re.test(str)) {

        //年份值如果为2位的场合，「20」要被添加
        if(str.length == 4){
            str = "20" + str;
        }
        
        //年月的分割
        var y = str.substring(0,4);
        var m = str.substring(4,6);
        
        return y + "/" + m;
    }

    return str;
}


 /*
 * 函数名称 ：
 *   csFormatYearMonthOnBlur
 * 功能说明 ：
 * 　　对被指定了的textbox内的字符串进行年月格式的处理。
 * 参数：
 *          obj      textbox控件 (IN/OUT)
 * 返回值：    
 *          无
 * 备注：
 * 　年月格式的处理方法参照函数「年月字符串的格式化」
 *
 */
function csFormatYearMonthOnBlur(obj){
    obj.value = csFormatYearMonth(obj.value);
}





/*
 * 函数名称　：
 *   checkNumberRange
 * 功能说明　：
 *   输入字符串的长度范围的CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 *   Int       minVal          最小限  (IN)
 *   Int       maxVal          最大限  (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkNumberRange(strValue,minVal,maxVal) {   
    if (strValue.length > 0) {
        if((!checkNumber(strValue)) ||
            (Number(strValue) > maxVal) ||
            (Number(strValue) < minVal)) {
            return false;
        }
    }
    return true;
}

function getNumberRangeMsg(strItemName,strMinVal,strMaxVal) {
	return "" + strItemName + "是在" + strMinVal + "位到" + strMaxVal + "位之间的值，请输入正确的值。";
}


/*
 * 函数名称 ：
 *   checkNumber
 *
 * 功能说明 ：
 *   数字CHECK
 * 参数 ：
 *   String    strValue     文字列  (IN)
 * 返回值 ：
 *      true  ： 正常
 *      false ： 异常
 * 备注 ：
 *   无
 */
function checkNumber(strValue) {
    if (strValue.length > 0) {

		return (strValue.match(/[0-9]+/g) == strValue)
    }
   
    return true;
}

function getNumberMsg(strItemName) {
	return "" + strItemName + "是数字，请输入正确的值。";
}


/*
 * 函数名称　：
 *   checkLength
 * 功能说明　：
 *   字符串固定长度妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 *   int       len             固定长度 (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkLength(strValue,len) {
	if (strValue.length > 0) {
		if (strValue.length == len) {
			return true;
		} else {
			return false;
		}
	}
	return true;
}

function getLengthMsg(strItemName,strLen) {
	return "" + strItemName + "是" + strLen + "位固定长度的值，请输入正确的值。";
}


/*
	功能：取得字符串长度包括中文
				
	参数：str:控件值
				
	返回：长度
*/
String.prototype.len=function()
{
	return this.replace(/[^\x00-\xff]/g,"**").length;
}


/*
	功能：是否超过预设字符串长度
				
	参数：str:控件值,intLen:控件值最大长度,objElement:检查的控件
				
	返回：没有超过长度true 否则 false
*/
function IsMaxLen(str,intLen)
{	
	if(str.len()<=intLen)
		return true
	else
	{	
		return false	
	}	
}	

function getIsMaxLenMsg(strItemName,strLen) {
	return "" + strItemName + "只能输入" + strLen/2+"个汉字或"+strLen+"个英文字符";
}

/*
 * 函数名称　：
 *   checkMaxLength
 * 功能说明　：
 *   字符串最大长度妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 *   int       maxlen          最大长度 (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkMaxLength(strValue,maxlen) { 
	if (strValue.length > 0) {
		if (strValue.length > maxlen) {
			return false;
		}
	}
    return true;
}

function getMaxLengthMsg(strItemName,strLen) {
	return "" + strItemName + "是不大于" + strLen + "位长度的字符串，请输入正确的值。";
}

/*
 * 函数名称　：
 *   checkMinLength
 * 功能说明　：
 *   字符串最小长度妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 *   int       minlen          最小长度 (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkMinLength(strValue,minlen) {
	if (strValue.length > 0) {
		if (strValue.length < minlen) {
			return false;
		}
	}
	return true;
}

function getMinLengthMsg(strItemName,strLen) {
	return "" + strItemName + "是不小于" + strLen + "位长度的字符串，请输入正确的值。";
}

/*
 * 函数名称　：
 *   checkTelNo
 * 功能说明　：
 *   电话号码妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkTelNo(strValue) {   
    if (strValue.length > 0) {
		return (strValue.match(/[0-9]+[-]+[0-9]+/g) == strValue);
    }
    return true;
}

function getTelNoMsg(strItemName) {
	return "" + strItemName+ "是“XXXX-XXXXXXX”样式的数据，请输入正确的值。";
}

/*
 * 函数名称　：
 *   checkEisuuji
 * 功能说明　：
 *   英数字妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkEisuuji(strValue) {
    if (strValue.length > 0) {
		return (strValue.match(/[0-9]+/g) == strValue);
    }
    return true;
}

function getEisuujiMsg(strItemName) {
	return "" + strItemName+ "是半角英数字字符串，请输入正确的值。";
}

/*
 * 函数名称　：
 *   checkEnStr
 * 功能说明　：
 *   英文字符串妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkEnStr(strValue) {
    if (strValue.length > 0) {
		return (strValue.match(/[0-9a-zA-Z]+/g) == strValue);
    }
    return true;
}

function getEnStr(strItemName) {
	return "" + strItemName+ "是半角英文字符串，请输入正确的值。";
}

/*
 * 函数名称　：
 *   checkMoney
 * 功能说明　：
 *   小数点値妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkMoney(strValue) {
    if (strValue.length > 0) {
		if (isNaN(parseFloat(strValue)) || 
		   !(strValue.match(/[0-9]*(\.)?[0-9]+/g) == strValue)) {
			return false;
		}
    }
    return true;
}

function getMoneyMsg(strItemName) {
	return "" + strItemName+ "是整数或者小数类型，请输入正确的值。";
}



/*
 * 函数名称　：
 *   checkFloat
 * 功能说明　：
 *   小数点値妥当性CHECK
 * 参数　：
 *   String    strValue        文字列  (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function checkFloat(strValue) {
    if (strValue.length > 0) {
		if (isNaN(parseFloat(strValue)) || 
		   !(strValue.match(/[0-9.-]+/g) == strValue)) {
			return false;
		}
    }
    return true;
}

function getFloatMsg(strItemName) {
	return "" + strItemName+ "是小数点値，请输入正确的值。";
}


function getAecs036(strItemName) {
    return "" + strItemName + "没有被指定正确的值。";
}


   
 /*
 * 函数名称　：
 *   formatDisplayNumber
 * 功能说明　：
 *   金额数值的 表示项目每三位用“，”分隔。  
 * 参数　：
 *   Int    item        金额数值  (IN)
 * 返回值　：
 *      true  ： 正常
 *      false ： 异常
 * 备注　：
 *   无
 */
function formatDisplayNumber(item) {
	var c,r,s,p;
	
	s = "" + item.value;
	s = s.replace(/,/g,"");
	c = s.substring(0, 1);
	while (s.length > 1 && (c == " " || c == "0")) {
		s = s.substring(1, s.length);
		c = s.substring(0, 1);
	}
	if (s.substring(0, 1) == ".") s = "0" + s;
	p = s.indexOf(".");
	if (p < 0){
		p = s.length;
	}
	r = s.substring(p, s.length);
	for(var i=0; i<p; i++){
		c = s.substring(p-1-i, p-1-i+1);
		if (c < "0" || c > "9"){
			r = s.substring(0, p-i) + r;
			break;
		}
		if (i > 0 && i % 3 == 0){
			r = "," + r;
		}
		r = c + r;
	}
	item.value = r;
}

 /*
 * 函数名称　：
 *   unformatNumber
 * 功能说明　：
 *   去除金额显示数值中的 “，”。  
 * 参数　：
 *   Obj    item           控件项        (IN)
 * 备注　：
 *   无
 */
 function unformatNumber(item, onFlg){
	item.value = item.value.replace(/,/g,"");
	if ( onFlg == "on" ) {
		item.select();
	}
 }
 

/*
 * 函数名称　：
 *   IsEmail
 * 功能说明　：
 *   检测Email格式
 * 参数　：
 *   String    strEamil       文字列 (IN)
 * 备注　：
 *   无
 */
function IsEmail(strEamil)
{
	if (strEamil.length > 0) {
	    var rRegExp = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	    if(!rRegExp.test(strEamil))
	    {	
		    return false;
	    }
	}
	return true;
}

function getEmailMsg(strItemName) {
	return "" + strItemName + "Email 格式有误。";
}


/*
 * 函数名称　：
 *   LTrim
 * 功能说明　：
 *   去除左空格
 * 参数　：
 *   String    str       文字列 (IN) 
 * 返回值　：
 *   String   rtnStr     文字列 (OUT) 
 * 备注　：
 *   无
 */
function LTrim(str)
{
	var rtnStr;
	rtnStr=""
	for (var i=0;i<str.length;i++)
	{
		if (str.charAt(i)!=" ")
		{
			rtnStr=str.substr(i);
			break;
		}
	}
	return rtnStr;
}
	
/*
 * 函数名称　：
 *   RTrim
 * 功能说明　：
 *   去除右空格
 * 参数　：
 *   String    str       文字列 (IN) 
 * 返回值　：
 *   String   rtnStr     文字列 (OUT) 
 * 备注　：
 *   无
 */
function RTrim(str)
{
	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;
}

/*
 * 函数名称　：
 *   RTrim
 * 功能说明　：
 *   去除前后空格
 * 参数　：
 *   String    str       文字列 (IN) 
 * 返回值　：
 *   String   rtnStr     文字列 (OUT) 
 * 备注　：
 *   无
 */
function Trim(str)
{
	return(LTrim(RTrim(str)));
}	


/*
 * 函数名称　：
 *   CheckPWCompare
 * 功能说明　：
 *   比较两次输入的密码是否相等
 * 参数　：
 *   String    strValue1       文字列 (IN) 
 *   String    strValue2       文字列 (IN) 
 * 返回值　：
 *      true  ： 相同
 *      false ： 不同
 * 备注　：
 *   无
 */
 function CheckPWCompare(strValue1,strValue2) { 
	if (strValue1 == strValue2 ) {
		   return true;
		}
	return false;	
	}

function getPWCompare(strItemName) {
	return "" + strItemName + "两次输入的值不相同。";
}