source: branches/1.2/contactcenter/js/ccAux.js @ 119

Revision 119, 9.0 KB checked in by niltonneto, 16 years ago (diff)

Internacionalização do CC

  • Property svn:eol-style set to native
  • Property svn:executable set to *
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               
220                do
221                {
222                        nOpen = str.indexOf('{', nClose+1);
223                        nClose = str.indexOf('}', nClose+1);
224
225                        if (nOpen == -1)
226                        {
227                                return nClose;
228                        }
229                       
230                        if (nOpen < nClose )
231                        {
232                                nClose = matchBracket(str, nOpen);
233                        }
234                       
235                } while (nOpen < nClose);
236
237                return nClose;
238        }
239
240        return f(strG, iniPosG);
241}
242
243/***********************************************\
244*               AUXILIAR FUNCTIONS              *
245\***********************************************/
246
247function resizeIcon(id, action)
248{
249        var element = Element(id);
250       
251        if (action == 0)
252        {
253                CC_old_icon_w = element.style.width;
254                CC_old_icon_h = element.style.height;
255
256                element.style.zIndex = parseInt(element.style.zIndex) + 1;
257                element.style.width = '36px';
258                element.style.height = '36px';
259                element.style.top = (parseInt(element.style.top) - parseInt(element.style.height)/2) + 'px';
260                element.style.left = (parseInt(element.style.left) - parseInt(element.style.width)/2) + 'px';
261        }
262        else if (action == 1)
263        {
264                element.style.zIndex = parseInt(element.style.zIndex) - 1;
265                element.style.top = (parseInt(element.style.top) + parseInt(element.style.height)/2) + 'px';
266                element.style.left = (parseInt(element.style.left) + parseInt(element.style.width)/2) + 'px';
267                element.style.width = CC_old_icon_w;
268                element.style.height = CC_old_icon_h;
269        }
270}
271
272function Element (element)
273{
274        /* IE OBJECTS */
275        if (document.all)
276        {
277                return document.all[element];
278        }
279        /* MOZILLA OBJECTS */
280        else if (document.getElementById)
281        {
282                return document.getElementById(element);
283        }
284        /* NS4 OBJECTS */
285        else if (document.layers)
286        {
287                return document.layers[element];
288        }
289}
290
291function removeHTMLCode(id)
292{
293        Element(id).parentNode.removeChild(Element(id));
294}
295
296function addHTMLCode(parent_id,child_id,child_code,surround_block_tag)
297{
298        var obj = document.createElement(surround_block_tag);
299        Element(parent_id).appendChild(obj);
300        obj.id = child_id;
301        obj.innerHTML = child_code;
302        return obj;
303}
304
305function addSlashes(code)
306{
307        for (var i = 0; i < code.length; i++)
308        {
309                switch(code.charAt(i))
310                {
311                        case "'":
312                        case '"':
313                        case "\\":
314                                code = code.substr(0, i) + "\\" + code.charAt(i) + code.substr(i+1);
315                                i++;
316                                break;
317                }
318        }
319
320        return code;
321}
322
323function htmlSpecialChars(str)
324{
325        // TODO: Not implemented!!!
326        var pos = 0;
327       
328        for (var i = 0; i < str.length; i++)
329        {
330               
331        }
332}
333
334function replaceComAnd(str, replacer)
335{
336        var oldPos = 0;
337        var pos = 0;
338       
339        while ((pos = str.indexOf('&', pos)) != -1)
340        {
341                str = str.substring(oldPos, pos) + replacer + str.substring(pos+1);
342        }
343
344        return str;
345}
346
347function ccTimeout(control, code, maxCalls, actualCall, singleTimeout)
348{
349        if (eval(control))
350        {
351                eval(code);
352                return true;
353        }
354
355        if (!actualCall)
356        {
357                actualCall = 1;
358        }
359
360        if (!maxCalls)
361        {
362                maxCalls = 100;
363        }
364
365        if (actualCall == maxCalls)
366        {
367                showMessage(Element('cc_msg_err_timeout').value);
368                return false;
369        }
370
371        if (!singleTimeout)
372        {
373                singleTimeout = 100;
374        }
375
376        setTimeout('ccTimeout(\''+control+'\',\''+addSlashes(code)+'\','+maxCalls+','+(actualCall+1)+','+singleTimeout+')', singleTimeout);
377}
378
379function showMessage(msg, type)
380{
381        // TODO: Replace alert with 'loading' style div with Ok button
382
383        switch(type)
384        {
385                case 'confirm':
386                        return confirm(msg);
387
388                default:
389                        alert(msg);
390                        return;
391        }
392}
393
394/***********************************************\
395*                   CONSTANTS                   *
396\***********************************************/
397
398var CC_url = Element('cc_server_root').value+'/index.php?menuaction=contactcenter.ui_data.data_manager&method=';
399
400/***********************************************\
401*               GLOBALS VARIABLES               *
402\***********************************************/
403
404var CC_loading_div = null;
405var CC_loading_td  = null;
406var CC_loading     = false;
407var CC_loading_set = false;
Note: See TracBrowser for help on using the repository browser.