var MAIL_COMPOSE = -11;
var MAIL_INBOX = 11;
var MAIL_OUTBOX = 1;
var MAIL_DRAFT = 0;
var MAIL_TRASH = -1;

function AllDegree1ContactsStr(contactsList){
    var allDegree1ContactsStr = "";

    for(var i=0; i<contactsList.length; i++){
        var contactsNameAndScreenName = contactsList[i].mailName + "<" + contactsList[i].mailScreenName + ">";
        if(i == 0){
            allDegree1ContactsStr = contactsNameAndScreenName;
        }else{
            allDegree1ContactsStr = allDegree1ContactsStr + ", " + contactsNameAndScreenName;
        }
    }

    return allDegree1ContactsStr;
}

function MailIframeMsg(action, locationId, json){
    var msgDiv = $(locationId).select('[id="errorMsg"]')[0];
    var refMsgId = $(locationId).select('[id="refMsgId"]')[0];
    json = json.evalJSON(true);
    if(json.RETURN){
        if(action == "save"){
            refMsgId.setValue(json.messageId);
            msgDiv.className = "ok_message";
            msgDiv.update("草稿已存 " + MailFormatDate.format2(new Date()));
        }else if(action == "send"){
            MailLoadThreadList.showList(MAIL_OUTBOX);
        }
    }else{
        if(typeof(json.type) == "undefined"){
            msgDiv.className = "wrong_message";
            msgDiv.update(json.MESSAGE);
        }else{
            showMailExceedLimitDialog(json.MESSAGE, json.MESSAGE2);
        }
    }
}

function MailComposeAttachmentShow(locationId, attachments){
    var addAttachmentDiv = $(locationId).select('[id="addAttachmentDiv"]')[0];
    var attachmentIds = $(locationId).select('[id="attachmentIds"]')[0];
    
    var attIdArr = new Array();
    
    for(var i=0; i<attachments.length; i++){
        var attachment = attachments[i];
        attIdArr[i] = attachments[i].id;
        attachmentIds.setValue(attIdArr.toString());

        MailCreateAttachmentDiv(addAttachmentDiv, attachmentIds, attachment);
    }
    
}

function MailCreateAttachmentDiv(addAttachmentDiv, attachmentIds, attachment){
    var attIdArr = attachmentIds.getValue().split(",");
    
    var div = new Element("div", {
        "style" : "text-align:left; margin-left:10px;"
    });
    var label = new Element("label", {
        "for" : "password"
    });
    div.appendChild(label);
    var span = new Element("span", {
        "style" : "text-align:left;"
    });
    div.appendChild(span);
    var img = new Element("img", {
        "src" : "/images/fujian.png"
    });
    span.appendChild(img);
    var a = new Element("a", {
        "href" : attachment.filePath,
        "target" : "_blank"
    }).update(attachment.fileName);
    span.appendChild(a);
    var removeText = new Element("span", {
        "style" : "cursor:pointer"
    }).update("&nbsp;&nbsp;&nbsp;<u>取消</u>");
    removeText.observe('click', function(){
        removeText.up('div').remove();
        attIdArr = attIdArr.without(attachment.id);
        attachmentIds.setValue(attIdArr.toString());
    });
    a.insert({
        "after" : removeText
    });
        
    addAttachmentDiv.insert({
        "before" : div
    });
}


function MailAddAttachment(locationId){
    var addAttachment = $(locationId).select('[id="addAttachment"]')[0];
    var addAttachmentDiv = $(locationId).select('[id="addAttachmentDiv"]')[0];
    addAttachment.observe('click', function(){
        var div = new Element("div", {
            "style" : "text-align:left;  margin-left:10px;"
        });
        var label = new Element("label", {
            "for" : "password"
        });
        div.appendChild(label);
        var input = new Element("input", {
            "id" : "file",
            "name" : "file",
            "type" : "file"
        });
        div.appendChild(input);
        var removeText = new Element("span", {
            "style" : "cursor:pointer"
        }).update("&nbsp;&nbsp;&nbsp;<u>取消</u>");
        removeText.observe('click', function(){
            removeText.up('div').remove();
        });
        input.insert({
            "after" : removeText
        });
        addAttachmentDiv.insert({
            "before" : div
        });
    });
}

function MailShowCc(locationId){
    var ccDiv = $(locationId).select('[id="ccDiv"]')[0];
    var bccDiv = $(locationId).select('[id="bccDiv"]')[0];
    var addCcText = $(locationId).select('[id="addCcText"]')[0];
    var addBccText = $(locationId).select('[id="addBccText"]')[0];
    var cc_bcc = $(locationId).select('[id="cc_bcc"]')[0];
    var ccAndBccDiv = $(locationId).select('[id="ccAndBccDiv"]')[0];
    
    ccDiv.show();
    if(addBccText.style.display == "none"){
        $(ccAndBccDiv).hide();
    }else{
        cc_bcc.hide();
        addCcText.hide();
        MailObserveAddBcc(locationId);
    }
}

function MailShowBcc(locationId){
    var bccDiv = $(locationId).select('[id="bccDiv"]')[0];
    var addCcText = $(locationId).select('[id="addCcText"]')[0];
    var addBccText = $(locationId).select('[id="addBccText"]')[0];
    var cc_bcc = $(locationId).select('[id="cc_bcc"]')[0];
    var ccAndBccDiv = $(locationId).select('[id="ccAndBccDiv"]')[0];
    
    
    bccDiv.show();
    if(addCcText.style.display == "none"){
        $(ccAndBccDiv).hide();
    }else{
        cc_bcc.hide();
        addBccText.hide();
        MailObserveAddCc(locationId);
    }
}

function MailObserveAddCc(locationId){
    var ccDiv = $(locationId).select('[id="ccDiv"]')[0];
    var addCcText = $(locationId).select('[id="addCcText"]')[0];
    var addBccText = $(locationId).select('[id="addBccText"]')[0];
    var cc_bcc = $(locationId).select('[id="cc_bcc"]')[0];
    var ccAndBccDiv = $(locationId).select('[id="ccAndBccDiv"]')[0];
    
    addCcText.observe('click',function(){
        ccDiv.show();
        if(addBccText.style.display == "none"){
            $(ccAndBccDiv).hide();
        }else{
            cc_bcc.hide();
            addCcText.hide();
        }
    });
}


function MailObserveAddBcc(locationId){
    var bccDiv = $(locationId).select('[id="bccDiv"]')[0];
    var addCcText = $(locationId).select('[id="addCcText"]')[0];
    var addBccText = $(locationId).select('[id="addBccText"]')[0];
    var cc_bcc = $(locationId).select('[id="cc_bcc"]')[0];
    var ccAndBccDiv = $(locationId).select('[id="ccAndBccDiv"]')[0];
    
    addBccText.observe('click',function(){
        bccDiv.show();
        if(addCcText.style.display == "none"){
            $(ccAndBccDiv).hide();
        }else{
            cc_bcc.hide();
            addBccText.hide();
        }
    });
}

var MailFormatDate = {
    format : function(dateVal){
        var date = new Date(dateVal);
        var month = date.getMonth() + 1;
        var day = date.getDate();
        var format_date = null;
        
        var today = new Date();
        var currentDay = today.getDate();
        if(currentDay == day){
            format_date = this.format2(date);
        }else{
            format_date = month + "月" + day + "日";
        }
        return format_date;
    },
    format2 : function(date){
        var hour = date.getHours();
        var minutes = date.getMinutes();
        if(minutes < 10){
            minutes = "0" + minutes;
        }
        var format_date = hour + ":" + minutes;
        
        return format_date;
    }
}

function MailCurrentPage(){
    var url = location.href;
    if(url.include("#compose")){
        if(url.include("screenName=")){
            var tmpStr = url.split("#")[0].split("?")[1];
            var hash = tmpStr.toQueryParams();
            var screenName = hash.screenName;
            var name = hash.name;
            MailCompose.createFormWithTo(name+ "<" + screenName + ">",'emailContent', $('ComposeFormSrc'));
        }else if(url.include("userid=")){
            tmpStr = url.split("#")[0].split("?")[1];
            hash = tmpStr.toQueryParams();
            screenName = hash.userid;
            name = hash.name;
            SendInvitation.compose(name, screenName);
        }else if(url.include("group=")){
            tmpStr = url.split("#")[0].split("?")[1];
            hash = tmpStr.toQueryParams();
            var groupUrl = hash.group;
            var groupTitle = hash.title;
            var action = hash.action;
            if(action == "bulksend"){
                MailCompose.createFormWithTo(groupTitle+ "<groups/" + groupUrl + ">",'emailContent', $('ComposeFormSrc'));
            }else if(action == "invite"){
                MailCompose.creatFormWithAction("group", groupTitle, groupUrl, 'emailContent', $('ComposeFormSrc'));
            }
        }else if(url.include("event=")){
            tmpStr = url.split("#")[0].split("?")[1];
            hash = tmpStr.toQueryParams();
            var eventUrl = hash.event;
            var eventTitle = hash.title;
            action = hash.action;
            if(action == "bulksend"){
                MailCompose.createFormWithTo(eventTitle+ "<events/" + eventUrl + ">",'emailContent', $('ComposeFormSrc'));
            }else if(action == "invite"){
                MailCompose.creatFormWithAction("event", eventTitle, eventUrl, 'emailContent', $('ComposeFormSrc'));
            }
        }else{
            MailCompose.createNewForm('emailContent', $('ComposeFormSrc'));
        }
    }else if(url.include("#inbox")){
        MailLoadThreadList.showList(MAIL_INBOX);
    }else if(url.include("#outbox")){
        MailLoadThreadList.showList(MAIL_OUTBOX);
    }else if(url.include("#draft")){
        MailLoadThreadList.showList(MAIL_DRAFT);
    }else if(url.include("#trash")){
        MailLoadThreadList.showList(MAIL_TRASH);
    }else{
        MailLoadThreadList.showList(MAIL_INBOX);
    }
}


