function trim( str ) {
	return str.replace(/^\s+|\s+$/g, '') ;
}

function clearElement( e ) {
	while ( e.hasChildNodes() ) {
		e.removeChild( e.fistChild );
	}
}

function get_label(id) {
	var all_labels = document.getElementsByTagName('label');
	var loopLength = all_labels.length;
	for(var i = 0; i < loopLength; i++) {
		var label = all_labels[i];
		
		if(document.all) {
			var label_for = label.htmlFor;
		}else{
			var label_for = label.getAttribute('for');
		}
		
		if(label_for == id) {
			return label;
		}
	}
}

function get_radio_value(form_name, radio_name) {
	for (var i = 0; i < document[form_name][radio_name].length; i++) {
		if (document[form_name][radio_name][i].checked) {
			return document[form_name][radio_name][i].value;
		}
	}
}

function validateEmail(email) {
	var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(email.match(emailRegEx)){
		return true;
	}else{
		return false;
	}
}





 

function checkForm(form_name)
{
	var valid = true;
	
	var all_inputs = document.getElementsByTagName('input');
	var all_selects = document.getElementsByTagName('select');
	var all_textareas = document.getElementsByTagName('textarea');
	
	
	
	var loopLength = all_inputs.length;
	for(var i = 0; i < loopLength; i++) {
		var input = all_inputs[i];
		
		if(input.className.search( /required/ig ) != -1) {
			var type = input.getAttribute('type');
			
			if(type == 'text') {
				var label = get_label(input.getAttribute('id'));
				
				if(input.getAttribute('name') == "Email" || input.getAttribute('name') == "Email") {
					if(validateEmail(input.value)) {
						var email_valid = true;
					}else{
						var email_valid = false;
					}
				}else{
					var email_valid = true;
				}
				
				if(trim(input.value) == '' || !email_valid) {
					valid = false;
					
					if(!email_valid && trim(input.value) != '') {
						alert('Please enter a valid email address.');
					}
					
					if(input.className.search( /invalid/ig ) == -1) {
						input.className += ' invalid';
					}
					
					if(label != null && label.className.search( /invalid/ig ) == -1) {
						label.className += ' invalid';
					}
				}else{
					input.className = input.className.replace(/invalid/ig, '');
					
					if(label != null) {
						label.className = label.className.replace(/invalid/ig, '');
					}
				}
			}else if(type == 'radio') {
				var label = get_label(input.getAttribute('name'));
				
				var value = get_radio_value(form_name, input.getAttribute('name'));
				if(value == null) {
					valid = false;
					
					if(label != null && label.className.search( /invalid/ig ) == -1) {
						label.className += ' invalid';
					}
				}else{
					if(label != null) {
						label.className = label.className.replace(/invalid/ig, '');
					}
				}
			}
		}
	}
	
	if(all_selects != null) {
	var loopLength = all_selects.length;
	for(var i = 0; i < loopLength; i++) {
		var select = all_selects[i];
		var label = get_label(select.getAttribute('id'));
		
		if(select.className.search( /required/ig ) != -1) {
			if(select.value == '0' || select.value == '') {
				valid = false;
				
				if(select.className.search( /invalid/ig ) == -1) {
					select.className += ' invalid';
				}
				
				if(label != null && label.className.search( /invalid/ig ) == -1) {
					label.className += ' invalid';
				}
			}else{
				select.className = select.className.replace(/invalid/ig, '');
				
				if(label != null) {
					label.className = label.className.replace(/invalid/ig, '');
				}
			}
		}
	}
	}
	
	if(all_textareas != null) {
	var loopLength = all_textareas.length;
	for(var i = 0; i < loopLength; i++) {
		var textarea = all_textareas[i];
		var label = get_label(textarea.getAttribute('id'));
		
		if(textarea.className.search( /required/ig ) != -1) {
			if(trim(textarea.value) == '') {
				valid = false;
				
				if(textarea.className.search( /invalid/ig ) == -1) {
					textarea.className += ' invalid';
				}
				
				if(label != null && label.className.search( /invalid/ig ) == -1) {
					label.className += ' invalid';
				}
			}else{
				textarea.className = textarea.className.replace(/invalid/ig, '');
				
				if(label != null) {
					label.className = label.className.replace(/invalid/ig, '');
				}
			}
		}
	}
	}
	
	var required_msg = document.getElementById( 'requiredMsg' );
	if(required_msg != null) {
		if(!valid) {
			required_msg.style.display = "block";
		}else{
			required_msg.style.display = "none";
		}
	}
	
	return valid;
	
	/*// get all label tags
	var requiredLabelsArray = document.getElementsByTagName( 'label' );
	var error = false;
	
	// loop through labels
	for ( var i=0; i<requiredLabelsArray.length; i++ ) {
		var currentLabel = requiredLabelsArray[i];
		
		// see if the 'required' class is applied
		if ( currentLabel.className.search( /required/ig ) != -1 ) {

			// get the field the label refers to (the 'for' attribute specifies the id of the field...IE calls it 'htmlFor')
			var field = document.getElementById( currentLabel.getAttribute('for') ? currentLabel.getAttribute('for') : currentLabel.getAttribute('htmlFor') );

			if ( field ) {			
				// check type of input
				var fieldType = field.getAttribute( 'type' );
				
				if ( fieldType ) {
					fieldType = fieldType.toLowerCase();
				} else {
					fieldType = field.tagName.toLowerCase();
				}
					
				if ( fieldType == 'select-one' )  {
					fieldType = 'select';
				}
				
				//alert(' field type ' + fieldType + ' and value ' + field.value );
				if ( ( fieldType == 'select' && ( field.value == '0' || field.value == '' ) )  ||
					 ( fieldType == 'text' && trim( field.value ) == '' ) ) {
							currentLabel.className += ' headerColor';
						//	msg += '<br />- ' + currentLabel.firstChild.nodeValue;
							error = true;
				} else {
					currentLabel.className = currentLabel.className.replace( /headerColor/ig, '' );
				}
			}
		}
	}
	

	var infoSpan = document.getElementById( 'requiredMsg' );
	
	// show or hide the error message
	if ( infoSpan ) {
		infoSpan.style.display = error ? 'block' : 'none';
	}
	
	// scroll to error message
	if ( error ) {
		window.location.hash = "requiredMsg";
	}
	
	return !error;*/
}
