[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
xampp182
/
htdocs
/
simpeg
/
zapatec
/
zpform
/
zpform
/
jsdocs
/
[
Home
]
File: overview-summary-form-validator.js.html
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd"> <html> <head> <title> Zapatec Form Overview </title> <link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <script> function asd() { parent.document.title="form-validator.js Overview"; } </script> </head> <body bgcolor="white" onload="asd();"> <!-- ========== START OF NAVBAR ========== --> <a name="navbar_top"><!-- --></a> <table border="0" width="100%" cellpadding="1" cellspacing="0"> <tr> <td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1"> <a name="navbar_top_firstrow"><!-- --></a> <table border="0" cellpadding="0" cellspacing="3"> <tr align="center" valign="top"> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td> <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td> <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td> </tr> </table> </td> <td bgcolor="#EEEEFF" align="right" valign="top"> <em> <b>Zapatec Form</b></em> </td> </tr> <tr> <td bgcolor="white" class="NavBarCell2"><font size="-2"> PREV NEXT</font></td> <td bgcolor="white" class="NavBarCell2"><font size="-2"> <a href="index.html" target="_top"><b>FRAMES</b></a> <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a> <script> <!-- if(window==top) { document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>'); } //--> </script> <noscript> <a href="allclasses-noframe.html" target=""><b>All Classes</b></a> </noscript> </font></td> </tr> </table> <!-- =========== END OF NAVBAR =========== --> <hr> <center> <h2>form-validator.js</h2> </center> <h4>Summary</h4> <p> No overview generated for 'form-validator.js'<BR/><BR/> </p> <hr> <!-- ========== METHOD SUMMARY =========== --> <!-- ========== END METHOD SUMMARY =========== --> <pre class="sourceview"><span class="comment">// $Id: form-validator.js 7361 2007-06-07 10:48:44Z andrew $</span> <span class="comment">/** * * Copyright (c) 2004-2006 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. */</span> <span class="comment">//Array of Data Types</span> Zapatec.Form.dataTypes = {}; Zapatec.Form.Validator = []; <span class="comment">/* * Small function to add datatypes to Zapatec.Form.dataTypes * <span class="attrib">@param</span> zpName {String} name of this datatype * <span class="attrib">@param</span> name {String} internal name * <span class="attrib">@param</span> regex {RegExp} regexp to validate * <span class="attrib">@param</span> error {String} text to use, if validation was not passed * <span class="attrib">@param</span> help {String} help message * <span class="attrib">@param</span> func {function} function to use for validating field value */</span> Zapatec.Form.Validator.addDataType = <span class="reserved">function</span>(zpName, name, regex, error, help, func) { Zapatec.Form.dataTypes[zpName] = { zpName: zpName, name: name, regex: regex, error: error, help: help, func: func }; }; <span class="comment">// backward compartibility</span> Zapatec.Form.addDataType = Zapatec.Form.Validator.addDataType; <span class="comment">/* * Returns true, if given string is valid domain name * Valid domains: * 127.0.0.1 * google.com * http://www.google.com/ * <span class="attrib">@param</span> domain {string} value to test * <span class="attrib">@return</span> true if value is correct domain name * <span class="attrib">@type</span> boolean */</span> Zapatec.Form.Validator.isDomainValid = <span class="reserved">function</span>(domain){ <span class="reserved">if</span>(typeof(domain) != <span class="literal">'string'</span>){ <span class="reserved">return</span> false; } <span class="reserved">for</span> (i = 0; i < domain.length; i++){ <span class="reserved">if</span> (domain.charCodeAt(i) > 127){ <span class="reserved">return</span> false; } } var ipDigit = <span class="literal">"(0?0?\\d|[01]?\\d\\d|2[0-4]\\d|25[0-6])"</span>; var ipRE = new RegExp(<span class="literal">"^"</span> + ipDigit + <span class="literal">"\\."</span> + ipDigit + <span class="literal">"\\."</span> + ipDigit + <span class="literal">"\\."</span> + ipDigit + <span class="literal">"$"</span>); <span class="reserved">if</span> (ipRE.test(domain)) { <span class="reserved">return</span> true; } var domains = domain.split(<span class="literal">"."</span>); <span class="reserved">if</span> (domains.length < 2) { <span class="reserved">return</span> false; } <span class="reserved">for</span> (i = 0; i < domains.length - 1; i++) { <span class="reserved">if</span> (!(/^[a-zA-Z0-9\-]+$/).test(domains[i])) { <span class="reserved">return</span> false; } } <span class="reserved">if</span>(domains[domains.length-2].length < 2){ <span class="reserved">return</span> false; } <span class="reserved">if</span> (!(/^[a-zA-Z]{2,}$/).test(domains[domains.length-1])){ <span class="reserved">return</span> false; } <span class="reserved">return</span> true; }; <span class="comment">/* * Returns true, if given string is valid domain name * Valid urls: * 127.0.0.1 * http://127.0.0.1/index.html?query * google.com * http://www.google.com/search?q=Zapatec * <span class="attrib">@param</span> url {String} value to test * <span class="attrib">@return</span> true if value is correct URL * <span class="attrib">@type</span> boolean */</span> Zapatec.Form.Validator.isUrlValid = <span class="reserved">function</span>(url){ <span class="reserved">if</span>(typeof(url) != <span class="literal">'string'</span>){ <span class="reserved">return</span> false; } var domain = url; var protocolSeparatorPos = url.indexOf(<span class="literal">"://"</span>); var domainSeparatorPos = url.indexOf(<span class="literal">"/"</span>, protocolSeparatorPos + 3); <span class="reserved">if</span>(protocolSeparatorPos == 0){ <span class="reserved">return</span> false; } domain = url.substring( (protocolSeparatorPos > 0 ? protocolSeparatorPos + 3 : 0), (domainSeparatorPos > 0 ? domainSeparatorPos : url.length) ); var portSeparatorPos = domain.indexOf(<span class="literal">":"</span>); <span class="reserved">if</span>(portSeparatorPos > 0){ var port = domain.substring(portSeparatorPos + 1); <span class="reserved">if</span>(!port.match(/\d+/)){ <span class="comment">// port number contains non-digits</span> <span class="reserved">return</span> false; } domain = domain.substring(0, portSeparatorPos); } <span class="reserved">return</span> Zapatec.Form.Validator.isDomainValid(domain); }; <span class="comment">/** * Checks if given string is valid email address. * <span class="attrib">@param</span> url {String} value to test * <span class="attrib">@return</span> true if value is correct email * <span class="attrib">@type</span> boolean */</span> Zapatec.Form.Validator.isEmailValid = <span class="reserved">function</span>(email){ <span class="reserved">if</span>(email == null){ <span class="reserved">return</span> false; } var atPos = email.indexOf(<span class="literal">"@"</span>); <span class="reserved">if</span>( atPos < 1 || email.indexOf(<span class="literal">"."</span>, atPos) == -1 ){ <span class="reserved">return</span> false; } var login = email.substring(0, atPos); var domain = email.substring(atPos + 1, email.length); <span class="comment">// Regexp declarations</span> var atom = <span class="literal">"\[^\\s\\(\\)><@,;:\\\\\\\"</span>\\.\\[\\]\]+<span class="literal">"; var word = "</span>(<span class="literal">" + atom + "</span>|(\<span class="literal">"[^\"</span>]*\<span class="literal">"))"</span>; var loginRE = new RegExp(<span class="literal">"^"</span> + word + <span class="literal">"(\\."</span> + word + <span class="literal">")*$"</span>); <span class="reserved">for</span> (i = 0; i < login.length; i++){ <span class="reserved">if</span> (login.charCodeAt(i) > 127){ <span class="reserved">return</span> false; } } <span class="reserved">if</span> (!login.match(loginRE)){ <span class="reserved">return</span> false; } <span class="reserved">return</span> Zapatec.Form.Validator.isDomainValid(domain); }; <span class="comment">/* * Returns true, if given string is valid credit card number(according to Luhn * algorythm) * <span class="attrib">@param</span> cardNumber - [string] value to test * <span class="attrib">@return</span> true if value is correct domain name * <span class="attrib">@type</span> boolean */</span> Zapatec.Form.Validator.isCreditCardValid = <span class="reserved">function</span>(cardNumber){ <span class="reserved">if</span>(cardNumber == null){ <span class="reserved">return</span> false; } var cardDigits = cardNumber.replace(/\D/g, <span class="literal">""</span>); var parity = cardDigits.length % 2; var sum = 0; <span class="reserved">for</span>(var ii = 0; ii < cardDigits.length; ii++){ var digit = cardDigits.charAt(ii); <span class="reserved">if</span> (ii % 2 == parity) digit = digit * 2; <span class="reserved">if</span> (digit > 9) digit = digit - 9; sum += parseInt(digit); } <span class="reserved">return</span> ((sum != 0) && (sum % 10 == 0)); }; <span class="comment">/* * Returns true if given string is valid date according to given format. Default format: "%m/%d/%y" * <span class="attrib">@param</span> str - [string] value to test * <span class="attrib">@param</span> format - [string] date format * <span class="attrib">@return</span> true if value is correct domain name * <span class="attrib">@type</span> boolean */</span> Zapatec.Form.Validator.isDateValid = <span class="reserved">function</span>(str, fmt){ <span class="reserved">if</span>(fmt == null || fmt == <span class="literal">""</span>){ fmt = <span class="literal">"%m/%d/%y"</span>; } var separator = <span class="literal">" "</span>; var nums = fmt.split(separator); <span class="comment">// split format string into tokens</span> <span class="reserved">if</span> (nums.length < 3){ separator = <span class="literal">"/"</span>; nums = fmt.split(separator); <span class="reserved">if</span> (nums.length < 3){ separator = <span class="literal">"."</span>; nums = fmt.split(separator); <span class="reserved">if</span> (nums.length < 3){ separator = <span class="literal">"-"</span>; nums = fmt.split(separator); <span class="reserved">if</span> (nums.length < 3){ separator = null; } } } } <span class="reserved">if</span>(separator == null){ <span class="reserved">return</span> false; } var y = null; var m = null; var d = null; var a = str.split(separator); <span class="reserved">if</span>(a.length != 3){ <span class="reserved">return</span> false; } var b = fmt.match(/%./g); var nlDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var lDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; <span class="reserved">for</span> (var i = 0; i < a.length; ++i) { <span class="reserved">if</span> (!a[i]) continue; switch (b[i]) { case <span class="literal">"%d"</span>: case <span class="literal">"%e"</span>: d = parseInt(a[i], 10); <span class="reserved">if</span>(d <= 0 || d > 31) d = -1; break; case <span class="literal">"%m"</span>: m = parseInt(a[i], 10) - 1; <span class="reserved">if</span>(m > 11 || m < 0) m = -1; break; case <span class="literal">"%Y"</span>: case <span class="literal">"%y"</span>: y = parseInt(a[i], 10); (y < 100) && (y += (y > 29) ? 1900 : 2000); break; } } <span class="reserved">if</span> (y == null || m == null || d == null || isNaN(y) || isNaN(m) || isNaN(d)){ <span class="reserved">return</span> false; } <span class="reserved">if</span>(m != -1){ <span class="reserved">if</span> ((y % 4) == 0) { <span class="reserved">if</span> ((y % 100) == 0 && (y % 400) != 0){ <span class="reserved">if</span>(d > nlDays[m]){ d = -1; } } <span class="reserved">if</span>(d > lDays[m]){ d = -1; } } <span class="reserved">else</span> { <span class="reserved">if</span>(d > nlDays[m]){ d = -1; } } } <span class="reserved">if</span> (y != 0 && m != -1 && d != -1){ <span class="reserved">return</span> true; } <span class="reserved">return</span> false; }; <span class="comment">/** * Checks if given string has given number of characters * <span class="attrib">@param</span> url {String} value to test * <span class="attrib">@param</span> length {String} min length * <span class="attrib">@return</span> true if value is has at least <i>length</i> characters * <span class="attrib">@type</span> boolean */</span> Zapatec.Form.Validator.hasMinLength = <span class="reserved">function</span>(str, length){ <span class="reserved">return</span> (str + <span class="literal">""</span>).length >= parseInt(length); } <span class="comment">/** * Checks if given string doesnt has more then given number of characters * <span class="attrib">@param</span> url {String} value to test * <span class="attrib">@param</span> length {String} max length * <span class="attrib">@return</span> true if value is has less or equal then <i>length</i> characters * <span class="attrib">@type</span> boolean */</span> Zapatec.Form.Validator.hasMaxLength = <span class="reserved">function</span>(str, length){ <span class="reserved">return</span> (str + <span class="literal">""</span>).length <= parseInt(length); } <span class="comment">//Initialize the validators</span> Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormUrl'</span>, <span class="literal">'A URL -- web address'</span>, null, <span class="literal">'invalidURLError'</span>, <span class="literal">"Valid URL needs to be in the form http://www.yahoo.com:80/index.html or just www.yahoo.com"</span>, Zapatec.Form.Validator.isUrlValid ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormEmail'</span>, <span class="literal">'An Email Address'</span>, null, <span class="literal">'invalidEmailError'</span>, <span class="literal">"Valid email address need to be in the form of nobody@example.com"</span>, Zapatec.Form.Validator.isEmailValid ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormCreditCard'</span>, <span class="literal">'Credit card number'</span>, null, <span class="literal">'invalidCreditCardError'</span>, <span class="literal">"Please enter valid credit card number"</span>, Zapatec.Form.Validator.isCreditCardValid ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormUSPhone'</span>, <span class="literal">'A USA Phone Number'</span>, /^((\([1-9][0-9]{2}\) *)|([1-9][0-9]{2}[\-. ]?))(\d[ -]?){6}\d *(ex[t]? *[0-9]+)?$/, <span class="literal">'invalidUSPhoneError'</span>, <span class="literal">"Valid US Phone number needs to be in the form of 'xxx xxx-xxxx' For instance 312 123-1234. An extention can be added as ext xxxx. For instance 312 123-1234 ext 1234"</span>, null ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormInternationalPhone'</span>, <span class="literal">'An international Phone Number'</span>, /^\+\d{1,3}[ -]\d{2,3}[ -](\d[ -]?){6}\d *(ex[t]? *[0-9]+)?$/, <span class="comment">// /^((\([1-9][0-9]{2}\) *)|([1-9][0-9]{2}[\-. ]?))[0-9]{3}[\-. ][0-9]{4} *(ex[t]? *[0-9]+)?$/,</span> <span class="literal">'invalidInternationalPhoneError'</span>, <span class="literal">"Valid internation phone number needs to be in the form of '+x xxx xxx-xxxx' For instance +1 234 567-9012. An extention can be added as ext xxxx. For instance +1 234 567-9012 ext 1234"</span>, null ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormUSZip'</span>, <span class="literal">'A USA Zip Number'</span>, /(^\d{5}$)|(^\d{5}-\d{4}$)/, <span class="literal">'invalidUSZipError'</span>, <span class="literal">"Valid US Zip number needs to be either in the form of '99999', for instance 94132 or '99999-9999' for instance 94132-3213"</span>, null ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormDate'</span>, <span class="literal">'A Valid Date'</span>, null, <span class="literal">'invalidDateError'</span>, <span class="literal">"Please enter a valid date"</span>, Zapatec.Form.Validator.isDateValid ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormInt'</span>, <span class="literal">'An Integer'</span>, null, <span class="literal">'invalidIntError'</span>, <span class="literal">"Please enter an integer"</span>, <span class="reserved">function</span>(number) { <span class="reserved">return</span> /^\d+$/.test(number); } ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormFloat'</span>, <span class="literal">'A Floating Point Number'</span>, null, <span class="literal">'invalidFloatError'</span>, <span class="literal">"Please enter a Floating Point Number"</span>, <span class="reserved">function</span>(number) { var parsed = parseFloat(number); <span class="reserved">return</span> (parsed == number); } ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormMinLength'</span>, <span class="literal">'Min length'</span>, null, <span class="literal">'minLengthError'</span>, <span class="literal">"Value is too short"</span>, Zapatec.Form.Validator.hasMinLength ); Zapatec.Form.Validator.addDataType( <span class="literal">'zpFormMaxLength'</span>, <span class="literal">'Max length'</span>, null, <span class="literal">'maxLengthError'</span>, <span class="literal">"Value is too long"</span>, Zapatec.Form.Validator.hasMaxLength ); </pre> <hr> <!-- ========== START OF NAVBAR ========== --> <a name="navbar_top"><!-- --></a> <table border="0" width="100%" cellpadding="1" cellspacing="0"> <tr> <td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1"> <a name="navbar_top_firstrow"><!-- --></a> <table border="0" cellpadding="0" cellspacing="3"> <tr align="center" valign="top"> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td> <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td> <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td> </tr> </table> </td> <td bgcolor="#EEEEFF" align="right" valign="top"><em> <b>Zapatec Form</b></em> </td> </tr> <tr> <td bgcolor="white" class="NavBarCell2"><font size="-2"> PREV NEXT</font></td> <td bgcolor="white" class="NavBarCell2"><font size="-2"> <a href="index.html" target="_top"><b>FRAMES</b></a> <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a> <script> <!-- if(window==top) { document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>'); } //--> </script> <noscript> <a href="allclasses-noframe.html" target=""><b>All Classes</b></a> </noscript> </font></td> </tr> </table> <!-- =========== END OF NAVBAR =========== --> <hr> <font size="-1"> </font> <div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Thu Aug 16 12:18:55 2007</div> </body> </html>