function KeyMapperObj()
{
  //变量定义
  var kCurrentSite;
  var fCurrentSite;
  var keyHolder;
  var functionHolder;
  //方法定义
  this.addKeyMaping = KMO_addKeyMaping;//添加key影射
  this.removeKeyMaping=KMO_removeKeyMaping;//删除key影射
  this.havingMaping = KMO_havingMaping;//检查是否已经存在key影射
  this.findKeyMaping=KMO_findKeyMaping;//查找key影射的对象
  this.removeALL =KMO_removeALL;//删除所有的key影射
  this.nullFunction = KMO_nullFunction;//空方法
}
/**
* 添加key影射，其中keystr为要影射的key，functionObj为要执行的方法
* 返回：-1--影射不成功，1--影射成功，999--已经存在相同的影射，覆盖原来的影射
* 如果想知道是否有相同的影射，请用havingMaping查找是否存在相同的key影射
*/
function KMO_addKeyMaping(keystr,functionObj)
{
 if(keystr==null||keystr==""||keystr==undefined||keystr.length<1)
 {
  return -1;
 }
 //转化成为标准的KEYMAP
 var keyMapStr=keystr.toUpperCase();
 var _keyStr = "";
 if(keyMapStr.indexOf("CTRL")>-1)
  {
    _keyStr +="CTRL";
  }
  if(keyMapStr.indexOf("ALT")>-1)
  {
    if(_keyStr.length>1)
    {
	_keyStr +="+ALT";
    }
    else
    {
    	_keyStr +="ALT";
    }
  }
  if(keyMapStr.indexOf("SHIFT")>-1)
  {
    if(_keyStr.length>1)
    {
	_keyStr +="+SHIFT";
    }
    else
    {
    	_keyStr +="SHIFT";
    }
  }
  _keyStr+=("+"+keyMapStr.charAt( keyMapStr.length -1));
 //检查数组
 if(this.kCurrentSite!=this.fCurrentSite)
 {
  return -1;
 }
 //检查是否有相同的影射
var havingSite = this.havingMaping( _keyStr);
if(havingSite>-1)
{
 this.keyHolder[havingSite]=_keyStr;
 this.functionHolder[havingSite]=functionObj;
 return 999;
}
else
{
 this.keyHolder[this.kCurrentSite]=_keyStr;
 this.functionHolder[this.fCurrentSite]=functionObj;
 this.kCurrentSite++;
 this.fCurrentSite++;
 return 1;
}
 return -1;
}
/**
*
*/
function KMO_removeKeyMaping(_keyStr)
{
 //检查是否有相同的影射
var havingSite = this.havingMaping(_keyStr);
if(havingSite>-1)
{
 this.keyHolder[havingSite]="ITOWN_NULL_FUNCTION";
 this.functionHolder[havingSite]=this.nullFunction;
 return true;
}
 return false;
}
/**
*
*/
function KMO_havingMaping(keyStr)
{
 var intRtn = -1;
 for(var i=0;i<this.kCurrentSite;i++)
 {
  if(this.keyHolder[i] == keyStr)
  {
    intRtn = i;
    break;
  }
 }
 return intRtn;
 }
/**
*
*/
function KMO_findKeyMaping(_keyStr)
{
 //检查是否有相同的影射
 var havingSite = this.havingMaping(_keyStr);
 if(havingSite>-1)
 {
  return this.functionHolder[havingSite];
 }
 return this.nullFunction;
}
/**
*
*/
function KMO_removeALL()
{
 this.keyHolder = new Array()
 this.functionHolder = new Array()
 this.kCurrentSite=0;
 this.fCurrentSite=0;
 return true;
}
/**
*
*/
function KMO_nullFunction()
{
 if(ItownGlobals.DEBUG)
 {
   alert("空方法KMO_nullFunction被调用！");
 }
}
//实例化
var IKM = new KeyMapperObj();
//初始化
IKM.keyHolder = new Array()
IKM.functionHolder = new Array()
IKM.kCurrentSite=0;
IKM.fCurrentSite=0;


