<%@ page buffer="8kb" autoFlush="true" %>
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="zm" uri="com.zimbra.zm" %>
<%@ taglib prefix="mo" uri="com.zimbra.mobileclient" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="com.zimbra.i18n" %>
<c:set var="context_url" value="${requestScope.baseURL!=null?requestScope.baseURL:'zmain'}"/>
<c:set var="caction" value="${sessionScope.prevUrl}"/>
<c:choose>
<c:when test="${not empty prevUrl}">
    <c:set var="bt" value="${fn:replace(fn:substringAfter(prevUrl,'?'),'&','|')}"/>
    <c:url var="caction" value='${prevUrl}'/>
</c:when>
<c:when test="${not empty param.bt}">
    <c:set var="bt" value="${param.bt}"/>
    <c:url var="caction" value='${context_url}?${fn:replace(param.bt,"|","&")}'/>
</c:when>
<c:when test="${empty prevUrl  && empty param.bt && not empty header['referer']}">
    <c:set var="caction" value='${header["referer"]}'/>
    <c:set var="bt"
           value="${fn:replace(fn:replace(fn:substringAfter(header['referer'],'?'),'appmsg=messageSent',''),'&','|')}"/>
</c:when>
<c:when test="${empty prevUrl}">
    <c:set var="caction" value='${context_url}'/>
    <c:set var="bt" value="${fn:replace(context_url,'&','|')}"/>
</c:when>
</c:choose>
<c:if test="${!fn:containsIgnoreCase(caction, '_back=1')}">
<c:url value="${caction}" var="caction">
    <c:param name="_back" value="1"/>
</c:url>
</c:if>
<c:if test="${not empty param.contactId}">
    <c:set var="caction" value="${'zmain?id='}${param.contactId}${'&action=view&st=contact'}" />
</c:if>
<mo:handleError>
    <c:set var="context_url" value="${requestScope.baseURL != null ? requestScope.baseURL : 'zmain'}"/>
    <zm:getMailbox var="mailbox"/>
    <c:choose>
        <c:when test="${not empty mailbox.prefs.locale}">
            <fmt:setLocale value='${mailbox.prefs.locale}' scope='request'/>
        </c:when>
        <c:otherwise>
            <fmt:setLocale value='${pageContext.request.locale}' scope='request'/>
        </c:otherwise>
    </c:choose>
    <fmt:setBundle basename="/messages/ZhMsg" scope="request"/>
    <fmt:message var="title" key="compose"/>
    <zm:composeUploader var="uploader"/>
    <c:set var="compose" value="${uploader.compose}"/>
    <c:choose>
        <c:when test="${!empty param.id or !empty compose.draftId or !empty requestScope.draftid}">
            <c:choose>
                <c:when test="${!empty compose.draftId or !empty requestScope.draftid}">
                    <zm:getMessage var="message"
                                   id="${empty requestScope.draftid ? compose.draftId : requestScope.draftid}"
                                   wanthtml="${false}"/>
                </c:when>
                <c:otherwise>
                    <zm:getMessage var="message" id="${param.id}" part="${param.part}" wanthtml="${false}"/>
                </c:otherwise>
            </c:choose>
        </c:when>
        <c:otherwise>
            <c:set var="message" value="${null}"/>
        </c:otherwise>
    </c:choose>
    <c:choose>
        <c:when test="${empty compose }">
            <zm:messageCompose var="compose" message="${message}" action="${message.isDraft ? 'draft' : param.op}" ismobile="true"/>
        </c:when>
        <c:when test="${uploader.isUpload and !empty message}">
            <zm:fixupMessageCompose message="${message}" compose="${compose}"
                                    newattachments="${uploader.compose.hasFileItems or not empty uploader.compose.uploadedAttachment
                                                        or uploader.isDraft}"/>
        </c:when>
    </c:choose>
    <c:set var="subject" value="${compose.subject}"/>
    <c:if test="${not empty param.messageAttachments}">
        <%--
            If there are more than one message attachments, default mail subject should be set to Fwd:
        --%>
        <c:set var="subject" value="Fwd: "/>
        <%--
            In case of a single message attachment, the mail subject should be Fwd:<previous subject>
        --%>
        <c:set var="msgAttach" value="${fn:split(param.messageAttachments, ',')}"/>
        <c:if test="${fn:length(msgAttach) eq 1}">
            <c:set var="msgAttachId" value="${msgAttach[0]}"/>
            <zm:getMessage var="ma" id="${msgAttachId}"/>
            <c:set var="subject" value="Fwd: ${ma.subject}"/>
        </c:if>
    </c:if>
