/*
 * WebMail
 * Copyright(c) 2008, hifotech.
 * 
 * This code is licensed under BSD license. Use it as you wish, 
 * but keep this copyright intact.
 *--------------------------------------------------------------------------*/

var WebMail = {};

/*---------------------------------------------------------------------------
 *function：initialize WebMail
 *author：xhw
 *date：2008-01-23
 *update:2008-03-15
 *--------------------------------------------------------------------------*/
WebMail.init = function(){
    //默认属性
    this.Debug              = true; //是否开启调试模式
    this.Version            = "1.0.0.0";
    this.DefaultTheme       = "blue";
    //从浏览器中得到默认语言与样式
    this.DefaultLanguage    = (window.navigator.userLanguage == undefined) ? 
                               window.navigator.language : 
                               window.navigator.userLanguage;
    
    //从cookies读取用户所选属性,
    this.Language           = $cookies('get','_Lang') == "" ? 
                              this.DefaultLanguage.toLowerCase() : 
                              $cookies('get','_Lang').toLowerCase();
                          
    this.Theme              = $cookies('get','_Theme') == "" ? 
                              this.DefaultTheme.toLowerCase() : 
                              $cookies('get','_Theme').toLowerCase();
    this.WinWidth         =  WebMail.Utility.getWindowSize()[0];//获得整个Windows窗体的宽度
    this.WinHeight        =  WebMail.Utility.getWindowSize()[1];//获得整个Windows窗体的高度
    
		$cookies("set","SyncTime","",1); //将pop时间设置为空
};


//公共方法实现

/*---------------------------------------------------------------------------
 *function：Menu click
 *author：xhw
 *说明:
 *  eval函数接收一个参数s，如果s不是字符串，则直接返回s。
 *  否则执行s语句。如果s语句执行结果是一个值，则返回此值，否则返回undefined。
 *  WebMail.sendbox = function(id, tabName, isReload, mode, extendPars)函数格式
 *date：2008-03-08
 *update:2008-04-10
 *--------------------------------------------------------------------------*/
WebMail.Mgoto = function(obj){
	var eventId = obj.tagName == "DD" ? obj.id : obj.parentNode.id;
	var tabName = obj.tagName == "DD" ? obj.childNodes[1].innerText : obj.innerText;
	var funName = "WebMail." + eventId; //WebMail.Mailbox 得到调用的函数名
	var funagrs = "\"" + eventId + "\",\"" + tabName + "\",true"; //得到参数 输出格式:"Mailbox","收件箱" 相对应的参数

	try{
		eval("(" + funName + ")("+ funagrs +")"); //组合成函数并执行
		
    } catch(e) {
        if(this.Debug){
            var err = (window.ActiveXObject ? e.description : e);
            alert("[Source:WebMail.Mgoto(),Args:" + funagrs + "] \n" + err);
        };
	};
};

/*---------------------------------------------------------------------------
 *function：Tab click
 *author：xhw
 *date：2008-03-08
 *update:2008-04-10
 *--------------------------------------------------------------------------*/
WebMail.ActiveTab = function(obj,mailId,mailTitle,extendPars){
		
		if(mailId == undefined) mailId = "";
		if(mailTitle == undefined) mailTitle = "";
		if(extendPars == undefined) extendPars = "";
		
    //处理激话该Tab事件 标签ID以Tab开头,所以要截取
    var eventId = obj.parentNode.id;
    eventId = eventId.substr(3,eventId.length-3);    
    temp_eventId = eventId.substr(0,8);
    temp_mailId = eventId.substr(9,eventId.length);
    
    if(temp_eventId == undefined) temp_eventId = "";
    if(temp_mailId == undefined) temp_mailId = "";
    if(temp_eventId == "readMail") mailId = temp_mailId
		
		//alert("eventId="+eventId+"  temp_eventId="+temp_eventId);
    if(mailId != ""){
    	//alert("WebMail-readMail")
	    var funName = "WebMail.readMail";
	    var funagrs = "\"" + mailId + "\",\""+ mailTitle +"\",\""+ extendPars +"\"";	  	
	  }else{
	    var funName = "WebMail." + eventId;
	    var funagrs = "\"" + eventId + "\",\"\"";	//其它
	  }
    
    try{
        eval("(" + funName + ")("+ funagrs +")");
    } catch(e) {
        if(this.Debug){
            var err = (window.navigator.userAgent.indexOf("MSIE")>=1) ? e.description : e;
            alert("(" + funName + ")("+ funagrs +")");
            alert("[Source:WebMail.ActiveTab(),Args:" + funagrs + "] \n" + err);
        };
    };
};


/*---------------------------------------------------------------------------
 *function：get a active tab id
 *author：xhw
 *date：2008-04-22
 *update:2008-04-22
 *--------------------------------------------------------------------------*/
WebMail.getActiveTabId = function(){
	var Tabs = $("tabUL").getElementsByTagName("a");
	for(var i = 0; i<Tabs.length; i++){
		if(Tabs[i].className=="tabOn"){
			var TabId = Tabs[i].parentNode.id
			return TabId.substr(3,TabId.length-3);
		}
	}
};




/*---------------------------------------------------------------------------
 *function：create tab
 *author：xhw
 *date：2008-01-23
 *update:2008-03-13
 *WebMail.CreateTab(TabReadMail,mailTitle,cutMailTitle,mailId,extendPars);
 *--------------------------------------------------------------------------*/