function MailGotoPage(folderId){
    var url = location.href;
    if(url.include("mail.jsp")){
        switch(folderId){
            case MAIL_COMPOSE :
                MailCompose.createNewForm('emailContent', $('ComposeFormSrc'));
                break;
            default:
                MailLoadThreadList.showList(folderId);
                break;
        }
    }else{
        switch(folderId){
            case MAIL_COMPOSE :
                location.href = "/mail.jsp#compose";
                break;
            case MAIL_INBOX :
                location.href = "/mail.jsp#inbox";
                break;
            case MAIL_OUTBOX :
                location.href = "/mail.jsp#outbox";
                break;
            case MAIL_DRAFT :
                location.href = "/mail.jsp#draft";
                break;
            case MAIL_TRASH :
                location.href = "/mail.jsp#trash";
                break;
            default :
                location.href = "/mail.jsp#inbox";
                break;
        }
        
    }
}

var MailLeftMenuStyle = {
    _style_id : "selected",
    
    setStyle : function(folderId){
        var num = 0;
        switch(folderId){
            case MAIL_INBOX :
                num = 0;
                break;
            case MAIL_OUTBOX :
                num = 2;
                break;
            case MAIL_DRAFT :
                num = 3;
                break;
            case MAIL_TRASH :
                num = 4;
                break;
            case MAIL_COMPOSE :
                num = 1;
                break;
            default:
                num = 0;
                break;
        }
        
        var mailMenuLi = $("mailMenu").select("li");
        for(var i = 0; i<mailMenuLi.length; i++){
            if(i == num){
                mailMenuLi[i].id = this._style_id;
            }else{
                mailMenuLi[i].id = "";
            }
        }
    }
}

var MailCompose = {
    creatFormWithAction : function(actionType, title, linkId, locationId, composeSrcElement){
        MailLeftMenuStyle.setStyle(MAIL_COMPOSE);
        this.createForm(1, locationId, composeSrcElement);
        
        var toAddressElement = $(locationId).select('[id="toAddress"]')[0];
        toAddressElement.setValue(MYNAME + "<" + MY_SCREEN_NAME + ">");

        if(Contacts.RETURN){
            var bccAddressElement = $(locationId).select('[id="bccAddress"]')[0];
            bccAddressElement.setValue(AllDegree1ContactsStr(Contacts.contacts));
            MailShowBcc(locationId);
        }
        var subjectElement = $(locationId).select('[id="subject"]')[0];
        if(actionType == "group"){
            subjectElement.setValue(MYNAME + "邀请您加入群组 - " + title);
        }else if(actionType == "event"){
            subjectElement.setValue(MYNAME + "邀请您加入活动 - " + title);
        }

        var bodyElement = $(locationId).select('[id="body"]')[0];
        if(actionType == "group"){
            bodyElement.setValue("群组链接：http://www.hengzhi.cc/groups/" + linkId);
        }else if(actionType == "event"){
            bodyElement.setValue("活动链接：http://www.hengzhi.cc/events/" + linkId);
        }
        
    },
    createFormWithTo : function(to, locationId, composeSrcElement){
        MailLeftMenuStyle.setStyle(MAIL_COMPOSE);
        this.createForm(1, locationId, composeSrcElement);
        var toAddressElement = $(locationId).select('[id="toAddress"]')[0];
        toAddressElement.setValue(to);
        //        toAddressElement.disable();
        
        var subject = $(locationId).select('[id="subject"]')[0];
        subject.focus();
        
        //MailAddAttachment(locationId);
        MailObserveAddCc(locationId);
        MailObserveAddBcc(locationId);
    },
    createNewForm : function(locationId, composeSrcElement){
        MailLeftMenuStyle.setStyle(MAIL_COMPOSE);
        this.createForm(1, locationId, composeSrcElement);
        
        //MailAddAttachment(locationId);
        MailObserveAddCc(locationId);
        MailObserveAddBcc(locationId);
    },
    createForm : function(folderId, locationId, composeSrcElement){
        $(locationId).update(composeSrcElement.innerHTML);
        
        var formLocationInput = $(locationId).select('[id="locationId"]')[0];
        if($(locationId).id == "reply"){
            var n = new Date();
            $(locationId).id = "loc_" + n.getUTCMilliseconds()
        }
        formLocationInput.setValue($(locationId).id);
        
        var toAddressElement = $(locationId).select('[id="toAddress"]')[0];
        var toAddressAutoElement = $(locationId).select('[id="toAddress_auto"]')[0];
        MailContactsAutoComplete.show(toAddressElement, toAddressAutoElement, Contacts);
        
        var ccAddressElement = $(locationId).select('[id="ccAddress"]')[0];
        var ccAddressAutoElement = $(locationId).select('[id="ccAddress_auto"]')[0];
        MailContactsAutoComplete.show(ccAddressElement, ccAddressAutoElement, Contacts);
        
        
        var bccAddressElement = $(locationId).select('[id="bccAddress"]')[0];
        var bccAddressAutoElement = $(locationId).select('[id="bccAddress_auto"]')[0];
        MailContactsAutoComplete.show(bccAddressElement, bccAddressAutoElement, Contacts);
        
        var form = $(locationId).select('[id="composeForm"]')[0];
        var actionElement = $(locationId).select('[id="clickButton"]')[0];
        var sendButtons = $(locationId).select('[id="send"]');
        var i = 0;
        var action = null;
        for(i=0; i<sendButtons.length; i++){
            var sendButton = sendButtons[i];
            sendButton.observe("click", function(){
                //                action = new MailComposeAction(locationId);
                //                action.send(folderId);
                //                return false;
                actionElement.setValue("send");
            })
        }
        
        var saveButtons = $(locationId).select('[id="save"]');
        for(i=0; i<saveButtons.length; i++){
            var saveButton = saveButtons[i];
            saveButton.observe("click", function(){
                //                form.target = "iframe";
                //                var errorMsgElement = $(locationId).select('[id="errorMsg"]')[0];
                //                errorMsgElement.update("草稿已存 " + MailFormatDate.format2(new Date()));
                //                action = new MailComposeAction(locationId);
                //                action.save();
                //                return false;
                actionElement.setValue("save");
            })
        }
        
        var discardButtons = $(locationId).select('[id="discard"]');
        for(i=0; i<discardButtons.length; i++){
            var discardButton = discardButtons[i];
            discardButton.observe("click", function(){
                action = new MailComposeAction(locationId);
                action.discard();
                return false;
            })
        }
        MailAddAttachment(locationId);
    //        MailObserveAddCc(locationId);
    //        MailObserveAddBcc(locationId);
    }
}

var MailComposeAction = Class.create({
    initialize : function(locationId){
        this.locationId = locationId;
        
        var textareaV = $(locationId).select("textarea");
        var toAddress = null;
        var ccAddress = null;
        var bccAddress = null;
        var body = null;
        var subject = null;
        var refMsgId = 0;
        
        for(var i=0; i<textareaV.length; i++){
            var textarea = textareaV[i];
            if(textarea.id == "toAddress"){
                toAddress = textarea.getValue();
            }else if(textarea.id == "ccAddress"){
                ccAddress = textarea.getValue();
            }else if(textarea.id == "bccAddress"){
                bccAddress = textarea.getValue();
            }else if(textarea.id == "body"){
                body = textarea.getValue();
            }
        }
        
        var subjectElement = $(locationId).select('[id="subject"]')[0];
        subject = subjectElement.getValue();
        var refMsgIdElement = $(locationId).select('[id="refMsgId"]')[0];
        refMsgId = refMsgIdElement.getValue();
        
        this.param = new Hash();
        this.param.set("refMsgId", refMsgId);
        this.param.set("to", toAddress);
        this.param.set("cc", ccAddress);
        this.param.set("bcc", bccAddress);
        this.param.set("subject", subject);
        this.param.set("body", body);
        
        
        this.loadingElement = $(locationId).select('[id="loading"]')[0];
        this.errorMsgElement = $(locationId).select('[id="errorMsg"]')[0];
        
    },
    send : function(folderId){
        var thiz = this;
        var param = this.param;
        var loadingElement = this.loadingElement;
        var errorMsgElement = this.errorMsgElement;
        
    //        new Ajax.Request("/Mail.do?action=SEND_MESSAGE", {
    //            method : 'post',
    //            parameters : param.toQueryString(),
    //            requestHeaders : {Accept: 'application/json'},
    //            onCreate : function(){
    //                thiz._onCreate(loadingElement);
    //            },
    //            onSuccess : function(transport){
    //                var json = transport.responseText.evalJSON(true);
    //                if(json.RETURN){
    //                    MailLoadThreadList.showList(folderId);
    //                    //                    var locationId = this.locationId;
    //                    //                    if(locationId.id == "reply"){
    //                    //                        locationId.up(0).hide();
    //                    //                        locationId.up(0).next(0).hide();
    //                    //
    //                    //                        var li = locationId.up(0).previous(0).select("li");
    //                    //                        for(var i=0; i<li.length; i++){
    //                    //                            if(li[i].hasClassName("current")){
    //                    //                                li[i].removeClassName("current");
    //                    //                            }
    //                    //                        }
    //                    //                     }
    //                }else{
    //                    thiz._onFailure(errorMsgElement, json.MESSAGE);
    //                }
    //            },
    //            onComplete : function(){
    //                thiz._onComplete(loadingElement);
    //            }
    //        });
    },
    save : function(){
        var thiz = this;
        var param = this.param;
        var loadingElement = this.loadingElement;
        var errorMsgElement = this.errorMsgElement;
        var refMsgIdElement = $(this.locationId).select('[id="refMsgId"]')[0];
        
    //        new Ajax.Request("/Mail.do?action=SAVE_MESSAGE", {
    //            method : 'post',
    //            parameters : param.toQueryString(),
    //            requestHeaders : {Accept: 'application/json'},
    //            onCreate : function(){
    //                thiz._onCreate(loadingElement);
    //            },
    //            onSuccess : function(transport){
    //                var json = transport.responseText.evalJSON(true);
    //                if(json.RETURN){
    //                    refMsgIdElement.setValue(json.messageId);
    //                    errorMsgElement.show();
    //                    errorMsgElement.update("草稿已存 " + MailFormatDate.format2(new Date()));
    //                }else{
    //                    thiz._onFailure(errorMsgElement, json.MESSAGE);
    //                }
    //            },
    //            onComplete : function(){
    //                thiz._onComplete(loadingElement);
    //            }
    //        });
    },
    discard : function(){
        var locationId = this.locationId;
        if(locationId.id == "reply"){
            locationId.up(0).hide();
            locationId.up(0).next(0).hide();
            
            var li = locationId.up(0).previous(0).select("li");
            for(var i=0; i<li.length; i++){
                if(li[i].hasClassName("current")){
                    li[i].removeClassName("current");
                }
            }
        }else{
            MailLoadThreadList.showList(MAIL_INBOX);
        }
        
    },
    _onCreate : function(loadingElement){
        loadingElement.show();
    },
    _onFailure : function(errorMsgElement, msg){
        errorMsgElement.show();
        errorMsgElement.update(msg);
    },
    _onComplete : function(loadingElement){
        loadingElement.hide();
    }
});


