Changeset 2616 for trunk/phpgwapi/js/expressoAjax
- Timestamp:
- 04/22/10 11:33:37 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/phpgwapi/js/expressoAjax/dom.js
r1999 r2616 1 dom.prototype.config_events = function (pObj, pEvent, pHandler) 1 function borkb(size){ 2 kbyte = 1024; 3 mbyte = kbyte*1024; 4 gbyte = mbyte*1024; 5 if (!size) 6 size = 0; 7 if (size < kbyte) 8 return size + ' B'; 9 else if (size < mbyte) 10 return parseInt(size/kbyte) + ' KB'; 11 else if (size < gbyte) 12 if (size/mbyte > 100) 13 return (size/mbyte).toFixed(0) + ' MB'; 14 else 15 return (size/mbyte).toFixed(1) + ' MB'; 16 else 17 return parseInt(size/gbyte).toFixed(1) + ' GB'; 18 } 19 20 function url_encode(str){ 21 return escape(str); 22 } 23 function url_decode(str) { 24 return unescape(str); 25 } 26 27 function replaceAll(string, token, newtoken) { 28 while (string.indexOf(token) != -1) { 29 string = string.replace(token, newtoken); 30 } 31 return string; 32 } 33 34 function config_events(pObj, pEvent, pHandler) 2 35 { 3 36 if( typeof pObj == 'object') … … 14 47 15 48 16 var _beforeunload_ = window.onbeforeunload; 17 18 window.onbeforeunload = function() 19 { 20 return unloadMess(); 49 // Make decimal round, using in size message 50 function round(value, decimal){ 51 var return_value = Math.round( value * Math.pow( 10 , decimal ) ) / Math.pow( 10 , decimal ); 52 return( return_value ); 21 53 } 22 54 23 dom.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 } 55 function removeAll(id){ 56 do 57 { 58 if (typeof(Element(id)) == 'undefined') 59 break; 60 Element(id).parentNode.removeChild(Element(id)); 61 } 62 while(Element(id)); 63 } 64 function validateEmail(email){ 65 if (typeof(email) != 'string') 66 return false; 67 var validName = /^[a-z][a-z-_0-9\.]*/i; 68 emailParts = email.split('@'); 69 return (validName.test(emailParts[0]) && validateDomain(emailParts[1])); 70 } 71 function validateDomain(domain){ 72 var domainReg = /^(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/i; 73 return (domainReg.test(domain)); 31 74 } 32 75 33 // Make decimal round, using in size message 34 dom.prototype.round = function (value, decimal){ 35 var return_value = Math.round( value * Math.pow( 10 , decimal ) ) / Math.pow( 10 , decimal);36 return( return_value);76 function validateUrl(url){ 77 var urlReg = /([A-Za-z]{2,7}:\/\/)(.*)/i; 78 urlParts = url.split(urlReg); 79 return (urlParts[1].length > 4 && validateDomain(urlParts[2])); 37 80 } 38 81 39 40 dom.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. 50 dom.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 += " "; 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. 82 dom.prototype.removeFile = function (id){ 83 var border_id = id.substr(8,1); 84 var el = Element(id); 85 el.parentNode.removeChild(el); 86 } 87 88 var 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'); 92 dom.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 115 dom.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 134 var setTimeout_write_msg = 0; 135 var old_msg = false; 136 // Funcao usada para escrever mensagem 137 // notimeout = True : mensagem nao apaga 138 dom.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 176 dom.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 } 184 function Element (el) { 185 return document.getElementById(el); 186 } 187 188 dom.prototype.trim = function (inputString) { 82 function trim(inputString) { 189 83 if (typeof inputString != "string") 190 191 84 return inputString; 85 192 86 var retValue = inputString; 193 87 var ch = retValue.substring(0, 1); 194 88 while (ch == " ") { 195 196 89 retValue = retValue.substring(1, retValue.length); 90 ch = retValue.substring(0, 1); 197 91 } 198 92 ch = retValue.substring(retValue.length-1, retValue.length); 199 93 while (ch == " ") { 200 201 94 retValue = retValue.substring(0, retValue.length-1); 95 ch = retValue.substring(retValue.length-1, retValue.length); 202 96 } 203 97 while (retValue.indexOf(" ") != -1) { 204 98 retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ")+1, retValue.length); 205 99 } 206 100 return retValue; … … 208 102 209 103 210 dom.prototype.LTrim = function(value){211 212 213 104 function LTrim(value){ 105 var w_space = String.fromCharCode(32); 106 var strTemp = ""; 107 var iTemp = 0; 214 108 215 216 217 109 var v_length = value ? value.length : 0; 110 if(v_length < 1) 111 return ""; 218 112 219 220 221 222 223 224 225 226 113 while(iTemp < v_length){ 114 if(value && value.charAt(iTemp) != w_space){ 115 strTemp = value.substring(iTemp,v_length); 116 break; 117 } 118 iTemp++; 119 } 120 return strTemp; 227 121 } 228 122 229 123 230 dom.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; 124 function add_className(obj, className){ 125 if (obj && !exist_className(obj, className)) 126 obj.className = obj.className + ' ' + className; 127 } 128 129 function remove_className(obj, className){ 130 var re = new RegExp("\\s*"+className); 131 if (obj) 132 obj.className = obj.className.replace(re, ' '); 133 } 134 135 function exist_className(obj, className){ 136 return ( obj && obj.className.indexOf(className) != -1 ); 238 137 } 239 138 240 139 241 dom.prototype.add_className = function (obj, className){242 if (obj && !exist_className(obj, className))243 obj.className = obj.className + ' ' + className;244 }245 140 246 dom.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 252 dom.prototype.exist_className = function (obj, className){ 253 return ( obj && obj.className.indexOf(className) != -1 ) 254 } 255 256 257 dom.prototype.validate_date = function (date){ 141 function validate_date(date){ 258 142 if (date.match(/^[0-3][0-9]\/[0-1][0-9]\/\d{4,4}$/)) 259 143 { … … 280 164 return false; 281 165 } 282 } 166 }; 283 167
Note: See TracChangeset
for help on using the changeset viewer.