WebMail.CreateTab = function(id,strName,cutMailTitle,mailId,extendPars){
	  if(mailId == undefined) mailId = ""; //用于读邮件
	  if(cutMailTitle == undefined) cutMailTitle = "";
	  if(extendPars == undefined) extendPars = "";
	  
    var imgFolder = WebMail.UI.Theme[WebMail.Theme].Images;
    if(mailId == ""){
    	var strHtml = "<a href=\"javascript:void(0);\" title=\"" + strName + "\" class=\"tabOn\" onclick=\"WebMail.ActiveTab(this)\" onfocus=\"blur()\" ondblClick=\"WebMail.CloseTab(this,event)\"><span>" + strName + "<DIV class=\"closeTab1\" onclick=\"WebMail.CloseTab(this,event)\" onmouseover=\"this.className='closeTab2'\" onmouseout=\"this.className='closeTab1'\">&nbsp;&nbsp;&nbsp;<\/DIV><\/span><\/a>";
    
    }else{
    	//读取邮件
    	var strHtml = "<a href=\"javascript:void(0);\" title=\"" + strName + "\" class=\"tabOn\" onclick=\"WebMail.ActiveTab(this,"+ mailId +",\'"+ strName +"\',\'"+ extendPars +"\')\" onfocus=\"blur()\" ondblClick=\"WebMail.CloseTab(this,event)\"><span>" + cutMailTitle + "<DIV class=\"closeTab1\" onclick=\"WebMail.CloseTab(this,event)\" onmouseover=\"this.className='closeTab2'\" onmouseout=\"this.className='closeTab1'\">&nbsp;&nbsp;&nbsp;<\/DIV><\/span><\/a>";    	
    }

    //根据ID判断tab是否存在，存在则激活Tab，不存在则创建新的Tab
    var tabId = "tab" + id;
    var objtab = $(tabId);
    if(objtab){
        if(tabId!="tabhome" && strName!="") objtab.innerHTML = strHtml; //home不重写InnerHTML
        this.setTabLighten(objtab.childNodes[0]); //点亮此Tab
        //滚动条的变化处理
    }else{ //创建新的Tab
       var tab = $id("tabUL");
       var tabA = tab.getElementsByTagName("a");
       var newtab = document.createElement("li");
	   newtab.id = tabId;
	   newtab.innerHTML = strHtml;
	   for(var i = 0; i< tabA.length; i++){
            tabA[i].className = "";
       }
       tab.appendChild(newtab);
       //自动调整滚动条的位置
       WebMail.UI.Events. AutoTabScroll();
    }
};

/*---------------------------------------------------------------------------
 *function： 阅读邮件时,title显示完整的标题名 此函数以后可能用得着
 * 用的时候要改img部分改成DIV
 * <DIV class=\"closeTab1\" onclick=\"WebMail.CloseTab(this,event)\" onmouseover=\"this.className='closeTab2'\" onmouseout=\"this.className='closeTab1'\">&nbsp;&nbsp;&nbsp;<\/DIV>
 *参数说明:
 *    extendPars URL所传的参数串
 *    原strHtml
    var strHtml = "<a href=\"javascript:void(0);\" 
    title=\"" + strNameTitle + "\" class=\"tabOn\" 
    onclick=\"WebMail.ActiveTab(this)\" 
    onfocus=\"blur()\"
    ondblClick=\"WebMail.CloseTab(this,event)\">
    <span>" + strName + "&nbsp;&nbsp;
    <img src=\"" + imgFolder + "close01.gif\" width=\"14\" height=\"14\" 
    align=\"absmiddle\" 
    onclick=\"WebMail.CloseTab(this,event)\"
    onmouseover=\"this.src='" + imgFolder + "close02.gif'\"
    onmouseout=\"this.src='" + imgFolder + "close01.gif'\"><\/span><\/a>";
    原img 已经改为DIV
 
 *--------------------------------------------------------------------------*/
WebMail.CreateReadMailTab = function(id,strNameTitle,strName,mailId,
														issharelist,sort_type,sort_mode,
														pageNo,mail_status,folderId,foldername){
    var imgFolder = WebMail.UI.Theme[WebMail.Theme].Images;
        
    var strHtml = "<a href=\"javascript:void(0);\" title=\"" + strNameTitle + "\" class=\"tabOn\" ";
    strHtml += "onclick=\"WebMail.ActiveReadMailTab(this, ";
    strHtml += ""+ mailId +", \'"+ strNameTitle +"\', \'"+ issharelist +"\', \'"+ sort_type +"\',";
    strHtml += "\'"+ sort_mode +"\', "+ pageNo +", "+ mail_status +",";
    strHtml += " "+ folderId +", \'"+ foldername +"\'";
    strHtml += ");\" "; 

    strHtml += "onfocus=\"blur()\"";
    
    strHtml += "ondblClick=\"WebMail.CloseTab(this, event, ";
    strHtml += ""+ mailId +", \'"+ strNameTitle +"\', \'"+ issharelist +"\', \'"+ sort_type +"\',";
    strHtml += "\'"+ sort_mode +"\', "+ pageNo +", "+ mail_status +",";
    strHtml += " "+ folderId +", \'"+ foldername +"\'";
    strHtml += ");\" ";     

    strHtml += "<span>" + strName + "&nbsp;&nbsp;";
    strHtml += "<img src=\"" + imgFolder + "close01.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" ";

    strHtml += "onclick=\"WebMail.CloseTab(this, event, ";
    strHtml += ""+ mailId +", \'"+ strNameTitle +"\', \'"+ issharelist +"\', \'"+ sort_type +"\',";
    strHtml += "\'"+ sort_mode +"\', "+ pageNo +", "+ mail_status +",";
    strHtml += " "+ folderId +", \'"+ foldername +"\'";
    strHtml += ");\" ";     

    strHtml += "onmouseover=\"this.src='" + imgFolder + "close02.gif'\" ";
    strHtml += "onmouseout=\"this.src='" + imgFolder + "close01.gif'\"><\/span><\/a>";
        
    //alert(strHtml);
    //根据ID判断tab是否存在，存在则激活Tab，不存在则创建新的Tab
    var tabId = "tab" + id;
    var objtab = $(tabId);
    if(objtab){
	   if(tabId!="tabhome" && strName!="") objtab.innerHTML = strHtml; //home不重写InnerHTML
       this.setTabLighten(objtab.childNodes[0]); //点亮此Tab
    }else{ //创建新的Tab
       var tab = $id("tabUL");
       var tabA = tab.getElementsByTagName("a");
       var newtab = document.createElement("li");
	   newtab.id = tabId;
	   newtab.innerHTML = strHtml;
	   for(var i = 0; i< tabA.length; i++){
            tabA[i].className = "";
       }
       tab.appendChild(newtab);
    }
};