var MailLoadThreadList = {
    _content_location_id : "emailContent",
    
    showList : function(folderId){
        MailLeftMenuStyle.setStyle(folderId);
        this._showThreadList(folderId, 0);
    },
    _showThreadList : function(folderId, currentPage){
        var maxCount = 20;
        var startIndex = currentPage * maxCount;
        
        $(this._content_location_id).update($("MailListSrc").innerHTML);
        
        new Ajax.Request("/Mail.do?action=LOAD_THREAD",{
            parameters : {
                "folderId" : folderId,
                "currentPage" : currentPage,
                "maxCount" : maxCount
            },
            requestHeaders : {
                Accept: 'application/json'
            },
            onCreate : function(){
                var loadingDivElement = $(MailLoadThreadList._content_location_id).select('[id="mailListLoading"]');
                loadingDivElement[0].show();
            },
            onSuccess : function(transport){
                var json = transport.responseText.evalJSON(true);
                if(json.RETURN){
                    if(folderId == MAIL_DRAFT){
                        json = MailLoadThreadList._reformJson(json);
                    }
                    MailLoadThreadList._paging(folderId, json.folderThreads, currentPage, startIndex, maxCount);
                    MailLoadThreadList._onSuccessLoadThread(folderId, json);
                }else{
                    MailLoadThreadList._onFailureLoadThread(json.MESSAGE);
                }
            },
            onComplete : function(){
                var loadingDivElement = $(MailLoadThreadList._content_location_id).select('[id="mailListLoading"]');
                for(var i=0; i<loadingDivElement.length; i++){
                    loadingDivElement[i].remove();
                }
            }
        })
    },
    _paging : function(folderId, folderThreads, currentPage, startIndex, maxCount){
        var totalCount = folderThreads.totalCount;
        var locationElementV = $(this._content_location_id).select('[id="paging"]');
        var currentStartIndex = startIndex + 1;
        var currentEndIndex = folderThreads.totalCount > startIndex + maxCount?startIndex + maxCount : totalCount;
        if(totalCount == 0){
            currentStartIndex = 0;
        }
        
        var strCount = currentStartIndex + "-" + currentEndIndex + "/" + totalCount;
        locationElementV[0].update(strCount);
        locationElementV[1].update(strCount);
        
        //        var firstPageElementV = $(this._content_location_id).select('[id="firstPage"]');
        var previousPageElementV = $(this._content_location_id).select('[id="previousPage"]');
        var nextPageElementV = $(this._content_location_id).select('[id="nextPage"]');
        //        var endPageElementV = $(this._content_location_id).select('[id="endPage"]');
        
        //        var firstPage = 0;
        var previousPage = currentPage - 1 ;
        var nextPage = currentPage + 1;
        //        var endPage = Math.ceil(totalCount/maxCount) - 1;
        
        if(currentPage > 0){
            //            firstPageElementV[0].observe('click', function(){
            //                MailLoadThreadList._showThreadList(folderId, firstPage);
            //            });
            //            firstPageElementV[1].observe('click', function(){
            //                MailLoadThreadList._showThreadList(folderId, firstPage);
            //            });
            //            previousPageElementV[0].update('<img src="/images/back.gif" width="20" height="20" />');
            //            previousPageElementV[1].update('<img src="/images/back.gif" width="20" height="20" />');
            
            previousPageElementV[0].setStyle({
                "cursor" : "pointer"
            });
            previousPageElementV[1].setStyle({
                "cursor" : "pointer"
            });
            
            previousPageElementV[0].observe('click', function(){
                MailLoadThreadList._showThreadList(folderId, previousPage);
            });
            previousPageElementV[1].observe('click', function(){
                MailLoadThreadList._showThreadList(folderId, previousPage);
            });
        }else{
            //            previousPageElementV[0].update('<img src="/images/back_gray.gif" width="20" height="20" />');
            //            previousPageElementV[1].update('<img src="/images/back_gray.gif" width="20" height="20" />');
            
            previousPageElementV[0].setStyle();
            previousPageElementV[1].setStyle();
        }
        if(currentEndIndex < totalCount){
            //            nextPageElementV[0].update('<img src="/images/next.gif" width="20" height="20" />');
            //            nextPageElementV[1].update('<img src="/images/next.gif" width="20" height="20" />');
            
            nextPageElementV[0].setStyle({
                "cursor" : "pointer"
            });
            nextPageElementV[1].setStyle({
                "cursor" : "pointer"
            });
            
            nextPageElementV[0].observe('click', function(){
                MailLoadThreadList._showThreadList(folderId, nextPage);
            });
            nextPageElementV[1].observe('click', function(){
                MailLoadThreadList._showThreadList(folderId, nextPage);
            });
            
        //            endPageElementV[0].observe('click', function(){
        //                MailLoadThreadList._showThreadList(folderId, endPage);
        //            });
        //            endPageElementV[1].observe('click', function(){
        //                MailLoadThreadList._showThreadList(folderId, endPage);
        //            });
        }else{
            //            nextPageElementV[0].update('<img src="/images/next_gray.gif" width="20" height="20" />');
            //            nextPageElementV[1].update('<img src="/images/next_gray.gif" width="20" height="20" />');
            
            nextPageElementV[0].setStyle();
            nextPageElementV[1].setStyle();
        }
    },
    _onSuccessLoadThread : function(folderId, json){
        if(folderId == MAIL_DRAFT){
            json = MailLoadThreadList._reformJson(json);
        }
        
        var inboxNewCount = json.InBoxNewCount;
        
        if(inboxNewCount > 0){
            $("inboxNewCount").update("信箱" + "(" + inboxNewCount + ")");
        }else{
            $("inboxNewCount").update("信箱");
        }
        
        var folderThreads = json.folderThreads;
        var tbody = $(this._content_location_id).select('[id="folderThreads"]')[0];
        if(folderThreads.totalCount == 0){
            tbody.update("");
        }else{
            $(tbody).update("");
            for(var i=0; i<folderThreads.list.length; i++){
                //                if(folderId == MAIL_DRAFT){
                //                    this._showDraftThread(folderId, tbody, folderThreads.list[i], json.messageBodyMap);
                //                }else{
                var thread = folderThreads.list[i];
                if(thread[0].messageType == 0){
                    this._showEachInvitation(folderId, tbody, thread);
                }else{
                    this._showEachThread(folderId, tbody, folderThreads.list[i], json.messageBodyMap);
                }
            //                }
            }
            //            var selectAllCheckboxElement = $(this._content_location_id).select('[id="AllCheckbox"]')[0];
            //            selectAllCheckboxElement.observe('click', function(){
            //                var threadCheckboxV = tbody.select('[type="checkbox"]');
            //
            //                var i = 0;
            //                if(selectAllCheckboxElement.checked){
            //                    for(i=0; i<threadCheckboxV.length; i++){
            //                        threadCheckboxV[i].checked = true;
            //                    }
            //                }else{
            //                    for(i=0; i<threadCheckboxV.length; i++){
            //                        threadCheckboxV[i].checked = false;
            //                    }
            //                }
            //            });
            
            var delElementV = $(this._content_location_id).select('[id="delete"]');
            var threadCheckboxV = tbody.select('[type="checkbox"]');
            var userMsgId = null;
            var selectedCount = 0;
            
            for(i=0; i<delElementV.length; i++){
                delElementV[i].observe('click', function(){
                    for(i=0; i<threadCheckboxV.length; i++){
                        if(threadCheckboxV[i].checked){
                            selectedCount = selectedCount + 1;
                            if(userMsgId != null){
                                userMsgId = userMsgId + "," + threadCheckboxV[i].value;
                            }else{
                                userMsgId = threadCheckboxV[i].value;
                            }
                        }
                    }
                    if(selectedCount > 0){
                        var url = null;
                        if(folderId == MAIL_TRASH || folderId == MAIL_DRAFT){
                            url = "/Mail.do?action=PURGE_MESSAGE";
                        }else{
                            url = "/Mail.do?action=DELETE_MESSAGE";
                        }
                        new Ajax.Request(url,{
                            method : 'post',
                            parameters : {
                                "userMsgId" : userMsgId
                            },
                            requestHeaders : {
                                Accept: 'application/json'
                            },
                            onCreate : function(){
                                
                            },
                            onSuccess : function(transport){
                                var json = transport.responseText.evalJSON(true);
                                if(json.RETURN){
                                    MailLoadThreadList.showList(folderId);
                                }
                            },
                            onComplete : function(){
                                
                            }
                        });
                    }else{
                        alert("没有选择要删除的邮件");
                    }
                
                });
                
                if(folderId == MAIL_TRASH){
                    var unDelElement = new Element("input", {
                        "type" : "button",
                        "value" : "还原",
                        "class" : "buttom"
                    });
                    unDelElement.observe("click", function(){
                        for(i=0; i<threadCheckboxV.length; i++){
                            if(threadCheckboxV[i].checked){
                                selectedCount = selectedCount + 1;
                                if(userMsgId != null){
                                    userMsgId = userMsgId + "," + threadCheckboxV[i].value;
                                }else{
                                    userMsgId = threadCheckboxV[i].value;
                                }
                            }
                        }
                        if(selectedCount > 0){
                            new Ajax.Request("/Mail.do?action=UNDELETE_MESSAGE",{
                                method : 'post',
                                parameters : {
                                    "userMsgId" : userMsgId
                                },
                                requestHeaders : {
                                    Accept: 'application/json'
                                },
                                onCreate : function(){
                
                                },
                                onSuccess : function(transport){
                                    var json = transport.responseText.evalJSON(true);
                                    if(json.RETURN){
                                        MailLoadThreadList.showList(folderId);
                                    }
                                },
                                onComplete : function(){
                
                                }
                            });
                        }else{
                            alert("没有选择要删除的邮件");
                        }
                    });
                    
                    delElementV[i].insert({
                        "after":unDelElement
                    });
                }
            }
            
        }
    },
    _onFailureLoadThread : function(msg){
        $(this._content_location_id).update(msg);
    },
    _reformJson : function(json){
        //        var messageBodyMap = json.messageBodyMap;
        var folderThreads = json.folderThreads;
        var threadsList = folderThreads.list;
        var newThreadsList = new Array();
        var n = 0;
        //        var messageIdList = null;
        //        var userMsgIdList = null;
        
        for(var i=0; i<threadsList.length; i++){
            for(var j=0; j<threadsList[i].length; j++){
                //                if(typeof messageBodyMap[threadsList[i][j].messageId] == "undefined"){
                //                    if(messageIdList == null){
                //                        messageIdList = threadsList[i][j].messageId;
                //                        userMsgIdList = threadsList[i][j].userMsgId;
                //                    }else{
                //                        messageIdList = messageIdList + "," + threadsList[i][j].messageId;
                //                        userMsgIdList = userMsgIdList + "," + threadsList[i][j].userMsgId;
                //                    }
                //                }
                newThreadsList[n] = new Array();
                newThreadsList[n][0] = threadsList[i][j];
                n++;
            }
        }
        
        //        if(messageIdList != null){
        //            var messageBodyList = null;
        //            new Ajax.Request("/Mail.do?action=GET_MESSAGE_LIST",{
        //                method : 'post',
        //                parameters : {"messageIdList" : messageIdList, "userMsgIdList" : userMsgIdList},
        //                requestHeaders : {Accept: 'application/json'},
        //                onSuccess : function(transport){
        //                    var jsonMessage = transport.responseText.evalJSON(true);
        //                    if(jsonMessage.RETURN){
        //                        messageBodyList = jsonMessage.messageBodyList;
        //                    }
        //                },
        //                onComplete : function(){
        //                    for(var i=0; i<messageBodyList.length; i++){
        //                        var messageBody = messageBodyList[i];
        //                        messageBodyMap[messageBody.messageId] = messageBody.messageBody;
        //                    }
        //                    
        //                    json.messageBodyMap = messageBodyMap;
        //                    json.folderThreads.totalCount = n;
        //                    json.folderThreads.list = newThreadsList;
        //                }
        //            });
        //        }
        json.folderThreads.totalCount = n;
        json.folderThreads.list = newThreadsList;
        
        return json;
    },
    _showEachThread : function(folderId, locationElement, thread, messageBodyMap){
        var userMsgId = null;
        var subject = thread[0].subject;
        var body = messageBodyMap[thread[thread.length-1].messageId];
        var createDate = thread[thread.length-1].createDate;
        var unReadCount = 0;
        var unRead = false;
        var attCount = 0;
        var haveAtt = false;
        
        for(var i=0; i<thread.length; i++){
            var message = thread[i];
            if(userMsgId == null){
                userMsgId = message.userMsgId;
            }else{
                userMsgId = userMsgId + "," + message.userMsgId;
            }
            
            if(message.unRead && message.folderId == 11){
                unReadCount = unReadCount + 1;
            }
            
            attCount = attCount + message.attachments.length;
        }
        
        if(unReadCount > 0){
            unRead = true;
        }
        if(attCount > 0){
            haveAtt = true;
        }
        
        var checkBox = new Element('input',{
            'id' : 'threadCheckBox',
            'type':'checkbox',
            'style':'border:none',
            'value' : userMsgId
        });
        var td = new Element('td', {
            'align':'center',
            'valign':'middle'
        }).update(checkBox);
        var tr = new Element('tr');
        tr.appendChild(td);

        var nameAndCount = null;
        nameAndCount = thread[0].fromName;
        
        switch(folderId){
            case MAIL_INBOX :
            case MAIL_TRASH :
                nameAndCount = thread[thread.length-1].fromName;
                break;
            case MAIL_OUTBOX :
                nameAndCount = "TO: " + thread[thread.length-1].toName;
                break;
            case MAIL_DRAFT :
                nameAndCount = "Draft";
                break;
            default:
                break;
        }
        
        if(thread.length > 1){
            nameAndCount = nameAndCount + "(" + thread.length + ")";
        }
        
        td = new Element('td',{
            'style':'cursor:pointer'
        });
        var text = new Element("a", {
            "href" : "#"
        });
        if(unRead){
            text.update("<div><b>" + nameAndCount + "</b></div>");
        }else{
            text.update("<div>" + nameAndCount + "</div>");
        }
        text.observe("click", function () {
            if(folderId == MAIL_DRAFT){
                MailLoadThreadList._editDraft(folderId, thread[0],MailLoadThreadList._content_location_id, $("ComposeFormSrc"), messageBodyMap);
            }else{
                MailLoadThreadList._showThreadDetail(folderId, thread, messageBodyMap);
            }
            
        });
        td.update(text);
        tr.appendChild(td);
        
        td = new Element('td').update("&nbsp;");
        tr.appendChild(td);
        
        td = new Element('td',{
            'style':'cursor:pointer'
        });
        var div = new Element("div");
        td.insert(div);
        text = new Element("a", {
            "href" : "#"
        });
        
        if(folderId == MAIL_DRAFT){
            if(unRead){
                text.update("<b>" + subject + "</b>");
            }else{
                text.update(subject);
            }
            if(typeof messageBodyMap[thread[0].messageId] == "undefined"){
                new Ajax.Request("/Mail.do?action=GET_MESSAGE",{
                    method : 'post',
                    parameters : {
                        "messageId" : thread[0].messageId,
                        "userMsgId" : thread[0].userMsgId
                    },
                    requestHeaders : {
                        Accept: 'application/json'
                    },
                    onSuccess : function(transport){
                        var json = transport.responseText.evalJSON(true);
                        if(json.RETURN){
                            messageBodyMap[json.messageId] = json.messageBody;
                            body = json.messageBody;
                            if(unRead){
                                text.update("<b>" + subject + "<span class='style6'> - " + body + "</span></b>");
                            }else{
                                text.update(subject + "<span class='style6'> - " + body + "</span>");
                            }
                        }
                    }
                });
            }else{
                if(unRead){
                    text.update("<b>" + subject + "<span class='style6'> - " + body + "</span></b>");
                }else{
                    text.update(subject + "<span class='style6'> - " + body + "</span>");
                }
            }
        }else{
            if(unRead){
                text.update("<b>" + subject + "<span class='style6'> - " + body + "</span></b>");
            }else{
                text.update(subject + "<span class='style6'> - " + body + "</span>");
            }
        }
        
        text.observe("click", function () {
            if(folderId == MAIL_DRAFT){
                MailLoadThreadList._editDraft(folderId, thread[0],MailLoadThreadList._content_location_id, $("ComposeFormSrc"), messageBodyMap);
            }else{
                MailLoadThreadList._showThreadDetail(folderId, thread, messageBodyMap);
            }
        });
        div.update(text);
        tr.appendChild(td);

        td = new Element('td');
        if(haveAtt){
            td.update('<img src="/images/fujian.png" />');
        }else{
            td.update("&nbsp;");
        }
        tr.appendChild(td);
        
        td = new Element('td', {
            'class' : 'sortcol',
            'nowrap' : 'nowrap'
        }).update(MailFormatDate.format(createDate));
        tr.appendChild(td);

        locationElement.appendChild(tr);
    },
    _showEachInvitation : function(folderId, locationElement, thread){
        if(folderId == 1){
            var td = new Element('td', {
                'align':'center',
                'valign':'middle'
            });
            var tr = new Element('tr');
            tr.appendChild(td);

            td = new Element('td');
            var text = new Element("a", {
                "href" : "#"
            });
            text.update("<b>" + thread[0].toUser.name + "</b>");
            text.observe("click", function () {
                MailLoadThreadList._view_send_invitation_detail(thread[0]);
            });
            td.update(text);
            tr.appendChild(td);

            td = new Element('td');
            tr.appendChild(td);

            td = new Element('td',{
                'style':'cursor:pointer'
            });
            text = new Element("a", {
                "href" : "#"
            });
            //            text.update("<b>恒知网 | " + thread[0].fromUser.name + " 请求建立联系</b>");
            text.update("<b>" + thread[0].subject + "</b>");
            text.observe("click", function () {
                MailLoadThreadList._view_send_invitation_detail(thread[0]);
            });
            td.update(text);
            tr.appendChild(td);

            td = new Element('td');
            tr.appendChild(td);

            td = new Element('td').update(MailFormatDate.format(thread[0].createDate));
            tr.appendChild(td);

            locationElement.appendChild(tr);
            
        }else{
            var type = thread[0].TYPE;
            var fromName = "";
            if(type == 0){
                fromName = thread[0].VALUE.fromUser.name;
            }else{
                fromName = thread[0].VALUE.basicInfo.fromName;
            }
            td = new Element('td', {
                'align':'center',
                'valign':'middle'
            });
            tr = new Element('tr');
            tr.appendChild(td);

            td = new Element('td');
            text = new Element("a", {
                "href" : "#"
            });
            text.update("<b>" + fromName + "</b>");
            text.observe("click", function () {
                MailLoadThreadList._view_recv_invitation_detail(thread[0], type);
            });
            td.update(text);
            tr.appendChild(td);

            td = new Element('td');
            tr.appendChild(td);

            td = new Element('td',{
                'style':'cursor:pointer'
            });
            text = new Element("a", {
                "href" : "#"
            });
            //                text.update("<b>恒知网 | " + fromName + " 请求建立联系</b>");
            text.update("<b>" + thread[0].VALUE.basicInfo.subject + "</b>");
            text.observe("click", function () {
                MailLoadThreadList._view_recv_invitation_detail(thread[0], type);
            });
            td.update(text);
            tr.appendChild(td);

            td = new Element('td');
            tr.appendChild(td);

            td = new Element('td').update(MailFormatDate.format(thread[0].VALUE.basicInfo.createDate));
            tr.appendChild(td);

            locationElement.appendChild(tr);
        }
    },
    _view_send_invitation_detail : function (invitation) {
        // GET TEMPLATE HTML
        var templateHtml = $("template_view_invite_detail").innerHTML.templateDecode();
        // CREATE AND FILL TEMPLATE
        var template = new Template(templateHtml);
        var toPhoto = "";
        if(invitation.toUser.photoLarge == null || invitation.toUser.photoLarge == ""){
            if(invitation.toUser.gender == 1){
                toPhoto = "<img src='/images/man.gif' border='0'/>";
            }else{
                toPhoto = "<img src='/images/women.gif' border='0'/>";
            }
        }else{
            toPhoto = "<img src='" + invitation.toUser.photoLarge + "' border='0'/>";
        }
        var show = {
            create_time : MailFormatDate.format(invitation.createDate),
            from_user_name : "<a href='/" + invitation.fromUser.screenName + "' style='color:#679EF1'>" + invitation.fromUser.name + "</a>",
            to_user_name : invitation.toUser.name,
            to_user_screenName : invitation.toUser.screenName,
            subject : invitation.subject,
            photo : toPhoto,
            message : URLReplace(invitation.message)
        }
        
        $(this._content_location_id).update(template.evaluate(show));
        
        var connectionPath = invitation.connectionPath;
        if (connectionPath != undefined) {
            this._fillConnectionPaths(connectionPath, "send", invitation.toUser.name);
        }
        var acceptButton = $(this._content_location_id).select('[id="accept_invite_button"]')[0];
        var ignoreButton = $(this._content_location_id).select('[id="ignore_invite_button"]')[0];

        acceptButton.remove();
        ignoreButton.remove();
       
    }, 
    _view_recv_invitation_detail : function (invitation, type) {
        
        // GET TEMPLATE HTML
        var templateHtml = "";
        if(type == 0){
            templateHtml = $("template_view_invite_detail").innerHTML.templateDecode();
        }else{
            templateHtml = $("template_view_extenter_invite_detail").innerHTML.templateDecode();
        }
        // CREATE AND FILL TEMPLATE
        var template = new Template(templateHtml);
        
        var fromNameAndScreenName = "";
        var fromName = "";
        var fromPhoto = "";
        
        if(type == 0){//inner invitation
            fromNameAndScreenName = invitation.VALUE.fromUser.name;
            fromName = "<a href='/" + invitation.VALUE.fromUser.screenName + "' style='color:#679EF1'>" + invitation.VALUE.fromUser.name + "</a>";
            if(invitation.VALUE.fromUser.photoLarge == null || invitation.VALUE.fromUser.photoLarge == ""){
                if(invitation.VALUE.fromUser.gender == 1){
                    fromPhoto = "<img src='/images/man.gif' border='0'/>";
                }else{
                    fromPhoto = "<img src='/images/women.gif' border='0'/>";
                }
            }else{//request invitation
                fromPhoto = "<img src='" + invitation.VALUE.fromUser.photoLarge + "' border='0'/>";
            }
        }else{
            fromNameAndScreenName = invitation.VALUE.basicInfo.fromName + " ( " + invitation.VALUE.basicInfo.fromEmail + " )";
            fromName = invitation.VALUE.basicInfo.fromName;
            fromPhoto = "<img src='/images/man.gif' border='0'/>";
        }
        
        var show = {
            create_time : MailFormatDate.format(invitation.VALUE.basicInfo.createDate),
            from_user_name : fromNameAndScreenName,
            to_user_screenName : invitation.VALUE.toUser.screenName,
            to_user_name : invitation.VALUE.toUser.name,
            subject : invitation.VALUE.basicInfo.subject,
            photo : fromPhoto,
            message : URLReplace(invitation.VALUE.basicInfo.message)
        }
      
        $(this._content_location_id).update(template.evaluate(show));
        
      
        var connectionPath = invitation.VALUE.connectionPath;
        if (connectionPath != undefined) {
            if(invitation.VALUE.basicInfo.friendOriginType!=0){
                //friendOriginType = FRIEND_ORIGIN_UNKNOWN; FRIEND_ORIGIN_UNKNOWN = 0;
                this._fillFriendOrigin(invitation.VALUE);
            }else{
                this._fillConnectionPaths(connectionPath, "recv", invitation.VALUE.toUser.name);
            }
        }
        var acceptButton = $(this._content_location_id).select('[id="accept_invite_button"]')[0];
        var ignoreButton = $(this._content_location_id).select('[id="ignore_invite_button"]')[0];       

        if(invitation.VALUE.basicInfo.friendOriginType!=0){
            acceptButton.value = "接受";
        }
        acceptButton.observe('click', function(){
            if(type == 0){
                showAcceptInviteDialog(invitation.VALUE.basicInfo.linkCode, type,fromName,invitation.VALUE.fromUser.name,invitation.VALUE.fromUser.screenName);
            } else {
                ViewInviteList.accept(invitation.VALUE.basicInfo.linkCode, type, fromName);
            }
        });

        ignoreButton.observe('click', function(){
            ViewInviteList.ignore(invitation.VALUE.basicInfo.linkCode, type, fromName);
        }); 
    },

    _fillFriendOrigin : function ( invite ) {
        /*
    public static final int FRIEND_ORIGIN_UNKNOWN = 0;
    public static final int FRIEND_ORIGIN_SCHOOLMATE = 201;
    public static final int FRIEND_ORIGIN_COLLEAGUE = 202;
    public static final int FRIEND_ORIGIN_BUSINESS = 203;
    public static final int FRIEND_ORIGIN_OTHERS = 100;
         */
        if(invite.basicInfo.friendOriginType == 0){
            return;
        }
        if(invite.basicInfo.friendOriginType == 100){
            var path_div = $(this._content_location_id).select('[id="connection_path_div"]')[0];
            $(path_div).remove();
            return;
        }
        var title = "认识的好友";
        switch(invite.basicInfo.friendOriginType){
            case 201:
                title = "同学";
                break;
            case 202:
                title = "同事";
                break;
            case 203:
                title = "商业伙伴";
                break;
            default:
                title = "认识的好友";
                break;
        }

        var tr = new Element('tr');
        var td = new Element('td', {
            'align' : 'left'
        });
        
        td.update(invite.fromUser.name + "自称是您的"+title);
        
        tr.appendChild( td );
        var connection_path_tr = $(this._content_location_id).select('[id="connection_path_tr"]')[0];
        $(connection_path_tr).insert( tr );
    },

    _fillConnectionPaths : function ( connectionPaths, folder, toUserName ) {
        switch ( connectionPaths.size() ) {
            case 1 : 
                this._fillConnectionPath(connectionPaths[0], folder, toUserName);
                break;
            case 2 : 
                this._fillConnectionPath(connectionPaths[0], folder, toUserName);
                this._fillConnectionPath2(connectionPaths[1]);
                break;
            case 3 :
                this._fillConnectionPath2(connectionPaths[0]);
                this._fillConnectionPath(connectionPaths[1], folder, toUserName);
                this._fillConnectionPath2(connectionPaths[2]);
                break;
        }
    },
    _fillConnectionPath : function ( connectionPath, folder, toUserName ) {
        var tr = new Element('tr');
        for (var i = 0; i < 2 * connectionPath.size() - 1; i++) {
            var td = new Element('td', {
                'align' : 'center'
            });
            
            if (i == 0) {
                if(folder == "recv"){
                    td.update(toUserName);
                }else{
                    td.update(connectionPath[connectionPath.size()-1].name);
                }
            } else if (i == 1 || i == (2 * connectionPath.size() - 3) ) {
                td.update('<img src="/images/arrow_4.gif">');
            } else if (i % 2 == 0) {
                if(folder == "recv"){
                    td.update( connectionPath[ i/2 ].name );
                }else{
                    if(i/2 == connectionPath.size()-1){
                        td.update(toUserName);
                    }else{
                        td.update( connectionPath[ i/2 ].name );
                    }
                }
            } else {
                td.update('<img src="/images/arrow_3.gif">');
            }
            tr.appendChild( td );
        }
         
        var connection_path_div = $(this._content_location_id).select('[id="connection_path_tr"]')[0];
        $(connection_path_div).insert( tr );
    },
    
    _fillConnectionPath2 : function ( connectionPath ) {
        var tr = new Element('tr');
        for (var i = 0; i < 2 * connectionPath.size() - 1; i++) {
            var td = new Element('td', {
                'align' : 'center'
            });
            if (i == 0 || i == (2 * connectionPath.size() - 2)) {
                
            } else if (i == 1 || i == (2 * connectionPath.size() - 3) ) {
                
            }else if (i % 2 == 0) {
                td.update( connectionPath[ i/2 ].name );
            } else if (i %2 != 0) {
                td.update('<img src="/images/arrow_3.gif">');
            }
            tr.appendChild( td );
        }
         
        var connection_path_div = $(this._content_location_id).select('[id="connection_path_tr"]')[0];
        $(connection_path_div).insert( tr );
    },
    
    _showThreadDetail : function(folderId, thread, messageBodyMap){
        var mailSubjectTemplate = new Template($("MailDetailBorderSrc").innerHTML.templateDecode());
        var mailSubjectShow = {
            mail_subject : thread[0].subject
        }
        var mailSubjectStr = mailSubjectTemplate.evaluate(mailSubjectShow);
        $(this._content_location_id).update(mailSubjectStr);
        
        var MailDetailElement = $(this._content_location_id).select('div')[0];
        var detailTemplate = new Template($("MailDetailSrc").innerHTML.templateDecode());
        var show = null;
        var str = null;
        
        for(var i=0; i<thread.length-1; i++){
            var message = thread[i];
            var userMsgId = message.userMsgId;
            var att = "";
            if(message.attachments.length > 0){
                att = '<img src="/images/fujian.png">';
            }
            var toName = message.toName;
            if(message.fromUid == UID && (typeof(message.bccName) != "undefined" && (message.bccName != null || message.bccName.length > 0))){
                toName = toName + message.bccName;
            }
            
            show = {
                mail_id : userMsgId,
                from_name : message.fromName,
                to_name : toName,
                mail_subject : message.subject,
                mail_att : att,
                mail_time : MailFormatDate.format(message.createDate)
            }
            str = detailTemplate.evaluate(show);
            MailDetailElement.insert(str);
            $("MailHeader_" + userMsgId).setStyle("cursor:pointer");
            
            this._showOrHideMessage(message, messageBodyMap);
            if(i >= 1){
                var preMessage = thread[i-1];
                this._MessageActions(folderId, preMessage, message, messageBodyMap);
            }else{
                this._MessageActions(folderId, null, message, messageBodyMap);
            }
            
            if(message.attachments.length > 0){
                $("MailAttachment_" + userMsgId).update();
                if(message.attachments.length > 0){
                    var attText = new Element("div",{
                        "style" : "text_align:left"
                    }).update("附件:");
                    $("MailAttachment_" + userMsgId).appendChild(attText);
                }
                for(var j = 0; j<message.attachments.length; j++){
                    var img = new Element('img', {
                        'src' : '/images/fujian.png'
                    });
                    $("MailAttachment_" + userMsgId).appendChild(img);
                    var att = message.attachments[j];
                    var a = new Element('a', {
                        'href' : att.filePath,
                        "target" : "_blank"
                    }).update(att.fileName);
                    $("MailAttachment_" + userMsgId).appendChild(a);
                    var br = new Element('br');
                    $("MailAttachment_" + userMsgId).appendChild(br);
                }
            //                $("MailAttachment_" + userMsgId).show();
            }
        }
        
        var lastMessage = thread[thread.length-1];
        var lastMessageId = lastMessage.messageId;
        var lastUserMsgId = lastMessage.userMsgId;
        var lastMessageBody = TextReplace(messageBodyMap[lastMessageId]);
        lastMessageBody = URLReplace(lastMessageBody);
        var att = "";
        if(lastMessage.attachments.length > 0){
            att = '<img src="/images/fujian.png">';
        }
        var toName = lastMessage.toName;
        if(lastMessage.fromUid == UID && (typeof(lastMessage.bccName) != "undefined" && (lastMessage.bccName != null || lastMessage.bccName.length > 0))){
            toName = toName + lastMessage.bccName;
        }
        show = {
            mail_id : lastUserMsgId,
            from_name : lastMessage.fromName,
            to_name : toName,
            mail_subject : lastMessage.subject,
            mail_att : att,
            mail_time : MailFormatDate.format(lastMessage.createDate),
            mail_body : lastMessageBody
        }
        
        str = detailTemplate.evaluate(show);
        MailDetailElement.insert(str);
        $("MailBody_"  + lastUserMsgId).show();
        if(lastMessage.attachments.length > 0){
            $("MailAttachment_" + lastUserMsgId).update();
            if(lastMessage.attachments.length > 0){
                var attText = new Element("div",{
                    "style" : "text_align:left"
                }).update("附件:");
                $("MailAttachment_" + lastUserMsgId).appendChild(attText);
            }
            for(i = 0; i<lastMessage.attachments.length; i++){
                var img = new Element('img', {
                    'src' : '/images/fujian.png'
                });
                $("MailAttachment_" + lastUserMsgId).appendChild(img);
                var attachment = lastMessage.attachments[i];
                var a = new Element('a', {
                    'href' : attachment.filePath,
                    "target" : "_blank"
                }).update(attachment.fileName);
                $("MailAttachment_" + lastUserMsgId).appendChild(a);
                var br = new Element('br');
                $("MailAttachment_" + lastUserMsgId).appendChild(br);
            }
            $("MailAttachment_" + lastUserMsgId).show();
        }
        $("MailFooter_"  + lastUserMsgId).show();
        
        
        if(lastMessage.unRead){
            new Ajax.Request("/Mail.do?action=READ_MESSAGE",{
                method : 'post',
                parameters : {
                    "userMsgId" : lastUserMsgId
                },
                requestHeaders : {
                    Accept: 'application/json'
                },
                onSuccess : function(transport){
                    var json = transport.responseText.evalJSON(true);
                    if(json.RETURN){
                        
                }
                }
            });
        }
        
        if(thread.length >= 2){
            preMessage = thread[thread.length - 2];
            this._MessageActions(folderId, preMessage, lastMessage, messageBodyMap);
        }else{
            this._MessageActions(folderId, null, lastMessage, messageBodyMap);
        }

    },
    _editDraft : function(folderId, message, locationId, composeSrcElement, messageBodyMap){
        MailCompose.createForm(folderId, locationId, composeSrcElement);
        MailComposeAttachmentShow(locationId, message.attachments);
        
        var toAddress = message.toAddress;
        var ccAddress = message.ccAddress;
        if(ccAddress != null && ccAddress.length > 0){
            MailShowCc(locationId);
        }else{
            MailObserveAddCc(locationId);
        }
        var bccAddress = message.bccAddress;
        if(bccAddress != null && bccAddress.length > 0){
            MailShowBcc(locationId);
        }else{
            MailObserveAddBcc(locationId);
        }
        
        var body = messageBodyMap[message.messageId];
        var subject = message.subject;
        var refMsgId = message.messageId;
        
        var subjectElement = $(locationId).select('[id="subject"]')[0];
        subjectElement.setValue(subject);
        var refMsgIdElement = $(locationId).select('[id="refMsgId"]')[0];
        refMsgIdElement.setValue(refMsgId);
        
        var textareaV = $(locationId).select('textarea');
        for(var i=0; i<textareaV.length; i++){
            var textarea = textareaV[i];
            if(textarea.id == "toAddress"){
                textarea.setValue(toAddress);
            }else if(textarea.id == "ccAddress"){
                textarea.setValue(ccAddress);
            }else if(textarea.id == "bccAddress"){
                textarea.setValue(bccAddress);
            }else if(textarea.id == "body"){
                if(typeof messageBodyMap[message.messageId] == "undefined"){
                    new Ajax.Request("/Mail.do?action=GET_MESSAGE",{
                        method : 'post',
                        parameters : {
                            "messageId" : message.messageId,
                            "userMsgId" : message.userMsgId
                        },
                        requestHeaders : {
                            Accept: 'application/json'
                        },
                        onSuccess : function(transport){
                            var json = transport.responseText.evalJSON(true);
                            if(json.RETURN){
                                messageBodyMap[message.messageId] = json.messageBody;
                                body = json.messageBody;
                                textarea.setValue(body);
                            }
                        }
                    });
                }else{
                    textarea.setValue(body);
                }
                
            }
        }
        
    },
    _showOrHideMessage : function(message, messageBodyMap){
        var messageId = message.messageId;
        var userMsgId = message.userMsgId;
        var headerElement = $("MailHeader_" + userMsgId);
        headerElement.observe("click", function(){
            if($("MailBody_" + userMsgId).style.display == "none"){
                $("MailBody_" + userMsgId).show();
                $("MailAttachment_" + userMsgId).show();
                $("MailFooter_" + userMsgId).show();
                $("MailCompose_" + userMsgId).hide();
                $("MailFooterSmall_" + userMsgId).hide();
                
                if(typeof messageBodyMap[messageId] == "undefined"){
                    new Ajax.Request("/Mail.do?action=GET_MESSAGE",{
                        method : 'post',
                        parameters : {
                            "messageId" : messageId,
                            "userMsgId" : userMsgId
                        },
                        requestHeaders : {
                            Accept: 'application/json'
                        },
                        onCreate : function(){
                            
                        },
                        onSuccess : function(transport){
                            var json = transport.responseText.evalJSON(true);
                            if(json.RETURN){
                                $("MailBody_" + userMsgId).update(URLReplace(TextReplace(json.messageBody)));
                                messageBodyMap[messageId] = json.messageBody;
                            }
                        },
                        onComplete : function(){
                            
                        }
                    });
                }else{
                    $("MailBody_" + userMsgId).update(URLReplace(TextReplace(messageBodyMap[messageId])));
                }
            }else{
                $("MailBody_" + userMsgId).hide();
                $("MailAttachment_" + userMsgId).hide();
                $("MailFooter_" + userMsgId).hide();
                $("MailCompose_" + userMsgId).hide();
                $("MailFooterSmall_" + userMsgId).hide();
            }
        });
    },
    _MessageActions : function(folderId, preMessage, message, messageBodyMap){
        var msg_actions = $("MailFooter_"  + message.userMsgId).select("li");
        var re = msg_actions[0];
        var reAll = msg_actions[1];
        var fw = msg_actions[2];
        var del = msg_actions[3];
        
        var locationId = $("MailCompose_"  + message.userMsgId).select('[id="reply"]')[0];
        var composeSrcElement = $("ComposeFormSrc").select('[class="ComposeMail"]')[0];
        
        re.observe("click", function(){
            re.addClassName('current');
            reAll.removeClassName("current");
            fw.removeClassName("current");
            del.removeClassName("current");
            
            MailLoadThreadList._reply(folderId, message, locationId, composeSrcElement, messageBodyMap);
        });
        reAll.observe("click", function(){
            re.removeClassName("current");
            reAll.addClassName('current');
            fw.removeClassName("current");
            del.removeClassName("current");
            
            MailLoadThreadList._replyAll(folderId, message, locationId, composeSrcElement, messageBodyMap);
        });
        fw.observe("click", function(){
            re.removeClassName("current");
            reAll.removeClassName("current");
            fw.addClassName('current');
            del.removeClassName("current");
            
            MailLoadThreadList._forward(folderId, message, locationId, composeSrcElement, messageBodyMap);
        });
        del.observe("click", function(){
            re.removeClassName("current");
            reAll.removeClassName("current");
            fw.removeClassName("current");
            del.removeClassName("current");
            
            MailLoadThreadList._delete(folderId, preMessage, message, messageBodyMap);
        });
        
    },
    _createComposeForm : function(folderId, message, locationId, composeSrcElement){
        var messageId = message.messageId;
        var userMsgId = message.userMsgId;
        MailCompose.createForm(folderId, locationId, composeSrcElement);
        $("MailCompose_"  + userMsgId).show();
        $("MailFooterSmall_" + userMsgId).show();
        
        if(folderId == MAIL_TRASH){
            var warningMsgElement = $(locationId).select('[id="warningMsg"]')[0];
            warningMsgElement.update("您即将发送的这封信不会出现在已发文件夹下");
        }
        
        var bodyElement = $(locationId).select('[id="body"]')[0];
        var toAddressElement = $(locationId).select('[id="toAddress"]')[0];
        var ccAddressElement = $(locationId).select('[id="ccAddress"]')[0];
        var bccAddressElement = $(locationId).select('[id="bccAddress"]')[0];
        var subject = $(locationId).select('[id="subject"]')[0];
        toAddressElement.className = "Input438x40";
        ccAddressElement.className = "Input438x40";
        bccAddressElement.className = "Input438x40";
        subject.className = "Input438";
        bodyElement.className = "textarea438";
        
        var refMsgIdElement = $(locationId).select('[id="refMsgId"]')[0];
        refMsgIdElement.setValue(messageId);
        
    },
    _reply : function(folderId, message, locationId, composeSrcElement, messageBodyMap){
        this._createComposeForm(folderId, message, locationId, composeSrcElement);
        
        var toAddress = message.fromAddress;
        var ccAddress = "";
        var bccAddress = "";
        MailObserveAddCc(locationId);
        MailObserveAddBcc(locationId);
            
        var body = TextareaReplace("\n" + messageBodyMap[message.messageId]);
        var subject = "RE: " + message.subject;
        
        var subjectElement = $(locationId).select('[id="subject"]')[0];
        subjectElement.setValue(subject);
        
        var textareaV = $(locationId).select('textarea');
        for(var i=0; i<textareaV.length; i++){
            var textarea = textareaV[i];
            if(textarea.id == "toAddress"){
                textarea.setValue(toAddress);
            }else if(textarea.id == "ccAddress"){
                textarea.setValue(ccAddress);
            }else if(textarea.id == "bccAddress"){
                textarea.setValue(bccAddress);
            }else if(textarea.id == "body"){
                textarea.setValue("\n\n" + body);
            }
        }
        
    },
    _replyAll : function(folderId, message, locationId, composeSrcElement, messageBodyMap){
        this._createComposeForm(folderId, message, locationId, composeSrcElement);
        
        var toAddress = message.fromAddress;
        var ccAddress = MailFilterMe.filter(message.toAddress + "," + message.ccAddress);
        if(ccAddress != null && ccAddress.length > 0){
            MailShowCc(locationId);
        }else{
            MailObserveAddCc(locationId);
        }
        var bccAddress = "";
        MailObserveAddBcc(locationId);
        var body = TextareaReplace("\n" + messageBodyMap[message.messageId]);
        var subject = "RE: " + message.subject;
        
        var subjectElement = $(locationId).select('[id="subject"]')[0];
        subjectElement.setValue(subject);
        
        var textareaV = $(locationId).select('textarea');
        for(var i=0; i<textareaV.length; i++){
            var textarea = textareaV[i];
            if(textarea.id == "toAddress"){
                textarea.setValue(toAddress);
            }else if(textarea.id == "ccAddress"){
                textarea.setValue(ccAddress);
            }else if(textarea.id == "bccAddress"){
                textarea.setValue(bccAddress);
            }else if(textarea.id == "body"){
                textarea.setValue("\n\n" + body);
            }
        }
        
    },
    _forward : function(folderId, message, locationId, composeSrcElement, messageBodyMap){
        this._createComposeForm(folderId, message, locationId, composeSrcElement);
        MailComposeAttachmentShow(locationId, message.attachments);
        
        var toAddress = "";
        var ccAddress = "";
        var bccAddress = "";
        MailObserveAddCc(locationId);
        MailObserveAddBcc(locationId);
        
        var body = TextareaReplace("\n" + messageBodyMap[message.messageId]);
        var subject = "FW: " + message.subject;
        
        var subjectElement = $(locationId).select('[id="subject"]')[0];
        subjectElement.setValue(subject);
        
        var textareaV = $(locationId).select('textarea');
        for(var i=0; i<textareaV.length; i++){
            var textarea = textareaV[i];
            if(textarea.id == "toAddress"){
                textarea.setValue(toAddress);
            }else if(textarea.id == "ccAddress"){
                textarea.setValue(ccAddress);
            }else if(textarea.id == "bccAddress"){
                textarea.setValue(bccAddress);
            }else if(textarea.id == "body"){
                textarea.setValue("\n\n" + body);
            }
        }
        
    },
    _delete : function(folderId, preMessage, message, messageBodyMap){
        var url = "/Mail.do?action=DELETE_MESSAGE";
        if(folderId == MAIL_TRASH){
            url = "/Mail.do?action=PURGE_MESSAGE";
        }
        new Ajax.Request(url,{
            method : 'post',
            parameters : {
                "userMsgId" : message.userMsgId
            },
            requestHeaders : {
                Accept: 'application/json'
            },
            onCreate : function(){
                
            },
            onSuccess : function(transport){
                var json = transport.responseText.evalJSON(true);
                if(json.RETURN){
                    var div = new Element('div');
                    $("MailFooterSmall_" + message.userMsgId).insert({
                        "after" : div
                    });
                    
                    if(folderId == MAIL_TRASH){
                        MailLoadThreadList._showPreMessage(folderId, preMessage, messageBodyMap);
                        div.update("邮件被彻底删除");
                    }else{
                        MailLoadThreadList._showPreMessage(folderId, preMessage, messageBodyMap);
                        div.update("邮件被移到删除文件夹下");
                    }
                    $("MailHeader_" + message.userMsgId).remove();
                    $("MailBody_" + message.userMsgId).remove();
                    $("MailAttachment_" + message.userMsgId).remove();
                    $("MailFooter_" + message.userMsgId).remove();
                    $("MailCompose_" + message.userMsgId).remove();
                    $("MailFooterSmall_" + message.userMsgId).remove();
                    
                }
            },
            onComplete : function(){
                
            }
        });
        
    },
    _showPreMessage : function(folderId, preMessage, messageBodyMap){
        if(preMessage != null){
            $("MailHeader_" + preMessage.userMsgId).setStyle({
                "cursor":"arrow"
            });
            $("MailHeader_" + preMessage.userMsgId).stopObserving("click");
            
            $("MailBody_" + preMessage.userMsgId).show();
            if($("MailAttachment_" + preMessage.userMsgId).innerHTML != null && $("MailAttachment_" + preMessage.userMsgId).innerHTML != ""){
                $("MailAttachment_" + preMessage.userMsgId).show();
            }
            $("MailFooter_" + preMessage.userMsgId).show();
            
            if(typeof messageBodyMap[preMessage.messageId] == "undefined"){
                new Ajax.Request("/Mail.do?action=GET_MESSAGE", {
                    method : 'post',
                    parameters : {
                        "messageId" : preMessage.messageId,
                        "userMsgId" : preMessage.userMsgId
                    },
                    requestHeaders : {
                        Accept: 'application/json'
                    },
                    onSuccess : function(transport){
                        var json = transport.responseText.evalJSON(true);
                        if(json.RETURN){
                            messageBodyMap[preMessage.messageId] = json.messageBody;
                            $("MailBody_" + preMessage.userMsgId).update(URLReplace(TextReplace(json.messageBody)));
                        }
                    }
                });
            }else{
                $("MailBody_" + preMessage.userMsgId).update(URLReplace(TextReplace(messageBodyMap[preMessage.messageId])));
            }
            
        }
    //        else{
    //            this.showList(folderId);
    //        }
    }
}

