Changeset 1662 for sandbox/expresso2.2/contactcenter/js/ccAux.js
- Timestamp:
- 11/17/09 15:57:19 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/expresso2.2/contactcenter/js/ccAux.js
r1612 r1662 57 57 function serialize(data) 58 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; 59 return expresso.connector.serialize(data); 133 60 } 134 61 135 62 function unserialize(str) 136 63 { 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 214 function 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 } 64 return expresso.connector.unserialize(str); 65 } 66 67 262 68 263 69 /***********************************************\
Note: See TracChangeset
for help on using the changeset viewer.