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("正在讀取數據，請稍候...","係統提示");
 }