</mo:handleError>
<c:set var="title" scope="request" value="${title}"/><c:set var="focusField" value="${param.op eq 'reply' or param.op eq 'replyAll' ? 'bodyField' : 'toField'}"/><c:set var="nmail" value="st=newmail"/>
<form action="?${nmail}&bt=${zm:cook(bt)}" method="post" enctype="multipart/form-data" accept-charset="utf-8" onsubmit="return submitForm(this,'aniframe');">
<input type="hidden" name="crumb" value="${fn:escapeXml(mailbox.accountInfo.crumb)}"/><%-- TOP TOOLBAR --%>
<c:choose>
    <c:when test="${ua.isiPad == true}">
    <div class="composeToolbar">
        <div class="compose button"><span><input class='zo_button' name="actionSend" type="submit" value="<fmt:message key="send"/>"></span></div>

        <div class="compose button"><span><input class='zo_button' name="actionDraft" type="submit" value="<fmt:message key="save"/>"></span></div>

        <div class="buttonRight button" onclick="return toggleCompose('compose-pop','veil');"><span><fmt:message key="cancel"/></span></div>
    </div>
    </c:when>
    <c:otherwise>
    <div class="tbl tb"><div class="tr"><div class="td">
        <span class='zo_tb_submit'><a href="${zm:cook(caction)}" class="zo_button"><fmt:message key="cancel"/></a></span>
        <span>
           <span class="zo_tb_submit"><input class='zo_button' name="actionDraft" type="submit" value="<fmt:message key="save"/>"></span>
           <span class="zo_tb_submit"><input class='zo_button' name="actionSend" type="submit" value="<fmt:message key="send"/>"></span>
        </span>
    </div></div></div>
    </c:otherwise>
</c:choose>
<div class="Stripes cmp_container <c:if test="${ua.isiPad == true}">composeFields</c:if>">

<c:if test="${ua.isiPad == true}">
        <c:choose>
			<c:when test="${not empty param.appmsg}"><c:set var="statusMessage" value="${fn:escapeXml(param.appmsg)}"/>
            	<c:set var="statusClass" value="Info"/>
            	<div class="container tbl" id="msgDiv" onclick="return toggleElem(this);"><div id='statusdiv' class="tbl StatusInfo"><span  class='td aleft'><fmt:message key="${fn:escapeXml(param.appmsg)}"/></span><span class='SmlIcnHldr aright right Cancel'></span></div></div>
        	</c:when>
        	<c:when test="${not empty requestScope.statusMessage}">
            	<c:set var="statusMessage" value="${fn:escapeXml(requestScope.statusMessage)}"/>
            	<c:set var="statusClass" value="${requestScope.statusClass}"/>
            	<div class="container tbl" id="msgDiv" onclick="return toggleElem(this);"><div id='statusdiv' class="tbl ${requestScope.statusClass}"><span class="td aleft">${fn:escapeXml(requestScope.statusMessage)}</span><span class='SmlIcnHldr aright Cancel'></span></div></div>
        	</c:when>
		</c:choose>
</c:if>

