var errorcheckRequests = new Object();

$(document).ready(function(){
	$('form.errorcheck').bind('submit',function(){
		formId=$(this).attr('id');
		url=$(this).attr('action');
	
		submitBtn=$('#'+$(this).attr('id')+' input.Submit');	
		submitBtn.attr('disabled','disabled');
		submitTxt=submitBtn.val();
		submitBtn.val('Saving form..');
		
		submitData=new Object();
		$('#'+$(this).attr('id')+' input,'+' #'+$(this).attr('id')+' textarea,'+' #'+$(this).attr('id')+' select').each(function(){
			type=$(this).attr('type');
			if(type=='radio' || type=='checkbox'){
				if($(this).is(":checked")){
					submitData[$(this).attr('name')]=$(this).val();
				}
			}
			else {
				submitData[$(this).attr('name')]=$(this).val();
			}
		});
		
		submitData['errorcheck'] = formId;
		submitData['submitTxt'] = submitTxt;
		
		if(errorcheckRequests[formId]){
			errorcheckRequests[formId].abort();	
		}
		
		errorcheckRequests[formId]=$.ajax({
			type: "POST",
			url: url,
			data:submitData,
			dataType:"json",
			error: function(){
				$('form#'+formId).unbind('submit');
				$('form#'+formId).submit();
			},
			success: function(response){
				errMsg='';
				for(i in response.errors){
					errMsg+=' - '+response.errors[i]+'\n';
				}
				if(errMsg){
					alert(errMsg);
					$('form#'+response.formId+' input.Submit').val(response.submitTxt);
					$('form#'+response.formId+' input.Submit').removeAttr('disabled');
				}
				else {
					if(response.eval){
						eval(response.eval);
					}
					else {
						$('form#'+response.formId).unbind('submit');
						$('form#'+response.formId).submit();
					}
				}
			}
		});

		return false;
	});
});
