/*
捕获页面按键，将回车键换为TAB键
2008.7.25

使用方法：
１、回车键跳到下一个非按钮区，但在文本区中按回车键不跳；<br>
２、光标下键跳到下一个非按钮区，但在下拉框和文本区中按光标下键不跳；<br>
３、光标上键跳到上一个非按钮区，但在下拉框和文本区中按光标上键不跳；<br>
４、Ctrl+光标上、下键可以任意一个非按钮区之间移动；<br>
５、会自动跳过被<b>disabled</b>的文本区。<br>
６、必须有个submit按钮。<br>
*/


document.onkeydown=function(){	
/*
try{
window.status=event.keyCode+"|"+event.srcElement.tagName+"|"+event.srcElement.type+"|"+event.srcElement.sourceIndex+"|"+document.all(event.srcElement.sourceIndex).name+"|"+document.getElementsByName(document.all(event.srcElement.sourceIndex).name)[0].form.name; //测试中显示相关测试值用，正式使用中可删除
}catch(e){}
*/

var fx="";
var qx=true; //移到文本框中后是否自动全选


try{
  switch(event.keyCode){  //判断按键
  case 13:
   if(event.srcElement.tagName!="TEXTAREA"){     //非TEXTAREA对象中按回车键
    fx="down";
    if( event.srcElement.type.toUpperCase() == "SUBMIT" || event.srcElement.type.toUpperCase() == "IMAGE") fx="submit";
   }
   break;
  case 40:
   if(event.srcElement.tagName=="INPUT"||event.ctrlKey){  //INPUT对象中按光标下键或在所有对象中按[ctrl]+光标下键
    fx="down";
   }
   break;
   
  case 38:
   if(event.srcElement.tagName=="INPUT"||event.ctrlKey){  //INPUT对象中按光标上键或在所有对象中按[ctrl]+光标上键
    fx="up";
   }
   break;
  default:
}
	
	//根据判断按键所得的fx值来执行向下或向上操作
  switch(fx){  
  case "down":
  
   for(i=event.srcElement.sourceIndex+1;i<document.all.length;i++){
   	if( document.all(i).tagName.length == 0 ) continue; //为什么TAGNAME会为空呢？fjf,
    if(((document.all(i).tagName=="INPUT")&&("text,password,checkbox,radio,submit,image".indexOf(document.all(i).type)!=-1))||("SELECT,TEXTAREA".indexOf(document.all(i).tagName)!=-1))
    {
    		//alert( document.all(i).tagName.length +"="+document.all(i).type);
     if(!document.all(i).disabled){
      document.all(i).focus();
      if (document.all(i).tagName=="INPUT" && document.all(i).type !="submit" && qx)document.all(i).select();
     //alert( "index=" +event.srcElement.sourceIndex + ",i="+i+",len="+document.all.length+",key=" + event.keyCode + ",object=" + document.all( event.srcElement.sourceIndex ).name );
      break;
     }
    }
   }
   
	event.keyCode = 0;
   	event.returnValue = false;
   
   break;
   
   //add by fjf,defualt action
  case "submit":
   	 //document.getElementsByName(document.all(event.srcElement.sourceIndex).name)[0].form.submit();
   	 //alert( 'subme' );
   	 //event.keyCode = 0;
   	 //event.returnValue = false;
   	break;
   
  case "up":
   for(i=event.srcElement.sourceIndex-1;i>-1;i--){
   	if( document.all(i).tagName.length == 0 ) continue; //为什么TAGNAME会为空呢？fjf,
    if(((document.all(i).tagName=="INPUT")&&("text,password,checkbox,radio,submit".indexOf(document.all(i).type)!=-1))||("SELECT,TEXTAREA".indexOf(document.all(i).tagName)!=-1)){
     if(!document.all(i).disabled){
      document.all(i).focus();
      if (document.all(i).tagName=="INPUT" &&document.all(i).type !="submit" && qx )document.all(i).select();
      break;
     }
    }
   }
   event.keyCode = 0;
   event.returnValue = false;
   break;
  default:
  }
}catch(e){}
}