var MailFilterMe = {
    filter : function(str){
        var strtmpV = str.split(",");
        strtmpV = strtmpV.without(MyMailAddress);
        
        return strtmpV.join(",");
    }
}

var MailContactsAutoComplete = {
    show : function(element, div, contacts){
        var contactsArray = new Array();
        var allContactsStr = "";
        if(contacts.RETURN){
            var contactsList = contacts.contacts;
            for(var i=0; i<contactsList.length; i++){
                contactsArray[i] = contactsList[i];
                var contactsNameAndScreenName = contactsList[i].mailName + "&lt;" + contactsList[i].mailScreenName + "&gt;";
                if(i == 0){
                    allContactsStr = contactsNameAndScreenName;
                }else{
                    allContactsStr = allContactsStr + ", " + contactsNameAndScreenName;
                }
            }
            new Autocompleter.HengZhi(element, div, contactsArray, allContactsStr, {
                tokens: new Array(',',';','\n'),
                fullSearch: true,
                partialSearch: true
            } );
            
        }
    }
}

Autocompleter.HengZhi = Class.create(Autocompleter.Local, {
    initialize: function(element, update, usersArray, allContactsStr, options) {
        this.baseInitialize(element, update, options);
        this.options.array = usersArray;
        this.options.allContacts = allContactsStr;
    },
    setOptions: function(options) {
        this.options = Object.extend({
            update : this.update,
            choices: 100,
            partialSearch: true,
            partialChars: 1,
            ignoreCase: true,
            fullSearch: false,
            selector: function(instance) {
                var ret       = []; // Beginning matches
                var partial   = []; // Inside matches
                var entry     = instance.getToken();
                var count     = 0;

                for (var i = 0; i < instance.options.array.length &&  
                    ret.length < instance.options.choices ; i++) { 

                    var elemName = instance.options.array[i].mailName;
                    var elemScreenName = instance.options.array[i].mailScreenName;
                    var foundPos = instance.options.ignoreCase ? 
                    elemName.toLowerCase().indexOf(entry.toLowerCase()) :
                    elemName.indexOf(entry);

                    if(foundPos != -1){
                        while (foundPos != -1) {
                            if (foundPos == 0 && elemName.length != entry.length) { 
                                ret.push("<li><b>" + elemName.substr(0, entry.length) + "</b>" +
                                    elemName.substr(entry.length) + "&lt;" + elemScreenName + "&gt;</li>");
                                break;
                            } else if (entry.length >= instance.options.partialChars && 
                                instance.options.partialSearch && foundPos != -1) {
                                if (instance.options.fullSearch || /\s/.test(elemName.substr(foundPos-1,1))) {
                                    partial.push("<li>" + elemName.substr(0, foundPos) + "<b>" +
                                        elemName.substr(foundPos, entry.length) + "</b>" + elemName.substr(
                                            foundPos + entry.length) + "&lt;" + elemScreenName + "&gt;</li>");
                                    break;
                                }
                            }

                            foundPos = instance.options.ignoreCase ? 
                            elemName.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
                            elemName.indexOf(entry, foundPos + 1);

                        }
                    }else{
                        foundPos = instance.options.ignoreCase ? 
                        elemScreenName.toLowerCase().indexOf(entry.toLowerCase()) :
                        elemScreenName.indexOf(entry);
                        while (foundPos != -1) {
                            if (foundPos == 0 && elemScreenName.length != entry.length) { 
                                ret.push("<li>" + elemName + "&lt;<b>" + elemScreenName.substr(0, entry.length) + "</b>" +
                                    elemScreenName.substr(entry.length) + "&gt;</li>");
                                break;
                            } else if (entry.length >= instance.options.partialChars && 
                                instance.options.partialSearch && foundPos != -1) {
                                if (instance.options.fullSearch || /\s/.test(elemScreenName.substr(foundPos-1,1))) {
                                    partial.push("<li>" + elemName + "&lt;" + elemScreenName.substr(0, foundPos) + "<b>" +
                                        elemScreenName.substr(foundPos, entry.length) + "</b>" + elemScreenName.substr(
                                            foundPos + entry.length) + "&gt;</li>");
                                    break;
                                }
                            }

                            foundPos = instance.options.ignoreCase ? 
                            elemScreenName.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
                            elemScreenName.indexOf(entry, foundPos + 1);

                        }
                    }
                }
                //partial.push("<li>&lt;所有联系人&gt;</li>");
                if (partial.length)
                    ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));
                
                
                instance.options.update.scrollTop = 0;
                
                if(ret.length > 10){
                    instance.options.update.addClassName("autocompleteEmail");
                }else{
                    if(instance.options.update.hasClassName("autocompleteEmail")){
                        instance.options.update.removeClassName("autocompleteEmail");
                    }
                }
                return "<ul>" + ret.join('') + "</ul>";
            }
        }, options || { });
    },
    updateElement: function(selectedElement) {
        if(selectedElement.innerHTML == "&lt;所有联系人&gt;"){
            selectedElement.innerHTML = this.options.allContacts;
        }
        if (this.options.updateElement) {
            this.options.updateElement(selectedElement);
            return;
        }
        var value = '';
        if (this.options.select) {
            var nodes = $(selectedElement).select('.' + this.options.select) || [];
            if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
        } else
            value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');

        var bounds = this.getTokenBounds();
        if (bounds[0] != -1) {
            var newValue = this.element.value.substr(0, bounds[0]);
            var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
            if (whitespace)
                newValue += whitespace[0];
            this.element.value = newValue + value + this.element.value.substr(bounds[1]);
        } else {
            this.element.value = value;
        }
        this.oldElementValue = this.element.value;
        this.element.focus();

        if (this.options.afterUpdateElement)
            this.options.afterUpdateElement(this.element, selectedElement);
    }
      
});

