/**
 * form.js -> http://theatre-bernardines.org/
 * JavaScript user interaction script 
 * (cc) creative commons by 3.0
 */



/**
 * Returns TRUE whether the given form is validated, FALSE otherwise.
 * 
 * @param Element	the form element to be validated
 * @param Array		a list of required field's ID (for IE4 && NAV4 only)
 * @return boolean
 */
function validate( me, IDs ) {
	
	var mark = '<span class="mark">* </span>';
	var node = me.childNodes;
	var done = true;
	
	
	// IE 4 ; NAV 4
	if ( !node && IDs ) {
		for( var i=0; i<IDs.length; i++  ) {
			if ( document.getElementById( IDs[i] ).value=="" ) {
				done = false;
				break;
			}
		}
	}
	else {

		// search for empty field
		// in element.field node
		for( var i=0; i<node.length; i++ ) {
			if ( node[i].className=='field' ) {
			
				fields = node[i].childNodes;
				
				// seach for required field
				for( var j=0; j<fields.length; j++ ) {
					if ( fields[j].className=='require' ) {
						
						var html = fields[j].childNodes[0].innerHTML.replace( /<.*>/, '' );
						var pass = true;
						
						fields[j].childNodes[0].innerHTML = html;
						if ( fields[j].childNodes[2].name.indexOf("mail")!=-1 )
							pass = /([\w\.-]+)@([\w\.-]+)\.([\w]{2,4})/.test(fields[j].childNodes[2].value);
						else pass = fields[j].childNodes[2].value!="";
							
							
						if ( !pass ) {
							fields[j].childNodes[0].innerHTML = mark+html;
							done = false;
						}
					}
				}
			}
			if ( node[i].className=='subitem' ) {
				
				items = node[i].childNodes;
				
				// seach for required element
				for( var j=0; j<items.length; j++ ) {
					if ( items[j].className!='field' ) continue;
					//done = mark( items[j].childNodes );
					fields = items[j].childNodes;
				
					// seach for required field
					for( var k=0; k<fields.length; k++ ) {
						if ( fields[k].className=='require' ) {
							
							var html = fields[k].childNodes[0].innerHTML.replace( /<.*>/, '' );
							var pass = true;
							
							fields[k].childNodes[0].innerHTML = html;
							if ( fields[k].childNodes[2].name.indexOf("mail")!=-1 )
								pass = /([\w\.-]+)@([\w\.-]+)\.([\w]{2,4})/.test(fields[k].childNodes[2].value);
							else pass = fields[k].childNodes[2].value!="";
							
							if ( !pass ) {
								fields[k].childNodes[0].innerHTML = mark+html;
								done = false;
							}
						}
					}
				}
			}
		}
	}
	
	
	// display message
	if ( !done )
		alert(
			"Merci de vérifier ou de compléter les informations marquées d\'un astérisque avant de "+
			me.submit.value+
			"."
		);
			
	// ok submit form
	return done;
}


/*function mark( fields ) {
	
	for( var i=0; i<fields.length; k++ ) {
		if ( fields[i].className=='require' ) {
			
			var html = fields[i].childNodes[0].innerHTML.replace( /<.*>/, '' );
			
			fields[i].childNodes[0].innerHTML = html;
			if ( fields[i].childNodes[2].value=="" ) {
				fields[i].childNodes[0].innerHTML = mark+html;
				return false;
			}
		}
	}
	
	return true;
				
}*/


/**
 * Returns TRUE while the current key pressed match number or any valid keys for input number only 
 * field, FALSE otherwise.
 * 
 * usage : onkeypress="return keyIsNum(event)"
 *
 * @param Event	the key event
 * @return boolean
 */
function keyIsNum( event ) {
	
	if ( !event ) event = window.event;	 // <-- IE only
	
	var key  = event.keyCode ? event.keyCode : event.which ;
	var mask = [37,39,8,9,48,49,50,51,52,53,54,55,56,57,47,63234,63235,13];
	
	for( var i=0; i<mask.length; i++ )
		if ( mask[i]==key ) return true;
		
	return false;
}

