// Based on the wonderful Mootools String.substitute
String.prototype['substitute'] = function(object, regexp){
	return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
		if (match.charAt(0) == '\\') return match.slice(1);
		return (object[name] != undefined) ? object[name] : '';
	});
};

TumbulusCross = {
	root: "tumbulus_magic_inside",
  base_url: "http://www.tumbulus.com",
  content_url: "users/{user_id}/sites/{site_id}/comments/outside.js",
  send_url: "users/{user_id}/sites/{site_id}/comments/post.js",
	cycle: "",

	firstRequest: function(local) {
		var script = document.createElement('script');
		script.src = TumbulusCross.base_url + "/" + TumbulusCross.content_url.substitute(TumbulusCrossData.website) + "?" + "permalink=" + TumbulusCrossData.permalink + '&from=' + escape(local || location.href);
		document.getElementsByTagName('head')[0].appendChild(script);
	},
	
	firstAddComments: function(comments, settings){
		if (!comments) return;
		var div = document.getElementById(TumbulusCross.root);
		div.innerHTML = "<ul id=\"tumbulus-comment-list\"></ul>";
		TumbulusCross.addComments(comments, settings);
		div.style.display = 'block'; // make element visible
		div.style.visibility = 'visible'; // make element visible
	},

	addComments: function(comments, settings) {
		if (!comments) return;
		var div = document.getElementById("tumbulus-comment-list"); var txt = "";
		for (var i = 0; i < comments.length; i++) { TumbulusCross.addComment(comments[i], settings);	}
	},
	
	commentPosted: function(comment, settings, captcha) {
		if (!comment) return;
		TumbulusCross.addComment(comment, settings);
		TumbulusCross.resetForm(captcha);
	},
	
	addComment: function(comment, settings) {
		if (!comment) return;
		var comment = comment.comment; var div = document.getElementById("tumbulus-comment-list");	var txt = "";
		
		var html = '<li class="tbus-list-comment clearfix '+ TumbulusCross.cycle +'">'; if(TumbulusCross.cycle == ""){ TumbulusCross.cycle = "alt"; }else{ TumbulusCross.cycle = ""; };
		html += '<div class="tbus-author">';
		if(settings.name == true){ 
			if(settings.website == true && comment.website){ 
				html += '<p class="tbus-author-name"><a href="' + comment.website + '">' + comment.display_name + '</a></p>';
			} else {
				html += '<p class="tbus-author-name">' + comment.display_name + '</p>';
			}
		} else {
			if(settings.website == true){ html += '<p class="tbus-author-website">' + comment.website + '</p>';	}
		}
		if(settings.avatar == true){ html += '<p class="tbus-avatar">' + comment.avatar + '</p>'; }
		
		html += '<p class="tbus-author-date">' + comment.created_at.time + ' on ' + comment.created_at.date + '</p>';
		html += '</div>';
		html += '<div class="tbus-comment"><p class="tbus-content">' + comment.content + '</p></div></li>';
		
		div.innerHTML = html + div.innerHTML;
	},
	
	sendComment: function(data) {
	  var script = document.createElement('script');
		script.src = TumbulusCross.base_url + "/" + TumbulusCross.send_url.substitute(TumbulusCrossData.website) + this.queryString(data)  + '&comment[from]=' + escape(location.href);
		document.getElementsByTagName('head')[0].appendChild(script);
		// return false so the form doesn't reload page
	  return false;
	},
	
	resetForm: function(captcha){
		document.getElementById("tumbulus-comment-form").reset();
		document.getElementById("tumbulus-form-captcha-image").innerHTML = captcha.image;
		document.getElementById("tumbulus-form-captcha-field").innerHTML = captcha.field;		
	},
	
	queryString: function(data) {
	  var query = "?comment[permalink]=" + encodeURIComponent(TumbulusCrossData.permalink);
		for(var i = 0; i < data.elements.length; i++) {
			var element = data.elements[i];
			query += "&" + element.name + "=" + encodeURIComponent(element.value);
		}
	  return query;
	},
	
	addCommentForm: function(captcha, settings) {
		var tumbulus = document.getElementById(TumbulusCross.root);
		var form_div = document.createElement('div');
		
		var html = "<form method=\"post\" id=\"tumbulus-comment-form\" class=\"new_comment\" onsubmit=\"return TumbulusCross.sendComment(this);\" action=\"/users/1/comments\">\
			 <p class=\"clearfix\"><label for=\"comment_email\">Email</label><input class=\"t\" type=\"text\" size=\"30\" name=\"comment[email]\" id=\"comment_email\"/></p>";
		if(settings.name == true){ html += '<p class=\"clearfix\"><label for=\"comment_name\">Name</label><input class=\"t\" type=\"text\" value=\"\" size=\"30\" name=\"comment[name]\" id=\"comment_name\"/></p>'; }
		if(settings.website == true){ html += '<p class=\"clearfix\"><label for=\"comment_website\">Website</label><input class=\"t\" type=\"text\" value=\"\" size=\"30\" name=\"comment[website]\" id=\"comment_website\"/></p>'; }
		html += "<p class=\"clearfix\"><label for=\"comment_content\">Comment</label><textarea rows=\"10\" name=\"comment[content]\" id=\"comment_content\" cols=\"40\"/></textarea></p>\
			<div class=\"clearfix\" id=\"tumbulus-form-captcha\"><p><label for=\"captcha\">Captcha</label><div id=\"tumbulus-form-captcha-image\" class=\"simple_captcha_image\">" + captcha.image + "</div>\
			<div id=\"tumbulus-form-captcha-field\" class=\"simple_captcha_field\">" + captcha.field + "</div><div class=\"simple_captcha_label\"></div></div>\
			<p class=\"clearfix\"><input class=\"s\" type=\"submit\" value=\"Post!\" name=\"commit\" id=\"comment_submit\"/></p></form>";
		
		form_div.innerHTML = html;
		tumbulus.parentNode.insertBefore(form_div, tumbulus);
	}
}
document.write("<div id='" + TumbulusCross.root + "' style='display: none'></div>");
if(TumbulusCrossData.base_url){ TumbulusCross.base_url = TumbulusCrossData.base_url; }
TumbulusCross.firstRequest();
var no_script = document.getElementById('no_script');
if (no_script) { no_script.style.display = 'none'; }