var ViewInviteList = {
    _ajax_accept_url : "/Network.do?action=ACCEPT_INNER_INVITATION",
    _ajax_ignore_url : "/Network.do?action=IGNORE_INNER_INVITATION",
    _ajax_accept_invite_request_url : "/Network.do?action=ACCEPT_INVITATION_REQUEST",
    _ajax_ignore_invite_request_url : "/Network.do?action=IGNORE_INVITATION_REQUEST",
    _msg : "wrong_msg",
    _invite_show_div : 'emailContent',
    _invite_action_msg_src : 'invite_action_msg_src',

    accept : function (inviteCode, type, fromName) {
        //        alert("inviteCode = " + inviteCode + " , type" + type);
        var params = new Hash();
        var ajaxReq = null;
        if(type == 0){
            ajaxReq = this._ajax_accept_url;
        }else{
            ajaxReq = this._ajax_accept_invite_request_url;
        }
        params.set("invitecode", inviteCode);
        
        new Ajax.Request(ajaxReq,
        {
            method : "post",
            parameters : params.toQueryString(),
            requestHeaders : { 
                Accept : "application/json"
            },
            
            onCreate: function(){
                $(ViewInviteList._invite_show_div).select('[id="loading"]')[0].show();
            },
            onSuccess : function (transport) {
                var json = transport.responseText.evalJSON( true );
                if ( json.RETURN ) {                    
                    if(type == 0){
                        ViewInviteList._sendAcceptMessage(inviteCode);
                    //$(ViewInviteList._invite_show_div).select('[id="showMsg"]')[0].update('您已经和 ' + fromName +' 交换了名片');
                    }else{
                        $(ViewInviteList._invite_show_div).update($(ViewInviteList._invite_action_msg_src).innerHTML);
                        $(ViewInviteList._invite_show_div).select('[id="showMsg"]')[0].update('您已经和 ' + fromName +' 建立了联系');
                    }
                    
                } else {//alert("rrr");ViewInviteList._sendAcceptMessage();alert("33");
                    $(ViewInviteList._invite_show_div).select('[id="errorMsg"]')[0].update(json.MESSAGE);
                }
            },
            
            onComplete : function () {
                if($(ViewInviteList._invite_show_div).select('[id="loading"]').length > 0){
                    $(ViewInviteList._invite_show_div).select('[id="loading"]')[0].hide();
                }
            }
            
        });
        
    },
    _sendAcceptMessage : function(inviteCode){
        var toScreenName = $F("toScreenName");
        var tomessage = $("message").getValue();
        var ajaxUrl = "/Mail.do?action=SEND_ACCEPT_INNER_INVITE_MESSAGE";
        var params1 = new Hash();
        params1.set("message",tomessage);
        params1.set("toScreenName",toScreenName);
        params1.set("inviteCode",inviteCode);
        new Ajax.Request(ajaxUrl,
        {
            method : "post",
            parameters : {
                "message":tomessage,
                "toScreenName":toScreenName,
                "inviteCode":inviteCode
            },           

            requestHeaders : {
                Accept : "application/json"
            },
            onCreate : function(){   
            },
            onSuccess : function (transport) {
                var json = transport.responseText.evalJSON( true );
                if ( json.RETURN ) {
                    //document.location.href="/mail.jsp";
                    document.location.href="/biz_card_inbox.jsp";
                } else {
                    $(ViewInviteList._invite_show_div).select('[id="errorMsg"]')[0].update(json.MESSAGE);
                }
            },
            onComplete : function () {
            }

        });
    },
    
    ignore : function (inviteCode, type, fromName) {
        var params = new Hash();
        var ajaxReq = null;
        if(type == 0){
            ajaxReq = this._ajax_ignore_url;
        }else{
            ajaxReq = this._ajax_ignore_invite_request_url;
        }
        params.set("invitecode", inviteCode);
        
        new Ajax.Request(ajaxReq,
        {
            method : "post",
            parameters : params.toQueryString(),
            requestHeaders : { 
                Accept : "application/json"
            },
            
            onCreate: function(){
                $(ViewInviteList._invite_show_div).select('[id="loading"]')[0].show();
            },
            onSuccess : function (transport) {
                var json = transport.responseText.evalJSON(true);
                if (json.RETURN) {
                    $(ViewInviteList._invite_show_div).update($(ViewInviteList._invite_action_msg_src).innerHTML);
                    $(ViewInviteList._invite_show_div).select('[id="showMsg"]')[0].update('您已经忽略了 ' + fromName +' 的请求');
                } else {
                    $(ViewInviteList._invite_show_div).select('[id="errorMsg"]')[0].update(json.MESSAGE);
                }
            },
            onComplete : function () {
                if($(ViewInviteList._invite_show_div).select('[id="loading"]').length > 0){
                    $(ViewInviteList._invite_show_div).select('[id="loading"]')[0].hide();
                }
            }
            
        });

    }
}

