source: trunk/phpgwapi/expressoAjax/dom.js @ 1999

Revision 1999, 7.6 KB checked in by amuller, 14 years ago (diff)

Ticket #490 - #690 - Merge branches Expresso 2.2 com Trunk

Line 
1dom.prototype.config_events = function (pObj, pEvent, pHandler)
2{
3    if( typeof pObj == 'object')
4    {
5        if( pEvent.substring(0, 2) == 'on')
6            pEvent = pEvent.substring(2, pEvent.length);
7
8        if ( pObj.addEventListener )
9            pObj.addEventListener(pEvent, pHandler, false);
10        else if( pObj.attachEvent )
11            pObj.attachEvent('on' + pEvent, pHandler );
12    }
13}
14
15
16var _beforeunload_ = window.onbeforeunload;
17
18window.onbeforeunload = function()
19{
20        return unloadMess();
21}
22
23dom.prototype.unloadMess = function (){
24        var mess = get_lang("All change you made has not been saved and will be discarted.");
25        for (var i = 0; i < BordersArray.length; i++) {
26                var body = Element('body_' + BordersArray[i].sequence);
27                if (body && body.contentWindow && body.contentWindow.document.designMode.toLowerCase() == 'on') {
28                        return mess;
29                }
30        }
31}
32
33// Make decimal round, using in size message
34dom.prototype.round = function (value, decimal){
35        var return_value = Math.round( value * Math.pow( 10 , decimal ) ) / Math.pow( 10 , decimal );
36        return( return_value );
37}
38
39
40dom.prototype.removeAllById = function (id){
41        do
42        {
43                if (typeof(Element(id)) == 'undefined')
44                        break;
45                Element(id).parentNode.removeChild(Element(id));
46        }
47        while(Element(id));
48}
49// Add Input File Dynamically.
50dom.prototype.addFile = function (id_border){
51        divFiles = document.getElementById("divFiles_"+id_border);
52        if (! divFiles)
53                return false;
54       
55        if (divFiles.lastChild)
56                var countDivFiles = parseInt(divFiles.lastChild.id.split('_')[2]) + 1;
57
58        if (! countDivFiles)
59                var countDivFiles = 1;
60       
61        divFile = document.createElement('DIV');
62       
63       
64        divFile.innerHTML = "<input type='file' id_border='"+id_border+"' size='50' maxLength='255' onchange=\"function () {validateFileExtension(this.value, this.id.replace('input','div'), this.getAttribute('id_border'));};\" id='"+"inputFile_"+id_border+"_"+countDivFiles+"' name='file_"+countDivFiles+"'>";
65
66       
67        var linkFile = document.createElement("A");
68        linkFile.id = "linkFile_"+id_border+"_"+countDivFiles;
69        linkFile.href='javascript:void(0)';
70        linkFile.onclick=function () {removeFile(this.id.replace("link","div")); return false;};
71        linkFile.innerHTML=get_lang("Remove"); 
72        //divFile.innerHTML += "&nbsp;&nbsp;";
73        divFile.appendChild(linkFile);
74        divFile.id = "divFile_"+id_border+"_"+countDivFiles;   
75        divFiles.appendChild(divFile);
76
77       
78
79        return document.getElementById("inputFile_"+id_border+"_"+countDivFiles);
80}
81//      Remove Input File Dynamically.
82dom.prototype.removeFile = function (id){
83        var border_id = id.substr(8,1);
84        var el = Element(id);
85        el.parentNode.removeChild(el);
86}
87
88var denyFileExtensions = new Array('exe','com','reg','chm','cnf','hta','ins',
89                                        'jse','job','lnk','pif','src','scf','sct','shb',
90                                        'vbe','vbs','wsc','wsf','wsh','cer','its','mau',
91                                        'mda','mar','mdz','prf','pst');
92dom.prototype.validateFileExtension = function (fileName){
93        var error_flag = false;
94        var fileExtension = fileName.split(".");
95        fileExtension = fileExtension[(fileExtension.length-1)];
96        for(var i=0; i<denyFileExtensions.length; i++)
97        {
98                if(denyFileExtensions[i] == fileExtension)
99                {
100                        error_flag = true;
101                        break;
102                }
103
104        }
105
106        if ( error_flag == true )
107        {
108                write_error(get_lang('File extension forbidden or invalid file') + '.');
109                return false;
110        }
111        return true;
112}
113
114
115dom.prototype.validatePath = function (fileName, id, id_border){
116       
117        var error_flag  = false;
118
119        if ( fileName.indexOf('/') != -1 )
120        {
121                if (fileName[0] != '/'){ // file name is windows format?
122                        var file = fileName.substr(fileName.lastIndexOf('\\') + 1, fileName.length);
123                        if ((fileName.indexOf(':\\') != 1) && (fileName.indexOf('\\\\') != 0)) // Is stored in partition or a network file?
124                                error_flag = true;     
125                }
126                else // is Unix
127                        var file = fileName.substr(fileName.lastIndexOf('/') + 1, fileName.length);                                             
128        }
129        else  // is Firefox 3
130                var file = fileName;
131        return (validateFileExtension(file));
132}
133
134var setTimeout_write_msg = 0;
135var old_msg = false;
136// Funcao usada para escrever mensagem
137// notimeout = True : mensagem nao apaga
138dom.prototype.write_msg = function (msg, notimeout){   
139       
140        if (setTimeout_write_msg)
141                clearTimeout(setTimeout_write_msg);
142       
143        var msg_div = Element('em_div_write_msg');
144        var old_divStatusBar = Element("divStatusBar");
145
146        if(!msg_div) {
147                msg_div = document.createElement('DIV');
148                msg_div.id = 'em_div_write_msg';
149                msg_div.className = 'em_div_write_msg';
150                old_divStatusBar.parentNode.insertBefore(msg_div,old_divStatusBar);
151        }
152       
153        if( document.getElementById('JabberMessenger'))
154                loadscript.adIcon();
155
156        msg_div.innerHTML = '<table width="100%" cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_info_th">'+msg+'</th><th width="40%"></th></tr></tbody></table>';
157
158        old_divStatusBar.style.display = 'none';
159        msg_div.style.display = '';     
160        // Nao ponha var na frente!! jakjr
161        handle_write_msg = function(){
162                try{
163                        if(!old_msg)
164                                clean_msg();
165                        else
166                                write_msg(old_msg, true);                       
167                }
168                catch(e){}
169        }
170        if(notimeout)
171                old_msg = msg;
172        else
173                setTimeout_write_msg = setTimeout("handle_write_msg();", 5000);
174}
175// Funcao usada para apagar mensagem sem timeout
176dom.prototype.clean_msg = function (){
177        old_msg = false;
178        var msg_div = Element('em_div_write_msg');
179        var old_divStatusBar = Element("divStatusBar");
180        if(msg_div)
181                msg_div.style.display = 'none';
182        old_divStatusBar.style.display = '';   
183}
184function Element (el) {
185        return  document.getElementById(el);
186}
187
188dom.prototype.trim = function (inputString) {
189   if (typeof inputString != "string")
190        return inputString;
191 
192   var retValue = inputString;
193   var ch = retValue.substring(0, 1);
194   while (ch == " ") {
195          retValue = retValue.substring(1, retValue.length);
196          ch = retValue.substring(0, 1);
197   }
198   ch = retValue.substring(retValue.length-1, retValue.length);
199   while (ch == " ") {
200          retValue = retValue.substring(0, retValue.length-1);
201          ch = retValue.substring(retValue.length-1, retValue.length);
202   }
203   while (retValue.indexOf("  ") != -1) {
204          retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
205   }
206   return retValue;
207}
208
209
210dom.prototype.LTrim = function (value){
211        var w_space = String.fromCharCode(32);
212        var strTemp = "";
213        var iTemp = 0;
214
215        var v_length = value ? value.length : 0;
216        if(v_length < 1)
217                return "";
218
219        while(iTemp < v_length){
220                if(value && value.charAt(iTemp) != w_space){
221                        strTemp = value.substring(iTemp,v_length);
222                        break;
223                }
224                iTemp++;
225        }
226        return strTemp;
227}
228
229
230dom.prototype.array_search = function (needle, haystack) {
231        var n = haystack.length;
232        for (var i=0; i<n; i++) {
233                if (haystack[i]==needle) {
234                        return true;
235                }
236        }
237        return false;
238}
239
240
241dom.prototype.add_className = function (obj, className){
242        if (obj && !exist_className(obj, className))
243                obj.className = obj.className + ' ' + className;
244}
245
246dom.prototype.remove_className = function (obj, className){
247        var re = new RegExp("\\s*"+className);
248        if (obj)
249                obj.className = obj.className.replace(re, ' ');
250}
251
252dom.prototype.exist_className = function (obj, className){
253        return ( obj && obj.className.indexOf(className) != -1 )
254}
255
256
257dom.prototype.validate_date = function (date){
258    if (date.match(/^[0-3][0-9]\/[0-1][0-9]\/\d{4,4}$/))
259    {
260        tmp = date.split('/');
261
262        day = new Number(tmp[0]);
263        month = new Number(tmp[1]);
264        year = new Number(tmp[2]);
265        if (month >= 1 && month <= 12 && day >= 1 && day <= 31)
266        {
267            if (month == 02 && day <= 29)
268            {
269                return true;
270            }
271            return true;
272        }
273        else
274            {
275                return false;
276            }
277    }
278    else
279        {
280            return false;
281        }
282}
283
Note: See TracBrowser for help on using the repository browser.