/**
 * 窗口类
 * 需要载入 document.js, string.js
 * OK
 */
var Window={

interval:null,

listenWindowState:function(win){
  var count = 0;
  var destroyInterval = function () {
        var readyStatus;
        readyStatus=win.document.readyState;
        if (readyStatus == "complete") {
          window.clearInterval(Window.interval);
          Window.interval=null;
          Window.destroyProgress();
          Document.refreshStatus();
        }
        else if (readyStatus == "interactive") {
          count += 1;
          if (count > 20) {
            window.clearInterval(Window.interval);
            Window.interval=null;
            Window.destroyProgress();
            Document.refreshStatus();
          }
        }
  };
 if(Window.interval==null){
   Window.interval = window.setInterval(destroyInterval, 50);
 }
},


/**
* 打开模态窗口
* url:链接页面或action动作
* width:打开模态窗口的宽度
* height:打开模态窗口的高度
* 注意：打开模态窗口的页面中要在<head>后面加上
* <meta http-equiv="Pragma" content="no-cache">：禁止模态窗口缓存
* <base target="_self"/>：模态窗口中的表单在本窗口中提交
* 姜敏
*/
modalWindow:function (url, width, height){
  var sURL = url;
  var sFeatures = "dialogWidth:" + width + "px; dialogHeight:" + height + "px; "
                + "help:no; scroll:no; center:yes; status:no;resizable:yes";
  return window.showModalDialog(sURL, window, sFeatures);
},

/**
 * 打开普通窗口
 * url:链接页面或action动作
 * width:宽度
 * height:高度
 * isScroll:是否有滚动条
 * 姜敏
 */
openWindow:function (url, width, height,isScroll){
  var sURL=url;
  var scrollbar=(isScroll==null||isScroll==true)?"yes":"no";
  var sFeatures = "scrollbars="+scrollbar+", status=yes, resizable=yes,"
                + "toolbar=yes, menubar=yes, location=yes, titlebar=yes"
  if(width!=null){
    sFeatures+=", width="+width;
  }
  if(height!=null){
    sFeatures+=", height="+height;
  }
  return window.open(sURL, 'open'+StringUtil.randomChar(), sFeatures);
},

/**
 * 打开没有菜单和工具栏的窗口
 * url:链接页面或action动作
 * width:宽度
 * height:高度
 * isScroll:是否有滚动条
 */
openNoBarWindow:function (url, width, height, isScroll){
  var sURL=url;
  var scrollbar=(isScroll==null||isScroll==true)?"yes":"no";
  var sFeatures = "scrollbars="+scrollbar+", status=no, resizable=yes,"
                + "toolbar=no, menubar=no, location=no, titlebar=no"
  if(width!=null){
    sFeatures+=", width="+width;
  }
  if(height!=null){
    sFeatures+=", height="+height;
  }
  return window.open(sURL, 'openNoBar'+StringUtil.randomChar(), sFeatures);
},

/**
 * 打开全屏窗口
 * url:链接页面或action动作
 * isScroll:是否有滚动条
 */
openFullWindow:function (url,isScroll){
  var sURL=url;
  var scrollbar=(isScroll==null||isScroll==true)?"yes":"no";
  var sFeatures = "toolbar=no, menubar=no, scrollbars="+scrollbar+", resizable=yes, "
                + "location=no, status=no, titlebar=no, width="+(screen.width-10)+", "
                + "height="+(screen.height-60)+", top=0, left=0";
  return window.open(sURL, 'full'+StringUtil.randomChar(), sFeatures);
},


/**
* 打开虚拟窗口
* src: 请求动作
* title: 虚拟窗口的标题
* width: 窗口宽度
* height: 窗口高度
* closeFunction：窗口关闭时执行的函数
*/
openVirtualWindow:function (src, width, height, closeFunction){

  var objSpans = window.document.body.getElementsByTagName("SPAN");
  for(var i=objSpans.length; i>0; i--){
    if(objSpans[i-1].className=='2k3Window'){
      window.document.body.removeChild(objSpans[i-1]);
    }
  }

  var bodyClientWidth = window.document.body.clientWidth;
  var bodyClientHeight = window.document.body.clientHeight;
  var bodyScrollTop = window.document.body.scrollTop;
  var bodyScrollLeft = window.document.body.scrollLeft;

  var tmpWidth=bodyClientWidth-width;
  var tmpHeight=bodyClientHeight-height;
  var left=(tmpWidth>0)? bodyScrollLeft+tmpWidth/2: bodyScrollLeft;
  var top=(tmpHeight>0)? bodyScrollTop+tmpHeight/2: bodyScrollTop;
  var objSpan = window.document.createElement("SPAN");
  objSpan.className = "2k3Window";

  objSpan.width = width;
  objSpan.height = height;
  objSpan.left = left;
  objSpan.top = top;
  if(closeFunction!=null){
    objSpan.closeFunction = closeFunction ;
  }
  objSpan.src = src;
  window.document.body.appendChild(objSpan);
  return objSpan;
},

/**
 * 关闭虚拟窗口
 */
closeVirtualWindow:function (){
  var windowSpan = window.parent.document.getElementById(window.name).parentElement;
  window.parent.document.body.removeChild(windowSpan);
},

/**
 * 创建一个模拟进度条
 * content进度条文本
 */
createProgress:function (content){
  Window.destroyProgress();
  var width = 300;
  var height = 40;
  var bodyClientWidth = window.document.body.clientWidth;
  var bodyClientHeight = window.document.body.clientHeight;
  var bodyScrollTop = window.document.body.scrollTop;
  var bodyScrollLeft = window.document.body.scrollLeft;
  var tmpWidth=bodyClientWidth-width;
  var tmpHeight=bodyClientHeight-height;
  var left=(tmpWidth>0)? bodyScrollLeft+tmpWidth/2: bodyScrollLeft;
  var top=(tmpHeight>0)? bodyScrollTop+tmpHeight/2: bodyScrollTop;
  var objIFrame = window.document.createElement("<IFRAME name='progressBar' src='about:blank'></IFRAME>");
  objIFrame.style.position="absolute";
  objIFrame.width = width;
  objIFrame.height = height;
  objIFrame.style.left = left;
  objIFrame.style.top = top;
  objIFrame.scrolling = "no";
  objIFrame.frameBorder="0";
  window.document.body.appendChild(objIFrame);
  var iframeDoc = window.frames["progressBar"].document.open("text/html", "replace");
  with(iframeDoc){
    writeln("<html>");
    writeln("<head>");
    writeln("<script type=\"text/javascript\">");
    writeln("  var oInterval ;");
    writeln("  function doStart(){");
    writeln("    oInterval=window.setInterval(doPointer, 200);");
    writeln("  }");
    writeln("  function doPointer(){");
    writeln("    var objPointer = document.getElementById('pointer');");
    writeln("    if(objPointer!=null){")
    writeln("      var text = objPointer.innerText;");
    writeln("      if (text.length<6) {");
    writeln("        text+='.';");
    writeln("      }");
    writeln("      else{");
    writeln("        text='';");
    writeln("      }");
    writeln("      objPointer.innerText = text;");
    writeln("    }");
    writeln("  }");
    writeln("</script>");
    writeln("<script for=window event=onload>");
    writeln("    doStart();");
    writeln("</script>");
    writeln("</head>");
    writeln("<body style='margin: 0px;'>");
    writeln("<table width='100%' height='100%' border='1' style='border:solid 1px #666666; border-collapse:collapse;font-size: 9pt;'>");
    writeln("<tr>");
    writeln("<td align='center' valign='middle'  bgcolor='blanchedalmond'>");
    writeln("<span>");
    writeln(content);
    writeln("</span>");
    writeln("<span id='pointer' style='width:30;text-align:left;font-size:14pt;'></span>");
    writeln("</td>");
    writeln("</tr>");
    writeln("</table>");
    writeln("</body>");
    writeln("</html>");
  }

  iframeDoc.close();
},

/**
 * 销毁创建的进度条
 */
destroyProgress:function (){
  var objProgresses = window.document.getElementsByName("progressBar");
  if(objProgresses!=null&&objProgresses.length>0){
    for(var i=objProgresses.length; i>0; i--){
        var oInterval = window.frames["progressBar"].oInterval;
        window.frames["progressBar"].clearInterval(oInterval);
        window.document.body.removeChild(objProgresses[i-1]);
    }
  }
},

/**
 * 创建过渡页（新开窗口）
 * oWin:新开的窗口
 * content:过渡信息
 */
writeTransition:function (oWin, content){
	var doc = oWin.document.open("text/html", "replace");
  with(doc){
    writeln("<html>");
    writeln("<head>");
    writeln("<link href='css/common/common.css' rel='stylesheet' type='text/css'/>");
    writeln("<script type=\"text/javascript\">");
    writeln("  var oInterval ;");
    writeln("  function doStart(){");
    writeln("    oInterval=window.setInterval(doPointer, 200);");
    writeln("  }");
    writeln("  function doStop(){");
    writeln("    try {");
    writeln("      window.clearInterval(oInterval);");
    writeln("    }");
    writeln("    catch(e) {");
    writeln("    }");
    writeln("  }");
    writeln("  function doPointer(){");
    writeln("    var objPointer = document.getElementById('pointer');");
    writeln("    if(objPointer!=null){")
    writeln("      var text = objPointer.innerText;");
    writeln("      if (text.length<6) {");
    writeln("        text+='.';");
    writeln("      }");
    writeln("      else{");
    writeln("        text='';");
    writeln("      }");
    writeln("      objPointer.innerText = text;");
    writeln("    }");
    writeln("  }");
    writeln("</script>");
    writeln("<script for=window event=onload>");
    writeln("    doStart();");
    writeln("</script>");
    writeln("<script for=window event=onunload>");
    writeln("    doStop();");
    writeln("</script>");
    writeln("</head>");
    writeln("<body style='margin: 0px;'>");
    writeln("<table width='100%' height='100%'>");
    writeln("<tr>");
    writeln("<td align='center' valign='middle'>");    
    writeln("<table width='300' height='40' border='1' style='border:solid 1px #666666; border-collapse:collapse;font-size: 9pt;'>");
    writeln("<tr>");
    writeln("<td align='center' valign='middle'  bgcolor='blanchedalmond'>");
    writeln("<span>");
    writeln(content);
    writeln("</span>");
    writeln("<span id='pointer' style='width:30;text-align:left;font-size:14pt;'></span>");
    writeln("</td>");
    writeln("</tr>");
    writeln("</table>");
    writeln("</td>");
    writeln("</tr>");
    writeln("</table>");
    writeln("</body>");
    writeln("</html>");
  }
  doc.close();
	
},


/**
 * 打开窗口，并显示指定对象的innerHTML
 * elementID 对象id
 */
showSourceCode:function (elementID){

  var win = Window.openNoBarWindow("about:blank",640,480,false);
  var doc = win.document.open("text/html", "replace");
  with(doc){
    writeln("<html>");
    writeln("<head>");
    writeln("<\/head>");
    writeln("<body style='margin: 0px;'>");
    writeln("<textarea id='sourceTextArea' style='width:100%;height:100%;border:none;'></textarea>");
    writeln("<\/body>");
    writeln("<\/html>");
  }
  doc.close();
  if(elementID==null){
    Document.getObject('sourceTextArea',win).value = document.body.innerHTML;
  }
  else{
    Document.getObject('sourceTextArea',win).value = Document.getObject(elementID).innerHTML;
  }
},

/**
 * 打开窗口，并显示指定tagName对象的innerHTML
 * tagName 指定类型的对象集合
 */
showTagNameCode:function (tagName){
  var win = Window.openNoBarWindow("about:blank",640,480,false);
  var doc = win.document.open("text/html", "replace");
  with(doc){
    writeln("<html>");
    writeln("<head>");
    writeln("<\/head>");
    writeln("<body style='margin: 0px;'>");
    writeln("<textarea id='sourceTextArea' style='width:100%;height:100%;border:none;'></textarea>");
    writeln("<\/body>");
    writeln("<\/html>");
  }
  doc.close();
  var elements = document.getElementsByTagName(tagName);
  var text='';
  for(var i=0;i<elements.length;i++){
    text+=elements[i].innerHTML.concat("\r\n");
  }
  Document.getObject('sourceTextArea',win).value = text;
},

showFrameCode:function (frameName){
  var frame = window.frames[frameName];
  alert(frame.document.getElementsByTagName("HTML")[0].outerHTML);
}
}