jQuery(document).ready(function() {
	//Required Fields
   var required = new Array('first_name','last_name','home_phone');
   var message = '';
   
   var error = jQuery('#error');
	
	// add markup to container and apply click handlers to anchors
   var obj = jQuery("#submitbutton").click(function(e){
	   message = '';
	   //Gather Form Inputs
	   var inputs = new Array();
	   var ids = new Array();
	   jQuery('input').each(function(i){
			if(jQuery(this).attr("id") != 'submitbutton' && jQuery(this).attr("id") != 'form-submitted' && jQuery(this).attr("id") != 's'){
				ids.push(jQuery(this).attr("id"))
				inputs.push(jQuery(this).val());
			}
		});
		
		//check for required fields
		var missing = new Array();
		jQuery.each(ids, function(){
		 //alert(jQuery('#'+this).val());
		 	if(jQuery.inArray(this.toString(), required) != -1 && jQuery('#'+this).val() == '')
				missing.push(this.toString());     	
			if(this.indexOf('email')+1 && jQuery('#'+this).val() != ''){
				if(!isValidEmailAddress(jQuery('#'+this).val())){
					missing.push(this.toString());
					message += "<br />You have entered an invalid Email Address";
				}
			}			
		 });
		 
		if(!jQuery('.event-listings input:checkbox:checked').length){
			missing.push("checkbox");
			message += "<br />Please check at least ONE event.";
		}
		else {
			jQuery('.event-listings input:checkbox:checked').each(function(){
				if(jQuery(this).parent().parent().find('.members').val()=='') {
					missing.push(jQuery(this).parent().parent().parent().find('input:checkbox').attr("id"));
					message += "<br />Please enter the number of people attending "+jQuery(this).parent().parent().find('.details h3').text()+".";
				}
			});
		}
		
		//alert(missing); 
		// send request
		if(missing.length < 1){		
			jQuery('#event-registration-form').submit();
		}
		else {
			jQuery('html, body').animate({scrollTop:0}, 'slow');
			error.empty();
			error.html("<span>You have an Error:</span><br /><br />Please enter the required fileds highlighted in red.<br />");
			if(message.length)
				error.append("<br />Additional Informaton:" + message);
			 jQuery.each(ids, function(){
				jQuery('#'+this).prev('label').removeClass("error");
			 });
			jQuery.each(missing, function(){    		
				jQuery('#'+this).prev('label').addClass("error");
			});
			error.show("normal");
		}
	});
	
	jQuery('.members').keyup(function(){		
		var t=0;
		var f=0;
		var fp=0;
		var n = jQuery(this).val();
		//var nm = jQuery(this).parent().parent().find('.non-members').val();
		var mp = parseFloat(jQuery(this).attr("title"));
		//var nmp = parseFloat(jQuery(this).parent().parent().find('.non-members').attr("title"));
		if(jQuery(this).parent().parent().find('.family').length){
			f = jQuery(this).parent().parent().find('.family').val();
			fp = parseFloat(jQuery(this).parent().parent().find('.family').attr("title"));
		}
		var total = parseFloat((n*mp)+(f*fp)).toFixed(2);		
		jQuery(this).parent().parent().find('.event-total').val(total);
		jQuery('.event-total').each(function(){			
			t = parseFloat(t + parseFloat(jQuery(this).val()));
		});
		t=t.toFixed(2);
		jQuery('#total').val(t);		
		if(jQuery(this).parent().parent().parent().find('input:checkbox').attr("checked")==false && jQuery(this).val() != '')
			jQuery(this).parent().parent().parent().find('input:checkbox').attr("checked", "checked");
	});
	
	jQuery('.non-members').keyup(function(){
		var t=0;
		var f=0;
		var fp=0;
		var nm = jQuery(this).val();
		var n = jQuery(this).parent().parent().find('.members').val();
		var nmp = parseFloat(jQuery(this).attr("title"));
		var mp = parseFloat(jQuery(this).parent().parent().find('.members').attr("title"));
		if(jQuery(this).parent().parent().find('.family').length){
			f = jQuery(this).parent().parent().find('.family').val();
			fp = parseFloat(jQuery(this).parent().parent().find('.family').attr("title"));
		}
		var total = parseFloat((n*mp)+(nm*nmp)+(f*fp)).toFixed(2);		
		jQuery(this).parent().parent().find('.event-total').val(total);
		jQuery('.event-total').each(function(){			
			t = parseFloat(t + parseFloat(jQuery(this).val()));
		});
		t=t.toFixed(2);
		jQuery('#total').val(t);
		if(jQuery(this).parent().parent().parent().find('input:checkbox').attr("checked")==false && jQuery(this).val() != '')
			jQuery(this).parent().parent().parent().find('input:checkbox').attr("checked", "checked");
	});
	
	jQuery('.family').keyup(function(){
		var t=0;
		var n = jQuery(this).val();
		var fp = parseFloat(jQuery(this).attr("title"));
		var nm = jQuery(this).parent().parent().find('.non-members').val();
		var m = jQuery(this).parent().parent().find('.members').val();
		var nmp = parseFloat(jQuery(this).parent().parent().find('.non-members').attr("title"));
		var mp = parseFloat(jQuery(this).parent().parent().find('.members').attr("title"));
		var total = parseFloat((m*mp)+(nm*nmp)+(n*fp)).toFixed(2);		
		jQuery(this).parent().parent().find('.event-total').val(total);
		jQuery('.event-total').each(function(){			
			t = parseFloat(t + parseFloat(jQuery(this).val()));
		});
		t=t.toFixed(2);
		jQuery('#total').val(t);
		if(jQuery(this).parent().parent().parent().find('input:checkbox').attr("checked")==false && jQuery(this).val() != '')
			jQuery(this).parent().parent().parent().find('input:checkbox').attr("checked", "checked");
	});
	
	jQuery('input:checkbox').click(function(){
		if(jQuery(this).attr("checked")==false){			
			jQuery(this).parent().parent().find('.members').val('');
			jQuery(this).parent().parent().find('.non-members').val('');
			jQuery(this).parent().parent().find('.members').trigger("keyup");
		}
	});
	
	jQuery('input:text').each(function(){
		if(jQuery(this).val() != ''){
			jQuery(this).trigger("keyup");
		}
	});
});
