<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HyperHawk &#187; JavaScript</title>
	<atom:link href="http://notes.hyperhawk.com/category/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://notes.hyperhawk.com</link>
	<description>Development Notes</description>
	<lastBuildDate>Thu, 27 May 2010 19:08:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JavaScript Form Validation Helper</title>
		<link>http://notes.hyperhawk.com/javascript/javascript-form-validation-helper-219.htm</link>
		<comments>http://notes.hyperhawk.com/javascript/javascript-form-validation-helper-219.htm#comments</comments>
		<pubDate>Wed, 28 Oct 2009 19:37:09 +0000</pubDate>
		<dc:creator>HyperHawk</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://notes.hyperhawk.com/?p=219</guid>
		<description><![CDATA[Javascript form validation helper:
**
* @package public
* @subpackage lib
* @author shay anderson 10.09
* @desc rules allowed:
* 	alpha() - letters only
* 	alphanumeric() - letters &#038; numbers only
* 	decimal() - decimal
* 	min(int number) - minimum characters
* 	max(int number) - maximum characters
* 	numeric() - strict integer (no decimal)
* @example
*	// validation(string form, string output_div)
* 	var v=new validation('form_example','errors');
* 	// apply field
* [...]]]></description>
			<content:encoded><![CDATA[<p>Javascript form validation helper:<br />
<code/>**<br />
* @package public<br />
* @subpackage lib<br />
* @author shay anderson 10.09<br />
* @desc rules allowed:<br />
* 	alpha() - letters only<br />
* 	alphanumeric() - letters &#038; numbers only<br />
* 	decimal() - decimal<br />
* 	min(int number) - minimum characters<br />
* 	max(int number) - maximum characters<br />
* 	numeric() - strict integer (no decimal)<br />
* @example<br />
*	// validation(string form, string output_div)<br />
* 	var v=new validation('form_example','errors');<br />
* 	// apply field<br />
* 	// add(string field, string message, string message_div)<br />
* 	v.add('example_field','The example field is required');<br />
* 	// apply field &#038; rule<br />
* 	v.add('example_field','Example field requires a minimum of 2 characters');<br />
* 	v.min(2); // apply rule<br />
*/<br />
function validation(form, output_div) {<br />
	if(!form || typeof form!='string') {<br />
		return;<br />
	} // if<br />
	this.form=eval('document.'+form);<br />
	if(typeof this.form!='object') {<br />
		return;<br />
	} // if<br />
	var parts=new Array(); // form parts<br />
	var form=this.form; // obj<br />
	var silent=false; // alert|div output - default alert<br />
	var out_div=output_div?eval('document.getElementById(\''+output_div+'\')'):false;<br />
	var msg_alert='Please correct the following error(s):\n';<br />
	var msg_sof='- ';<br />
	var msg_eof='\n';<br />
	var msg_eof_silent='<br />';<br />
	this.alertStart=function(str) { msg_alert=str; };<br />
	this.alertLineStart=function(str) { msg_sof=str; };<br />
	this.alertLineEnd=function(str) { msg_eof=str; };<br />
	this.lineEnd=function(str) { msg_eof_silent=str; };<br />
	this.submission=function() {<br />
		var valid=true;<br />
		var chars='abcdefghijklmnopqrstuvwxyz '; // allow whitespace<br />
		var nums='0123456789';<br />
		function isInteger(value) { return value==parseInt(value); } // isInteger<br />
		function isFloat(value) { return value==parseFloat(value); } // isFloat<br />
		function isAlpha(value) {<br />
			value=value.toLowerCase();<br />
			for(var i=0;i<value.length;i++) {<br />
				if(chars.indexOf(value.charAt(i))==-1) {<br />
					return false;<br />
				} // if<br />
			} // for<br />
			return true;<br />
		} // isAlpha<br />
		function isAlphanumeric(value) {<br />
			value=value.toLowerCase();<br />
			for(var i=0;i<value.length;i++) {<br />
				if(chars.indexOf(value.charAt(i))==-1 &#038;&#038; nums.indexOf(value.charAt(i))==-1) {<br />
					return false;<br />
				} // if<br />
			} // for<br />
			return true;<br />
		} // isAlphanumeric<br />
		msg_alert=silent?'':msg_alert;<br />
		msg_sof=silent?'':msg_sof;<br />
		msg_eof=silent?msg_eof_silent:msg_eof;<br />
		function msg(msg) {<br />
			if(msg) {<br />
				valid=false; // set to invalid<br />
			} // if<br />
			return msg_sof+msg+msg_eof;<br />
		} // formatMsg<br />
		var output=msg_alert;<br />
		var ln='';<br />
		var invoke_rule=false;<br />
		var do_alert=false;<br />
		if(typeof parts=='object' &#038;&#038; parts.length>0) {<br />
			for(k in parts) {<br />
				var part=parts[k];<br />
				var field=eval('document.'+form.id+'.'+part.id);<br />
				if(typeof field!='object') { // ignore<br />
					continue;<br />
				} // if<br />
				// trigger rules<br />
				if(typeof part.rule.min=='number') { // min characters<br />
					invoke_rule=true;<br />
					if(part.rule.min>0 &#038;&#038; field.value.length
<part.rule.min) { // trigger error<br />
						ln=msg(part.msg);<br />
					} // if<br />
				} // if<br />
				if(typeof part.rule.max=='number') { // max characters<br />
					invoke_rule=true;<br />
					if(part.rule.max>0 &#038;&#038; field.value.length>part.rule.max) { // trigger error<br />
						ln=msg(part.msg);<br />
					} // if<br />
				} // if<br />
				if(typeof part.rule.numeric=='boolean') { // numeric - no decimal<br />
					invoke_rule=true;<br />
					if(!isInteger(field.value)) {<br />
						ln=msg(part.msg);<br />
					} // if<br />
				} // if<br />
				if(typeof part.rule.decimal=='boolean') { // decimal<br />
					invoke_rule=true;<br />
					if(!isFloat(field.value)) {<br />
						ln=msg(part.msg);<br />
					} // if<br />
				} // if<br />
				if(typeof part.rule.alpha=='boolean') { // alpha<br />
					invoke_rule=true;<br />
					if(!isAlpha(field.value)) {<br />
						ln=msg(part.msg);<br />
					} // if<br />
				} // if<br />
				if(typeof part.rule.alphanumeric=='boolean') { // alphanumeric<br />
					invoke_rule=true;<br />
					if(!isAlphanumeric(field.value)) {<br />
						ln=msg(part.msg);<br />
					} // if<br />
				} // if<br />
				if(!invoke_rule) { // require field only<br />
					if(field.value=='' || field.value=='undefined') {<br />
						ln=msg(part.msg);<br />
					} // if<br />
				} // if<br />
				var div=part.div?eval('document.getElementById(\''+part.div+'\')'):'';<br />
				if(typeof out_div!='object') { // do not output if output div<br />
					if(typeof div=='object' &#038;&#038; typeof div.innerHTML!='undefined') { // div message<br />
						if(!div.innerHTML) { // do not overwrite message<br />
							div.innerHTML=ln;<br />
						} // if<br />
					} // if<br />
				} // if<br />
				output+=ln; // add message<br />
				if(ln) {<br />
					do_alert=true;<br />
				} // if<br />
				ln=''; // reset<br />
				invoke_rule=false; // reset<br />
			} // for<br />
			if(!silent &#038;&#038; do_alert) { // output<br />
				alert(output);<br />
			} else if(typeof out_div=='object' &#038;&#038; typeof out_div.innerHTML!='undefined') { // output div<br />
				out_div.innerHTML=output;<br />
			} // if<br />
		} // if<br />
		return valid;<br />
	}; // submission<br />
	this.form.onsubmit=this.submission; // submit event<br />
	this.part=function(parts) {<br />
		this.id=parts[0];<br />
		this.msg=parts[1];<br />
		this.div=parts[2];<br />
		this.rule=new Object();<br />
		if(this.div) { // div output do not alert<br />
			silent=true;<br />
		} // if<br />
	}; // part<br />
	this.id=0;<br />
	this.add=function(field, message, message_div) {<br />
		this.rule_id=0; // reset<br />
		var part=new this.part(new Array(field,message,message_div));<br />
		if(!part.id || typeof part.id!='string') {<br />
			return;<br />
		} // if<br />
		if(!part.msg || typeof part.msg!='string') {<br />
			return;<br />
		} // if<br />
		parts[this.id]=part;<br />
		this.id++;<br />
	}; // add<br />
	this.partId=function() { return this.id-1; }; // on next part, rewind<br />
	this.partExists=function(id) {<br />
		return typeof parts[id?id:this.partId()]=='object'?true:false;<br />
	}; // partsExists<br />
	this.applyRule=function(type, rule, value) { // type=number|boolean|string<br />
		if(eval('typeof value!=\''+type+'\'' || !this.partExists())) {<br />
			return;<br />
		} // if<br />
		eval('parts['+this.partId()+'].rule.'+rule+'='+value);<br />
	}; // applyRule<br />
	this.min=function(num) { this.applyRule('number','min',num); }; // min<br />
	this.max=function(num) { this.applyRule('number','max',num); }; // max<br />
	this.numeric=function() { this.applyRule('boolean','numeric',true); }; // numeric<br />
	this.decimal=function() { this.applyRule('boolean','decimal',true); }; // decimal<br />
	this.alpha=function() { this.applyRule('boolean','alpha',true); }; // alpha<br />
	this.alphanumeric=function() { this.applyRule('boolean','alphanumeric',true); }; // alphanumeric<br />
} // validation</code></p>
]]></content:encoded>
			<wfw:commentRss>http://notes.hyperhawk.com/javascript/javascript-form-validation-helper-219.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Loop Through Array</title>
		<link>http://notes.hyperhawk.com/javascript/loop-through-array-172.htm</link>
		<comments>http://notes.hyperhawk.com/javascript/loop-through-array-172.htm#comments</comments>
		<pubDate>Mon, 19 Oct 2009 19:14:32 +0000</pubDate>
		<dc:creator>HyperHawk</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://notes.hyperhawk.com/?p=172</guid>
		<description><![CDATA[var vals={
v1:33,
v2:29,
v3:55,
v4:'zz'
} // vals
for(var val in vals) {
alert(val+'='+vals[val]);
} // for
]]></description>
			<content:encoded><![CDATA[<p><code>var vals={<br />
v1:33,<br />
v2:29,<br />
v3:55,<br />
v4:'zz'<br />
} // vals<br />
for(var val in vals) {<br />
alert(val+'='+vals[val]);<br />
} // for</code></p>
]]></content:encoded>
			<wfw:commentRss>http://notes.hyperhawk.com/javascript/loop-through-array-172.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Navigation Tree</title>
		<link>http://notes.hyperhawk.com/javascript/navigation-tree-76.htm</link>
		<comments>http://notes.hyperhawk.com/javascript/navigation-tree-76.htm#comments</comments>
		<pubDate>Thu, 23 Jul 2009 20:30:46 +0000</pubDate>
		<dc:creator>HyperHawk</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://notes.hyperhawk.com/?p=76</guid>
		<description><![CDATA[function toggle(item) {
   obj=document.getElementById(item);
   if(obj) {
                   visible=(obj.style.display!="none")
                   key=document.getElementById("x" + item);
      [...]]]></description>
			<content:encoded><![CDATA[<p><code>function toggle(item) {<br />
   obj=document.getElementById(item);<br />
   if(obj) {<br />
                   visible=(obj.style.display!="none")<br />
                   key=document.getElementById("x" + item);<br />
                   if (visible) {<br />
                     obj.style.display="none";<br />
                     //key.innerHTML="";<br />
                   } else {<br />
                      obj.style.display="block";<br />
                     // key.innerHTML="";<br />
                   } // if<br />
   } // if<br />
} // toggle<br />
function expand() {<br />
   divs=document.getElementsByTagName("DIV");<br />
   for (i=0;i
<divs.length;i++) {<br />
     divs[i].style.display="block";<br />
     key=document.getElementById("x" + divs[i].id);<br />
     //key.innerHTML="";<br />
   } // for<br />
} // expand<br />
function collapse() {<br />
   divs=document.getElementsByTagName("DIV");<br />
   for (i=0;i<divs.length;i++) {<br />
     divs[i].style.display="none";<br />
     key=document.getElementById("x" + divs[i].id);<br />
    //key.innerHTML="";<br />
   } // for<br />
} // toggle</code><br />
]]></content:encoded>
			<wfw:commentRss>http://notes.hyperhawk.com/javascript/navigation-tree-76.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmatically Remove HTML</title>
		<link>http://notes.hyperhawk.com/javascript/programmatically-remove-html-101.htm</link>
		<comments>http://notes.hyperhawk.com/javascript/programmatically-remove-html-101.htm#comments</comments>
		<pubDate>Wed, 15 Jul 2009 20:47:17 +0000</pubDate>
		<dc:creator>HyperHawk</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://notes.hyperhawk.com/?p=101</guid>
		<description><![CDATA[var d = document.getElementsByTagName('div');
for (var i = 0; i < d.length; i++){
if((d[i].id).substring(0, 6) == 'right_') {
document.getElementById(d[i].id).innerHTML = '';
} // if
} // for
]]></description>
			<content:encoded><![CDATA[<p><code>var d = document.getElementsByTagName('div');<br />
for (var i = 0; i < d.length; i++){<br />
if((d[i].id).substring(0, 6) == 'right_') {<br />
document.getElementById(d[i].id).innerHTML = '';<br />
} // if<br />
} // for</code></p>
]]></content:encoded>
			<wfw:commentRss>http://notes.hyperhawk.com/javascript/programmatically-remove-html-101.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

