// input validation functions, cast to right type or erase function to_date(elem) { //var re1 = /^(0?[1-9]|1[012])([\-\/])(0?[1-9]|[12][0-9]|3[01])\2((19|20)\d\d)$/; // mm/dd/yyyy with - or / //if (re1.test(elem.value)) return to_type_success(elem); var m = null; // fix 'yyyy/mm/dd with - or /' to 'mm/dd/yyyy' var re = /^((19|20)\d\d)([\-\/]?)(0?[1-9]|1[012])\3(0?[1-9]|[12][0-9]|3[01])$/; // if (re.test(elem.value)) { m = re.exec(elem.value); elem.value = m[4] + '/' + m[5] + '/' + m[1]; return to_type_success(elem); } // Fix mmddyy or mm/dd/yy or mm-dd-yy to mm/dd/yyyy var re = /^(0?[1-9]|1[012])([\-\/]?)(0?[1-9]|[12][0-9]|3[01])\2(((19|20)\d\d|\d\d))$/; if (re.test(elem.value)) { m = re.exec(elem.value); elem.value = m[1] + '/' + m[3] + '/'; if (m[4].length==4) elem.value+= m[4]; else elem.value+= (m[4] > 59 ? '19' + m[4] : '20' + m[4]); } var dt = new Date(elem.value); if (dt.toString() != 'Invalid Date') { elem.value = (dt.getMonth() + 1) + '/' + dt.getDate() + '/' + dt.getFullYear(); return to_type_success(elem); } to_type_error(elem); } // func: to_email(elem,r) - converts 'elem' text into email address, blank's on error function to_email(elem,r) { var re = /^[a-zA-Z0-9_\.\-]+\@[a-zA-Z0-9\-]+\.[a-zA-Z0-9]{2,4}$/; if ( ((r) || (elem.value)) && (!re.test(elem.value))) to_type_error(elem); else to_type_success(elem); } // func: to_number(elem,s,p) ensures that $elem is in right $s (scale) and $p (precision) function to_number(elem,s,p) { var re = null; re = /\/|\*|\-|\+/; if (re.test(elem.value)) { var x = eval(elem.value); if (x) elem.value = x; } if (!p) re = /^[0-9]+$/; // No precision is integers only else re = new RegExp('^([0-9]+\.?[0-9]*|\.[0-9]+)$'); // Floating point if (!re.test(elem.value)) to_type_error(elem); else to_type_success(elem); } // func: to_url(elem) - ensures 'elem' is an url function to_url(elem) { var re = new RegExp("^(http|https|ftp):\/\/(%[[:digit:]A-Fa-f][[:digit:]A-Fa-f]|[-_.!~*';/?:@&=+$,[:alnum:])+"); var re = new RegExp("^(http|https|ftp)://"); if (!re.test(elem.value)) to_type_error(elem); else to_type_success(elem); } function to_type_error(elem) { elem.style.border = '1px solid #f00'; } function to_type_success(elem) { elem.style.border = '1px solid #333'; }