// ==UserScript==
// @name           Forum Templates
// @namespace      Hazman/Danial.Beta
// @description    Adds a selection of templates to BYOND forums.
// @include        http://www.byond.com/*/forum*
// ==/UserScript==

if(document.URL.indexOf("parent=") != -1) {
	
	var TemplateLocation = "http://www.byond.com/help/files/templates.xml";

	var OriginalPoster = document.getElementsByName("author")[0];

	var BodyHeader = "Greetings " + OriginalPoster.value + ".\n\n";

	var BodyFooter = "\n\nThanks Much.\nDanial.Beta";

	var ForumTemplates_Count = 1;

	var ForumTemplates_Names = new Array(ForumTemplates_Count);
	var ForumTemplates_Text = new Array(ForumTemplates_Count);

	ForumTemplates_Names[0] = "Please Choose a Template";
	ForumTemplates_Text[0] = "";

	GM_xmlhttpRequest({
		method:"GET",
		url: TemplateLocation,
		onload: function(responsedetails) { ParseTemplates(responsedetails); }
		});

	function ParseTemplates(xmldoc) {

		var parser = new DOMParser();
		var xmldoc = parser.parseFromString(xmldoc.responseText,"text/xml");

		var templates = xmldoc.getElementsByTagName("template");

		ForumTemplates_Names.length = templates.length+1;
		ForumTemplates_Text.length = templates.length+1;
		ForumTemplates_Count = templates.length+1;

		var i;
		var lengthd;
		for(i in templates) {
			if(!lengthd) {
				lengthd = 1;
				continue;

			}

			i = i/1; //This one stumped me for a while. Stupid JS dynamic typing. If it looks like an int, and you treat it like an int, then it must be a string!

			var currTemplate = templates[i];

			var titleNode = currTemplate.getElementsByTagName("title")[0];
			var textNode = currTemplate.getElementsByTagName("text")[0];

			if(!titleNode || !textNode) continue;


			ForumTemplates_Names[(i+1)/1] = titleNode.textContent;
			ForumTemplates_Text[(i+1)/1] = textNode.textContent;
		}
		buildDropDown()
	}


	function setTemplate(e) {
	    if(e.target.id/1>0) {
	       var textArea = document.getElementsByTagName("TextArea")[0];
	       var display = BodyHeader + ForumTemplates_Text[e.target.id] + BodyFooter;
	       textArea.value = display;
	    }
	}

	function buildDropDown()
	{

		    var i;

		    var topicInput = document.getElementsByName("topic")[0];
		    var topicCell = topicInput.parentNode;
		    topicInput.style.width="396px";

		    topicCell.appendChild(document.createElement("br"));

		    var selectNode = topicCell.appendChild(document.createElement("select"));
		    selectNode.style.width="400px";

		    for(i = 0; i < ForumTemplates_Count; i++) {
			var newNode = document.createElement("option");
	      	  newNode.name = "ForumTemplate";
			newNode.id = i;
	      	  newNode.value = ForumTemplates_Names[i];
			newNode.addEventListener('click',setTemplate,true);
	      	  selectNode.appendChild(newNode);
			var nodeLabel = document.createTextNode(ForumTemplates_Names[i]);
	      	  newNode.appendChild(nodeLabel);
		    }

	}

}

