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

Revision 320, 7.4 KB checked in by niltonneto, 16 years ago (diff)

Versionamento 1.222
Ver changelog de alterações no Trac.

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