/*---------------------------------------------------------------------------
 *function：create a blackBoard
 *author：xhw
 *date：2008-04-21
 *update:2008-04-22
 *--------------------------------------------------------------------------*/
WebMail.CreateblackBoard = function(id, pars, isReload, mode, extendPars){
	var bbId = "bb_" + id;
	WebMail.UI.Design.LoadMsgHtml(0);
	WebMail.UI.Design.LoadMsgHtml(1); //显示MsgLoad加载状态条
	WebMail.ShowblackBoard(bbId); //隐藏所有黑板,显示指定黑板
	if($(bbId)){ //如果存在
		if(!isReload){
			 //非重新加载时隐藏MsgLoad加载状态条,使用200毫秒延时,增强效果
        	window.setTimeout(WebMail.UI.Design.LoadMsgHtml,200);
        	return; //不刷新数据，直接退出函数
		}
	}else{ //如果不存在此ID，则创建
		var newBB = document.createElement("div");
		newBB.id = bbId;
		$("main_content").appendChild(newBB);
	}

	//不存在创建相应的DIV后或者重新加载数据时调用Ajax获取数据
	WebMail.getDataWithAjax(bbId, pars, mode, extendPars);
};

/*---------------------------------------------------------------------------
 *function : show only one blackBoard
 *author : xhw
 *date : 2008-04-21
 *update : 2008-04-22
 *--------------------------------------------------------------------------*/
WebMail.ShowblackBoard = function(bbId){
	var container = $("main_content");
    var bbList = container.getElementsByTagName("div");
    for(var i=0;i<bbList.length;i++){
        if(bbList[i].id == bbId){
            bbList[i].style.display = "block";
        } else if(bbList[i].parentNode == container) {
            bbList[i].style.display = "none";
        }
    }
};

/*---------------------------------------------------------------------------
 * function : get data with Ajax
 * author : xhw
 * arg : updateID Ajax返回数据并且在此ID上更新,pars:基本参数,extendPars:扩展参数
 * date : 2008-04-21
 * update : 2008-04-21
 *--------------------------------------------------------------------------*/
WebMail.getDataWithAjax = function(updateID,pars,mode, extendPars){
 	    var url= "Ajax/Webmail.main.php";
 	    if(mode==undefined) mode = "get"; //默认为get获取
        if(pars.length==0){
        	alert("[WebMail.getDataWithAjax]参数丢失？！");
        	return;
        }
        if(extendPars!=undefined){
        	pars += extendPars;
        }
        var myAjax = new Ajax.Updater(
            updateID,
            url,
            {method: mode, parameters: pars, onComplete : WebMail.UI.Design.LoadMsgHtml, evalScripts: true}
        );
};

/*---------------------------------------------------------------------------
 *function：set only one tab active
 *author：xhw
 *date：2008-03-08
 *update:2008-04-10
 *--------------------------------------------------------------------------*/
WebMail.setTabLighten = function(obj){
    var tabsA = $id("header_tab").getElementsByTagName("a");
    for(var i = 0;i<tabsA.length;i++){
        tabsA[i].className = "";
    }
    if(obj){
        obj.className = "tabOn";
    }
};

/*---------------------------------------------------------------------------
 *function：close one tab then remove tab and blackboard element
 *author：xhw
 *date：2008-03-08
 *update:2008-04-11
 *关闭选项卡
 *--------------------------------------------------------------------------*/
