var firedBefore=false;
function ItownEventProcessor()
{
 this.doKeyDown =IEVP_doKeyDown;
 this.enterToTab = IEVP_enterToTab;
 this.accelerateKey = IEVP_accelerateKey;
 this.onvalidate =IEVP_validate;
 this.onlyNumber=IEVP_onlyNumber;
 this.dealInputOnblur =IEVP_dealInputOnblur;
 this.dealKeypress =IEVP_dealKeypress;
 this.dealInputBackSpace =IEVP_dealInputBackSpace;
 this.getRealValue = IEVP_getRealValue;
}
function IEVP_doKeyDown()
{
    if (!firedBefore)
    {
      return this.enterToTab();
    }
    else
     {
         firedBefore=!firedBefore
         return true;
    }
}

function IEVP_enterToTab()
{
 var anEvent;
 if(navigator.appName.indexOf("Microsoft") == -1)
 {
  anEvent = window.event;
 }
 else
 {
  anEvent = event;
 }
var bAcckey = this.accelerateKey(anEvent);
if(bAcckey == true)
{
 event.keyCode=9;
 return true;
}
//处理回车
 if (anEvent.keyCode != 13) {
     return true;
    }
 if (anEvent.keyCode == 13) {
     var obj = anEvent.srcElement;
     if ((obj.tagName == "INPUT" && obj.type != "button") || obj.tagName == "SELECT") {
	if(!anEvent.shiftKey&&!anEvent.ctrlKey&&!anEvent.altKey)
	{
          if(this.onvalidate(obj))
          {
           if(obj.type=="text")
           {
		   		BBD_BasedataProcessData(obj);
           }
           anEvent.keyCode=9;
          }
	}
    }
  }
  return true;
}
function IEVP_accelerateKey(anEvent)
{
//处理快捷键
if(anEvent.shiftKey||anEvent.ctrlKey||anEvent.altKey)
{
  var keyStr = new String("");
  if(anEvent.ctrlKey==true)
  {
    keyStr +="CTRL";
  }
  if(anEvent.altKey==true)
  {
    if(keyStr.length>1)
    {
	keyStr +="+ALT";
    }
    else
    {
    	keyStr +="ALT";
    }
  }
  if(anEvent.shiftKey==true)
  {
    if(keyStr.length>1)
    {
	keyStr +="+SHIFT";
    }
    else
    {
    	keyStr +="SHIFT";
    }
  }
  if((anEvent.keyCode>47&&anEvent.keyCode<58)||(anEvent.keyCode>64&&anEvent.keyCode<91)||(anEvent.keyCode>96&&anEvent.keyCode<123))
  {
   var keyCodeStr  = (keyStr+"+"+String.fromCharCode(anEvent.keyCode).toUpperCase());
   var site=IKM.havingMaping(keyCodeStr);
   if(site>-1)
   {
     var funcObj = IKM.findKeyMaping(keyCodeStr);
     try{
      anEvent.keyCode = "";
      setTimeout(funcObj,50);//异步调用，50MS后调用
     //funcObj.call();//同步调用，当调用的方法有alert("")等提示的时候，不能屏蔽键,导致输入框还是有多余的输入
     } catch(e)
     {
      if(ItownGlobals.DEBUG)
      {
        alert("调用快捷键"+keyCodeStr+"影射的方法出错！");
      }
     }
    anEvent.keyCode=9;
    return true;
   }
    return false;
  }
  return false;
}
 return false;
}
function IEVP_validate(obj)
{
 var jsObj = itownObjsMgr.getEAPObj(obj);
 if(jsObj==undefined||jsObj=="undefined")
 {
  return true;
 }
 try{
    jsObj.onReady();
    return jsObj.onvalidate();
 }
 catch(e)
 {
  return true;
 }
}
function IEVP_onlyNumber(obj)
{
 try{
   itownObjsMgr.getEAPObj(obj).OnlyNumber();
 }
 catch(e)
 {
  if(ItownGlobals.DEBUG)
  {
   alert("调用：itownObjsMgr.getEAPObj(obj).OnlyNumber()；出错");
  }
 }
}
function IEVP_dealInputOnblur(obj)
{
 try{
 itownObjsMgr.getEAPObj(obj).dealInputOnblur();
 }
 catch(e)
 {
  if(ItownGlobals.DEBUG)
  {
   alert("调用：itownObjsMgr.getEAPObj(obj).dealInputOnblur();出错");
  }
 }
}
 function IEVP_dealKeypress(obj)
{
 try{
 itownObjsMgr.getEAPObj(obj).dealKeypress();
 }
 catch(e)
 {
  if(ItownGlobals.DEBUG)
  {
   alert("调用：itownObjsMgr.getEAPObj(obj).dealKeypress();出错");
  }
 }

}
function IEVP_dealInputBackSpace(obj)
{
 try{
 itownObjsMgr.getEAPObj(obj).dealInputBackSpace();
 }
 catch(e)
 {
  if(ItownGlobals.DEBUG)
  {
   alert("调用：itownObjsMgr.getEAPObj(obj).dealInputBackSpace();出错");
  }
 }
}

function IEVP_getRealValue(obj)
{
 try{
  itownObjsMgr.getEAPObj(obj).getRealValue();
 }
 catch(e)
 {
  if(ItownGlobals.DEBUG)
  {
   alert("调用：itownObjsMgr.getEAPObj(obj).IEVP_getRealValue();出错");
  }
 }
}
//初始化事件处理器
var IEVP= new ItownEventProcessor();

