// votes
function initvote(classstring) {
	$$(classstring).each(function(element) {
		var votearray = element.id.split("|");
		var targetid = "votedisp-"+ votearray[0];

		var senddata = new Object();
		senddata["action"] = "articlevote";
		senddata["newsid"] = votearray[0];
		senddata["vote"] = votearray[1];

		$(element).removeEvents("click");
		$(element).addEvent("click", function(e) {
			e = new Event(e).stop();
 			new Ajax("/ajax/gateway.php", {
				method: "post",
				onRequest: function() { $(targetid).setHTML("Voting"); },
				onStateChange: function() { $(targetid).setHTML(element.getText() +"."); },
				onSuccess: function(response) {
					var mySlide = new Fx.Slide(targetid);
					$(targetid).setHTML(response);
					mySlide.slideIn();
					mySlide.increase();
				}

//				update: $(targetid)
			}).request(senddata);
		});
	});
}

// expands
function initexpand(classstring) {
	$$(classstring).each(function(element) {
		var expandarray = element.id.split("|");

		var action = expandarray[0];
		var targetid = expandarray[1];
		var extradata = expandarray[2];

		extradata = extradata.split("-");
		var senddata = new Object();
		senddata["action"] = action;
		senddata["newsid"] = extradata[0];

		if (action == "getarticle") {
			senddata["lang"] = extradata[1];
		}
		else if (action == "getentry") {
			senddata["entry"] = extradata[1];
			senddata["lang"] = extradata[2];
		}

		$(element).removeEvents("click");
		$(element).addEvent("click", function(e) {
			e = new Event(e).stop();
 			new Ajax("/ajax/gateway.php", {
				method: "post",
				onRequest: function() { element.setHTML("Loading"); },
				onStateChange: function() { element.setHTML(element.getText() +"."); },
				onSuccess: function(response) {
/*
					if (action == "getarticle") {
						var mySlide = new Fx.Slide(targetid);
						$(targetid).setHTML(response);
						mySlide.hide();
						mySlide.slideIn();
						mySlide.increase();
					}
					else {
						$(targetid).setHTML(response);
					}
*/

					initexpand("a.expand");
					initvote("a.vote");
				},

				update: $(targetid)
			}).request(senddata);
		});
	});
}

// topic
function inittopic(classstring) {
	$$(classstring).each(function(element) {
		var newsid = element.elements["newsid"].value;
		var entry = element.elements["entry"].value;

		$(element).removeEvents("submit");
		$(element).addEvent("submit", function(e) {
			new Event(e).stop();
 			new Ajax("/ajax/gateway.php", {
				method: "post",
				onRequest: function() { element.setHTML("Loading"); },
				onStateChange: function() { element.setHTML(element.getText() +"."); },
				onSuccess: function(response) {
					inittopic("form.topicform");
				},

				update: "topic-"+ newsid +"-"+ entry
			}).request($(element));
		});
	});
}

// shoutbox
function updateshoutbox(withsend) {
	var formobject = document.forms["shoutboxform"].elements;

	var senddata = new Object();
	senddata["action"] = "getshoutbox";
	senddata["lang"] = formobject["lang"].value;
	if (withsend == true) {
		senddata["content"] = formobject["content"].value;
		formobject["content"].disabled = true;
		formobject["submit"].value = "Wait";
		formobject["submit"].disabled = true;
		reloadshoutbox(120,3);
	}

	new Ajax("/ajax/gateway.php", {
		method: "post",
		onSuccess: function(response) {
			if (withsend == true) {
				formobject["content"].disabled = false;
				formobject["content"].value = "";
				formobject["submit"].disabled = false;
				formobject["submit"].value = "Shout";
			}

			$("shoutboxdiv").setHTML(response);
			glowshoutlist();
		}
	}).request(senddata);
}

function reloadshoutbox(reloadsec, reloadtimes) {
	if (reloadtimes > 0) {
		if (reloadsec <= 10 || reloadsec >= 109) {
			if (reloadsec == 109) { $("shoutboxtimer").setHTML(""); }
			else { $("shoutboxtimer").setHTML("(Update in "+ reloadsec +"sec)"); }
		}

		if (reloadsec <= 0) {
			updateshoutbox(false);
			reloadsec += 120;
			reloadtimes--;
		}
		reloadsec--;
		setTimeout("reloadshoutbox("+ reloadsec +","+ reloadtimes +")",1000);
	}
	else { $("shoutboxtimer").setHTML("(Refresh finished)"); }
}

function processshoutlist(shoutlist) {
	if (typeof(shoutlist) == "object" && shoutlist.length > 0) {
		var shoutstring = "";
		for (var counter = 0; counter < shoutlist.length; counter++) {
			shoutstring += shoutlist[counter];
		}

		$("shoutboxdiv").setHTML(shoutstring);
		reloadshoutbox(120,3);
	}
}

function glowshoutlist() {
	// glow
	$$("div.shoutbox div").each(function(element) {
		if (isFinite(element.id) && element.id > visitprev) {
			var effect = $(element).effect("background-color", {duration: 800});
			var periodical;
			var fx = function() {
				effect.start("#344960").chain(function() {
					effect.start("#4e6073");
				});
			}

			fx();
			periodical = fx.periodical(1700);
		}
	});
}


// where the magic begins
window.addEvent('domready', function() {

	// treasure
	$$("a.treasureclaim").each(function(element) {
		var lootarray = element.id.split("|");
		var targetid = "treasure-"+ lootarray[0];

		var senddata = new Object();
		senddata["action"] = "treasureclaim";
		senddata["treasureid"] = lootarray[0];
		senddata["quality"] = lootarray[1];
		senddata["hash"] = lootarray[2];

		$(element).removeEvents("click");
		$(element).addEvent("click", function(e) {
			e = new Event(e).stop();
			new Ajax("/ajax/gateway.php", {
				method: "post",
				onSuccess: function(response) {
					var mySlide = new Fx.Slide(targetid);
					$(targetid).setHTML(response);
					mySlide.slideIn();
					mySlide.increase();
				}

	//			update: $(targetid)
			}).request(senddata);
		});
	});

	// submenu slide
	$$("div.mainmenu a.mainclick").each(function(element) {
		if (element.id != "") {
			var mySlide = new Fx.Slide("toggle"+ element.id);
			element.removeEvents("click");
			element.addEvent("click", function(e) {
				e = new Event(e);
				mySlide.toggle();
				e.stop();
			});

			mySlide.hide();
		}
	});

	// submenu mouse
	$$("div.mainmenutoggle div.submenu").each(function(element) {
		var fx = new Fx.Styles(element, {duration:200, wait:false});

		element.removeEvents("mouseenter");
		element.addEvent("mouseenter", function() {
			fx.start({
				"margin-left": 5,
				"background-color": "#6697d0",
				"color": "#ff8"
			});
		});

		element.removeEvents("mouseleave");
		element.addEvent("mouseleave", function() {
			fx.start({
				"margin-left": 0,
				"background-color": "#4e6073",
				"color": "#888"
			});
		});
	});

	// glow
	$$("div.mainmenu a.glow").each(function(element) {
		if (element.id == "topic") {
			var effect = $(element).effect("background-color", {duration: 800});
			var periodical;
			var fx = function() {
				effect.start("#344960").chain(function() {
					effect.start("#6697d0");
				});
			}

			fx();
			periodical = fx.periodical(1700);
		}
	});


	initexpand("a.expand");
	initvote("a.vote");
	inittopic("form.topicform");
	processshoutlist(shoutlist);
	glowshoutlist();

});