<div class="View" style="overflow:visible">
<div class="tbl cmp_from_to_cc_table">
    <c:if test="${fn:length(mailbox.accountInfo.identities) gt 1 }"><c:set value="nr" var="classForNextRow"/><div class="tr cmp_from_row">
            <span class='td label'><label for="fromField"><fmt:message key="fromLabel"/></label></span>
            <span class="td value">
                <select id="fromField" name="from" style="width:98% !important;">
                <c:forEach var="identity" items="${mailbox.accountInfo.identities}"><option <c:if test="${identity.isDefault}">selected='true'</c:if> value="${fn:escapeXml(identity.fromEmailAddress.fullAddressQuoted)}">${zm:truncateFixed(fn:escapeXml(identity.fromEmailAddress.fullAddressQuoted),50,true)}</option></c:forEach>
                </select>
            </span>
    
    </div></c:if>
    <div class="tr ${classForNextRow}"><c:set value="nr" var="classForNextRow"/>
        <span class='label td'>
            <label for="toField"><fmt:message key="toLabel"/> </label>
            <span><a href="javascript:void(0);" onclick="return toggleElem('cc_bcc_div',this,'&nbsp;','<fmt:message key="ccbcc"/>');"><fmt:message key="ccbcc"/></a></span>
        </span>
        <span class="td value">
            <div class="ZhAC ZhACTo">
                <input id="toField" type="text" rows="1" autocorrect="off" autocomplete="OFF" name="to" class="Textarea" value="${fn:escapeXml(compose.to)}"/><br/><div class='ZhACCont' id="toContainer" style='width:99%;top:1.5em;'></div>
            </div>
        </span>
    </div>
</div>
<div class="tbl" id="cc_bcc_div" style="display:none;"><div class="tr ${classForNextRow}">
    <span class="label td"><label for="ccField"><fmt:message key="ccLabel"/> </label></span>
    <span class="td value">
        <div class="ZhAC ZhACCc">
            <input class="Textarea" autocorrect="off" autocomplete="OFF" id="ccField" type="text" value="${fn:escapeXml(compose.cc)}" name="cc"><br/><div class='ZhACCont' id="ccContainer" style='width:99%;'></div>
        </div>
    </span>
</div><div class="tr ${classForNextRow}">
    <span class="label td"><label for="bccField"><fmt:message key="bccLabel"/> </label></span>
    <span class="td value">
        <div class="ZhAC ZhACBCc">
            <input class="Textarea" autocorrect="off" autocomplete="OFF" id="bccField" type="text" value="${fn:escapeXml(compose.bcc)}" name="bcc"><br/><div class='ZhACCont' id="bccContainer" style='width:99%;'></div>
        </div>
    </span>
</div></div></div>
<div class="View"><div class="tbl"><div class="tr cmp_sub_row">
    <span class='label td nb'><label for="subjectField"><fmt:message key="subjectLabel"/> </label></span>
    <span class="td nb value"><input class="Textarea" type="text" name="subject" id="subjectField" value="${fn:escapeXml(subject)}"></span>
</div></div></div>
<c:set var="firstAttachment" value="${true}"/>
<c:if test="${!empty compose.messageAttachments}">
<div class="View"><div class="tbl">
        <c:forEach var="ma" items="${zm:cook(compose.messageAttachments)}" varStatus="status">
        <div class="tr ${status.index gt 0 ? 'nr':''} cmp_msg_att_row"><span class="td"><span class="SmlIcnHldr Attachment">&nbsp;</span>
                <c:choose>
                    <c:when test="${empty ma.subject}"><fmt:message var="subj" key="noSubject"/></c:when>
                    <c:otherwise><c:set var="subj" value="${zm:truncate(ma.subject,100,true)}"/></c:otherwise>
                </c:choose>
                <div style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100px;">${fn:escapeXml(subj)}</div>
                <input type="hidden" name="messageAttachment" value="${ma.id}:${fn:escapeXml(ma.subject)}"/>
            </span></div>
        </c:forEach>
