var votingElement;
function vote(post_id, direction, element) {
	votingElement = element.parentNode;
	votingElement.innerHTML = 'Voting...';
	
	var fun = function () {
		switch (this.responseText) {
			case 'success':
				votingElement.innerHTML = 'Vote Accepted';
				break;
			case 'already voted':
			case 'post does not exist':
			case 'permission denied':
				votingElement.innerHTML = 'Vote Failed: '+this.responseText;
				break;
			default:
				alert('Vote Failed: '+this.responseText+'\nThis shouldn\'t happen.  Please inform the site administrator.');
		}
	}
	
	SimpleFetch.FetchAndExecuteFunction('/vote/'+post_id+'/'+direction, fun);
}



function openAddTagField(post_id, element) {
	if (!element.shown) {
		var tbox = document.createElement('input');
			tbox.post_id = post_id;
			tbox.className = 'cssAddTagInput';
			tbox.setAttribute('type','text');
			tbox.onchange = ADD_TAG_SUBMIT;
			tbox.onblur = ADD_TAG_BLUR;
			tbox.onkeypress = ADD_TAG_KEYPRESS;
		element.appendChild(tbox);
		element.shown = true;
		tbox.focus();
	}
}
function ADD_TAG_KEYPRESS (e) {
	e = window.event || e;
	if (e.keyCode == 13) {
		this.blur();
		return false;
	}
}
function ADD_TAG_SUBMIT () {
	if (this.value) {
		this.className = 'cssAddTagInputWorking';
		var element = this;
		var func = function () {
			switch (this.responseText) {
				case 'successful':
					var aFrame = document.createElement('span');
						aFrame.className = 'cssTag';
						aFrame.innerHTML = '<a href="/viewbytag/'+element.value+'">'+element.value+'</a>';
						
					element.parentNode.appendChild(aFrame);
					break;
				default:
					alert('Tag Addition Failed:\n'+this.responseText);
					break;
			}

			element.parentNode.shown = false;
			element.parentNode.removeChild(element);
		}
		SimpleFetch.FetchAndExecuteFunction('/addtag/'+this.post_id+'/'+this.value, func);
	}
}
function ADD_TAG_BLUR () {
	if (!this.value) {
		this.parentNode.shown = false;
		this.parentNode.removeChild(this);
	}
}

function deleteTag(post_id, tagvalue, element) {
	if (!confirm("Are you sure you want to delete the \""+tagvalue+"\" tag from this post?")) return false;
	
	
	var func = function () {
		switch (this.responseText) {
			case 'successful':
				//element.nextSibling.parentNode.removeChild(element.nextSibling);
				element.parentNode.parentNode.removeChild(element.parentNode);
				break;
			default:
				alert('Tag Delete ('+tagvalue+') Failed:\n'+this.responseText);
				break;
		}
	}
	SimpleFetch.FetchAndExecuteFunction('/deltag/'+post_id+'/'+escape(encodeURI(tagvalue)), func);
}

function COMMENT_FIELD_KEYPRESS (e) {
	e = window.event || e;if (window.event.keyCode == 13) {this.blur();return false;}
}

function commentSubmit(element) {
	var post_id = element.attributes.getNamedItem('postid').nodeValue;
	var content = element.value;
	
	element.value = "";
	var func = function () {
		if (this.responseText.substring(0,7)=='success') {
			var aFrame = document.createElement('div');
				aFrame.innerHTML = this.responseText.substring(7);
			
			document.getElementById('comments_'+post_id).appendChild(aFrame);
			
		} else alert(this.responseText);
	}
	SimpleFetch.FetchAndExecuteFunction('/addcomment', func, 'post_id='+post_id+'&content='+encodeURIComponent(content));
}

function deleteComment(element) {
	var comment_id = element.getAttribute('commentid');
	if (element.parentNode.textContent) var contents = element.parentNode.textContent;
	else var contents = element.parentNode.innerText;
	
	if (!confirm('Are you sure you want to delete the following comment?\n\n'+contents)) return false;
	
	var func = function () {
		if (this.responseText=='success') {
			element.parentNode.parentNode.removeChild(element.parentNode);
		}
	}
	SimpleFetch.FetchAndExecuteFunction('/delcomment/'+comment_id, func);
}

function moderatePost(element) {
	var url = element.getAttribute('href');
	var post_id = element.getAttribute('postid');
	var func = function () {
		if (this.responseText=='success') {
			var e = document.getElementById('post_'+post_id);
			e.parentNode.removeChild(e);
		} else alert(this.responseText);
	}
	SimpleFetch.FetchAndExecuteFunction(url, func);
	
}

function favoritePost(element) {
	var url = element.getAttribute('href');
	var post_id = element.getAttribute('postid');
	var func = function () {
		if (this.responseText=='success') {
			element.parentNode.removeChild(element);
		} else alert(this.responseText);
	}
	SimpleFetch.FetchAndExecuteFunction(url, func);
	
}

function editCaption(element, post_id) {
	var captionElement = element.previousSibling;
	var oldText = captionElement.innerHTML;
	
	//I'll implement a more glamorous solution later
	//but for now just use prompt();
	var newText = prompt("Enter the new caption text:",oldText);
	if (newText===null) return false;
	
	var func = function () {
		if (this.responseText.substring(0,7)=='success') {
			captionElement.innerHTML = this.responseText.substring(7);
		} else alert(this.responseText);
	}
	SimpleFetch.FetchAndExecuteFunction('/editpost/caption', func, 'post_id='+post_id+'&content='+encodeURIComponent(newText));
	
}

