/*
	functions.forms.js
	JQuery Form Functions
	Creator: Matt Kircher
*/

function addNotificationBar(mssg){
	
	var message = $('<div class="notification_bar"><p>'+mssg+'&nbsp;&nbsp;&nbsp;<a class="close_notifier" href="#">ok</a></p></div>');
	$(message).find('a').bind('click', function(){ 
		$('.notification_bar').slideUp(400, function(){ 
			$('.notification_bar').remove(); 
		});
	}).end().hide().prependTo($('body')).slideDown(400);
	return true;
}

function validateEmail(e){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test($.trim(e));
}

function setupForm(){
	$('form').each(function(){
		
	});
}

function validateForm(f){
	
	var specificForm = ($.trim(f) == "")?'form':f;
	
	//setup valid object
	var valid = { status:true, response:'', element:null };
	
	//remove classes, go through and check for non-values
	$(specificForm+' .select_required_attention').remove();
	$(specificForm+' .required')
	.removeClass('required_attention')
	.each(function(){
		if(($(this).val() == "" || $(this).val() == null)){
			$(this).addClass('required_attention');
			valid.status = false;
			valid.response = 'One or more required fields have not been completed. Please complete them and resubmit the form.';
			if(valid.element == null){ valid.element = $(this); }
			
			if($(this).get(0).nodeName == "SELECT"){
				$(this).after('<span class="select_required_attention">&lsaquo;&mdash;</span>');
			}
		}
	});
	
	//if email is not of the form 'name@email.com', don't validate
	if(valid.status){
		$(specificForm+' input.required[name="email"]').each(function(){				
			if(!validateEmail($(this).val())){
				$(this).addClass('required_attention');
				valid.status = false;
				valid.response = 'Please supply a valid email address.';
				valid.element = $(this);
			}
		});
	}
	
	//display alert, focus on first non-valued field
	if(!valid.status){ alert(valid.response); $(valid.element).focus(); }
	return valid.status;
}

function sampleAJAXFormSetup(){
	
	// Alphanumeric / word limits
	$('#form')
	.find('#input').numeric().end()
	.find('#otherinput').alpha({allow:" ."}).end()
	.find('#email').alphanumeric({ichar:" "});
	
	// prepare Options Object 
	var options = {
		type:		'POST',
		url:        	'includes/forms.process.php?action=action',
		dataType:	'json',
		resetForm:	false,
		beforeSubmit: function(){
				
				if(validateForm('#form')){
					return true;					
				} else {
					return false;	
				}
		},
		success:    	function(data){
			
			if(data.status == "OK"){
				alert(data.status_message);
			}
		}
	}; 
	
	// pass options to ajaxForm 
	$('#contestEntryForm').ajaxForm(options);
}
