/* Javascript Document */

var plugin_url = base_url + 'wp-content/plugins/dmc-signmeup/';
jQuery(document).ready(function($) {

	
	/**/
	jQuery.prepareFormValidation = function(form_identifier) {
	
		$('#'+form_identifier).validate({		
			// declare class to apply			
			errorClass: "dmc-error",
			
			// invalid form			
			invalidHandler: function(form, validator) {
				$("div.signmeup-error-msg").remove();
				var errors = validator.numberOfInvalids();
				
				if (errors) {
					var message = errors == 1
						? 'You missed 1 field. It has been highlighted'
						: 'You missed ' + errors + ' fields. They have been highlighted';
						$(this).before('<div class="signmeup-error-msg">'+message+'</div>');				
				} else {
					$("div.signmeup-error-msg").hide();
				}
			},
			
			// valid form			
			submitHandler: function(form) {
				$('.signmeup-error-msg').remove();
				$('.signmeup-success-msg').remove();
						
				//form id
				var arr = form_identifier.split('-form');
				var id = arr[0];

				//action url
				var action_url = plugin_url + 'action.php';				
	
				//make button into spinner
				jQuery.switchButton($('.spinner-button'),'spinner');
	
				//define postData as inputs matching form and class
				var postData = 'method=addSubscriber';
				var form_inputs = $('#'+form_identifier+' .signmeup-input');
				form_inputs.each(function() {
					var name = $(this).attr('name');
					var val = $(this).val();					
					postData += '&' + name + '=' +val;
				});

				
				//do the request
				$.ajax({
					url: action_url,
					type: 'post',
					data: postData,
					complete: function(XMLHttpRequest, textStatus) {
	
						var responseText = XMLHttpRequest.responseText;						
						
						if(responseText!='200')
						{
							$('#'+form_identifier).before('<div class="signmeup-error-msg">Error: '+responseText+'</div>');				
							jQuery.switchButton($('.spinner-button'),'button');
							return false;
						
						} else  {
							//do success stuff here
							//request json string of success stuff
							var json_string = $.ajax({
																				url: action_url,
																				type: 'get',
																				data: 'method=getSuccessVars&identifier='+id,
																				async: false	 
																			 }).responseText;
							
							//convert json into individual vars
							var json = $.toJSON(json_string);				
							var redirect_url = $.evalJSON(json_string).redirect_url;
							var success_message = $.evalJSON(json_string).success_message;
							var success_actions = $.evalJSON(json_string).success_actions;
							
							//for a list of possible actions refer to wp_dmc_signmeup_forms_actions
							for(i=0; i<success_actions.length; i++)
							{
								var action = success_actions[i];
								
								//hide the form
								if(action == 'hide_form')
								{
									$('#'+form_identifier).fadeOut();
								}
								
								//display a message
								if(action == 'display_message' && success_message)
								{
									//todo: make this more elegant
									$('#'+form_identifier).before('<div class="signmeup-success-msg">'+success_message+'</div>');
								}
								
								//redirect to another page
								if(action == 'redirect' && redirect_url)
								{
									window.location.href = redirect_url;
								}								
							}//for loop			
							return null;						
						}//else
					}//ajax complete
				});//ajax
				
				//form.submit();
				return null;
			}//submit handler
		});//.validate()
	};//prepareFormValidation 


	/**/
	var replacers = $('.dmc-signmeup-holder');
	replacers.each(function() {
		//
		var id = $(this).attr('id');	
		
		//
		var postData = 'method=getForm&identifier='+id;
		var form_html = $.ajax({
			url: plugin_url+'action.php',
			type: 'post',
			data: postData,
			async: false
		}).responseText;
		
		//
		$(this).html(form_html);
		
		//
		var form_identifier = id +'-form';		
		jQuery.prepareFormValidation(form_identifier);
	});


	/**/
	jQuery.switchButton = function($el, towhat) {
		
		if(towhat == 'spinner')
		{
		 $el.css('display','none');
		 $el.after('<img src="'+plugin_url+'pub/images/wpspin_light.gif" id="ajax-loading" alt=""/>');
		}
		
		if(!towhat || towhat == 'button')
		{
		 $el.show();
		 $el.next().css('display','none');
		}		
	};




 /**
  *
	*/
	$('.dmc-validate-form').validate({		
		// declare class to apply			
		errorClass: "dmc-error",
		
		// invalid form			
		invalidHandler: function(form, validator) {
			$("div.signmeup-error-msg").remove();
			var errors = validator.numberOfInvalids();
			
			if (errors) {
				var message = errors == 1
					? 'You missed 1 field. It has been highlighted'
					: 'You missed ' + errors + ' fields. They have been highlighted';
					$(this).before('<div class="signmeup-error-msg">'+message+'</div>');				
			} else {
				$("div.signmeup-error-msg").hide();
			}
		},
		
		// valid form			
		submitHandler: function(form) {
			
			//alert('ok');
			form.submit();
	
		}//submit handler
	});//.validate()
	
	

});