﻿///////////////////////////////////////////////////////////////////////////////////
// 文件名 ：pageinit.js
// 功  能 ：定义初始化页面功能。
//
// 编写者 ：    zxh
//
// 日  期 ：    2004/4/21
//
///////////////////////////////////////////////////////////////////////////////////


//+------------------------------------
// 根据需要重载 doInit() 函数，用以完成其他初始化任务
//-------------------------------------
//function doInit(){}

//邦定常数对象
function tch_const(){
   this.autojump = true;
   this.setAutojump = setAutojump;
   this.getAutojump = getAutojump;	
}	
function setAutojump(bool){
   this.autojump = bool;	
}	
function getAutojump(){
   return this.autojump;
}   	

var t_const = new tch_const();

var indexFocus;           // 页面的输入框索引
var edits;                // 页面包含的录入框

//+------------------------------------
// 初始化页面
//-------------------------------------
function doPageInit()
{
    /*
    if (document.body.style.visibility == "hidden")
        document.body.style.visibility = "visible";
    document.body.style.display = "";
    */
        
//    g_xHint = new tch_xHint();          // 提示控件(输入框出错提示)
//    g_xDic = new tch_xDic();            // 字典控件，现已用OCX代替
//    g_xQuery = new tch_xQuery();        // 查询窗口
//    g_xPucker = new tch_xPucker();      // 折叠窗口
    g_xTabPane = createTabPage();       // 标签控件
    editInit();                         //输入框初始化处理

/*暂时先屏蔽，以后若速度上去后，可以开通
//设置readonly or disabled录入框样式 ?未测耗时
    var tgname = document.body.getElementsByTagName("input");
    for(var i=0;i<tgname.length;i++){
      if ((tgname[i].type=="text") && (tgname[i].readOnly)){
      	tgname[i].onfocus="";
      	tgname[i].onblur="";
        tgname[i].style.background="oldlace";
      }  
    }   
*/

/* 没有用
    try {
        doInit();
    }
    catch (e){}
*/    
}

// 缚上 onLoad 事件处理
if (typeof(window.attachEvent) != "undefined") {
    window.attachEvent("onload", doPageInit);   //execute it
}
else {
    if (window.onload != null) {
        var oldOnload = window.onload;
        window.onload = function (e) {
            doPageInit();
            oldOnload(e);
        };
    }
    else {
        window.onload = doPageInit;
    }
}

//+------------------------------------
// 创建主标签页
//-------------------------------------
function createTabPage() {
   

    var all = document.all;
    var len = all.length;
    var tabPaneRe = /tab\-pane/;
    var tabPageRe = /tab\-page/;
    var cn, el, tp, nSelect;
    var parentTabPane;

    for (var i = 0; i < len; i++) {
        el = all[i]
        cn = el.className;
    
        if (cn == "") continue;

        if (tabPaneRe.test(cn) && !el.tabPane) {
            tp = new tch_TabPane(el);
            return tp;
        }
    }
    return null;
}