WebMail.CloseTab = function(obj,evt,isDo){
		
		/*
		if(obj.parentNode.parentNode.parentNode.id == "tabcompose"){
			var infoTitle = WebMail.UI.langs[WebMail.Language].OK;//"确定"; //多语言
			//var infoContent = WebMail.UI.langs[WebMail.Language].isDel; //"确定删除吗?";
			var infoContent = "确定放弃对此信件所作的操作？";
			
			if(isDo==undefined){
				WebMail.Utility.MsgBox('confirm',
					infoTitle,
					infoContent,
					'',
					'',
					'WebMail.CloseTab(\''+ obj +'\',\''+ evt +  '\',\'true\')'
				);
				return;
			}		
		}
		return false;
		*/
		
		if(obj.parentNode.parentNode.parentNode.id == "tabcompose" || obj.parentNode.id == "tabcompose"){
		//////////////////////////////////////////////////////////////////////
		//如果关闭的是写邮件,先进行提示,如果点了确定就关闭,否则不关闭
		//////////////////////////////////////////////////////////////////////
			var infoContent = WebMail.UI.langs[WebMail.Language].isWriteMailTabClose; //确定放弃对此信件所作的操作？的多语言	
			if(confirm(infoContent)){				
		    var TabLI=null;
		    var TabAClassName = "";
		    if(obj.tagName == "DIV"){ //按图片关闭Tab
		        var TabLI = obj.parentNode.parentNode.parentNode; //得到当前TAB的对像
		        //var TabLI_id = obj.parentNode.parentNode.parentNode.id; 如:<li id="tabmailbox">
		        var TabAClassName = obj.parentNode.parentNode.className; //用来判断是否为激活的tab
		    }else if(obj.tagName == "A"){ //双击Tab关闭Tab
		        var TabLI = obj.parentNode;
		        //var TabLI_id = obj.parentNode.id;
		        var TabAClassName = obj.className;
		    }
		    
		    //判断当前标签位置
		    if(TabAClassName!=""&&TabAClassName!=undefined){//关闭激活的Tab时
		        var ATab = TabLI.parentNode.getElementsByTagName("a");
		        if(ATab.length < 3){//如果Tab数少于3个，则直接Active tabhome
		            activeIndex = 0;
		        }else{
		            for(var i = 0; i< ATab.length; i++){
		                if(TabLI.id==ATab[i].parentNode.id){
		                    activeIndex = i;
		                    break;
		                }
		            }
		            //后期修正(如果关闭的标签是最后一个，则激活前面一个，
		            //否则激活后面一个标签)
		            //先激活其它Tab,再将要关闭的Tab从DOM中移除
		            if(activeIndex == ATab.length-1){
		                activeIndex --;
		            }else{
		                activeIndex ++;
		            }
		        }
		        //alert(ATab[activeIndex].parentNode.id);
		        this.ActiveTab(ATab[activeIndex]); //将要删除前的一个Tab激活,数组下标从0开始
						
		    }
		    if(TabLI){
		    	//在移除Tab前，先将滚动条右移该Tab的宽度
		    	$("header_tab").scrollLeft -= TabLI.getElementsByTagName("A")[0].offsetWidth + 2;
		        //移除相应的Tab节点
		        TabLI.parentNode.removeChild(TabLI);
		        //移除相应的黑板节点
		        var bbId ="bb_" + TabLI.id.substr(3,TabLI.id.length-3);
		        $("main_content").removeChild($(bbId));
		        //$(bbId).style.display = "none";
		    }
		    //禁止冒泡事件,兼容Opera。在删除节点后，事件会传递到父结点，而响应父结点定义的事件
		    var e=(evt)?evt:window.event;
		    if (window.event) {
		        e.cancelBubble=true;
		    } else {
		        e.stopPropagation();
		    }
		    
		    //自动调整滚动条的位置
		    WebMail.UI.Events. AutoTabScroll();	
		    			
			}else{
				return false;
			}
			
		}else{ 
		//////////////////////////////////////////////////////////////////////
		//如果关闭的不是写邮件,就直接关闭
		//////////////////////////////////////////////////////////////////////			
	    var TabLI=null;
	    var TabAClassName = "";
	    if(obj.tagName == "DIV"){ //按图片关闭Tab
	        var TabLI = obj.parentNode.parentNode.parentNode; //得到当前TAB的对像
	        //var TabLI_id = obj.parentNode.parentNode.parentNode.id; 如:<li id="tabmailbox">
	        var TabAClassName = obj.parentNode.parentNode.className; //用来判断是否为激活的tab
	    }else if(obj.tagName == "A"){ //双击Tab关闭Tab
	        var TabLI = obj.parentNode;
	        //var TabLI_id = obj.parentNode.id;
	        var TabAClassName = obj.className;
	    }
	    
	    //判断当前标签位置
	    if(TabAClassName!=""&&TabAClassName!=undefined){//关闭激活的Tab时
	        var ATab = TabLI.parentNode.getElementsByTagName("a");
	        if(ATab.length < 3){//如果Tab数少于3个，则直接Active tabhome
	            activeIndex = 0;
	        }else{
	            for(var i = 0; i< ATab.length; i++){
	                if(TabLI.id==ATab[i].parentNode.id){
	                    activeIndex = i;
	                    break;
	                }
	            }
	            //后期修正(如果关闭的标签是最后一个，则激活前面一个，
	            //否则激活后面一个标签)
	            //先激活其它Tab,再将要关闭的Tab从DOM中移除
	            if(activeIndex == ATab.length-1){
	                activeIndex --;
	            }else{
	                activeIndex ++;
	            }
	        }
	        //alert(ATab[activeIndex].parentNode.id);
	        this.ActiveTab(ATab[activeIndex]); //将要删除前的一个Tab激活,数组下标从0开始
					
	    }
	    if(TabLI){
	    	//在移除Tab前，先将滚动条右移该Tab的宽度
	    	$("header_tab").scrollLeft -= TabLI.getElementsByTagName("A")[0].offsetWidth + 2;
	        //移除相应的Tab节点
	        TabLI.parentNode.removeChild(TabLI);
	        //移除相应的黑板节点
	        var bbId ="bb_" + TabLI.id.substr(3,TabLI.id.length-3);
	        $("main_content").removeChild($(bbId));
	        //$(bbId).style.display = "none";
	    }
	    //禁止冒泡事件,兼容Opera。在删除节点后，事件会传递到父结点，而响应父结点定义的事件
	    var e=(evt)?evt:window.event;
	    if (window.event) {
	        e.cancelBubble=true;
	    } else {
	        e.stopPropagation();
	    }
	    
	    //自动调整滚动条的位置
	    WebMail.UI.Events. AutoTabScroll();			
				
		}
		
};

/*---------------------------------------------------------------------------
 *function：阅读邮件页,点删除邮件时,要关闭当前的TAB项,此tab肯定为激活态,不用判断是否激活
 *author：xuan
 *date：2008-03-08
 *update:2008-09-17
 *因为有翻页功能所有必须,用冒泡法,取TAB
 *--------------------------------------------------------------------------*/

