var Showbo={author:'ShowBo',homepage:'about:blank'};
//是否为ie浏览器
Showbo.IsIE=!!document.all;
//ie浏览器版本
Showbo.IEVersion=(function(){if(!Showbo.IsIE)return -1;try{return parseFloat(/msie ([\d\.]+)/i.exec(navigator.userAgent)[1]);}catch(e){return -1;}})();
//按id获取对象
Showbo.$=function(Id,isFrame){
	var o;
	if("string"==typeof(Id))
	 {
	  if(document.getElementById(Id)!=null)
	   o= document.getElementById(Id);
	  else
	   o=null;
	 }
	 else if("object"==typeof(Id))
	  o= Id;
	 else return null;
	 return isFrame?(Showbo.IsIE?frames[Id]:o.contentWindow):o;
	}
	
//按标签名称获取对象
//页面的高和宽******************************
Showbo.isStrict=document.compatMode == "CSS1Compat";
Showbo.BodyScale={x:0,y:0,tx:0,ty:0};//（x，y）：当前的浏览器容器大小  （tx，ty）：总的页面滚动宽度和高度
Showbo.getClientHeight=function(){/*if(Showbo.IsIE)*/return Showbo.isStrict ? document.documentElement.clientHeight :document.body.clientHeight;/*else return self.innerHeight;*/}
Showbo.getScrollHeight=function(){var h=!Showbo.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(h,this.getClientHeight());}
Showbo.getHeight=function(full){return full?this.getScrollHeight():this.getClientHeight();}

Showbo.getClientWidth=function(){/*if(Showbo.IsIE)*/return Showbo.isStrict?document.documentElement.clientWidth:document.body.clientWidth;/*else return self.innerWidth;*/}
Showbo.getScrollWidth=function(){var w=!Showbo.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(w,this.getClientWidth());}
Showbo.getWidth=function(full){return full?this.getScrollWidth():this.getClientWidth();}

Showbo.initBodyScale=function(){//初始化窗体
	Showbo.BodyScale.x=Showbo.getWidth(false);
	Showbo.BodyScale.y=Showbo.getHeight(false);
	Showbo.BodyScale.tx=Showbo.getWidth(true);
	Showbo.BodyScale.ty=Showbo.getHeight(true);
  }
//页面的高和宽******************************

