/**
 * Double校验组件
 * js组件：DoubleObj.js
 * 应用例子：Double.html
 * 属性：
 *       precision： 精度。
 * 说明：1、允许输入0－9数字，“.”  “-”，并且对输入进行了限制。
 *       2、将Enter 键转换为 Tab 键。
 * @author  lixiangyu@neusoft.com,2003.04
 *          micy@neusoft.com	2003.07.19
 *				hugh@neusoft.com
 */



 function DoubleObj(editerObj){
 	//定义输入对象
 	this.edtObj = editerObj;
    	//公共方法
    	this.onvalidate = DOU_onvalidate;
	this.checkvalidate = DOU_checkvalidate;
    	this.getParentObj = DOU_getParentObj;
    	this.getBaseObj = DOU_getBaseObj;
	//行为方法
        this.onReady = DOU_onReady;
        this.checkSymbol = DOU_checkSymbol;
	this.eventBand = DOU_eventBand;
    	this.OnlyNumber = DOU_OnlyNumber;

 	//私有方法

 	//私有对象
    	var ParObj=null;
 		var BasObj=null;
 }

   function DOU_getParentObj(){
	if(this.ParObj==null){
		this.ParObj = new NumberObj(this.edtObj);
		}
		return this.ParObj;
    }

   function DOU_getBaseObj(){
		if(this.BasObj==null){
			this.BasObj = this.getParentObj().getBaseObj();
			}
			return this.BasObj;
   }

    function DOU_onvalidate() {
      //调用BaseObject中的公用函数检查数据合法性
     	if(!this.getBaseObj().commonCheck())	return false;
	  if(!this.checkvalidate()){
           alert("["+this.edtObj.prompt + "]输入不合法！");
		this.edtObj.focus();
		   return false;
	  }
	//modify by dongxin 如果输入为空，就不做小数点精度的判断
	if(this.edtObj.value==''){
		return true;
	}
	//检查小数点后精度是否符合
	 if(!isNaN(this.edtObj.precision)){
      var n = this.edtObj.value.indexOf(".");
      var m=this.edtObj.value.length-1;
      var z=m-n;
      precision = parseInt(this.edtObj.precision);
      if(!isNaN(precision)){
	      if((m-n)!= precision){
	         alert("["+this.edtObj.prompt+"]精度不符，要求精度"+this.edtObj.precision+"位。");
		     return false;
	      }
       }
     }
      return true;
    }


    function DOU_OnlyNumber()
    {
         this.checkSymbol();

        //如果已经输入一个小数点，则禁止再次输入小数点。并且小数点不能输入在第一位
        var n = this.edtObj.value.indexOf(".");
        if(n>-1){
          if(window.event.keyCode == 46)
              window.event.keyCode = 0 ;

          //小数点后超过精度限制则禁止输入
          var m=this.edtObj.value.length;
          precision = parseInt(this.edtObj.precision);
          if((m-n)>precision){
           window.event.keyCode = 0 ;
          }
        }

         //限制输入长度，超长禁止输入
       var fixLength = this.edtObj.fixLength;
        var inputLen = this.edtObj.value.length;
        if(!isNaN(fixLength)){
	         fixLength = parseInt(fixLength);
	         if(inputLen < fixLength)
	             event.returnValue = true;
	         else if(inputLen > fixLength-1)
	             event.returnValue = false;
	    }


         if ( !(((window.event.keyCode >= 48) && (window.event.keyCode <= 57))|| (window.event.keyCode == 13) || (window.event.keyCode == 46)|| (window.event.keyCode == 45)))
         {
           window.event.keyCode = 0 ;
          }

    }



 /**
 *名称：DOU_checkSymbol()
 *功能：检查符号“.”和“－”输入的合法性
 */
   function DOU_checkSymbol(){
     var checkStr = this.edtObj.value;
     var j=0;
     var flag=0;
     //第一位不允许输入小数点“.”
     if(checkStr == null || checkStr=="" ){
        if(window.event.keyCode == 46)
            window.event.keyCode = 0 ;

     }
     //如果第一位是负号，第二位禁止输入“.”
     if(checkStr=="-"){
       if(window.event.keyCode == 46)
               window.event.keyCode = 0 ;
     }

     //如果第一位输入负号，其他位不允许输入负号“-”
     if(checkStr.indexOf("-")>-1 || checkStr.length>1){
       if(window.event.keyCode == 45)
              window.event.keyCode = 0 ;
     }

    var checkresult = this.checkvalidate();
    if(checkresult == false)
    {
	return false;
    }

        return true;
   }

function DOU_checkvalidate()
{
   var checkStr = this.edtObj.value;
    for (var i = 0; i < checkStr.length; i++) {
           var oneChar = checkStr.charAt(i)

           //第一位可以是负号
           if(i == 0 && oneChar == "-"){
              continue;
           }

           if ( i>0 && oneChar == "-") {
          //  alert("负号输入不合法");
            event.returnValue = false;
            return false;
           }

           if (oneChar < "0" || oneChar > "9") {
              if(oneChar != "-" && oneChar != ".")
                return false;
           }
       }
	return true;

}


	function DOU_onReady(){
		//调用ParentObj 的初始化方法
    	 this.getParentObj().onReady();
    	 }
	function DOU_eventBand(){
		this.getBaseObj().eventBand("onkeypress","OnlyNumber()")
		}
		

DoubleObj.prototype.beforeSubmit = function(){
	this.getParentObj().beforeSubmit();
}