</div></div></c:if>
<c:if test="${!empty param.messageAttachments}"><div class="View"><div class="tbl">
    <c:forEach var="id" items="${zm:cook(param.messageAttachments)}" varStatus="status">
        <%--Fetch the message, get the attachment subject --%>
        <zm:getMessage var="ma" id="${id}"/>
        <div class="tr ${status.index gt 0 ? 'nr':''} cmp_msg_att_row">
            <span class="td"><span class="Img ImgEnvelope">&nbsp;</span>
                <c:choose>
                    <c:when test="${empty ma.subject}"><fmt:message var="subj" key="noSubject"/></c:when>
                    <c:otherwise><c:set var="subj" value="${zm:truncate(fn:replace(ma.subject,'_$',':'),100,true)}"/></c:otherwise>
                </c:choose>
                <span style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">${fn:escapeXml(subj)}</span>
                <input type="hidden" name="messageAttachment" value="${ma.id}:${fn:escapeXml(subj)}"/>
             </span>
        </div>
    </c:forEach>
</div></div></c:if>
<c:if test="${!empty compose.documentAttachments}"><div class="View"><div class="tbl">
            <c:forEach var="doc" items="${zm:cook(compose.documentAttachments)}" varStatus="status">
            <div class="tr ${status.index gt 0 ? 'nr':''} cmp_msg_att_row">
                <span class="td"><span class="SmlIcnHldr Attachment">&nbsp;</span>
                    <c:choose>
                        <c:when test="${empty doc.subject}"><fmt:message var="subj" key="noSubject"/></c:when>
                        <c:otherwise><c:set var="subj" value="${zm:truncate(doc.subject,100,true)}"/></c:otherwise>
                    </c:choose>
                    ${fn:escapeXml(subj)}
                    <input type="hidden" name="documentAttachment" value="${doc.id}:${fn:escapeXml(doc.subject)}"/>
                </span>
            </div></c:forEach>
</div></div></c:if>
<c:if test="${!empty param.documentAttachments}"><div class="View"><div class="tbl">
    <c:forEach var="docId" items="${zm:cook(param.documentAttachments)}" varStatus="status">
        <%--Fetch the document, get the document subject --%>
        <zm:getDocument var="doc" id="${docId}"/>
        <div class="tr ${status.index gt 0 ? 'nr':''} cmp_msg_att_row">
            <span class="td"><span class="Img ImgAttachment">&nbsp;</span>
                <c:choose>
                    <c:when test="${empty doc.name}"><fmt:message var="subj" key="noSubject"/></c:when>
                    <c:otherwise><c:set var="subj" value="${zm:truncate(doc.name,100,true)}"/></c:otherwise>
                </c:choose>
                ${fn:escapeXml(subj)}
                <input type="hidden" name="documentAttachment" value="${doc.id}:${fn:escapeXml(subj)}"/>
             </span>
        </div>
    </c:forEach>
</div></div></c:if>
<c:if test="${!empty compose.originalAttachments}">
<div class="View cmp_att_table">
<c:forEach var="part" items="${compose.originalAttachments}" varStatus="status">
    <mo:attachment
        firstAttachment="${firstAttachment}"
        index="${status.index}"
        url="/service/home/~/?id=${message.id}&part=${part.partName}&auth=co"
        displayName="${part.displayName}"
        contentType="${part.contentType}"
        checked="${compose.checkedAttachmentNames[part.partName]}"
        displaySize="${zm:displaySize(pageContext,part.size)}"
        value="${part.partName}" name="originalAttachment"/>
    <c:set var="firstAttachment" value="${false}"/>
</c:forEach>
</div></c:if>
<c:if test="${(!empty param.attachId) and (!empty param.attachUrl) and (!empty param.attachName)}"><div class="View cmp_att_table">
        <mo:attachment firstAttachment="${firstAttachment}" url="${param.attachUrl}"
            index="${status.index}"
            displayName="${param.attachName}"
            checked="true"
            value="${zm:cook(param.attachId)}" name="uploadedAttachment"/>
