source: sandbox/2.3-MailArchiver/contactcenter/js/ccAux.js @ 6779

Revision 6779, 9.7 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1  /***************************************************************************\
2  * eGroupWare - Contacts Center                                              *
3  * http://www.egroupware.org                                                 *
4  * Written by:                                                               *
5  *  - Raphael Derosso Pereira <raphaelpereira@users.sourceforge.net>         *
6  *  - Jonas Goes <jqhcb@users.sourceforge.net>                               *
7  *  sponsored by Thyamad - http://www.thyamad.com                            *
8  * ------------------------------------------------------------------------- *
9  *  This program is free software; you can redistribute it and/or modify it  *
10  *  under the terms of the GNU General Public License as published by the    *
11  *  Free Software Foundation; either version 2 of the License, or (at your   *
12  *  option) any later version.                                               *
13  \***************************************************************************/
14
15/***********************************************\
16*               INITIALIZATION                  *
17\***********************************************/
18if (document.all)
19{
20        navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
21        is_ie = true;
22        is_moz1_6 = false;
23        is_mozilla = false;
24        is_ns4 = false;
25}
26else if (document.getElementById)
27{
28        navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
29        is_ie = false;
30        is_ie5 = false;
31        is_mozilla = true;
32        is_ns4 = false;
33}
34else if (document.layers)
35{
36        is_ie = false;
37        is_ie5 = false
38        is_moz1_6 = false;
39        is_mozilla = false;
40        is_ns4 = true;
41}
42
43/***********************************************\
44 *                DATA FUNCTIONS               *
45\***********************************************/
46function randomString() {
47        var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
48        var string_length = 4;
49        var randomstring = '';
50        for (var i=0; i<string_length; i++) {
51                var rnum = Math.floor(Math.random() * chars.length);
52                randomstring += chars.substring(rnum,rnum+1);
53        }
54        return randomstring;
55}
56
57function serialize(data)
58{
59        var f = function(data)
60        {
61                var str_data;
62
63                if (data == null ||
64                        (typeof(data) == 'string' && data == ''))
65                {
66                        str_data = 'N;';
67                }
68
69                else switch(typeof(data))
70                {
71                        case 'object':
72                                var arrayCount = 0;
73
74                                str_data = '';
75
76                                for (i in data)
77                                {
78                                        if (i == 'length')
79                                        {
80                                                continue;
81                                        }
82                                       
83                                        arrayCount++;
84                                        switch (typeof(i))
85                                        {
86                                                case 'number':
87                                                        str_data += 'i:' + i + ';' + serialize(data[i]);
88                                                        break;
89
90                                                case 'string':
91                                                        str_data += 's:' + i.length + ':"' + i + '";' + serialize(data[i]);
92                                                        break;
93
94                                                default:
95                                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
96                                                        break;
97                                        }
98                                }
99
100                                if (!arrayCount)
101                                {
102                                        str_data = 'N;';       
103                                }
104                                else
105                                {
106                                        str_data = 'a:' + arrayCount + ':{' + str_data + '}';
107                                }
108                               
109                                break;
110               
111                        case 'string':
112                                str_data = 's:' + data.length + ':"' + data + '";';
113                                break;
114                               
115                        case 'number':
116                                str_data = 'i:' + data + ';';
117                                break;
118
119                        case 'boolean':
120                                str_data = 'b:' + (data ? '1' : '0') + ';';
121                                break;
122
123                        default:
124                                showMessage(Element('cc_msg_err_serialize_data_unknown').value);
125                                return null;
126                }
127
128                return str_data;
129        }
130
131        var sdata = f(data);
132        return sdata;
133}
134
135function unserialize(str)
136{
137        var f = function (str)
138        {
139                switch (str.charAt(0))
140                {
141                        case 'a':
142                               
143                                var data = new Array();
144                                var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );
145                                var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));
146                       
147                                for (var i = 0; i < n; i++)
148                                {
149                                        var pos = 0;
150
151                                        /* Process Index */
152                                        var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);
153                                        var index = unserialize(indexStr);
154                                        pos = arrayContent.indexOf(';', pos)+1;
155                                       
156                                        /* Process Content */
157                                        var part = null;
158                                        switch (arrayContent.charAt(pos))
159                                        {
160                                                case 'a':
161                                                        var pos_ = matchBracket(arrayContent, arrayContent.indexOf('{', pos))+1;
162                                                        part = arrayContent.substring(pos, pos_);
163                                                        pos = pos_;
164                                                        data[index] = unserialize(part);
165                                                        break;
166                                       
167                                                case 's':
168                                                        var pval = arrayContent.indexOf(':', pos+2);
169                                                        var val  = parseInt(arrayContent.substring(pos+2, pval));
170                                                        pos = pval + val + 4;
171                                                        data[index] = arrayContent.substr(pval+2, val);
172                                                        break;
173
174                                                default:
175                                                        part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);
176                                                        pos = arrayContent.indexOf(';', pos)+1;
177                                                        data[index] = unserialize(part);
178                                                        break;
179                                        }
180                                        arrayContent = arrayContent.substr(pos);
181                                }
182                                break;
183                               
184                        case 's':
185                                var pos = str.indexOf(':', 2);
186                                var val = parseInt(str.substring(2,pos));
187                                var data = str.substr(pos+2, val);
188                                str = str.substr(pos + 4 + val);
189                                break;
190
191                        case 'i':
192                        case 'd':
193                                var pos = str.indexOf(';');
194                                var data = parseInt(str.substring(2,pos));
195                                str = str.substr(pos + 1);
196                                break;
197                       
198                        case 'N':
199                                var data = null;
200                                str = str.substr(str.indexOf(';') + 1);
201                                break;
202
203                        case 'b':
204                                var data = str.charAt(2) == '1' ? true : false;
205                                break;
206                }
207               
208                return data;
209        }
210
211        return f(str);
212}
213
214function matchBracket(strG, iniPosG)
215{
216        var f = function (str, iniPos)
217        {
218                var nOpen, nClose = iniPos;
219                var startIn = nClose + 1;
220
221                do
222                {
223                        startIn = nClose + 1;
224                        do
225                        {
226                                nOpen = str.indexOf( '{', startIn );
227                                var escapeEndIn = str.indexOf( '";', nOpen + 1 );
228                                var escapeBeginIn = str.indexOf( ':"', nOpen + 1 );
229                                if ( escapeEndIn < escapeBeginIn )
230                                        startIn = nOpen + 1;
231                        }
232                        while ( escapeEndIn < escapeBeginIn );
233
234                        startIn = nClose + 1;
235                        do
236                        {
237                                nClose = str.indexOf( '}', startIn );
238                                var escapeEndIn = str.indexOf( '";', nClose + 1 );
239                                var escapeBeginIn = str.indexOf( ':"', nClose + 1 );
240                                if ( escapeEndIn < escapeBeginIn )
241                                        startIn = nClose + 1;
242                        }
243                        while ( escapeEndIn < escapeBeginIn );
244
245                        if (nOpen == -1)
246                        {
247                                return nClose;
248                        }
249
250                        if (nOpen < nClose )
251                        {
252                                nClose = matchBracket(str, nOpen);
253                        }
254
255                } while (nOpen < nClose);
256
257                return nClose;
258        }
259
260        return f(strG, iniPosG);
261}
262
263/***********************************************\
264*               AUXILIAR FUNCTIONS              *
265\***********************************************/
266
267function resizeIcon(id, action)
268{
269        var element = Element(id);
270       
271        if (action == 0)
272        {
273                CC_old_icon_w = element.style.width;
274                CC_old_icon_h = element.style.height;
275
276                element.style.zIndex = parseInt(element.style.zIndex) + 1;
277                element.style.width = '36px';
278                element.style.height = '36px';
279                element.style.top = (parseInt(element.style.top) - parseInt(element.style.height)/2) + 'px';
280                element.style.left = (parseInt(element.style.left) - parseInt(element.style.width)/2) + 'px';
281        }
282        else if (action == 1)
283        {
284                element.style.zIndex = parseInt(element.style.zIndex) - 1;
285                element.style.top = (parseInt(element.style.top) + parseInt(element.style.height)/2) + 'px';
286                element.style.left = (parseInt(element.style.left) + parseInt(element.style.width)/2) + 'px';
287                element.style.width = CC_old_icon_w;
288                element.style.height = CC_old_icon_h;
289        }
290}
291
292function Element (element)
293{
294        /* IE OBJECTS */
295        if (document.all)
296        {
297                return document.all[element];
298        }
299        /* MOZILLA OBJECTS */
300        else if (document.getElementById)
301        {
302                return document.getElementById(element);
303        }
304        /* NS4 OBJECTS */
305        else if (document.layers)
306        {
307                return document.layers[element];
308        }
309}
310
311function removeHTMLCode(id)
312{
313        Element(id).parentNode.removeChild(Element(id));
314}
315
316function addHTMLCode(parent_id,child_id,child_code,surround_block_tag)
317{
318        var obj = document.createElement(surround_block_tag);
319        Element(parent_id).appendChild(obj);
320        obj.id = child_id;
321        obj.innerHTML = child_code;
322        return obj;
323}
324
325function addSlashes(code)
326{
327        for (var i = 0; i < code.length; i++)
328        {
329                switch(code.charAt(i))
330                {
331                        case "'":
332                        case '"':
333                        case "\\":
334                                code = code.substr(0, i) + "\\" + code.charAt(i) + code.substr(i+1);
335                                i++;
336                                break;
337                }
338        }
339
340        return code;
341}
342
343function htmlSpecialChars(str)
344{
345        // TODO: Not implemented!!!
346        var pos = 0;
347       
348        for (var i = 0; i < str.length; i++)
349        {
350               
351        }
352}
353
354function replaceComAnd(str, replacer)
355{
356        return escape( str );
357        var oldPos = 0;
358        var pos = 0;
359       
360        while ((pos = str.indexOf('&', pos)) != -1)
361        {
362                str = str.substring(oldPos, pos) + replacer + str.substring(pos+1);
363        }
364
365        return str;
366}
367
368function ccTimeout(control, code, maxCalls, actualCall, singleTimeout)
369{
370        if (eval(control))
371        {
372                eval(code);
373                return true;
374        }
375
376        if (!actualCall)
377        {
378                actualCall = 1;
379        }
380
381        if (!maxCalls)
382        {
383                maxCalls = 100;
384        }
385
386        if (actualCall == maxCalls)
387        {
388                showMessage(Element('cc_msg_err_timeout').value);
389                return false;
390        }
391
392        if (!singleTimeout)
393        {
394                singleTimeout = 100;
395        }
396
397        setTimeout('ccTimeout(\''+control+'\',\''+addSlashes(code)+'\','+maxCalls+','+(actualCall+1)+','+singleTimeout+')', singleTimeout);
398}
399
400function showMessage(msg, type)
401{
402        // TODO: Replace alert with 'loading' style div with Ok button
403
404        switch(type)
405        {
406                case 'confirm':
407                        return confirm(msg);
408
409                default:
410                        alert(msg);
411                        return;
412        }
413}
414
415function formatPhone(obj){
416        if (!Element("cc_conn_type_1").checked) {
417                obj.value = obj.value.replace(/[^\-\d\+\(\)\sx]/g, "");
418        } 
419}
420
421
422/***********************************************\
423*                   CONSTANTS                   *
424\***********************************************/
425
426var CC_url = Element('cc_server_root').value+'/index.php?menuaction=contactcenter.ui_data.data_manager&method=';
427
428/***********************************************\
429*               GLOBALS VARIABLES               *
430\***********************************************/
431
432var CC_loading_div = null;
433var CC_loading_td  = null;
434var CC_loading     = false;
435var CC_loading_set = false;
Note: See TracBrowser for help on using the repository browser.