$(function() {
	// obfuscate e-mail addresses
	$("a.email:has(span.address)").each(function(i) {
		var encoded = $("span.address", this).html();
		$(this).attr("href", encoded.replace(/(.+)<em>at<\/em>(.+)/i, "mailto:$1@$2"));
		$("span.address", this).html(encoded.replace(/<em>at<\/em>/i, "@"));
	});
	// contact form
	var form = $("#contact-form");
	form.submit(function() {
		jQuery.post("./mail.php", form.serialize(), function(json) {
			$("#message").fadeOut("fast");
			form.find(".error").removeClass("error");
			if (json.success == false) {
				for (var i=0; i<json.fields.length; i++) {
					$("#" + json.fields[i]).parent(".control").addClass("error");
				}
				$("#message").addClass("error");
			} else {
				form.find("input,textarea").val("");
				setTimeout(function() {
					$("#message").fadeOut("slow");
				}, 4000);
			}
			$("#message").html(json.message);
			$("#message").fadeIn("fast");
		}, "json");
		return false;
	});
});

var DomInterface = function($) {
	/*
	God bless you, Anonymous
	http://snipplr.com/view.php?codeview&id=10904
	*/
	function fixLists(html) {
		// Convert <li> to </li><li>
		html = html.replace (/<li(\s+[^>]*)?>/gi, "</li><li$1>");
		// Then remove any that double up with the opening tag
		html = html.replace (/(<(ul|ol)(\s+[^>]*)?>)\s*(?:<!--.*-->)?\s*<\/li>/gi, "$1");
		// And relax
		return html;
	};
	/*
	God bless you, Shaun Inman
	http://www.shauninman.com/archive/2006/02/05/javascript_tags_to_lowercase
	*/	
	var tagsToLowerCase = function(html) {
	    html = html.replace(/([a-z])s*(=)s*("|')/gi, '$1$2$3');
	    var parts = html.match(/(<\/?[a-z][a-z0-9]*| [a-z]+=)/gi);
	    if (parts) {
	        for (var i = 0; i < parts.length; i++) {
	            var part = parts[i];
	            html = html.replace(new RegExp(part, 'g'), part.toLowerCase());
	        };
	    };
	    return html;
	}
	
	return {
		getProjects: function() {
			var html = tagsToLowerCase($("#projects").html());
			html = '<ul id="projects">' + html + "</ul>";
			if (!html.match(/<\/li>\s*<li>/m)) {
				html = fixLists(html);
			}
			return html;
		}
	}
}(jQuery);


