// shoutbox scroller
var ShoutboxRescan = false;

function ShoutboxScroll(element) {
	var items = new Array();
	var pos = 0;
	var halt = 0;
	var dragging = false;
	var dragY0 = 0;
	var fullHeight = element.scrollHeight;
	var offsetHeight = element.offsetHeight;
	var myelement = element;

	ShoutboxRescan = true;

	function move(delta) {
		if (ShoutboxRescan) {
			scan(myelement);
			fullHeight = myelement.scrollHeight;
			offsetHeight = myelement.offsetHeight;
			pos = 0;
		}
		/*if (pos + delta < 0) {
			pos = 0;
			delta = 0;
		} */
		//pos = (pos + delta) % fullHeight;
		//if(pos < 0) pos += fullHeight;
		pos = (pos + delta);
		if (pos < -fullHeight + offsetHeight) pos = -fullHeight + offsetHeight;
		if (pos > 0) pos = 0;

		for(var i = 0; i < items.length; i++) {
			with(items[i]) {
				//hElement.style.top = (((hBottom + pos) > fullHeight) ? pos - fullHeight : pos) + 'px';
				hElement.style.top = pos + 'px';
			}
		}
	}

	/*function timer() {
		if(!dragging) {
			if(halt == 0) {
				move(-5);
			} else if(halt > 0) {
				halt--;
			}
		}

		setTimeout(timer, 500);
	} */

	function drag(e) {
		if(!e) e = event;
		DiscardEvent(e);

		var yd = (e.clientY + document.body.parentNode.scrollTop) - dragY0;
		dragY0 += yd;

		move(yd);
	}

	function beginDrag(e) {
		if(dragging) return;
		dragging = true;

		dragY0 = e.clientY + document.body.parentNode.scrollTop;

		if(!e) e = event;
		DiscardEvent(e);

		CaptureEvent(document.body, "mousemove", drag, true);
	}

	function endDrag(e) {
		if(!dragging) return;
		dragging = false;

		if(!e) e = event;
		DiscardEvent(e);

		ReleaseEvent(document.body, "mousemove", drag, true);
	}

	function scan(element) {
		items = new Array();
		for(var e1 = element.firstChild; e1 != null; e1 = e1.nextSibling) {
			if(e1.className == 'shout') {
				items.push({ 'hElement': e1, 'hBottom': new Number(e1.offsetTop + e1.offsetHeight + e1.style.paddingTop + e1.style.paddingBottom).valueOf() });
			}
		}
		ShoutboxRescan = false;
	}

	/*CaptureEvent(element, "mouseover", function() {
		halt = -1;
	}, true);

	CaptureEvent(element, "mouseout", function() {
		halt = 5;
	}, true); */

	CaptureEvent(element, "mousedown", beginDrag, true);
	CaptureEvent(document.body, "mouseup", endDrag, true);

	//setTimeout(timer, 1000);
}

// shoutbox scroller init
CaptureEvent(window, "load", function() {
	var e = document.getElementById("shoutlist");
	if(e != null) new ShoutboxScroll(e);
}, true);

// raklikkre eltunos input/textarea tartalmak
CaptureEvent(window, "load", function() {
	var es = document.getElementsByTagName('INPUT');
	for(var i = 0; i < es.length; i++) {
		var attr = es[i].getAttribute('ht:value');
		if(attr != null) {
			es[i].onfocus = function() { if (this.value == this.getAttribute('ht:value')) { this.value = ''; } };
			es[i].onblur = function() { if (this.value == '') { this.value = this.getAttribute('ht:value') } };
		}
	}

	var es = document.getElementsByTagName('TEXTAREA');
	for(var i = 0; i < es.length; i++) {
		var attr = es[i].getAttribute('ht:value');
		if(attr != null) {
			es[i].value = attr;
			es[i].onfocus = function() { if (this.value == this.getAttribute('ht:value')) { this.value = ''; } };
			es[i].onblur = function() { if (this.value == '') { this.value = this.getAttribute('ht:value'); } };
		}
	}

}, true);



