1//HTMLInputElement.prototype.validate = ''; 2//HTMLTextAreaElement.prototype.validate = ''; 3 4function Validator() 5{ 6 this.version = '1.0'; 7 var integer_regexp = /^\d+$/; 8 var mail_regexp = /^[^@]+@[^@]+\.[^.|@]+$/; 9 var numeric_regexp = /^\d+(\.\d+)?$/; 10 11 var login_regexp = /^[\w|_|\d]{4,20}$/; 12 var car_name_regexp = /^[\w|_| |-|\d]{1,32}$/; 13 var password_regexp = /^.{1,25}$/; 14 15 //TODO CMS-602 16 //secure password 17 var small = /^[a-z]+$/; 18 var big = /[A-Z]+/; 19 var symbol = /[!@#$%^]+/; 20 var numb = /[0-9]+/; 21 22 //var date_regexp = /^\d\d\/\d\d\/\d\d\d\d$/; 23 var date_regexp = /^\d\d\.\d\d\.\d\d\d\d$/; 24 var year_regexp = /^\d\d\d\d$/; 25 var url_regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 26 27 this.add_error_style = add_error_style; 28 this.clear_external = clear_external; 29 to_check = {}; 30 var inputsWithErrors = Array(); 31 var hexDigit = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"); 32 this.add = add; 33 var span = false; 34 var focus = false; 35 var old_style = ''; 36 this.set_active = function(form_name, elem_name, active) { 37 38 to_check[form_name][elem_name]['active'] = active; 39 if (!active) { 40 for(var wp = 0; wp < inputsWithErrors.length; wp++) 41 { 42 if (inputsWithErrors[wp].name == elem_name && typeof(inputsWithErrors[wp]) != 'undefined' && typeof(inputsWithErrors[wp].parentNode) != 'undefined' && inputsWithErrors[wp].parentNode != null) { 43 inputsWithErrors[wp].parentNode.removeChild(inputsWithErrors[wp].parentNode.lastChild); 44 inputsWithErrors.splice(wp, 1); 45 break; 46 } 47 } 48 } 49 } 50 51 function clear_external() 52 { 53 clear_errors(); 54 } 55 56 function set_span(b) 57 { 58 span = b; 59 } 60 61 this.set_span = set_span; 62 63 function add(form_name,no_submit) 64 { 65 to_check[form_name] = {}; 66 var form_to_add = document.forms[form_name]; 67 for(var i = 0; i < form_to_add.elements.length; i++) 68 { 69 var elem = form_to_add.elements[i]; 70 //alert(elem); 71 if(typeof(elem.title) != 'undefined' && elem.title!='') 72 { 73 var restriction = elem.title.split('___'); 74 //restriction[1] = restriction[1].replace(/_/g, ' '); 75 to_check[form_name][elem.name] = {limit : restriction[0], message : restriction[1], active: true}; 76 elem.title = ''; 77 } 78 if((elem.value != "Submit") && (elem.type != "button") && (elem.type != "submit")) 79 { 80 elem.onclick = function(){return check_error_click(this);} 81 } 82 } 83 if(!no_submit) 84 { 85 form_to_add.onsubmit = function() {return check(form_name);}; 86 } 87 //alert(form_to_add.onsubmit); 88 } 89 90 function check(form_name) 91 { 92 var no_error = true; 93 94 clear_errors(); 95 //alert(to_check[form_name]); 96 if(typeof(to_check[form_name]) != 'undefined') 97 { 98 for(var input in to_check[form_name]) 99 { 100 var checking = to_check[form_name][input]; 101 102 if (!checking.active) { 103 continue; 104 } 105 106 if(checking.limit == 'string') 107 { 108 if(document.forms[form_name].elements[input].value == null || document.forms[form_name].elements[input].value=='') 109 { 110 no_error = false; 111 //add_error_style(document.forms[form_name].elements[input], checking.message); 112 add_new_error_style(document.forms[form_name].elements[input], checking.message); 113 114 } 115 } 116 else if (checking.limit == 'selected') 117 { 118 if (document.forms[form_name].elements[input].checked == false) 119 { 120 no_error = false; 121 //add_error_style(document.forms[form_name].elements[input], checking.message); 122 add_new_error_style(document.forms[form_name].elements[input], checking.message); 123 124 } 125 } 126 else if (checking.limit == 'file') 127 { 128 if (document.forms[form_name].elements[input].value == null || document.forms[form_name].elements[input].value=='' || document.forms[form_name].elements[input].value=='No File Selected') 129 { 130 no_error = false; 131 //add_error_style(document.forms[form_name].elements[input], checking.message); 132 add_new_error_style(document.forms[form_name].elements[input], checking.message); 133 134 } 135 } 136 else if (checking.limit == 'string_empty') 137 { 138 //anything 139 } 140 else if (checking.limit == 'login') 141 { 142 if(!login_regexp.test(document.forms[form_name].elements[input].value)) 143 { 144 no_error = false;
145 //add_error_style(document.forms[form_name].elements[input], checking.message); 146 add_new_error_style(document.forms[form_name].elements[input], checking.message); 147 } 148 } 149 else if (checking.limit == 'nick') 150 { 151 if(!login_regexp.test(document.forms[form_name].elements[input].value)) 152 { 153 no_error = false; 154 //add_error_style(document.forms[form_name].elements[input], checking.message); 155 add_new_error_style(document.forms[form_name].elements[input], checking.message); 156 } 157 } 158 else if (checking.limit == 'password') 159 { 160 if(!password_regexp.test(document.forms[form_name].elements[input].value)) 161 { 162 no_error = false; 163 //add_error_style(document.forms[form_name].elements[input], checking.message); 164 add_new_error_style(document.forms[form_name].elements[input], checking.message); 165 } 166 } 167 else if (checking.limit == 'secure_password') { // TODO CMS-602 168 if (!password_regexp.test(document.forms[form_name].elements[input].value)) { 169 no_error = false; 170 add_new_error_style(document.forms[form_name].elements[input], checking.message); 171 } else { 172 173 if (document.forms[form_name].elements[input].value.length < 8) { 174 var err_mess = "Please enter at least 8 characters.\n"; 175 } 176 if (!big.test(document.forms[form_name].elements[input].value)) { 177 err_mess += "Please enter at least 1 capital letter.\n"; 178 } 179 if (!symbol.test(document.forms[form_name].elements[input].value) && !numb.test(document.forms[form_name].elements[input].value)) { 180 err_mess += "Please enter at least 1 number or symbol (!@#$%^).\n"; 181 } 182 if (err_mess) { 183 no_error = false; 184 add_new_error_style(document.forms[form_name].elements[input], err_mess); 185 } 186 } 187 } 188 else if(checking.limit == 'integer') 189 { 190 if(!integer_regexp.test(document.forms[form_name].elements[input].value)) 191 { 192 no_error = false; 193 //add_error_style(document.forms[form_name].elements[input], checking.message); 194 add_new_error_style(document.forms[form_name].elements[input], checking.message); 195 } 196 } 197 else if(checking.limit == 'integer_not_null') 198 { 199 if(document.forms[form_name].elements[input].value == 0 || !integer_regexp.test(document.forms[form_name].elements[input].value)) 200 { 201 no_error = false; 202 //add_error_style(document.forms[form_name].elements[input], checking.message); 203 add_new_error_style(document.forms[form_name].elements[input], checking.message); 204 } 205 } 206 else if(checking.limit == 'integer_empty') 207 { 208 if(document.forms[form_name].elements[input].value.length>0 && !integer_regexp.test(document.forms[form_name].elements[input].value)) 209 { 210 no_error = false; 211 //add_error_style(document.forms[form_name].elements[input], checking.message); 212 add_new_error_style(document.forms[form_name].elements[input], checking.message); 213 } 214 } 215 else if(checking.limit == 'date') 216 { 217 if(!date_regexp.test(document.forms[form_name].elements[input].value)) 218 { 219 no_error = false; 220 //add_error_style(document.forms[form_name].elements[input], checking.message); 221 add_new_error_style(document.forms[form_name].elements[input], checking.message); 222 } 223 } 224 else if(checking.limit == 'date_empty') 225 { 226 if(document.forms[form_name].elements[input].value.length > 0 && !date_regexp.test(document.forms[form_name].elements[input].value)) 227 { 228 no_error = false; 229 //add_error_style(document.forms[form_name].elements[input], checking.message); 230 add_new_error_style(document.forms[form_name].elements[input], checking.message); 231 } 232 } 233 else if(checking.limit == 'year') 234 { 235 if(!year_regexp.test(document.forms[form_name].elements[input].value)) 236 { 237 no_error = false; 238 //add_error_style(document.forms[form_name].elements[input], checking.message); 239 add_new_error_style(document.forms[form_name].elements[input], checking.message); 240 } 241 } 242 else if(checking.limit == 'year_empty') 243 { 244 if(document.forms[form_name].elements[input].value.length > 0 && !year_regexp.test(document.forms[form_name].elements[input].value)) 245 { 246 no_error = false;
247 //add_error_style(document.forms[form_name].elements[input], checking.message); 248 add_new_error_style(document.forms[form_name].elements[input], checking.message); 249 } 250 } 251 else if(checking.limit == 'date_empty') 252 { 253 if(document.forms[form_name].elements[input].value.length>0 && !date_regexp.test(document.forms[form_name].elements[input].value)) 254 { 255 no_error = false; 256 //add_error_style(document.forms[form_name].elements[input], checking.message); 257 add_new_error_style(document.forms[form_name].elements[input], checking.message); 258 } 259 } 260 else if(checking.limit == 'numeric') 261 { 262 if(!numeric_regexp.test(document.forms[form_name].elements[input].value)) 263 { 264 no_error = false; 265 //add_error_style(document.forms[form_name].elements[input], checking.message); 266 add_new_error_style(document.forms[form_name].elements[input], checking.message); 267 } 268 } 269 else if(checking.limit == 'numeric_empty') 270 { 271 if(document.forms[form_name].elements[input].value.length>0 && !numeric_regexp.test(document.forms[form_name].elements[input].value)) 272 { 273 no_error = false; 274 //add_error_style(document.forms[form_name].elements[input], checking.message); 275 add_new_error_style(document.forms[form_name].elements[input], checking.message); 276 } 277 } 278 else if(checking.limit == 'email') 279 { 280 //alert(document.forms[form_name].elements[input].value.length); 281 if(!mail_regexp.test(document.forms[form_name].elements[input].value)) 282 { 283 no_error = false; 284 //add_error_style(document.forms[form_name].elements[input], checking.message); 285 add_new_error_style(document.forms[form_name].elements[input], checking.message); 286 } 287 } 288 else if(checking.limit == 'email_empty') 289 { 290 //alert(document.forms[form_name].elements[input].value.length); 291 if(!mail_regexp.test(document.forms[form_name].elements[input].value) && document.forms[form_name].elements[input].value.length > 0) 292 { 293 no_error = false; 294 //add_error_style(document.forms[form_name].elements[input], checking.message); 295 add_new_error_style(document.forms[form_name].elements[input], checking.message); 296 } 297 } 298 else if(checking.limit == 'password_register') 299 { 300 //alert(document.forms[form_name].elements[input].value); 301 //alert(document.forms[form_name].elements['retype_' + input].value); 302 if(!password_regexp.test(document.forms[form_name].elements[input].value)) 303 { 304 no_error = false; 305 //add_error_style(document.forms[form_name].elements[input], checking.message); 306 add_new_error_style(document.forms[form_name].elements[input], checking.message); 307 } 308 else if(!password_regexp.test(document.forms[form_name].elements['retype_' + input].value)) 309 { 310 no_error = false; 311 //add_error_style(document.forms[form_name].elements['retype_' + input], checking.message); 312 add_new_error_style(document.forms[form_name].elements['retype_' + input], checking.message); 313 } 314 else if(document.forms[form_name].elements[input].value != document.forms[form_name].elements['retype_' + input].value) 315 { 316 no_error = false; 317 //add_error_style(document.forms[form_name].elements[input], 'Password mismatch'); 318 add_new_error_style(document.forms[form_name].elements[input], 'Password mismatch'); 319 } 320 } 321 else if(checking.limit == 'email_register') 322 { 323 //alert(document.forms[form_name].elements[input].value); 324 //alert(document.forms[form_name].elements['retype_' + input].value); 325 if(!mail_regexp.test(document.forms[form_name].elements[input].value)) 326 { 327 no_error = false; 328 //add_error_style(document.forms[form_name].elements[input], checking.message); 329 add_new_error_style(document.forms[form_name].elements[input], checking.message); 330 } 331 else if(!mail_regexp.test(document.forms[form_name].elements['retype_' + input].value)) 332 { 333 no_error = false;
334 //add_error_style(document.forms[form_name].elements['retype_' + input], checking.message); 335 add_new_error_style(document.forms[form_name].elements['retype_' + input], checking.message); 336 } 337 else if(document.forms[form_name].elements[input].value != document.forms[form_name].elements['retype_' + input].value) 338 { 339 no_error = false; 340 //add_error_style(document.forms[form_name].elements[input], 'Email mismatch'); 341 add_new_error_style(document.forms[form_name].elements[input], 'Email mismatch'); 342 } 343 } 344 else if (checking.limit == 'url') 345 { 346 347 if (!url_regexp.test(document.forms[form_name].elements[input].value)) 348 { 349 no_error = false; 350 //add_error_style(document.forms[form_name].elements[input], checking.message); 351 add_new_error_style(document.forms[form_name].elements[input], checking.message); 352 } 353 } 354 else if (checking.limit == 'notempty') 355 { 356 if (!document.forms[form_name].elements[input].value) 357 { 358 no_error = false; 359 //add_error_style(document.forms[form_name].elements[input], checking.message); 360 add_new_error_style(document.forms[form_name].elements[input], checking.message); 361 } 362 } 363 364 } 365 } 366 if(!no_error) 367 { 368 create_box(form_name); 369 } 370 /*if(no_error) 371 alert('in check function'); 372 else 373 alert(inputsWithErrors.length); 374 alert(inputsWithErrors[0]['name']);*/ 375 //alert(no_error); 376 return no_error; 377 //return false; 378 } 379 380 this.check = check; 381 382 function create_box(name_of_form) 383 { 384 var row = document.getElementById("submit"); 385 386 if (row) { 387 var newDiv = document.createElement('span'); 388 newDiv.className = 'requireddiv'; 389 newDiv.id = 'required_id'; 390 newDiv.innerHTML = 'Required fields*'; 391 392 row.cells[0].appendChild(newDiv); 393 } 394 } 395 396 function clear_errors() 397 { 398 for(var wp = 0; wp < inputsWithErrors.length; wp++) 399 { 400 if(typeof(inputsWithErrors[wp]) != 'undefined' && typeof(inputsWithErrors[wp].parentNode) != 'undefined' && inputsWithErrors[wp].parentNode != null) 401 { 402 inputsWithErrors[wp].parentNode.removeChild(inputsWithErrors[wp].parentNode.lastChild); 403 $(inputsWithErrors[wp]).removeClass('redborder'); 404 405 } 406 } 407 var el = document.getElementById('required_id'); 408 if (el) el.parentNode.removeChild(el); 409 410 this.focus = false; 411 inputsWithErrors = new Array(); 412 } 413 414 function add_new_error_style(input,txt) 415 { 416 // var style = "FFFFFF";//get_current_bgcolor(input); 417 418 //if (!this.focus) 419 //{ 420 // // input.focus(); 421 // // this.focus = true; 422 //} 423 /* if(input.parentNode.innerHTML.search(txt) == -1) 424 { 425 var errorTextNode = null; 426 var errorNodeAll = null; 427 if(span) 428 { 429 errorTextNode = document.createElement('span'); 430 errorTextNode.style.margin='0px'; 431 } 432 else 433 { 434 errorAll = document.createElement('div'); 435 errorPicture = document.createElement('div'); 436 errorTextNode = document.createElement('div'); 437 } 438 errorAll.className = 'allerror'; 439 input.parentNode.appendChild(errorAll); 440 errorPicture.className = 'av'; 441 errorAll.appendChild(errorPicture); 442 errorTextNode.className = 'required_class_new'; 443 errorTextNode.innerHTML = '' + txt; 444 errorTextNode.style.width='auto'; 445 errorAll.appendChild(errorTextNode); 446 447 448 var l = 20 - parseInt(input.offsetWidth) +'px'; 449 var t = parseInt(input.offsetTop) - 11 + 'px'; 450 errorAll.style.left=l; 451 errorAll.style.top=t; */ 452 453 var id_temp = $(input).attr("name"); 454 $(input).addClass('redborder'); 455 var $id_t = $('#id_' + id_temp); 456 457 if (!$(input).next("div").hasClass('validation')) { 458 $(input).parent().append("<div class='validation' id=id_" + id_temp + " >" + txt + "</div>"); 459 } 460 else { 461 if ($id_t.css('visibility') == 'hidden') { 462 $id_t.css('visibility', 'visible'); 463 } 464 } 465 var position = $(input).parent().position(); 466 var $id = $('#id_'+id_temp); 467 $id.click(function(){return check_error_click(this);}); 468 $id.css('left', position.left + 24); 469 $id.css('top', position.top - 5); 470 // $id.css('display', ''); 471 // old_style = input.style.border; 472 // alert(old_style); 473 // input.style.border = "1px solid #fe0000"; 474 // input.style.borderColor="#FF0000"; 475 // input.style.backgroundColor = "#FF0000"; 476 inputsWithErrors.push(input); 477 478 } 479 480 function check_error_click(elem) 481 { 482 var el = document.activeElement; 483 var name = elem.name; 484 var div = document.getElementById('id_'+ name); 485 if (div && div.className=='validation') 486 { 487 div.style.visibility = 'hidden'; 488 } 489 else if(elem.id && elem.className=='validation') 490 { 491 var temp = document.getElementById(elem.id); 492 temp.style.visibility = 'hidden'; 493 } 494 } 495 496 function add_error_style(input, txt) 497 { 498 var style = "FFFFFF";//get_current_bgcolor(input); 499 if (!this.focus) 500 { 501 input.focus(); 502 this.focus = true; 503 } 504 if(input.parentNode.innerHTML.search(txt) == -1) 505 { 506 var errorTextNode = null; 507 if(span) 508 { 509 errorTextNode = document.createElement('span'); 510 errorTextNode.style.margin='0px'; 511 } 512 else 513 {
514 errorTextNode = document.createElement('small'); 515 } 516 517 errorTextNode.className = 'required_class'; 518 /*if(span) 519 { 520 errorTextNode.innerHTML = '<br/>' + txt; 521 } 522 else 523 {*/ 524 errorTextNode.innerHTML = '' + txt; 525 //} 526 input.parentNode.appendChild(errorTextNode); 527 } 528 529 input.style.backgroundColor = "#FF0000"; 530 inputsWithErrors.push(input); 531 532 for(wp = 1; wp <= 10; wp++) 533 { 534 window.setTimeout('validator.fade_error_style("'+style+'", ' + wp * 10 + ')', 1000 + (wp * 50)); 535 } 536 } 537 538 this.fade_error_style = fade_error_style; 539 540 541 function fade_error_style(normalStyle, percent) 542 { 543 var errorStyle = 'c60c30'; 544 var r1 = hex2dec(errorStyle.slice(0,2)); 545 var g1 = hex2dec(errorStyle.slice(2,4)); 546 var b1 = hex2dec(errorStyle.slice(4,6)); 547 548 var r2 = hex2dec(normalStyle.slice(0,2)); 549 var g2 = hex2dec(normalStyle.slice(2,4)); 550 var b2 = hex2dec(normalStyle.slice(4,6)); 551 552 var pc = percent / 100; 553 554 r= Math.floor(r1+(pc*(r2-r1)) + .5); 555 g= Math.floor(g1+(pc*(g2-g1)) + .5); 556 b= Math.floor(b1+(pc*(b2-b1)) + .5); 557
558 for(var wp = 0; wp < inputsWithErrors.length; wp++) { 559 inputsWithErrors[wp].style.backgroundColor = "#" + dec2hex(r) + dec2hex(g) + dec2hex(b); 560 } 561 } 562 function hex2dec(hex) 563 { 564 return(parseInt(hex,16)); 565 } 566 567 function dec2hex(dec) 568 { 569 return(hexDigit[dec>>4]+hexDigit[dec&15]); 570 } 571 572 573 function get_current_bgcolor(input) 574 { 575 if(input.currentStyle) 576 {// ie 577 var style = input.currentStyle.backgroundColor; 578 return style.substring(1,7); 579 } 580 else {// moz 581 var style = ''; 582 styleRGB = document.defaultView.getComputedStyle(input, '').getPropertyValue("background-color"); 583 var comma = styleRGB.indexOf(','); 584 style += dec2hex(styleRGB.substring(4, comma)); 585 var commaPrevious = comma; 586 comma = styleRGB.indexOf(',', commaPrevious+1); 587 style += dec2hex(styleRGB.substring(commaPrevious+2, comma)); 588 style += dec2hex(styleRGB.substring(comma+2, styleRGB.lastIndexOf(')'))); 589 return style; 590 } 591 } 592 593} 594 595var validator = new Validator();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.