// Page Specific JavaScript Document

$(function() {

	var _loadingDiv = $("#loadingDiv");

	$('#ContactPropertyForm, #PostEditForm').submit(function(){
			_loadingDiv.show();
			$.post('/contacts/ajax_quick',
				$(this).serializeArray(),
				afterValidate,
				"json"
			);
			return false;
		});
		
		// Post-submit callback 
		function afterValidate(data, status)  {
			$(".message").remove();
			$(".error-message").remove();

			if (data.errors) {
				onError(data.errors);
			} else if (data.success) {
				onSuccess(data.success);
			}
		}
		
		function onSuccess(data) {
			flashMessage(data.message);
			_loadingDiv.hide();
			$('#fields').slideUp();
		};
		
		function onError(data) {
			flashMessage(data.message);
			$.each(data.data, function(model, errors) {
				for (fieldName in this) {
					var element = $("#" + camelize(model + '_' + fieldName));
					var _insert = $(document.createElement('div')).insertAfter(element);
					_insert.addClass('error-message').text(this[fieldName])
				}
				_loadingDiv.hide();
			});
		};
		
		function flashMessage(message) {
			var _insert = $(document.createElement('div')).css('display', 'none');
			_insert.attr('id', 'flashMessage').addClass('message').text(message);
			_insert.insertBefore($(".form")).fadeIn();
		}

		function camelize(string) {
			var a = string.split('_'), i;
			s = [];
			for (i=0; i<a.length; i++){
				s.push(a[i].charAt(0).toUpperCase() + a[i].substring(1));
			}
			s = s.join('');
			return s;
		}
});