WebMail.CloseTab_ReadMail = function(readTab_mailid){

    var TabLI=null;
    var TabAClassName = "";
    
    var TabLiIDName = "";
    TabLiIDName = "tabreadMail_"+readTab_mailid    
    TabLI = $(TabLiIDName); //得到当前TAB的对像
  	
    var ATab = TabLI.parentNode.getElementsByTagName("a");
   
    if(ATab.length < 3){//如果Tab数少于3个，则直接Active tabhome
        activeIndex = 0;
    }else{
        for(var i = 0; i< ATab.length; i++){
            if(TabLI.id==ATab[i].parentNode.id){
                activeIndex = i;
                break;
            }
        }
        
        //后期修正(如果关闭的标签是最后一个，则激活前面一个，
        //否则激活后面一个标签)
        //先激活其它Tab,再将要关闭的Tab从DOM中移除
        if(activeIndex == ATab.length-1){
            activeIndex --;
        }else{
            activeIndex ++;
        }
     
        //alert(ATab[activeIndex].parentNode.id);
        this.ActiveTab(ATab[activeIndex]); //将要删除前的一个Tab激活,数组下标从0开始
				
    }
   	
    if(TabLI){
        //移除相应的Tab节点
        TabLI.parentNode.removeChild(TabLI);
        
        //移除相应的黑板节点
        var bbId ="bb_" + TabLI.id.substr(3,TabLI.id.length-3);
        //alert(bbId);
        $("main_content").removeChild($(bbId));
    }
      
};


/*---------------------------------------------------------------------------
 *function：关闭写邮件tab
 *author：xuan
 *date：2008-03-08
 *update:2008-09-17
 *--------------------------------------------------------------------------*/
WebMail.CloseTab_WriteMail = function(){
  	
  try{
    var TabLI=null;
    var TabAClassName = "";
    TabLI = $("tabcompose"); //得到当前TAB的对像

    var ATab = TabLI.parentNode.getElementsByTagName("a");  
    if(TabLI){
        //移除相应的Tab节点
        TabLI.parentNode.removeChild(TabLI);
        //移除相应的黑板节点
        var bbId ="bb_" + TabLI.id.substr(3,TabLI.id.length-3);
        $("main_content").removeChild($(bbId));
    }
    
   }catch(e){
   	alert(e);	
   }

};


/*---------------------------------------------------------------------------
 *function：关闭打开的读邮件Tab
 *author：xhw
 *date：2008-03-08
 *update:2008-04-11
WebMail.ActiveReadMailTab = function(obj,mailId,mailTitle,
														issharelist,sort_type,sort_mode,
														pageNo,mail_status,folderId,foldername) 
 *--------------------------------------------------------------------------*/
WebMail.CloseReadMailTab = function(obj,evt,mailId,mailTitle,
														issharelist,sort_type,sort_mode,
														pageNo,mail_status,folderId,foldername){

    var TabLI=null;
    var TabAClassName = "";
    if(obj.tagName == "IMG"){ //按图片关闭Tab
        var TabLI = obj.parentNode.parentNode.parentNode;
        var TabAClassName = obj.parentNode.parentNode.className;
    }else if(obj.tagName == "A"){ //双击Tab关闭Tab
        var TabLI = obj.parentNode;
        var TabAClassName = obj.className;
    }
    
   //alert("TabLI="+TabLI+"TabAClassName="+TabAClassName+"obj="+obj+"this="+this);
    //return;
    //判断当前标签位置
    if(TabAClassName!=""&&TabAClassName!=undefined){//关闭激活的Tab时
        var ATab = TabLI.parentNode.getElementsByTagName("a");
        if(ATab.length < 3){//如果Tab数少于3个，则直接Active tabhome
            activeIndex = 0;
        }else{
            for(var i = 0; i< ATab.length; i++){
                if(TabLI.id==ATab[i].parentNode.id){
                    activeIndex = i;
                    break;
                }
            }
            //后期修正(如果关闭的标签是最后一个，则激活前面一个，
            //否则激活后面一个标签)
            //先激活其它Tab,再将要关闭的Tab从DOM中移除
            if(activeIndex == ATab.length-1){
                activeIndex --;
            }else{
                activeIndex ++;
            }
        }
        //alert(ATab[activeIndex]);
       this.ActiveTab(ATab[activeIndex]); //将要删除前的一个Tab激活,数组下标从0开始

    }
    if(TabLI){
        //移除相应的Tab节点
        TabLI.parentNode.removeChild(TabLI);
        //移除相应的黑板节点
        var bbId ="bb_" + TabLI.id.substr(3,TabLI.id.length-3);
        $("main_content").removeChild($(bbId));
    }
    //禁止冒泡事件,兼容Opera。在删除节点后，事件会传递到父结点，而响应父结点定义的事件
    //if(evt != undefined){
		    var e=(evt)?evt:window.event;
		    if (window.event) {
		        e.cancelBubble=true;
		    } else {
		        e.stopPropagation();
		    }
  	//}
    
};


/*---------------------------------------------------------------------------
 *function：Exit System
 *author：xhw
 *date：2008-02-18
 *update:2008-04-11
 *--------------------------------------------------------------------------*/
WebMail.Exit = function(){
    //alert("退出系统处理函数");display.index.php
    //alert("本函数参数个数" + arguments.length );
    var url = "Ajax/webmail.main.php";
    var updateId = "";
    var pars = "type=display&module=index&action=exit";
		var myAjax = new Ajax.Updater(
			updateId,
			url,
			{
				method: 'post', parameters: pars, evalScripts: true,
				onComplete : function(){
					//WebMail.UI.Design.LoadMsgHtml(0); //隐藏MsgLoad加载状态条
					//WebMail.Login.Hint();
					WebMail.Login.hrefs();
				}
			}
		);
};

/*---------------------------------------------------------------------------
 *function：ChangeTabId
 *author：xhw
 *date：2008-05-21
 *update:2008-05-21
 *--------------------------------------------------------------------------*/
WebMail.ChangeTabId = function(id, tabName){
	var ids = $(id).parentNode.getElementsByTagName("DD");
	var tabId = null;
	for(var i=0; i<ids.length;i++){
		tabId = $("tab" + ids[i].id);
		if(tabId){
			tabId.id = "tab"+id;
			break;
		}
	}
};

