"use strict";
bindToLoad(commentInit);
var labels = {elems: {author:"",email:"",comment:"",submit:""}, defaults: {} };
var fwrap;

function commentInit(){
	fwrap = id("formwrap");
	if(!fwrap || !window.postid) return;

	fwrap.innerHTML = '<h3 id="respond">Leave a comment</h3><form action="/blog/comment.php" method="POST" id="commentform"><p><input id="author" size="22" tabindex="1" required><label for="author" id="forauthor">Name (required; please use your real name)</label><p><input type="email" id="email" size="22" tabindex="2" required><label for="email" id="foremail">Mail (required; will not be published)</label><p><input type="url" id="url"size="22" tabindex="3"><label for="url">Website (optional)</label><p><input type="checkbox" id="remember"><label for="remember">Remember me</label><p><small>If you use <abbr title="Hypertext Markup Language">HTML</abbr>, please make it well-formed.</small><p><textarea id="comment" cols="58" rows="10" tabindex="4"></textarea><label for="comment" id="forcomment"></label><p><input type="submit" id="submit" tabindex="5" value="Submit Comment"><label for="submit" id="forsubmit"></label></form>';

	var c = readCookies()["commenter"];
	if(c) {
		var parts = c.split("||");
		if(parts.length == 3){
			id("author").value = parts[0];
			id("email").value = parts[1];
			id("url").value = parts[2];
			id("remember").checked = true;} }
	id("commentform").onsubmit = cvalidate;
	// get default label for each element
	for(var k in labels.elems) {
		labels.elems[k] = id("for"+k);
		labels.defaults[k] = labels.elems[k].innerHTML;} }

function cvalidate() {
	var errors = {author:false,email:false,comment:false}, ok = true;
	
	if(trim(id("author").value) == "") errors.author = "Please enter your name";
	if(!id("email").value.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(id("comment").value) == "") errors.comment = "Please enter a comment";
	for(e in errors) {
		if(errors[e]) ok = false;
		output(e, errors[e]); }
	if(!ok) {
		output("submit", "Sorry, your comment has some errors. Please correct the fields marked above and try again.");
		return false}
	// otherwise post content
	var data_obj = {
		 author:id("author").value
		,email:id("email").value
		,url:id("url").value
		,comment:id("comment").value
		,remember:(id("remember").checked ? 1 : 0)
		,post_ID:window.postid
		};
	ajaxSubmit(id("commentform").action
					,data_obj
					,function(response){fwrap.innerHTML = response; fwrap.scrollIntoView();}
					);
	fwrap.innerHTML = "<p>Processing...";
	return false }

function output(oid, e) {
	// if e is false then there is no error
	labels.elems[oid].innerHTML = e ? e : labels.defaults[oid];
	labels.elems[oid].className = e ? "error" : "ok";
	labels.elems[oid].onchange = clearStatus;
	if(e) {
		id(oid).className = "inputerror";
		id(oid).onchange = clearStatus; } }

function clearStatus() {this.removeAttribute("class")}
function trim(s) {return s.replace(/^\s+|\s+$/g,"")}