// tag stuff

var tagrequest = undefined;
var selected_tag = undefined;
var selected_link = undefined;

function toggle_tagmenu(tag, link) {
	if(tagrequest != undefined) {
		return false;
	}

	if(selected_link != undefined && selected_link != link) {
		_toggle_tagmenu(selected_tag, selected_link);
		selected_tag = undefined;
		selected_link = undefined;
	}
	
	if(selected_link == link) {
		selected_tag = undefined;
		selected_link = undefined;
	}
	else {
		selected_tag = tag;
		selected_link = link;
	}
	
	if(tag != undefined && link != undefined) {
		return _toggle_tagmenu(tag, link);
	}
}

function _refresh_tagmenu_act(tag, ta) {
	var voteup = "";
	var votedn = "";
	
	if(ta.className != "tup") {
		voteup = ' <img src="http://g.ehgt.org/img/menu_right.gif" class="mr" alt="&gt;" /> <a href="javascript:tag_vote_up()">' + (ta.className == "" ? "Vote Up" : "Withdraw Vote") + '</a>';
	}
	
	if(ta.className != "tdn") {
		votedn = ' <img src="http://g.ehgt.org/img/menu_right.gif" class="mr" alt="&gt;" /> <a href="javascript:tag_vote_down()">' + (ta.className == "" ? "Vote Down" : "Withdraw Vote") + '</a>';		
	}

	document.getElementById("tagmenu_act").innerHTML = 'Actions:' + voteup + votedn + ' <img src="http://g.ehgt.org/img/menu_right.gif" class="mr" alt="&gt;" /> <a href="javascript:tag_show_galleries()">Show Galleries With This Tag</a> <img src="http://g.ehgt.org/img/menu_right.gif" class="mr" alt="&gt;" /> <a href="javascript:toggle_tagmenu(undefined, undefined)">Add New Tag</a> ';
}

function _toggle_tagmenu(tag, link) {
	var display_tagmenu = link.style.color == "";
	
	if(display_tagmenu) {
		_refresh_tagmenu_act(tag, link);
	}
	
	link.style.color = display_tagmenu ? "blue" : "";
	document.getElementById("tagmenu_new").style.display = display_tagmenu ? "none" : "";
	document.getElementById("tagmenu_act").style.display = display_tagmenu ? "" : "none";
	
	return false;
}

function tag_from_field(tags) {
	var tags = document.getElementById("newtagfield").value;
	document.getElementById("newtagbutton").disabled = "disabled";
	send_vote("/ehgajax.php?act=tagvote&gid="+gid+"&tag="+escape(tags)+"&vote=up");
}

function tag_vote_up() {
	send_vote("/ehgajax.php?act=tagvote&gid="+gid+"&tag="+escape(selected_tag)+"&vote=up");
}

function tag_vote_down() {
	send_vote("/ehgajax.php?act=tagvote&gid="+gid+"&tag="+escape(selected_tag)+"&vote=down");
}

function tag_show_galleries() {
	top.location.href = base_url+"tag/"+selected_tag.replace(" ", "+");
}

// ajax stuff

function send_vote(url) {
	if(tagrequest != undefined) {
		return;
	}

	tagrequest = getXMLHttpRequest();

	if(tagrequest != false) {
		wait_roller_set();
		tagrequest.open("GET", url, true);
		tagrequest.onreadystatechange = tag_update_vote;
		tagrequest.send(null);
	}
}

function tag_update_vote() {
	var preparsed = parseInitialRequest(tagrequest);
	
	if(preparsed != false) {
		var response = preparsed.split(";");
		tagrequest = undefined;
		wait_roller_unset();
		
		if(response[0] == "ERROR") {
			alert("Could not vote for tag. Reason: "+response[1]);
			document.getElementById("newtagbutton").disabled = "";
		}
		else {
			document.getElementById("newtagfield").value = "Enter New Tags (separate with comma)";
			document.getElementById("newtagbutton").disabled = "";
			rebuild_tags(response[1]);
		}
	}
}

function rebuild_tags(tagdata) {
	var taglist = document.getElementById("taglist");
	taglist.innerHTML = "";
	
	var tagpairs = tagdata.split(",");
	
	for(tagentry in tagpairs) {
		if(tagpairs[tagentry] != "") {
			var tagsplit = tagpairs[tagentry].split("=");
			var tag = tagsplit[0];
			var tag_us = tag.replace(/ /, "_");
			var taginfo = tagsplit[1].split("~");
			var tagcount = taginfo[0];
			var tagfromme = taginfo[1];
			
			var tagclass = '';
			
			if(tagfromme == "up") {
				tagclass = "tup";
			}
			else if(tagfromme == "down") {
				tagclass = "tdn";
			}
			
			taglist.innerHTML += '<div id="td_' + tag_us + '" class="gt" style="position:relative"><a id="ta_' + tag_us + '" href="http://g.e-hentai.org/tag/' + escape(tag) + '" class="' + tagclass + '" onclick="return toggle_tagmenu(\'' + tag + '\', this)">' + tag + '</a> (<span id="tc_' + tag_us + '" class="' + tagclass + '">' + tagcount + '</span>)</div>';
		}
	}

	toggle_tagmenu(undefined, undefined);
}

// rating stuff

var raterequest = undefined;
var rating = undefined;

function get_rating_image(rating) {
	return "http://static.ehgt.org/images/review/quality-" + (rating > 0 ? rating : 0) + ".gif";
}

function rating_set(val) {
	if(raterequest == undefined) {
		rating = val;
		
		if(raterequest != undefined) {
			return;
		}

		raterequest = getXMLHttpRequest();	

		if(raterequest != false) {
			document.getElementById("rating_label").innerHTML = "Rating gallery...";
			var url = "/ehgajax.php?act=rate&gid="+gid+"&rating="+rating;
			raterequest.open("GET", url, true);
			raterequest.onreadystatechange = rating_update;
			raterequest.send(null);	
		}
	}
}

function rating_update() {
	var preparsed = parseInitialRequest(raterequest);
	
	if(preparsed != false) {
		var response = preparsed.split(";");

		if(response[0] == "ERROR") {
			alert("Could not rate gallery. Reason: "+response[1]);
			document.getElementById("rating_label").innerHTML = "Rating failed.";
		}
		else {
			var rating_count = parseInt(document.getElementById("rating_count").innerHTML) + 1;
			document.getElementById("rating_count").innerHTML = rating_count + " vote" + (rating_count != 1 ? "s" : "");
			document.getElementById("rating_image").src = get_rating_image(rating);
			document.getElementById("rating_label").innerHTML = "Thanks for rating!";
		}
	}
}

function rating_show(val) {
	if(raterequest == undefined) {
		document.getElementById("rating_image").src = get_rating_image(val);
		document.getElementById("rating_label").innerHTML = "Rate as " + (val / 2.0) + " stars";
	}
}

function rating_reset() {
	if(raterequest == undefined) {
		document.getElementById("rating_image").src = get_rating_image(Math.round(original_rating * 2));
		document.getElementById("rating_label").innerHTML = original_rating == 0 ? "Not Yet Rated" : "Average: " + original_rating;
	}
}
