Forms = {
	
	init: function() {
		Forms.rsvpForm();
		Forms.newsletterForm();
		Forms.contactForm();
		Forms.sharePageForm();
		Forms.spotImprovementForm();
	},
	
	rsvpForm: function() {
		$("#rsvpForm").validator({position: 'center right',offset: [0, 0],message: '<div><em/></div>',messageClass: 'formError',inputEvent: 'keyup'}).submit(function(e) {
			
			var form = $(this);
			
			form.find("input[type=submit]").hide();
			form.find(".formSpinner").show();
			
			// client-side validation OK.
			if (!e.isDefaultPrevented()) {
		
				// submit with AJAX
				$.getJSON("/calendar/rsvp/process.php?" + form.serialize(), function(json) {
		
					// everything is ok. (server returned true)
					if (json === true)  {
						$('html, body').animate({scrollTop:form.parent().parent().parent().offset().top}, 'fast');
						
						form.load("/calendar/rsvp/success.php?" + form.serialize());
		
					// server-side validation failed. use invalidate() to show errors
					} else {
						form.find("input[type=submit]").show();
						form.find(".formSpinner").hide();
						
						form.data("validator").invalidate(json);
						
						Recaptcha.reload();
						
						if( json.captcha === false ) {
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_audio.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: inline !important');
						}
						else
						{
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: inline !important');
							$(".recaptcha_only_if_audi.recaptcha_only_if_no_incorrect_solo").attr('style','display: inline !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: none !important');
						}
					}
				});
		
				// prevent default form submission logic
				e.preventDefault();
			}
		})
		.bind("onFail", function(e, errors)  {
				
			/*$.each(errors, function()  {
				var input = this.input;
				input.css({borderColor: "red"});
			});*/
	
		});
	},
	
	newsletterForm: function() {
		$("#newsletterForm").validator({position: 'top left',offset: [0, 0],message: '<div><em/></div>',messageClass: 'formError_footer',inputEvent: 'keyup'}).submit(function(e) {
			
			var form = $(this);
			
			form.find("input[type=submit]").hide();
			form.find(".formSpinner").show();
			
			// client-side validation OK.
			if (!e.isDefaultPrevented()) {
		
				// submit with AJAX
				$.getJSON("/newsletter/process.php?" + form.serialize(), function(json) {
		
					// everything is ok. (server returned true)
					if (json === true)  {						
						form.load("/newsletter/success.php?" + form.serialize());
		
					// server-side validation failed. use invalidate() to show errors
					} else {
						form.find("input[type=submit]").show();
						form.find(".formSpinner").hide();
						
						form.data("validator").invalidate(json);
					}
				});
		
				// prevent default form submission logic
				e.preventDefault();
			}
		})
		.bind("onFail", function(e, errors)  {
				
			/*$.each(errors, function()  {
				var input = this.input;
				input.css({borderColor: "red"});
			});*/
	
		});
	},
	
	contactForm: function() {
			if( $("#contactForm").length ) {
				var lanDefault = "";
				var lanSp = "es";
				var lan;
				
				switch($("#contactForm").attr('class').replace(/^lan\-/,"")) {
					case lanSp:
						lan = lanSp;
						break;
					
					default:
						lan = lanDefault;
						break;
				}
			}
						
			$("#contactForm").validator({position: 'center right',offset: [0, 0],message: '<div><em/></div>',messageClass: 'formError',inputEvent: 'keyup'}).submit(function(e) {
			
			var form = $(this);
			
			form.find("input[type=submit]").hide();
			form.find(".formSpinner").show();
			
			// client-side validation OK.
			if (!e.isDefaultPrevented()) {
		
				// submit with AJAX
				$.getJSON("/contact/process.php?" + form.serialize(), { lan: lan }, function(json) {
		
					// everything is ok. (server returned true)
					if (json === true)  {
						$('html, body').animate({scrollTop:form.parent().parent().parent().parent().offset().top}, 'fast');
						
						form.load("/contact/success.php?" + form.serialize(),{ lan: lan });
		
					// server-side validation failed. use invalidate() to show errors
					} else {
						form.find("input[type=submit]").show();
						form.find(".formSpinner").hide();
						
						form.data("validator").invalidate(json);
						
						Recaptcha.reload();
						
						if( json.captcha === false ) {
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_audio.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: inline !important');
						}
						else
						{
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: inline !important');
							$(".recaptcha_only_if_audi.recaptcha_only_if_no_incorrect_solo").attr('style','display: inline !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: none !important');
						}
					}
				});
		
				// prevent default form submission logic
				e.preventDefault();
			}
		})
		.bind("onFail", function(e, errors)  {
				
			/*$.each(errors, function()  {
				var input = this.input;
				input.css({borderColor: "red"});
			});*/
	
		});
	},
	
	sharePageForm: function() {
			$("#sharePageForm").validator({position: 'center right',offset: [0, 0],message: '<div><em/></div>',messageClass: 'formError',inputEvent: 'keyup'}).submit(function(e) {
			
			var form = $(this);
			
			form.find("input[type=submit]").hide();
			form.find(".formSpinner").show();
			
			// client-side validation OK.
			if (!e.isDefaultPrevented()) {
		
				// submit with AJAX
				$.getJSON("/share/process.php?" + form.serialize(), function(json) {
		
					// everything is ok. (server returned true)
					if (json === true)  {
						$('html, body').animate({scrollTop:form.parent().parent().parent().offset().top}, 'fast');
						
						form.load("/share/success.php?" + form.serialize());
					} else {
						form.find("input[type=submit]").show();
						form.find(".formSpinner").hide();
						
						form.data("validator").invalidate(json);
						
						Recaptcha.reload();
						
						if( json.captcha === false ) {
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_audio.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: inline !important');
						}
						else
						{
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: inline !important');
							$(".recaptcha_only_if_audi.recaptcha_only_if_no_incorrect_solo").attr('style','display: inline !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: none !important');
						}
					}
				});
		
				// prevent default form submission logic
				e.preventDefault();
			}
		})
		.bind("onFail", function(e, errors)  {
				
			/*$.each(errors, function()  {
				var input = this.input;
				input.css({borderColor: "red"});
			});*/
	
		});
	},
	
	spotImprovementForm: function() {
	
			$("input[name='spoimp_locationProblemType']").each(function(){
				var rel = $(this).attr("rel");
				var name = $(this).attr("name");
				
				if( $(this).is(":checked") && $(this).val().toLowerCase() == "other" ) {
					$(this).parents('form').find("#spoimp_locationProblemTypeOther").removeClass("disabled");
					$(this).parents('form').find("#spoimp_locationProblemTypeOther").removeAttr("disabled");
				}
				
				$(this).change(function() {
					if( $(this).val() === "Other" ) {
						$(this).parents('form').find("#spoimp_locationProblemTypeOther").removeClass("disabled");
						$(this).parents('form').find("#spoimp_locationProblemTypeOther").removeAttr("disabled");
					}
					else {
						$(this).parents('form').find("#spoimp_locationProblemTypeOther").addClass("disabled");
						$(this).parents('form').find("#spoimp_locationProblemTypeOther").attr("disabled","disabled");
					}
				});
			});
			

			$("#spotImprovementForm").validator({position: 'center right',offset: [0, 0],message: '<div><em/></div>',messageClass: 'formError',inputEvent: 'keyup'}).submit(function(e) {
			
			var form = $(this);
						
			form.find("input[type=submit]").hide();
			form.find(".formSpinner").show();
			
			// client-side validation OK.
			if (!e.isDefaultPrevented()) {
		
				// submit with AJAX
				$.getJSON("/plans/bicycle-and-pedestrian-program/spot-improvement-form/process.php?" + form.serialize(), function(json) {
					
					if( $("a[name='scrollPosition']").length ) {
						$('html, body').animate({scrollTop:(form.parent().parent().find("a[name='scrollPosition']").offset().top-20)}, 'fast');
					} else if( $("#scrollPosition").length ) {
						$('html, body').animate({scrollTop:(form.parent().parent().find("#scrollPosition").offset().top-20)}, 'fast');
					} else {
						$('html, body').animate({scrollTop:(form.parent().offset().top-20)}, 'fast');
					}
										
					// everything is ok. (server returned true)
					if (json === true)  {
						
						form.load("/plans/bicycle-and-pedestrian-program/spot-improvement-form/success.php?" + form.serialize());
		
					// server-side validation failed. use invalidate() to show errors
					} else {
						form.find("input[type=submit]").show();
						form.find(".formSpinner").hide();
						
						form.data("validator").invalidate(json);
						
						Recaptcha.reload();
						
						if( json.captcha === false ) {
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_audio.recaptcha_only_if_no_incorrect_sol").attr('style','display: none !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: inline !important');
						}
						else
						{
							$(".recaptcha_only_if_image.recaptcha_only_if_no_incorrect_sol").attr('style','display: inline !important');
							$(".recaptcha_only_if_audi.recaptcha_only_if_no_incorrect_solo").attr('style','display: inline !important');
							$(".recaptcha_only_if_incorrect_sol").attr('style','display: none !important');
						}
					}
				});
		
				// prevent default form submission logic
				e.preventDefault();
			}
		})
		.bind("onFail", function(e, errors)  {
				
			/*$.each(errors, function()  {
				var input = this.input;
				input.css({borderColor: "red"});
			});*/
	
		});
	}
}