</div></c:if>
<div class="View cmp_body value">
    <textarea class="Textarea" id="bodyField" <c:if test="$(ua.isiPad == false)"> rows="20"</c:if> name="body">${fn:escapeXml(compose.content)}</textarea>
    <input type="hidden" id="bodyText" class='MsgCompose' name="bodyText" value="" />
 </div>
</div>
<%-- BOTTOM TOOLBAR --%>
<c:if test="${ua.isiPad == false}">
<div class="tbl tb"><div class="tr"><div class="td">
    <span class='zo_tb_submit'><a href="${zm:cook(caction)}" class="zo_button"><fmt:message key="cancel"/></a></span>
    <span>
       <span class="zo_tb_submit"><input class='zo_button' name="actionDraft" type="submit" value="<fmt:message key="save"/>"></span>
       <span class="zo_tb_submit"><input class='zo_button' name="actionSend" type="submit" value="<fmt:message key="send"/>"></span>
    </span>
</div></div></div>
</c:if>    
<input type="hidden" name="sendUID" value="${fn:escapeXml(compose.sendUID)}"/>
<input type="hidden" name="replyto" value="${fn:escapeXml(compose.replyTo)}"/>
<input type="hidden" name="from" value="${fn:escapeXml(compose.from)}"/>
<input type="hidden" name="inreplyto" value="${fn:escapeXml(compose.inReplyTo)}"/>
<input type="hidden" name="messageid" value="${fn:escapeXml(compose.messageId)}"/>
<input type="hidden" name="compNum" value="${fn:escapeXml(compose.compNum)}"/>
<input type="hidden" name="instCompNum" value="${fn:escapeXml(compose.instanceCompNum)}"/>
<input type="hidden" name="replytype" value="${fn:escapeXml(compose.replyType)}"/>
<input type="hidden" name="inviteReplyVerb" value="${fn:escapeXml(compose.inviteReplyVerb)}"/>
<input type="hidden" name="inviteReplyInst" value="${fn:escapeXml(compose.inviteReplyInst)}"/>
<input type="hidden" name="inviteReplyAllDay" value="${fn:escapeXml(compose.inviteReplyAllDay)}"/>
<c:if test="${not empty param.contactId}">
    <input type="hidden" name="contactId" value="${fn:escapeXml(param.contactId)}" />
</c:if>
<c:if test="${zm:boolean(message.isDraft)}"><input type="hidden" name="draftid" value="${message.id}"/></c:if>
</form>
<c:if test="${not empty requestScope.compAction and ua.isiPad eq true}">
<script type="text/javascript"><c:set var="js">
//This code runs from the ajax response
var nojs = false;
if(window != parent){
    var d = document.getElementById('statusdiv');
    var msg = (d) ? d.innerHTML : null;
    if (msg != null) {
        parent.showLoadingMsg(null, false);
        if(d.className && d.className.indexOf("Status") > -1){
            parent.ZmiPadMail.processPostComposeAction(document.getElementById('msgDiv').innerHTML, "${requestScope.compAction}",document.getElementById('pAjax').innerHTML, self.frameElement.id);nojs = true;
        }else{
            nojs = true;
        }
    }
}
</c:set>${dbg ? js : zm:yuiCompress(js, 'js')}</script>
</c:if>
<c:if test="${empty param.isinframe and empty requestScope.compAction}">
	<script type="text/javascript">AC("toField","toContainer");AC("ccField","ccContainer");AC("bccField","bccContainer");
//  bug:99598 - workaround for an iOS8 bug, do not auto focus for iOS devices
    if (!/iPad|iPhone|iPod/g.test(navigator.userAgent)) {
        $('${param.op eq 'reply' || param.op eq 'replyAll' ? 'bodyField' : 'toField'}').focus();
    }
    </script>
</c:if>