var SendInvitation = {
    _contend_location_div : 'emailContent',
    
    compose : function(name, screenName){
        MailLeftMenuStyle.setStyle(MAIL_COMPOSE);
        $(this._contend_location_div).update($("template_compose_invite").innerHTML);
        
        
        var toNameElement = $(this._contend_location_div).select('[id="invite_name"]')[0];
        var fromNameElement = $(this._contend_location_div).select('[id="login_user_name"]')[0];
        var subjectElement = $(this._contend_location_div).select('[id="invite_subject"]')[0];
        var message = $(this._contend_location_div).select('[id="invite_message"]')[0];
        var sendButton = $(this._contend_location_div).select('[id="send_invite_button"]')[0];
        var discardButton = $(this._contend_location_div).select('[id="discard_invite_button"]')[0];
        
        toNameElement.setValue(name);
        toNameElement.disable();
        
        fromNameElement.setValue(MYNAME);
        fromNameElement.disable();
        
        subjectElement.setValue("恒知网 | 递名片");
        //shen添加: 内部邀请编辑界面
        message.setValue(name + " 你好,\r\n\r\n\r\n希望能与你互换名片. 我的恒知名片是 www.hengzhi.cc/" + MY_SCREEN_NAME + "\r\n\r\n此致,\r\n\r\n" + MYNAME);
        
        sendButton.observe('click', function(){
            SendInvitation.send(screenName);
        });
        
        discardButton.observe('click', function(){
            history.back(-1);
        })
    },
    
    send : function(screenName){
        //        var toNameElement = $(this._contend_location_div).select('[id="invite_name"]')[0];
        //        var fromNameElement = $(this._contend_location_div).select('[id="login_user_name"]')[0];
        var subjectElement = $(this._contend_location_div).select('[id="invite_subject"]')[0];
        var message = $(this._contend_location_div).select('[id="invite_message"]')[0];
        var param = new Hash();
        param.set("userid", screenName);
        param.set("subject", subjectElement.getValue());
        param.set("message", message.getValue());
        
        new Ajax.Request("/Network.do?action=SEND_INNER_INVITATION", {
            method : 'post',
            parameters : param.toQueryString(),
            requestHeaders : {
                Accept: 'application/json'
            },
            onCreate : function(){
                $(SendInvitation._contend_location_div).select('[id="loading"]')[0].show();
            },
            onSuccess : function(transport){
                var json = transport.responseText.evalJSON(true);
                if (json.RETURN) {
                    MailLoadThreadList.showList(MAIL_OUTBOX);
                } else {
                    $(SendInvitation._contend_location_div).select('[id="errorMsg"]')[0].update(json.MESSAGE);
                }
            },
            onComplete : function(){
                $(SendInvitation._contend_location_div).select('[id="loading"]')[0].hide();
            }
        })
    }
}