/*---------------------------------------------------------------------------
 * function：MsgCount
 * author：xhw
 * date：2008-05-30
 * update:2008-05-30
 * 取邮件统计
 * dtwjj 文件夹
 * [文件夹名,文件夹ID,未读邮件数,邮件总数量]
 * [["draft","1101",0,2],["mailbox","1102",9,35],["sendbox","1103",0,19],["trash","1104",0,0]]
 * eval转换后为:draft,1101,0,2,mailbox,1102,9,35,sendbox,1103,0,19,trash,1104,0,0
 *--------------------------------------------------------------------------*/
WebMail.MsgCount = function(){
	var url = "Ajax/webmail.main.php";
	var pars = "type=display&module=mail&action=MsgCount";
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'get', parameters: pars, onComplete: function(Request){
				try{
					var RtnJson = eval('(' + Request.responseText + ')');
				}catch(e){}

				if(RtnJson != undefined){
					var folders = $("dtwjj").parentNode.getElementsByTagName("DD");
					for(var i=0; i<folders.length; i++){
						var id = folders[i].id;//得到文件夹子栏目ID

							for(var j=0; j<RtnJson.length; j++){ //系统文件夹与自定义文件夹ID定义不同
								var newMail = RtnJson[j][2]; //新邮件数
								if(id == RtnJson[j][0] || id == "ZDYF" + RtnJson[j][1]){
									var s = "s" + RtnJson[j][1];//S+文件夹ID,得到新邮件数如:(10)不需要重新加<b id.... 
									if($(s))
										$(s).innerHTML = (newMail == 0) ? "" : "(" + newMail +")";
									else
										$(id).innerHTML += (newMail == 0) ? "" : "<b id=s"+ RtnJson[j][1] +">(" + RtnJson[j][2] +")</b>";
								
								//////////////////////////更新部分
										if(id == "mailbox"){
										iLeftInboxNewMail = RtnJson[j][2];
										//alert(iInboxNewMail + "=" + iLeftInboxNewMail);
										//如果打开了收件箱TAB并且,iLeftInboxNewMail>iInboxNewMail时更新发件箱列表
										//如果收件箱TAB关闭了iInboxNewMail值为-1
										if(iInboxNewMail != -1){
											if(iLeftInboxNewMail != iInboxNewMail){
												//如果,Mail_goInbox存在,就更新发件箱列表,
												if($("Mail_goInbox")){
													var pageNo = 1;
													if($("iInboxPageNo")) pageNo = $("iInboxPageNo").value;
													//alert("pageNo="+pageNo);
												 	WebMail.Mail.MailListPager('Mail_goInbox','','',pageNo,'mailbox');
												}
											}
										}
								//////////////////////////////////////////////
	
								}
								break;
							}
						}
					}
				}
			}
		}
	);

};

/*---------------------------------------------------------------------------
 * function：getUserFolders
 * author：xhw
 * date：2008-05-30
 * update:2008-05-30
 * newFolder.attachEvent("onclick",function(){ WebMail.UserFolder('UserFolder',tabName,true,'get',extendPars); });
 * extendParsT = "&SubFolders=" + SubFolders + "&fId="+ id +"&iFolderID=" + iFolderID + "&fName=" + tabName;							
 * newFolder.onclick = function () { WebMail.UserFolder('UserFolder',tabName,true,'get',extendParsT); };
 * 自动在左边添加自定义文件夹
 * Request.responseText 值的形式:[["\u548c\u5e73","6",0],["ss","7",0]]
 * eval('(' + Request.responseText + ')') 值的形式: 和平,6,0,ss,7,0
 *--------------------------------------------------------------------------*/
WebMail.getUserFolders = function(){
	var htmls = "";
	var url = "Ajax/webmail.main.php";
	var pars = "type=display&module=mail&action=getUserFolders";
	var myAjax = new Ajax.Request(
		url,
		{
			method: 'get', parameters: pars, onComplete: function(Request){
				try{
					var RtnJson = eval('(' + Request.responseText + ')');//分解成二维数组字符串
				}catch(e){}
				if(RtnJson != undefined){
					var gxwjj = $("gxwjj");//放到共享文件夹的前面
					
					for(var i=0; i<RtnJson.length; i++){
						//加载到对应的目录上
						var tabName = RtnJson[i][0];
						var iFolderID = RtnJson[i][1];
						var id = "ZDYF" + iFolderID; //数字不方便用来表示DOM的ID (3-18以前 id="f"改为ZDYF,方便样式停留)
						
						//如果结点存在，则不做添加处理
						if(!$(id)){
							var SubFolders = RtnJson[i][2];
							var newFolder = document.createElement("DD"); //创建DD元素
							newFolder.onmouseover = function(){
								WebMail.Utility.MouseOverDj(this)
							}
							newFolder.onmouseout = function(){
								WebMail.Utility.MouseOutDj(this)
							}
							newFolder.onmousedown = function(){
								WebMail.Utility.MouseDownDj(this)
							}
							newFolder.style.display = gxwjj.style.display;
							newFolder.id = id; //给动态创建的DD元素加上一个ID																				
							extendPars = "\'&SubFolders=" + SubFolders + "&fId="+ id +"&iFolderID=" + iFolderID + "&fName=" + tabName + "\'";
							
							if(window.addEventListener){ // Mozilla, Netscape, Firefox
					      newFolder.setAttribute("onclick", "WebMail.UserFolder('UserFolder',\'" + tabName + "\',true,'get'," + extendPars + ")");
					    } else { // IE attachEvent
					    									
								//htmls = " onclick=\"WebMail.UserFolder(\'UserFolder\',\'"+ tabName+"\',true,\'get\',"+ extendPars+"); \"  >" //直接写到文字链接中
					    	//新改的部分newFolder
					    	//将点击部分写在DD元素的onclick里面 extendPars的值不能加单引号,不然就会出问题
							  extendPars = "&SubFolders=" + SubFolders + "&fId="+ id +"&iFolderID=" + iFolderID + "&fName=" + tabName;					    						    	
								newFolder.extendPars = extendPars;
								newFolder.tabName = tabName;
					    	newFolder.onclick = function (){ WebMail.UserFolder('UserFolder',this.tabName,true,'get',this.extendPars); };	    	

					    }
					    
							var html = "<span class=\"IcoMyFolder\">&nbsp;</span><a onfocus=\"blur();\" href=\"javascript:void(0);\" >";
							html += tabName + "</a>";	
		
							newFolder.innerHTML = html;
							gxwjj.parentNode.insertBefore(newFolder,gxwjj); //在公共文件夹前插入该节点
						}
					}
				}
			}
		}
	);
};
 