// shoutbox get, post, periodikus frissites
function ShoutboxGet() {
	var sb;

	function ShoutboxLoaded() {
		if(sb.readyState == 4) {
			console.log("loaded: " + sb.status);
			if(sb.status == 200) {
				//console.log("response " + sb.responseText);
				if (document.getElementById("shoutlist")) {
					document.getElementById("shoutlist").innerHTML = sb.responseText;
				}
				ShoutboxRescan = true;
			} else {
				console.log("http error (content): " + sb.status);
			}
		}
	}

	sb = new XMLHttpRequest();
	sb.open("GET", "shoutbox.php", true);
	sb.onreadystatechange = ShoutboxLoaded;
	sb.send(null);
}

function ShoutboxSubmit() {
	var sbs;

	function ShoutboxLoaded() {
		if(sbs.readyState == 4) {
			console.log("loaded: " + sbs.status);
			if(sbs.status == 200) {
				//console.log("response " + sbs.responseText);
				if (document.getElementById("shoutlist")) {
					document.getElementById("shoutlist").innerHTML = sbs.responseText;
				}
				ShoutboxRescan = true;
			} else {
				console.log("http error (content): " + sbs.status);
			}
		}
	}

	var message = "shoutbox[method]=" + "submit" + "&ShoutboxName=" + document.getElementById("ShoutboxName").value + "&ShoutboxText=" + document.getElementById("ShoutboxText").value;
	sbs = new XMLHttpRequest();
	sbs.open("POST", "shoutbox.php", true);
	sbs.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
	sbs.onreadystatechange = ShoutboxLoaded;
	sbs.send(message);
	document.getElementById("ShoutboxName").value = "";
	document.getElementById("ShoutboxText").value = "";
	return false;
}

CaptureEvent(window, "load", function() {
	var ShoutboxGetTimer = 0;
	function ShoutboxGetPeriodic() {
		if (ShoutboxGetTimer-- <= 0) {
			ShoutboxGetTimer = 60;
			ShoutboxGet();
		}
		var ShoutboxGetTimerPrint = ShoutboxGetTimer
		if (ShoutboxGetTimer < 10) {
			ShoutboxGetTimerPrint = "0" + ShoutboxGetTimer
		}
		document.getElementById("ShoutboxCounter").innerHTML = ShoutboxGetTimerPrint;
		//alert(ShoutboxGetTimer);
		window.setTimeout(ShoutboxGetPeriodic, 1000);
	}

	if (document.getElementById("ShoutboxCounter")) {
		ShoutboxGetPeriodic();
	}
}, true);


// trackinfo get, periodikus frissites
function TrackinfoGet(name) {
	var xh;
	var xhname = name;

	function TrackinfoLoaded() {
		if(xh.readyState == 4) {
			console.log("loaded: " + xhname + " " + xh.status);
			if(xh.status == 200) {
				//console.log("response " + xhname + " " + xh.responseText);
				if (document.getElementById("trackinfo" + xhname)) {
					document.getElementById("trackinfo" + xhname).innerHTML = xh.responseText;
				}
				ShoutboxRescan = true;
			} else {
				console.log("http error (content): " + xh.status);
			}
		}
	}

	xh = new XMLHttpRequest();
	xh.open("GET", "trackinfo.php?stream=" + xhname, true);
	xh.onreadystatechange = TrackinfoLoaded;
	xh.send(null);
}

CaptureEvent(window, "load", function() {
	function TrackinfoGetPeriodic() {
		TrackinfoGet("aza");
		TrackinfoGet("zacc");
		window.setTimeout(TrackinfoGetPeriodic, 60000);
	}

	// TODO: ne a shoutboxcountertol, hanem a trackinfo + xhname -tol fuggjon
	if (document.getElementById("ShoutboxCounter")) {
		TrackinfoGetPeriodic();
	}
}, true);


function showPlayer(url) {
	var win = window.open(url, "_blank", "status=no,toolbar=no,scrollbars=no,titlebar=no,menubar=no,resizable=no,width=507,height=341,directories=no,location=no");
	return false;
}
