source: trunk/expressoMail1_2/js/abas.js @ 565

Revision 565, 8.0 KB checked in by niltonneto, 15 years ago (diff)

resolve #375

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1var BordersArray = new Array();
2BordersArray[0] = new setBorderAttributes(0);
3
4function setBorderAttributes(ID)
5{
6        this.border_id = "border_id_"+ID;
7        this.sequence = ID;
8}
9
10
11function alternate_border(ID)
12{
13        if (! Element('border_id_'+ID))
14                return false; // Not possible to alternate
15        show_hide_span_paging(ID);
16        Element("footer_menu").style.display = (ID != "0" ? 'none' : '');
17        var len = BordersArray.length;
18        for (var i=0; i < len; i++)
19        {
20                m = document.getElementById(BordersArray[i].border_id);
21                if ((m)&&(m.className == 'menu-sel'))
22                {
23                        m.className = 'menu';
24                        c = document.getElementById("content_id_"+BordersArray[i].sequence);
25                        c.style.display = 'none';
26                        if(Element("font_border_id_"+BordersArray[i].sequence))
27                                Element("font_border_id_"+BordersArray[i].sequence).className = 'font-menu';   
28                        var body = Element('body_'+BordersArray[i].sequence);
29                        if (body)
30                        {
31                                try
32                                {
33                                        if (Element('viewsource_rt_checkbox').checked)
34                                        { 
35                                                connector.loadScript("rich_text_editor");
36                                                RichTextEditor.viewsource(false);
37                                        }
38                                }
39                                catch(e)
40                                {
41                                        //alert(e.message)
42                                }
43                        }
44                }
45        }
46
47        m = Element("border_id_"+ID);
48        if (m)
49                m.className = 'menu-sel';
50        if(Element("font_border_id_" + ID))
51                Element("font_border_id_" + ID).className = 'font-menu-sel';
52        var c = Element("content_id_"+ID)
53        if (c)
54                c.style.display = '';
55
56        body = document.getElementById('body_'+ ID);
57        if (body){
58                try{
59                        if(ID){
60                                connector.loadScript("rich_text_editor");
61                                RichTextEditor.loadEditor(ID);
62                        }
63                        body.contentWindow.document.designMode="on";
64                }
65                catch(e){
66                        //alert(e.message);
67                }
68        }
69
70        // hide the DropDrowContact, if necessary
71        window_DropDownContacts = Element('tipDiv');
72        if ((window_DropDownContacts)&&(window_DropDownContacts.style.visibility != 'hidden')){
73                window_DropDownContacts.style.visibility = 'hidden';
74        }
75
76        if (typeof(ID) == 'number')
77        {
78                current_folder = openBox.tab_folder[ID];
79                numBox=ID;
80        }
81        return ID;
82}
83
84function create_border(borderTitle, id_value)
85{
86        var resize = false;     
87        var offWidth = Element('border_blank').offsetWidth ? Element('border_blank').offsetWidth : Element('border_blank').clientWidth;
88        if (offWidth < 200) {
89                resize = resize_borders();
90                if (!resize){
91                        alert(get_lang('Reached maximum tab limit'));
92                        return false;
93                }
94        }
95        Element("footer_menu").style.display = 'none';
96       
97        if (! id_value) // Is new message?
98                var ID = parseInt(BordersArray[(BordersArray.length-1)].sequence) + 1;
99        else{
100                if (Element("border_id_"+id_value)){ // It's opened already!
101                        alternate_border(id_value);
102                        return false;
103                        }
104               
105                if (typeof(id_value) == 'string')
106                        for (var bord = 1; bord <= 10; bord++)
107                                if (newMessageTab.imapUid[bord] == id_value.substr(0,id_value.length-2)){
108                                        alternate_border(bord); // It's opened already! (in a new message)
109                                        return false;
110                                }
111
112               
113                var ID = id_value;
114                if (Element("border_id_"+id_value+"_r")) // Edit message? if yes treat like new in dragdrop case
115                                        var id_value = null;
116        }
117       
118        td = document.createElement("TD");
119        td.id="border_id_" + ID;
120        if(resize) {
121                td.setAttribute("width", parseInt(resize)+"px");
122                td.style.width = parseInt(resize)+"px";
123        }
124        else
125                td.setAttribute("width", "200px");
126               
127        td.className = "menu";
128        td.setAttribute("align", "right");
129        td.onclick = function(){alternate_border(ID);};
130        td.setAttribute("noWrap","true");
131        var subject = borderTitle;
132       
133        borderTitle = borderTitle ?  borderTitle : id_value ? get_lang("No Subject") : "&nbsp;" ;
134        td.value = borderTitle;
135        if (borderTitle.length > 21){
136                borderTitle = borderTitle.substring(0,21) + "...";
137        }
138       
139        if (resize)
140                borderTitle = borderTitle.substring(0, resize*0.08);
141               
142        td.innerHTML = "<table width=100% border=0 cellspacing=0 cellpadding=0><tr><td id=font_border_id_" + ID+" class='font-menu' width=*>" + borderTitle + "</td><td width=1px><img onmousedown='javascript:return false' style='cursor:pointer' onclick=delete_border('" + ID + "','false') src='templates/default/images/close_button.gif'></td></tr></table>";
143
144        bb = document.getElementById("border_blank");
145        parent_bb = bb.parentNode; //Pego o tbody
146        parent_bb.insertBefore(td, bb);
147       
148        if((typeof(id_value) == 'string') && id_value.match(/_r$/))     
149                _dragArea.makeDragged(td, id_value,td.value);
150
151        BordersArray[BordersArray.length] = new setBorderAttributes(ID);
152       
153        var div = document.createElement("DIV");
154        div.id = "content_id_" + ID;
155        div.className = "conteudo";
156        div.style.display='';
157
158        var bar = document.getElementById("toolbar");
159        var offset = 0;
160        if(bar.style.visibility != 'hidden')
161                offset = bar.offsetHeight ? bar.offsetHeight :  bar.clientHeight;
162               
163        div.style.height = document.body.clientHeight - offset - (is_ie ? 76 : 86);
164        div.style.overflow = "hidden";
165
166        if(!is_ie) {
167                var menuHidden = Element("folderscol").style.display == 'none' ? true : false;
168                var defaultWidth = document.body.clientWidth - 27;
169                if(!menuHidden)
170                        defaultWidth -= Element("folderscol").offsetWidth;
171
172                div.style.width = defaultWidth;
173//              div.style.width ="99.3%";
174        }
175        document.getElementById("exmail_main_body").appendChild(div);
176        alternate_border(ID);
177       
178        return ID;
179}
180
181function resize_borders()
182{
183        var children;
184        var     numBorders = 0;
185        var widthTD = 0;
186        var newWidthTD = 0;             
187        children = Element('border_tr').childNodes;     
188        for (var i=0; i<children.length; i++) {
189                if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')) {
190                        numBorders++;
191                        if(!widthTD)
192                                widthTD = children[i].clientWidth;                             
193                }
194        }
195        if (numBorders > 8)
196                return false;
197       
198        newWidthTD = ((numBorders*widthTD)+(Element("border_blank").clientWidth-20))/(numBorders+1);
199        for (var i=0; i<children.length; i++) {
200                if ((children[i].nodeName === 'TD') && (children[i].id!=='border_id_0') && (children[i].id!=='border_blank')){
201                        children[i].style.width = newWidthTD;
202                        Element("font_"+children[i].id).innerHTML = Element("font_"+children[i].id).innerHTML.substring(0, newWidthTD*0.08);
203                }
204        }
205        return newWidthTD;
206}
207
208function delete_border(ID, msg_sent)
209{
210        if(!ID)
211                return false;
212
213        Element("border_id_" + ID).onclick = null;
214
215        if (msg_sent == 'false')
216        {
217                var body = document.getElementById('body_'+ ID);
218                if (body)
219                {
220                        try
221                        {
222                                var save_link = Element("save_message_options");
223                                if (newMessageTab.toPreserve[ID] == undefined)
224                                        newMessageTab.toPreserve[ID] = false;
225                                if ((! newMessageTab.toPreserve[ID] && ! ID.match("_r")) || (body.contentWindow.document.designMode.toLowerCase() == 'on') && (save_link.onclick != ''))
226                                {
227                                        var discard_msg = confirm(get_lang("Your message has not been sent. Discard your message?"), "");
228                                        if (!discard_msg)
229                                        {
230                                                return;
231                                        }
232                                        else
233                                        {
234                                                if (newMessageTab.imapBox[ID] && !newMessageTab.toPreserve[ID]){
235                                                        delete_msgs(newMessageTab.imapBox[ID], newMessageTab.imapUid[ID].toString(), 0)
236                                                        delete(newMessageTab.imapBox[ID]);
237                                                        newMessageTab.toPreserve[ID] = false;
238                                                        }
239                                                        //cExecute ("$this.imap_functions.delete_msgs&folder="+newMessageTab.imapBox[ID]+"&msgs_number="+newMessageTab.imapUid[ID],function(data){ return });
240                                                Element('to_'+ID).focus();
241                                        }
242                                }
243                        }
244                        catch(e){
245                                //alert(e.message);
246                        }
247                }
248        }
249
250        newMessageTab.toPreserve[ID] = false;
251        newMessageTab.imapUid[ID] = 0;
252
253        hold_session = false;
254        for (i=0;i<BordersArray.length;i++)
255        {
256                m = document.getElementById(BordersArray[i].border_id);
257                if ((m) && (m.className == 'menu-sel'))
258                        border_selected = BordersArray[i].border_id;
259        }
260       
261        if ('border_id_' + ID == border_selected)
262        {
263                if (BordersArray[i-2].sequence == ID)
264                        this.alternate_border(0);
265                else
266                        this.alternate_border(BordersArray[i-2].sequence);
267        }
268
269        // Remove TD, title
270        border = Element('border_id_' + ID);
271        border.parentNode.removeChild(border);
272        // Remove Div Content
273        content = Element('content_id_' + ID);
274        content.parentNode.removeChild(content);
275       
276        var new_BordersArray = new Array();
277        j = 0;
278        for (i=0;i<BordersArray.length;i++)
279        {
280                if (Element(BordersArray[i].border_id) != null){
281                        new_BordersArray[j] = BordersArray[i];
282                        j++;   
283                }
284        }
285        if(j == 1)
286                Element("footer_menu").style.display = '';
287        BordersArray = new_BordersArray;
288        return true;
289}
Note: See TracBrowser for help on using the repository browser.