WebMail.TabGoRight = function(){
	var TabWidth = parseInt($("header_tab").style.width); //WebMail.WinWidth - $("header_logo").offsetWidth;
	var widthStep = 50;
        var LiWidth = 0;
        var tabLI = $("tabUL").getElementsByTagName("A");
	for(var i = 0,l=tabLI.length; i<l; i++){
                LiWidth += tabLI[i].offsetWidth + 2 ;
        }
        var tabId = $("header_tab");
        try{
                var widthStepTemp =  LiWidth - tabId.scrollLeft - TabWidth;
                widthStepTemp = widthStepTemp > widthStep ?  widthStep : widthStepTemp + 34; //不足默认滚动的加上34象素
                tabId.scrollLeft += widthStepTemp;
        }catch(e){}
}
WebMail.TabGoLeft = function(){
	var TabWidth = parseInt($("header_tab").style.width); //WebMail.WinWidth - $("header_logo").offsetWidth;
	var widthStep = 50;
        var LiWidth = 0;
        var tabLI = $("tabUL").getElementsByTagName("A");
	for(var i = 0,l=tabLI.length; i<l; i++){
                LiWidth += tabLI[i].offsetWidth + 2 ;
        }
        var tabId = $("header_tab");
        try{
                tabId.scrollLeft -= widthStep;
        }catch(e){}
}

/*------------------------------文件夹模块----------------------------------*\
 * 以下所有函数都为点击菜单所触发的功能函数
 * 参数：
 * id : 菜单功能标识(定义在WebMail.UI.Menu.Js中的Json数据结构中)
 * tabName : 标签显示的文字
 * isReload : 是否重新加载数据 
 * mode : Ajax获取数据的方式
 * extendPars : 扩展参数，主要用于分页或执行了操作需要刷新等
 *------------------------------文件夹模块----------------------------------*/
//首页Home
WebMail.home = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=index&action=home";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
	setTimeout("WebMail.MsgCount()",50); //统计左边
};

//写邮件
WebMail.compose = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=mail&action=write";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, false, mode, extendPars);
};

//邮件发送后的TAB页
WebMail.completeSend = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=mail&action=completeHint";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

////////////////////////////////////////////////////////////////////
//文件夹选项
////////////////////////////////////////////////////////////////////
//用户私有文件夹
WebMail.UserFolder = function(id, tabName, isReload, mode, extendPars){

	var pageNo = 1;
	var pars = "type=display&module=mail&action=getlist&folderName=userFolder";
	pars += "&pageNo=" + pageNo;
	if(extendPars == "" || extendPars == undefined){
		if($("ZDY_SubFolders")) ZDY_SubFolders = $("ZDY_SubFolders").value;
		if($("ZDY_fName")) ZDY_fName = $("ZDY_fName").value;
		if($("ZDY_iFolderID")) ZDY_iFolderID = $("ZDY_iFolderID").value;
		extendPars = "&SubFolders=" + ZDY_SubFolders + "&fId=ZDYF" +ZDY_iFolderID + "&iFolderID=" + ZDY_iFolderID + "&fName="+ZDY_fName; 
		//alert(extendPars);
	}

	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
	
};

//收件箱
WebMail.mailbox = function(id, tabName, isReload, mode, extendPars){
	//if(extendPars == undefined) var extendPars = ""; 
	var pageNo = 1;
	//if($("iInboxPageNo")) pageNo = $("iInboxPageNo").value;
	WebMail.ChangeTabId(id,tabName);
	var pars = "type=display&module=mail&action=getlist&folderName=mailbox";
	pars += "&pageNo=" + pageNo;
	if(extendPars != undefined){
		pars += extendPars;
		var strExpop = "ExtMailSync=sync";
		if(extendPars.indexOf(strExpop) > -1){ //说明要取外部邮件
			WebMail.ExtMailSync();

			//2000毫秒之后再执行
			window.setTimeout(function(){
				WebMail.CreateTab(id,tabName);
				WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
			},2000);
			
				
		}else{
			
			WebMail.CreateTab(id,tabName);
			WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);				
		}
	}else{
	
		WebMail.CreateTab(id,tabName);
		WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);	
	}
	return true;
	//setTimeout("WebMail.MsgCount()",100); //统计左边

	
};