Showbo.Msg={
    INFO:'info',
    ERROR:'error',
    WARNING:'warning',
    IsInit:false,
    timer:null,
    dvTitle:null,
    dvCT:null,
    dvBottom:null,
    dvBtns:null,
    lightBox:null,
    dvMsgBox:null,
    defaultWidth:350,
    moveProcessbar:function(){
      var o_left=Showbo.$('dvProcessbar_left'),o_right=Showbo.$('dvProcessbar_right');
	  var w_left=o_left.style.width,w_right=o_right.style.width;

	  if(w_left=='')
	    w_left=0;
      else
	  {
        w_left=parseInt(w_left)+1;
        if(w_left>100)
		{ 
		 w_left=0;
		}
      }
      o_left.style.width=w_left+'%';
	  
	  },

	
    InitMsg:function(width){
      //ie下不按照添加事件的循序来执行，所以要注意在调用alert等方法时要检测是否已经初始化IsInit=true     
      var ifStr='<iframe src="javascript:false" style="position:absolute; visibility:inherit; top:0px;left:0px;width:100%; height:100%; z-index:-1;'
          +'filter=\'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)\';"></iframe>',
      html='<div class="top"><div class="right"><div class="title" id="dvMsgTitle"></div></div></div>'+
        '<div class="body"><div class="right"><div class="ct" id="dvMsgCT"></div></div></div>'+
        '<div class="bottom" id="dvMsgBottom"><div class="right"><div class="btn" id="dvMsgBtns"></div></div></div>';
		
      this.dvMsgBox=document.createElement("div");
      this.dvMsgBox.id="dvMsgBox";
      this.dvMsgBox.innerHTML+=html;      
      //document.body.appendChild(this.dvMsgBox);
	  //使用下面的这个方法，可以解决“Internet Explorer 无法打开 Internet 站点......”
	  document.body.insertBefore(this.dvMsgBox,document.body.childNodes[0]);
	  
      this.lightBox=document.createElement("div");
      this.lightBox.id="ShowBolightBox";
      //document.body.appendChild(this.lightBox);
	  document.body.insertBefore(this.lightBox,document.body.childNodes[0]);
	  
      if(Showbo.IsIE&&Showbo.IEVersion<7){//加iframe层修正ie6下无法遮盖住select的问题
        this.lightBox.innerHTML+=ifStr;
        this.dvMsgBox.innerHTML+=ifStr;
      }
      this.dvBottom=Showbo.$('dvMsgBottom');
      this.dvBtns=Showbo.$('dvMsgBtns');
      this.dvCT=Showbo.$('dvMsgCT');
      this.dvTitle=Showbo.$('dvMsgTitle');
      this.IsInit=true;
    },
    checkDOMLast:function(){//此方法非常关键，要不无法显示弹出窗口。两个对象dvMsgBox和lightBox必须处在body的最后两个节点内
      if(document.body.lastChild!=this.lightBox){
        //document.body.appendChild(this.dvMsgBox);
	    document.body.insertBefore(this.dvMsgBox,document.body.childNodes[0]);
        //document.body.appendChild(this.lightBox);
	    document.body.insertBefore(this.lightBox,document.body.childNodes[0]);
      }
    },
    createBtn:function(p,v,fn){
        var btn=document.createElement("input");
        btn.type="button";
        btn.className='btn';
        btn.value=v;
        btn.onmouseover=function(){this.className='btnfocus';}
        btn.onmouseout=function(){this.className='btn';}
        btn.onclick=function(){
          Showbo.Msg.hide();
          if(fn)fn(p);
        }
        return btn;
    },
	//扩充的部分
	iconfn:function(style){
	  if(!style)style="";
	  if(style=="ERROR")style=Showbo.Msg.ERROR;
	  if(style=="INFO")style=Showbo.Msg.INFO;
	  if(style=="WARNING")style=Showbo.Msg.WARNING;
	  return style;
	},
	//扩充的部分结束
	
    alert:function(msgTitle,msgText,iconStyle,width,fn){
	  var msg="";
	  if(msgTitle!=""&&msgTitle!=null) msg='<font color=red><b>'+msgTitle+'</b></font><br>';
	  if(msgText!=""&&msgText!=null) msg+=msgText;
      this.show({title:'提示',buttons:{yes:'确 认'},msg:msg,icon:this.iconfn(iconStyle),width:width,fn:fn});
    },
	
    confirm:function(msg,iconStyle,width,fn){
      //fn为回调函数，参数和show方法的一致
      this.show({title:'提示',buttons:{yes:'确 认',no:'取 消'},icon:this.iconfn(iconStyle),msg:msg,width:width,fn:fn});
    },
	
    prompt:function(labelWord_1,defaultValue_1,txtId_1,labelWord_2,defaultValue_2,txtId_2,iconStyle,width,fn){
	  var ShowTxtId_1=false,ShowTxtId_2=false,msg="";
	  msg=labelWord_1;
      //第一个输入框
	  if(!labelWord_1)labelWord_1='请输入：';
      if(!defaultValue_1)defaultValue_1="";
      if(!txtId_1)
	   {txtId_1="msg_txtInput_1";}
	  else
	   {ShowTxtId_1=true;}
	  if(ShowTxtId_1==true)msg+='<input type="text" id="'+txtId_1+'" style="width:220px;height:20px;font-size:15px;" value="'+defaultValue_1+'"/>';
	  //第二个输入框，用于输入密码
      if(!labelWord_2)labelWord_2='请输入：';
      if(!defaultValue_2)defaultValue_2="";
      if(!txtId_2) 
	   {txtId_2="msg_txtInput_2";}
	  else
	   {ShowTxtId_2=true;}//如果输入了第二个输入框的ID，则显示
	  if(ShowTxtId_2==true) msg+='<br>'+labelWord_2+'<input type="password" id="'+txtId_2+'" style="width:220px;height:20px;font-size:15px;" value="'+defaultValue_2+'"/>';
	  
      this.show({title:'提示',msg:msg,icon:this.iconfn(iconStyle),buttons:{yes:'确 认',no:'取 消'},width:width,fn:fn});
    },
	
    wait:function(msg,title){
      if(!msg)msg='正在处理...';
	  if(!title)title='请稍候';
      this.show({title:title,msg:msg,buttons:{yes:'确 认',no:'取 消'},wait:true});
    },
	
    show:function(cfg){
      //cfg:{title:'',msg:'',wait:true,icon:'默认为信息',buttons:{yes:'',no:''},fn:function(btn){回调函数,btn为点击的按钮，可以为yes，no},width:显示层的宽}
      //如果是等待则wait后面的配置不需要了。
      if(!cfg)throw("没有指定配置文件！");
      //添加窗体大小改变监听
      if(Showbo.IsIE)window.attachEvent("onresize",this.onResize);
      else  window.addEventListener("resize",this.onResize,false);
      
      if(!this.IsInit)this.InitMsg();//初始化dom对象
      else this.checkDOMLast();//检查是否在最后
      
      //检查是否要指定宽，默认为300
      if(cfg.width)this.defaultWidth=cfg.width;
      this.dvMsgBox.style.width=this.defaultWidth+'px';
      //可以直接使用show方法停止为进度条的窗口
      if(this.timer){clearInterval(this.timer);this.timer=null;}      
      this.dvTitle.innerHTML='';
	  
      if(cfg.title)this.dvTitle.innerHTML='<div class="titleICON">&nbsp;&nbsp;'+cfg.title+'</div>';
	  
      this.dvCT.innerHTML='';
      if(cfg.wait){
        if(cfg.msg)this.dvCT.innerHTML=cfg.msg;
		//dvProcessbar_right未起作用！！！！！！！！！！！！！！！！！！！！！
        this.dvCT.innerHTML+='<div class="pro"><div class="bg_left" id="dvProcessbar_left"></div><div class="bg_right" id="dvProcessbar_right"></div></div>';
        this.dvBtns.innerHTML='';
        this.dvBottom.style.height='10px';
        this.timer=setInterval(function(){Showbo.Msg.moveProcessbar();},30);
      }
      else{
        //if(!cfg.icon)cfg.icon=Showbo.Msg.INFO;
        if(!cfg.buttons||(!cfg.buttons.yes&&!cfg.buttons.no)){
          cfg.buttons={yes:'确 定'};
        }
        if(cfg.icon)this.dvCT.innerHTML='<div class="icon '+cfg.icon+'"></div>';
        if(cfg.msg)this.dvCT.innerHTML+=cfg.msg+'<div class="clear"></div>';
        this.dvBottom.style.height='45px';
        this.dvBtns.innerHTML='<div class="height"></div>';
        if(cfg.buttons.yes){
          this.dvBtns.appendChild(this.createBtn('yes',cfg.buttons.yes,cfg.fn));
          if(cfg.buttons.no)this.dvBtns.appendChild(document.createTextNode('　'));
        }
        if(cfg.buttons.no)this.dvBtns.appendChild(this.createBtn('no',cfg.buttons.no,cfg.fn));
      }
      Showbo.initBodyScale();
      this.dvMsgBox.style.display='block';
      this.lightBox.style.display='block';
      this.onResize(false);
      if(cfg.wait!==true)this.dvBottom.getElementsByTagName('input')[0].focus();
    },
	
	
    hide:function(isOpenParent){
		//isOpenParent：判断是隐藏父窗口的遮盖层还是当前窗口的
		//1为父窗口，0为当前窗口

        //父窗口
		if(isOpenParent==1||isOpenParent=="1")
	    {
		 if(window.opener.dvMsgBox!=null) window.opener.dvMsgBox.style.display='none';
         if(window.opener.document.getElementById("ShowBolightBox")!=null) window.opener.document.getElementById("ShowBolightBox").style.display='none';
         if(window.opener.document.getElementById("ShowBolightBox")!=null) window.opener.document.getElementById("ShowBolightBox").innerHTML="";
         if(window.opener.timer!=null) {clearInterval(window.opener.timer);window.opener.timer=null;}
	    }
		
        //本窗口
		if(this.dvMsgBox!=null) this.dvMsgBox.style.display='none';
        if(this.lightBox!=null) this.lightBox.style.display='none';
        if(this.timer!=null){clearInterval(this.timer);this.timer=null;}
        if(Showbo.IsIE!=null)window.detachEvent('onresize',this.onResize);
        else window.removeEventListener('resize',this.onResize,false);
    },
    onResize:function(isResize){
       if(isResize)Showbo.initBodyScale();
       Showbo.Msg.lightBox.style.width=Showbo.BodyScale.tx+'px';//阴影的宽度
       Showbo.Msg.lightBox.style.height=Showbo.BodyScale.ty+'px';//阴影的高度
       //Showbo.Msg.dvMsgBox.style.top=document.documentElement.scrollTop+Math.floor((Showbo.BodyScale.y-Showbo.Msg.dvMsgBox.offsetHeight)/2)+'px';
	   //原先是上面那一行，存在问题是，如果滚动条长的话，对话框会被遮住
       Showbo.Msg.dvMsgBox.style.top=document.body.scrollTop+Math.floor((Showbo.BodyScale.y-Showbo.Msg.dvMsgBox.offsetHeight)/2)+'px';
       Showbo.Msg.dvMsgBox.style.left=Math.floor((Showbo.BodyScale.x-Showbo.Msg.dvMsgBox.offsetWidth)/2)+'px';
    }
}
//iconStyle有三个值：ERROR（错误）、INFO（信息）、WARNING（警告）
//fn表示函数

//Showbo.Msg.alert(msgTitle,msgText,iconStyle,width,fn);//返回yes
//Showbo.Msg.confirm(msg,iconStyle,width,fn); 
//labelWord输入框前的文字，defaultValue输入框的默认值，txtId输入框的ID，如果txtId未输入，默认为“msg_txtInput”
//Showbo.Msg.prompt(labelWord_1,defaultValue_1,txtId_1,labelWord_2,defaultValue_2,txtId_2,iconStyle,width,fn);
//Showbo.Msg.wait(msg,title);
//Showbo.Msg.hide()
function readData()
 {
	 Showbo.Msg.wait("正在读取数据，请稍候...","系统提示");
 }