linguisystems = {};

linguisystems.submitFormViaAjax = function(theForm) {
	$.ajax({
		type:"POST"
		,url:$(theForm).attr('action')
		,data:$(theForm).serialize()
		,dataType:"json"
		,success: function(jsondata){
			$('.validationMessage').hide();
			if (!jsondata['success']) {
				var theFormName = $(theForm).attr('name'); 
				var hightlightFirstField = true;
				if (jsondata['message']) alert(jsondata['message']);
				if (jsondata['reason']=='invalid_fields' && jsondata['fields']) {
					invalid_fields = jsondata['fields'];
					for (field in invalid_fields) {
						if (hightlightFirstField) {
							$('#'+theFormName+'_'+field).focus();
							$('#'+theFormName+'_'+field).select();
							hightlightFirstField = false;
						}
						field_validation = '#'+theFormName+'_'+field+'_validationMessage';
						$(field_validation).text(invalid_fields[field]);
						$(field_validation).show();
					}
				}
			}
			if (jsondata['redirect']) location.href=jsondata['redirect'];
		}
		,error: function(){
			alert('There was an error processing your request.  Please try again later.');
		}
	});
	return false;
}

linguisystems.validateFormViaAjax = function(theForm,actionURL) {
	if (arguments.length>2) {
		continue_url = arguments[2];
	} else {
		continue_url = false;	
	}
	$.ajax({
		type:"POST"
		,url:actionURL
		,data:$(theForm).serialize()
		,dataType:"json"
		,success: function(jsondata){
			$('.validationMessage').hide();
			if (!jsondata['success']) {
				var theFormName = $(theForm).attr('name'); 
				var hightlightFirstField = true;
				if (jsondata['message']) alert(jsondata['message']);
				if (jsondata['reason']=='invalid_fields' && jsondata['fields']) {
					invalid_fields = jsondata['fields'];
					for (field in invalid_fields) {
						if (hightlightFirstField) {
							$('#'+theFormName+'_'+field).focus();
							$('#'+theFormName+'_'+field).select();
							hightlightFirstField = false;
						}
						field_validation = '#'+theFormName+'_'+field+'_validationMessage';
						$(field_validation).text(invalid_fields[field]);
						$(field_validation).show();
					}
				}
			} else {
				if (continue_url) {
					location.href=continue_url;
				} else {
					$(theForm).submit();
				}
			}
		}
		,error: function(){
			alert('There was an error processing your request.  Please try again later.');
		}
	});
	return false;
}



linguisystems.linguiloot = {};

linguisystems.linguiloot.login =  function(theForm) {
	return linguisystems.submitFormViaAjax(theForm);
}