| 75 | | var ok = false; |
|---|
| 76 | | switch(c.datatype){ |
|---|
| 77 | | case 'string' : |
|---|
| 78 | | ok = true; |
|---|
| 79 | | if(c.minLength != -1 && val.length < c.minLength) |
|---|
| 80 | | ok = false; |
|---|
| 81 | | if(c.maxLength != -1 && val.length > c.maxLength) |
|---|
| 82 | | ok = false; |
|---|
| 83 | | break; |
|---|
| 84 | | case 'boolean' : |
|---|
| 85 | | ok = (val == 'true' || val == 'false'); |
|---|
| 86 | | break; |
|---|
| 87 | | case 'decimal' : |
|---|
| 88 | | ok = ( -1 != val.search(/^\s*[\+\-]?\d+(\.\d+)?\s*$/)); |
|---|
| 89 | | break; |
|---|
| 90 | | case 'integer' : |
|---|
| 91 | | ok = ( -1 != val.search(/^\s*[\+\-]?\d+\s*$/)); |
|---|
| 92 | | break; |
|---|
| 93 | | case 'hexadecimal' : |
|---|
| 94 | | ok = (val.search(/^0x[a-f0-9A-F]+$/) != -1); |
|---|
| 95 | | break; |
|---|
| 96 | | case 'datetime' : |
|---|
| 97 | | var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| 98 | | if(t == null){ ok=false; break; }; |
|---|
| 99 | | var yy = parseInt(t[1],10); |
|---|
| 100 | | var mm = parseInt(t[2],10) -1; |
|---|
| 101 | | var dd = parseInt(t[3],10); |
|---|
| 102 | | var th = parseInt(t[4],10); |
|---|
| 103 | | var tm = parseInt(t[5],10); |
|---|
| 104 | | var ts = 0; |
|---|
| 105 | | if(t[7] != null) |
|---|
| 106 | | ts = parseInt(t[7],10); |
|---|
| 107 | | var dt = new Date(yy,mm,dd,th,tm,ts); |
|---|
| 108 | | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) |
|---|
| 109 | | ok = false; |
|---|
| 110 | | else |
|---|
| 111 | | ok = true; |
|---|
| 112 | | break; |
|---|
| 113 | | case 'date' : |
|---|
| 114 | | var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/); |
|---|
| 115 | | if(t == null){ ok=false; break; }; |
|---|
| 116 | | var yy = parseInt(t[1],10); |
|---|
| 117 | | var mm = parseInt(t[2],10) -1; |
|---|
| 118 | | var dd = parseInt(t[3],10); |
|---|
| 119 | | var dt = new Date(yy,mm,dd,0,0,0); |
|---|
| 120 | | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) |
|---|
| 121 | | ok = false; |
|---|
| 122 | | else |
|---|
| 123 | | ok = true; |
|---|
| 124 | | break; |
|---|
| 125 | | case 'localetime' : |
|---|
| 126 | | case 'time' : |
|---|
| 127 | | var t = val.match(/^(\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| 128 | | if(t == null){ ok=false; break; }; |
|---|
| 129 | | var th = parseInt(t[1],10); |
|---|
| 130 | | var tm = parseInt(t[2],10); |
|---|
| 131 | | var ts = 0; |
|---|
| 132 | | if(t[4] != null) |
|---|
| 133 | | ts = parseInt(t[4],10); |
|---|
| 134 | | var dt = new Date(2007,05,02,th,tm,ts); |
|---|
| 135 | | if(th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) |
|---|
| 136 | | ok = false; |
|---|
| 137 | | else |
|---|
| 138 | | ok = true; |
|---|
| 139 | | break; |
|---|
| 140 | | case 'localedatetime' : |
|---|
| 141 | | var yy, mm, dd, th, tm, ts; |
|---|
| 142 | | if(c.lang.indexOf('fr_') == 0) { |
|---|
| 143 | | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| 144 | | if(t == null){ ok=false; break; } |
|---|
| 145 | | yy = parseInt(t[3],10); |
|---|
| 146 | | mm = parseInt(t[2],10) -1; |
|---|
| 147 | | dd = parseInt(t[1],10); |
|---|
| 148 | | th = parseInt(t[4],10); |
|---|
| 149 | | tm = parseInt(t[5],10); |
|---|
| 150 | | ts = 0; |
|---|
| 151 | | if(t[7] != null) |
|---|
| 152 | | ts = parseInt(t[7],10); |
|---|
| 153 | | }else{ |
|---|
| 154 | | //default is en_* format |
|---|
| 155 | | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| 156 | | if(t == null){ ok=false; break; } |
|---|
| 157 | | yy = parseInt(t[3],10); |
|---|
| 158 | | mm = parseInt(t[1],10) -1; |
|---|
| 159 | | dd = parseInt(t[2],10); |
|---|
| 160 | | th = parseInt(t[4],10); |
|---|
| 161 | | tm = parseInt(t[5],10); |
|---|
| 162 | | ts = 0; |
|---|
| 163 | | if(t[7] != null) |
|---|
| 164 | | ts = parseInt(t[7],10); |
|---|
| 165 | | } |
|---|
| 166 | | var dt = new Date(yy,mm,dd,th,tm,ts); |
|---|
| 167 | | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) |
|---|
| 168 | | ok = false; |
|---|
| 169 | | else |
|---|
| 170 | | ok = true; |
|---|
| 171 | | break; |
|---|
| 172 | | case 'localedate' : |
|---|
| 173 | | var yy, mm, dd; |
|---|
| 174 | | if(c.lang.indexOf('fr_') == 0) { |
|---|
| 175 | | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); |
|---|
| 176 | | if(t == null){ ok=false; break; } |
|---|
| 177 | | yy = parseInt(t[3],10); |
|---|
| 178 | | mm = parseInt(t[2],10) -1; |
|---|
| 179 | | dd = parseInt(t[1],10); |
|---|
| 180 | | }else{ |
|---|
| 181 | | //default is en_* format |
|---|
| 182 | | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); |
|---|
| 183 | | if(t == null){ ok=false; break; } |
|---|
| 184 | | yy = parseInt(t[3],10); |
|---|
| 185 | | mm = parseInt(t[1],10) -1; |
|---|
| 186 | | dd = parseInt(t[2],10); |
|---|
| 187 | | } |
|---|
| 188 | | var dt = new Date(yy,mm,dd,0,0,0); |
|---|
| 189 | | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) |
|---|
| 190 | | ok = false; |
|---|
| 191 | | else |
|---|
| 192 | | ok = true; |
|---|
| 193 | | break; |
|---|
| 194 | | case 'url' : |
|---|
| 195 | | ok = (val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/) != -1); |
|---|
| 196 | | break; |
|---|
| 197 | | case 'email' : |
|---|
| 198 | | ok = (val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/) != -1); |
|---|
| 199 | | break; |
|---|
| 200 | | case 'ipv4' : |
|---|
| 201 | | var t = val.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/); |
|---|
| 202 | | if(t) |
|---|
| 203 | | ok = (t[1] > 255 || t[2] > 255 || t[3] > 255 || t[4] > 255); |
|---|
| 204 | | else |
|---|
| 205 | | ok = false; |
|---|
| 206 | | break; |
|---|
| 207 | | case 'ipv6' : |
|---|
| 208 | | ok = (val.search(/^([a-f0-9]{1,4})(:([a-f0-9]{1,4})){7}$/i) != -1); |
|---|
| 209 | | break; |
|---|
| 210 | | } |
|---|
| 211 | | if(!ok){ |
|---|
| 212 | | f.errorDecorator.addError(c, 2); |
|---|
| | 76 | if(!c.check(val, this)){ |
|---|
| | 77 | this.tForm.errorDecorator.addError(c, 2); |
|---|
| | 196 | jFormsControlString.prototype.check = function (val) { |
|---|
| | 197 | if(this.minLength != -1 && val.length < this.minLength) |
|---|
| | 198 | return false; |
|---|
| | 199 | if(this.maxLength != -1 && val.length > this.maxLength) |
|---|
| | 200 | return false; |
|---|
| | 201 | return true; |
|---|
| | 202 | }; |
|---|
| | 203 | |
|---|
| | 204 | /** |
|---|
| | 205 | * control with optional confirmation string |
|---|
| | 206 | */ |
|---|
| | 207 | function jFormsControlSecret(name, label) { |
|---|
| | 208 | this.name = name; |
|---|
| | 209 | this.label = label; |
|---|
| | 210 | this.required = false; |
|---|
| | 211 | this.errInvalid = ''; |
|---|
| | 212 | this.errRequired = ''; |
|---|
| | 213 | this.help=''; |
|---|
| | 214 | this.confirmField = null; |
|---|
| | 215 | this.minLength = -1; |
|---|
| | 216 | this.maxLength = -1; |
|---|
| | 217 | }; |
|---|
| | 218 | jFormsControlSecret.prototype.check = function (val, jfrm) { |
|---|
| | 219 | if(this.minLength != -1 && val.length < this.minLength) |
|---|
| | 220 | return false; |
|---|
| | 221 | if(this.maxLength != -1 && val.length > this.maxLength) |
|---|
| | 222 | return false; |
|---|
| | 223 | |
|---|
| | 224 | if(this.confirmField){ |
|---|
| | 225 | var val2 = jfrm.getValue(jfrm.frmElt.elements[this.confirmField.name]); |
|---|
| | 226 | if(val != val2){ |
|---|
| | 227 | jfrm.tForm.errorDecorator.addError(this.confirmField, 2); |
|---|
| | 228 | return false; |
|---|
| | 229 | } |
|---|
| | 230 | } |
|---|
| | 231 | return true; |
|---|
| | 232 | }; |
|---|
| | 233 | function jFormsControlSecretConfirm(name, label) { |
|---|
| | 234 | this.name = name; |
|---|
| | 235 | this.label = label; |
|---|
| | 236 | this.errInvalid = ''; |
|---|
| | 237 | this.errRequired = ''; |
|---|
| | 238 | this.help=''; |
|---|
| | 239 | this.minLength = -1; |
|---|
| | 240 | this.maxLength = -1; |
|---|
| | 241 | }; |
|---|
| | 242 | |
|---|
| | 243 | |
|---|
| | 244 | |
|---|
| | 245 | /** |
|---|
| | 246 | * control with boolean |
|---|
| | 247 | */ |
|---|
| | 248 | function jFormsControlBoolean(name, label) { |
|---|
| | 249 | this.name = name; |
|---|
| | 250 | this.label = label; |
|---|
| | 251 | this.required = false; |
|---|
| | 252 | this.errInvalid = ''; |
|---|
| | 253 | this.errRequired = ''; |
|---|
| | 254 | this.help=''; |
|---|
| | 255 | }; |
|---|
| | 256 | jFormsControlBoolean.prototype.check = function (val) { |
|---|
| | 257 | return (val == 'true' || val == 'false'); |
|---|
| | 258 | }; |
|---|
| | 259 | |
|---|
| | 260 | /** |
|---|
| | 261 | * control with Decimal |
|---|
| | 262 | */ |
|---|
| | 263 | function jFormsControlDecimal(name, label) { |
|---|
| | 264 | this.name = name; |
|---|
| | 265 | this.label = label; |
|---|
| | 266 | this.required = false; |
|---|
| | 267 | this.errInvalid = ''; |
|---|
| | 268 | this.errRequired = ''; |
|---|
| | 269 | this.help=''; |
|---|
| | 270 | }; |
|---|
| | 271 | jFormsControlDecimal.prototype.check = function (val) { |
|---|
| | 272 | return ( -1 != val.search(/^\s*[\+\-]?\d+(\.\d+)?\s*$/)); |
|---|
| | 273 | }; |
|---|
| | 274 | |
|---|
| | 275 | /** |
|---|
| | 276 | * control with Integer |
|---|
| | 277 | */ |
|---|
| | 278 | function jFormsControlInteger(name, label) { |
|---|
| | 279 | this.name = name; |
|---|
| | 280 | this.label = label; |
|---|
| | 281 | this.required = false; |
|---|
| | 282 | this.errInvalid = ''; |
|---|
| | 283 | this.errRequired = ''; |
|---|
| | 284 | this.help=''; |
|---|
| | 285 | }; |
|---|
| | 286 | jFormsControlInteger.prototype.check = function (val) { |
|---|
| | 287 | return ( -1 != val.search(/^\s*[\+\-]?\d+\s*$/)); |
|---|
| | 288 | }; |
|---|
| | 289 | |
|---|
| | 290 | /** |
|---|
| | 291 | * control with Hexadecimal |
|---|
| | 292 | */ |
|---|
| | 293 | function jFormsControlHexadecimal(name, label) { |
|---|
| | 294 | this.name = name; |
|---|
| | 295 | this.label = label; |
|---|
| | 296 | this.required = false; |
|---|
| | 297 | this.errInvalid = ''; |
|---|
| | 298 | this.errRequired = ''; |
|---|
| | 299 | this.help=''; |
|---|
| | 300 | }; |
|---|
| | 301 | jFormsControlHexadecimal.prototype.check = function (val) { |
|---|
| | 302 | return (val.search(/^0x[a-f0-9A-F]+$/) != -1); |
|---|
| | 303 | }; |
|---|
| | 304 | |
|---|
| | 305 | /** |
|---|
| | 306 | * control with Datetime |
|---|
| | 307 | */ |
|---|
| | 308 | function jFormsControlDatetime(name, label) { |
|---|
| | 309 | this.name = name; |
|---|
| | 310 | this.label = label; |
|---|
| | 311 | this.required = false; |
|---|
| | 312 | this.errInvalid = ''; |
|---|
| | 313 | this.errRequired = ''; |
|---|
| | 314 | this.help=''; |
|---|
| | 315 | }; |
|---|
| | 316 | jFormsControlDatetime.prototype.check = function (val) { |
|---|
| | 317 | var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| | 318 | if(t == null) return false; |
|---|
| | 319 | var yy = parseInt(t[1],10); |
|---|
| | 320 | var mm = parseInt(t[2],10) -1; |
|---|
| | 321 | var dd = parseInt(t[3],10); |
|---|
| | 322 | var th = parseInt(t[4],10); |
|---|
| | 323 | var tm = parseInt(t[5],10); |
|---|
| | 324 | var ts = 0; |
|---|
| | 325 | if(t[7] != null) |
|---|
| | 326 | ts = parseInt(t[7],10); |
|---|
| | 327 | var dt = new Date(yy,mm,dd,th,tm,ts); |
|---|
| | 328 | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) |
|---|
| | 329 | return false; |
|---|
| | 330 | else |
|---|
| | 331 | return true; |
|---|
| | 332 | }; |
|---|
| | 333 | |
|---|
| | 334 | /** |
|---|
| | 335 | * control with Date |
|---|
| | 336 | */ |
|---|
| | 337 | function jFormsControlDate(name, label) { |
|---|
| | 338 | this.name = name; |
|---|
| | 339 | this.label = label; |
|---|
| | 340 | this.required = false; |
|---|
| | 341 | this.errInvalid = ''; |
|---|
| | 342 | this.errRequired = ''; |
|---|
| | 343 | this.help=''; |
|---|
| | 344 | }; |
|---|
| | 345 | jFormsControlDate.prototype.check = function (val) { |
|---|
| | 346 | var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/); |
|---|
| | 347 | if(t == null) return false; |
|---|
| | 348 | var yy = parseInt(t[1],10); |
|---|
| | 349 | var mm = parseInt(t[2],10) -1; |
|---|
| | 350 | var dd = parseInt(t[3],10); |
|---|
| | 351 | var dt = new Date(yy,mm,dd,0,0,0); |
|---|
| | 352 | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) |
|---|
| | 353 | return false; |
|---|
| | 354 | else |
|---|
| | 355 | return true; |
|---|
| | 356 | }; |
|---|
| | 357 | |
|---|
| | 358 | /** |
|---|
| | 359 | * control with time |
|---|
| | 360 | */ |
|---|
| | 361 | function jFormsControlTime(name, label) { |
|---|
| | 362 | this.name = name; |
|---|
| | 363 | this.label = label; |
|---|
| | 364 | this.required = false; |
|---|
| | 365 | this.errInvalid = ''; |
|---|
| | 366 | this.errRequired = ''; |
|---|
| | 367 | this.help=''; |
|---|
| | 368 | }; |
|---|
| | 369 | jFormsControlTime.prototype.check = function (val) { |
|---|
| | 370 | var t = val.match(/^(\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| | 371 | if(t == null) return false; |
|---|
| | 372 | var th = parseInt(t[1],10); |
|---|
| | 373 | var tm = parseInt(t[2],10); |
|---|
| | 374 | var ts = 0; |
|---|
| | 375 | if(t[4] != null) |
|---|
| | 376 | ts = parseInt(t[4],10); |
|---|
| | 377 | var dt = new Date(2007,05,02,th,tm,ts); |
|---|
| | 378 | if(th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) |
|---|
| | 379 | return false; |
|---|
| | 380 | else |
|---|
| | 381 | return true; |
|---|
| | 382 | }; |
|---|
| | 383 | |
|---|
| | 384 | /** |
|---|
| | 385 | * control with LocaleDateTime |
|---|
| | 386 | */ |
|---|
| | 387 | function jFormsControlLocaledatetime(name, label) { |
|---|
| | 388 | this.name = name; |
|---|
| | 389 | this.label = label; |
|---|
| | 390 | this.required = false; |
|---|
| | 391 | this.errInvalid = ''; |
|---|
| | 392 | this.errRequired = ''; |
|---|
| | 393 | this.help=''; |
|---|
| | 394 | this.lang=''; |
|---|
| | 395 | }; |
|---|
| | 396 | jFormsControlLocaledatetime.prototype.check = function (val) { |
|---|
| | 397 | var yy, mm, dd, th, tm, ts; |
|---|
| | 398 | if(this.lang.indexOf('fr_') == 0) { |
|---|
| | 399 | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| | 400 | if(t == null) return false; |
|---|
| | 401 | yy = parseInt(t[3],10); |
|---|
| | 402 | mm = parseInt(t[2],10) -1; |
|---|
| | 403 | dd = parseInt(t[1],10); |
|---|
| | 404 | th = parseInt(t[4],10); |
|---|
| | 405 | tm = parseInt(t[5],10); |
|---|
| | 406 | ts = 0; |
|---|
| | 407 | if(t[7] != null) |
|---|
| | 408 | ts = parseInt(t[7],10); |
|---|
| | 409 | }else{ |
|---|
| | 410 | //default is en_* format |
|---|
| | 411 | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})(:(\d{2}))?$/); |
|---|
| | 412 | if(t == null) return false; |
|---|
| | 413 | yy = parseInt(t[3],10); |
|---|
| | 414 | mm = parseInt(t[1],10) -1; |
|---|
| | 415 | dd = parseInt(t[2],10); |
|---|
| | 416 | th = parseInt(t[4],10); |
|---|
| | 417 | tm = parseInt(t[5],10); |
|---|
| | 418 | ts = 0; |
|---|
| | 419 | if(t[7] != null) |
|---|
| | 420 | ts = parseInt(t[7],10); |
|---|
| | 421 | } |
|---|
| | 422 | var dt = new Date(yy,mm,dd,th,tm,ts); |
|---|
| | 423 | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) |
|---|
| | 424 | return false; |
|---|
| | 425 | else |
|---|
| | 426 | return true; |
|---|
| | 427 | }; |
|---|
| | 428 | |
|---|
| | 429 | /** |
|---|
| | 430 | * control with localedate |
|---|
| | 431 | */ |
|---|
| | 432 | function jFormsControlLocaledate(name, label) { |
|---|
| | 433 | this.name = name; |
|---|
| | 434 | this.label = label; |
|---|
| | 435 | this.required = false; |
|---|
| | 436 | this.errInvalid = ''; |
|---|
| | 437 | this.errRequired = ''; |
|---|
| | 438 | this.help=''; |
|---|
| | 439 | this.lang=''; |
|---|
| | 440 | }; |
|---|
| | 441 | jFormsControlLocaledate.prototype.check = function (val) { |
|---|
| | 442 | var yy, mm, dd; |
|---|
| | 443 | if(this.lang.indexOf('fr_') == 0) { |
|---|
| | 444 | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); |
|---|
| | 445 | if(t == null) return false; |
|---|
| | 446 | yy = parseInt(t[3],10); |
|---|
| | 447 | mm = parseInt(t[2],10) -1; |
|---|
| | 448 | dd = parseInt(t[1],10); |
|---|
| | 449 | }else{ |
|---|
| | 450 | //default is en_* format |
|---|
| | 451 | var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); |
|---|
| | 452 | if(t == null) return false; |
|---|
| | 453 | yy = parseInt(t[3],10); |
|---|
| | 454 | mm = parseInt(t[1],10) -1; |
|---|
| | 455 | dd = parseInt(t[2],10); |
|---|
| | 456 | } |
|---|
| | 457 | var dt = new Date(yy,mm,dd,0,0,0); |
|---|
| | 458 | if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) |
|---|
| | 459 | return false; |
|---|
| | 460 | else |
|---|
| | 461 | return true; |
|---|
| | 462 | }; |
|---|
| | 463 | |
|---|
| | 464 | /** |
|---|
| | 465 | * control with Url |
|---|
| | 466 | */ |
|---|
| | 467 | function jFormsControlUrl(name, label) { |
|---|
| | 468 | this.name = name; |
|---|
| | 469 | this.label = label; |
|---|
| | 470 | this.required = false; |
|---|
| | 471 | this.errInvalid = ''; |
|---|
| | 472 | this.errRequired = ''; |
|---|
| | 473 | this.help=''; |
|---|
| | 474 | }; |
|---|
| | 475 | jFormsControlUrl.prototype.check = function (val) { |
|---|
| | 476 | return (val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/) != -1); |
|---|
| | 477 | }; |
|---|
| | 478 | |
|---|
| | 479 | /** |
|---|
| | 480 | * control with email |
|---|
| | 481 | */ |
|---|
| | 482 | function jFormsControlEmail(name, label) { |
|---|
| | 483 | this.name = name; |
|---|
| | 484 | this.label = label; |
|---|
| | 485 | this.required = false; |
|---|
| | 486 | this.errInvalid = ''; |
|---|
| | 487 | this.errRequired = ''; |
|---|
| | 488 | this.help=''; |
|---|
| | 489 | }; |
|---|
| | 490 | jFormsControlEmail.prototype.check = function (val) { |
|---|
| | 491 | return (val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/) != -1); |
|---|
| | 492 | }; |
|---|
| | 493 | |
|---|
| | 494 | |
|---|
| | 495 | /** |
|---|
| | 496 | * control with ipv4 |
|---|
| | 497 | */ |
|---|
| | 498 | function jFormsControlIpv4(name, label) { |
|---|
| | 499 | this.name = name; |
|---|
| | 500 | this.label = label; |
|---|
| | 501 | this.required = false; |
|---|
| | 502 | this.errInvalid = ''; |
|---|
| | 503 | this.errRequired = ''; |
|---|
| | 504 | this.help=''; |
|---|
| | 505 | }; |
|---|
| | 506 | jFormsControlIpv4.prototype.check = function (val) { |
|---|
| | 507 | var t = val.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/); |
|---|
| | 508 | if(t) |
|---|
| | 509 | return (t[1] > 255 || t[2] > 255 || t[3] > 255 || t[4] > 255); |
|---|
| | 510 | return false; |
|---|
| | 511 | }; |
|---|
| | 512 | |
|---|
| | 513 | /** |
|---|
| | 514 | * control with ipv6 |
|---|
| | 515 | */ |
|---|
| | 516 | function jFormsControlIpv6(name, label) { |
|---|
| | 517 | this.name = name; |
|---|
| | 518 | this.label = label; |
|---|
| | 519 | this.required = false; |
|---|
| | 520 | this.errInvalid = ''; |
|---|
| | 521 | this.errRequired = ''; |
|---|
| | 522 | this.help=''; |
|---|
| | 523 | }; |
|---|
| | 524 | jFormsControlIpv6.prototype.check = function (val) { |
|---|
| | 525 | return (val.search(/^([a-f0-9]{1,4})(:([a-f0-9]{1,4})){7}$/i) != -1); |
|---|
| | 526 | }; |
|---|
| | 527 | |
|---|
| | 528 | /** |
|---|
| | 529 | * choice control |
|---|
| | 530 | */ |
|---|
| | 531 | function jFormsControlChoice(name, label) { |
|---|
| | 532 | this.name = name; |
|---|
| | 533 | this.label = label; |
|---|
| | 534 | this.required = true; |
|---|
| | 535 | this.errInvalid = ''; |
|---|
| | 536 | this.errRequired = ''; |
|---|
| | 537 | this.help=''; |
|---|
| | 538 | this.items = {}; |
|---|
| | 539 | }; |
|---|
| | 540 | jFormsControlChoice.prototype.addControl = function (ctrl, itemValue) { |
|---|
| | 541 | if(this.items[itemValue] == undefined) |
|---|
| | 542 | this.items[itemValue] = []; |
|---|
| | 543 | this.items[itemValue].push(ctrl); |
|---|
| | 544 | }; |
|---|
| | 545 | jFormsControlChoice.prototype.check = function (val, jfrm) { |
|---|
| | 546 | if(this.items[val] == undefined) |
|---|
| | 547 | return false; |
|---|
| | 548 | |
|---|
| | 549 | var list = this.items[val]; |
|---|
| | 550 | for(var i=0; i < list.length; i++) { |
|---|
| | 551 | var val2 = jfrm.getValue(jfrm.frmElt.elements[list[i].name]); |
|---|
| | 552 | if (!list[i].check(val2, jfrm)) { |
|---|
| | 553 | jfrm.tForm.errorDecorator.addError(list[i], 2); |
|---|
| | 554 | } |
|---|
| | 555 | } |
|---|
| | 556 | return true; |
|---|
| | 557 | }; |
|---|
| | 558 | |
|---|