///////////////////////////////////////////////////////////////////
//    输入框处理函数
//    包括上移、下移功能、初始化输入框信息等
//////////////////////////////////////////////////////////////////

   //焦点上移
   function movePrev(){
     var n = indexFocus;
     try {
       n--;
       if (n > -1) {
         var obj=eval("document.all."+edits[n]);
         obj.focus();
         indexFocus = n;
       } else {
       	 indexFocus = -1;
       }
       
     }
     catch (e) {}  
     return;
   }
   
   //焦点下移
   function moveNext(){
     var n = indexFocus;
     try {
       n++;
       if (n < edits.length) {
         var obj=eval("document.all."+edits[n]);
         obj.focus();
         indexFocus = n;
       } else {
       	 indexFocus = edits.length;
       }

     }
     catch (e) {}  
     return;
   }   

   function setIndexFocus(){
   	var obj = event.srcElement;
    	for (var i=0;i<edits.length;i++){
    	    if (edits[i].toLowerCase()==obj.name.toLowerCase()){
    	    	indexFocus = i;
    	    	break;
    	    }		
        }
   }	
    
    // 初始化(only for input element)
    function inputInit() {
    	
     if (t_const.getAutojump()){	 
      var tgname = document.body.getElementsByTagName("input");
      edits = [];
      var n=0;     //输入框编号
      for(var i=0;i<tgname.length;i++){
        if ((tgname[i].type=="text")){
          edits[n]=tgname[i].name;
          n = n + 1;  
          
          //begin define inputs events 
          if (tgname[i].kind.toLowerCase()!="zd") {     
             if (tgname[i].onfocus != null) {
          	var oldOnfocus = tgname[i].onfocus;           	
		tgname[i].onfocus = function(e) { 
                    oldOnfocus(e);
                    setIndexFocus();
                };    
             }	
             else {
          	tgname[i].onfocus = function () {
          	    setIndexFocus();
          	};
             }	    
          }else{
             tgname[i].attachEvent("onfocus",setIndexFocus);
          }
          /*
          if (typeof(tgname[i].attatchEvent)!="undefined"){
             alert(i+":"+typeof(tgname[i].attatchEvent));	
             tgname[i].attachEvent("onfocus",setIndexFocus);	
          }
          else {
             if (tgname[i].onfocus != null) {
                var oldOnfocus = tgname[i].onfocus;
                tgname[i].onfocus = function(e) {
                  setIndexFocus();
                  oldOnfocus(e);
                };
             }     
             else {
                tgname[i].onfocus = setIndexFocus;
             }
          }
          */		

/*          
          if (tgname[i].kind.toLowerCase()=="zd") {
             tgname[i].onkeypress = function() {	
               dicKeyPress();
               moveNext();	
             };  
          }
*/
          	
          tgname[i].onkeydown = function(){
          	var obj = event.srcElement;
                var keyCode = event.keyCode;
                var isDic = obj.kind.toLowerCase() == "zd" ? true : false;
                window.event.cancelBubble = true;
  
                switch (keyCode) {
                   case 13:    // Enter
                   case 39:    // Right 40:Down
                   case 108:   // Enter(小键盘上)
                      if (isDic){
                      	dicKeyDown();
                      }	
                      moveNext();
                      break;
                   case 37:    // Left 38:Up
                      if (isDic) {
                        dicKeyDown();
                      }  
                      movePrev();
                      break; 
                   default:
                      break;
                }
          }
          //end of define inputs events
         	
        }  
      }  
    
      //alert(edits.length);
      indexFocus = -1; 
     } 
    }
    
    function editInit(){ //for input、select、textarea element

    if (t_const.getAutojump()){	
      var tgname;
      tgname = document.all;
      edits = [];
      var n = 0;   //输入框编号(包括下拉框和多行输入框，但必须包含class="edit")
      for (var i=0;i<tgname.length;i++){
        if (tgname[i].className.toLowerCase()=="edit"){
           if ((tgname[i].type.toLowerCase()!="button")||(tgname[i].type.visibility!="hidden")){	
             edits[n]=tgname[i].name;
             n = n + 1;	
             
             if ((tgname[i].kind)&&(tgname[i].kind.toLowerCase()!="zd")) {     
               if (tgname[i].onfocus != null) {
          	 var oldOnfocus = tgname[i].onfocus;           	
		 tgname[i].onfocus = function(e) { 
                    oldOnfocus(e);
                    setIndexFocus();
                 };    
               }	
               else {
          	 tgname[i].onfocus = function () {
          	    setIndexFocus();
          	 };
               }	    
             }else{
               tgname[i].attachEvent("onfocus",setIndexFocus);
             }
            
             tgname[i].onkeydown = function(){
          	var obj = event.srcElement;
                var keyCode = event.keyCode;
                var isDic = ((obj.kind)&&(obj.kind.toLowerCase() == "zd")) ? true : false;
                window.event.cancelBubble = true;
  
                switch (keyCode) {
                   case 13:    // Enter
                   case 39:    // Right 40:Down
                   case 108:   // Enter(小键盘上)
                      if (isDic){
                      	dicKeyDown();
                      }	
                      moveNext();
                      break;
                   case 37:    // Left 38:Up 
                      if (isDic) {
                        dicKeyDown();
                      }  
                      movePrev();
                      break; 
                   default:
                      break;
                }
             }         
             
           }  
        }			
      }
      //alert(edits.length);
      if (indexFocus=="undefine") indexFocus = -1; 
     } 	
    }	
    
////////////结束输入框处理    