//发件箱
WebMail.sendbox = function(id, tabName, isReload, mode, extendPars){
	var pageNo = 1;
	//if($("iSendboxPageNo")) pageNo = $("iSendboxPageNo").value;	
	WebMail.ChangeTabId(id,tabName);
	var pars = "type=display&module=mail&action=getlist&folderName=sendbox";
	pars += "&pageNo=" + pageNo;
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

//草稿箱
WebMail.draft = function(id, tabName, isReload, mode, extendPars){
	var pageNo = 1;
	isReload = true;
	//if($("idraftboxPageNo")) pageNo = $("idraftboxPageNo").value;		
	WebMail.ChangeTabId(id,tabName);
	var pars = "type=display&module=mail&action=getlist&folderName=draft";
	pars += "&pageNo=" + pageNo;
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

//垃圾箱
WebMail.trash = function(id, tabName, isReload, mode, extendPars){
	var pageNo = 1;
	//if($("itrashBoxPageNo")) pageNo = $("itrashBoxPageNo").value;	
	WebMail.ChangeTabId(id,tabName);
	var pars = "type=display&module=mail&action=getlist&folderName=trash";
	pars += "&pageNo=" + pageNo;
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

//垃圾邮件箱
WebMail.spambox = function(id, tabName, isReload, mode, extendPars){
	var pageNo = 1;
	//if($("ispamBoxPageNo")) pageNo = $("ispamBoxPageNo").value;	
	WebMail.ChangeTabId(id,tabName);
	var pars = "type=display&module=mail&action=getlist&folderName=spambox";
	pars += "&pageNo=" + pageNo;
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};
////////////////////////////////////////////////////////////////////
//文件夹选项结束
////////////////////////////////////////////////////////////////////

//共享文件夹
WebMail.gxwjj = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=mail&action=ShareBox";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

/*------------------------------个人助理模块----------------------------------*/
//查找邮件
WebMail.czyj = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=personal&action=seachMail";	
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};


//地址簿
WebMail.dzb = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=personal&action=addressBook";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//网络磁盘
WebMail.wlcp = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=network&action=networkDisk";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//我的任务
WebMail.wdrw = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=personal&action=myTask";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//我的行程
WebMail.wdxc = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=personal&action=myJourney";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

//我的记事
WebMail.wdjs = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=personal&action=myNotepad";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

//手机短信
WebMail.sjdx = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=personal&action=sendSms";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

/*--------------------------------用户配置模块----------------------------------*/
//反垃圾邮件黑名单白名单设置
WebMail.fljyjsz = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=userbayes";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//邮件规则设置
WebMail.yjgzsz = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=mailfilter";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//用户配置
WebMail.yhpz = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=init";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//POP收件设置
WebMail.popsjsz = function(id,tabName,isReload, mode, extendPars){
	var pars = "type=display&module=user&action=PopSet";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id,pars,true, mode, extendPars);
};

//证书服务
WebMail.zsfw = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=CertManager";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//密码安全
WebMail.mmaq = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=passwordSafe";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//个人签名
WebMail.gxqm = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=signset";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, isReload, mode, extendPars);
};

//用户别名
WebMail.yhbm = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=alias";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

//自动回复
WebMail.zdhf = function(id, tabName, isReload, mode, extendPars){
	var pars = "type=display&module=user&action=addRestore";
	WebMail.CreateTab(id,tabName);
	WebMail.CreateblackBoard(id, pars, true, mode, extendPars);
};

///////////////////////////////////////////////////////////////
//查找邮件显示页(点中激活时用到)
//要刷新
///////////////////////////////////////////////////////////////
WebMail.findMailid = function(id, tabName){
	var updateId = "Mail_listSearch";
	var formId = "form_Mail_listSearch";
	var tabid = id;
	var tabName = WebMail.UI.langs[WebMail.Language].ajax_txt8;//"查找到的邮件";
	var pars = "type=display&module=Personal&action=findMail";
	pars += "&updateId=" + updateId;
	pars += "&MailListPager=1"; //表示不是直接查询的
	if(formId) pars += "&" + $(formId).serialize();

	WebMail.CreateTab(tabid,tabName);
	WebMail.CreateblackBoard(tabid, pars, false, 'post');
};


//查找邮件显示页(点中激活时用到)
WebMail.U_Help = function(){
		var ileft;
		ileft = window.screen.width - 690;
		window.open("./help/index.htm","","left=" + ileft +",width=680,height=530,resizable=1,location=no,directories=no,menubar=no");
};


/*---------------------------------------------------------------------------
 *function：收取外面邮件
 *记录 strSync pop外部邮件的收取时间,提示5分钟之内不允许再点
 *WMail_txt37 发送接收外部邮件指令太频繁,请稍等...
 *--------------------------------------------------------------------------*/
WebMail.ExtMailSync = function(){

	var SyncTime = $cookies('get','SyncTime')
	var endDate= new Date(SyncTime);
	var startDate= new Date();
	var df=(startDate.getTime()-endDate.getTime())/36000; 

	if(df < 5){ //现在的时间减上次点击的时间大于5分钟时 就执行太频繁的提示
		var infoTitle = WebMail.UI.langs[WebMail.Language].WMail_txt16;// "请稍后";
		var content = WebMail.UI.langs[WebMail.Language].WMail_txt38;
		WebMail.Utility.MsgBox("alert",
			infoTitle,
			content,
			"120",
			"80",
			""
		);
		window.setTimeout(WebMail.Utility.MsgBoxClose,2000);
		
	}else{
		
		var infoTitle = WebMail.UI.langs[WebMail.Language].WMail_txt16;// "请稍后";
		var content = WebMail.UI.langs[WebMail.Language].WMail_txt37;//"服务器正在接收外部邮件，请稍后..."
		$cookies("set","SyncTime",Date(),1); //设置当前执行的时候
		WebMail.Utility.MsgBox("Loading",
			infoTitle,
			content,
			"120",
			"80",
			""
		);
		
		//执行pop指令
		var updateId = "";
		var url = "Ajax/webmail.main.php";
		var pars = "type=display&module=mail&action=ExtMailSync";
		pars += "&strSync=sync";
		var myAjax = new Ajax.Updater(
			updateId,
			url,
			{
				method: 'post', parameters: pars, evalScripts: true,
				onComplete : function(){
					
				}
			}
		);	  

	  window.setTimeout(WebMail.Utility.MsgBoxClose,2000);
	
	}
};


