$(document).ready(function(){
	var labels = {elems: {author:"",email:"",comment:"",submit:""}, defaults: {} };
	var fwrap = $("#formwrap"), form = $("#commentform");
	
	if(!fwrap.length) return;
	form.prepend("<input type='hidden' name='ajax' value='1'>");

	var c = utils.readCookies()["commenter"];
	if(c) {
		var parts = c.split("||");
		if(parts.length == 3){
			$("#author").val(parts[0]);
			$("#email").val(parts[1]);
			$("#url").val(parts[2]);
			$("#remember").prop("checked", true);
		}
	}
	
	function output(oid, e) {
		// if e is false then there is no error
		var l = labels.elems[oid];
		l.html( e ? e : labels.defaults[oid] );
		l.removeClass();
		l.addClass( e ? "error" : "ok" );
		l.change( function(){ $(this).removeClass() });
		if(e) {
			$("#"+oid).addClass("inputerror");
			$("#"+oid).change( function(){$(this).removeClass(); l.removeClass() } ); 
		}
	}
	
	form.submit(function(e) {
		e.preventDefault();
		$("p.error", fwrap).remove();	// possible ajax error messages
		var errors = {author:false,email:false,comment:false}, ok = true;
	
		if( $.trim( $("#author").val() ) == "") errors.author = "Please enter your name";
		if( !$("#email").val().match(/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i)) errors.email = "Please enter a valid email address";
		if( $.trim( $("#comment").val() ) == "") errors.comment = "Please enter a comment";
		$.each(errors, function(e,status){
			if(status) ok = false;
			output(e,status);
		});
		if(!ok) {
			output("submit", "Sorry, your comment has some errors. Please correct the fields marked above and try again.");
			return false;
		}
		// otherwise post content
		$.post( form.attr("action"), form.serialize(), formResponse, "json" );
		$("#submit").val("Processing...").prop("disabled", true);
	});
	
	function formResponse( data ) {
		if( data.status == 1 || data.status == -1 ) 
			fwrap.html( data.message );
		else {
			$("#submit").val("Submit Comment").removeAttr("disabled");
			fwrap.append( data.message );
		}
	}
	
	// store default label for each element
	for(var k in labels.elems) {
		labels.elems[k] = $("label[for='"+k+"']");
		labels.defaults[k] = labels.elems[k].text();
	}
});
