// show email
function email(show) {
	a="zak"; b="ness"; c="@"; d=".com";
	document.write("<a href=\"mailto:"+a+c+a+b+d+"\" title=\"e-mail\">"+show+"</a>");
}

// keep track of currently displayed reviews
var active = '';
var noRev = false;

// replace child node (custom)
function repChild(parent,newval) {
	var obj = document.getElementById(parent);
	var child = document.createElement('div');
	child.innerHTML = newval;
	if (obj.lastChild.nodeName == 'DIV') obj.replaceChild(child,obj.lastChild);	
	else obj.appendChild(child);
}

// no review yet message (kirby)
function noReview() {
	if (noRev) {
		var sec = (new Date()).getSeconds();
		var kirby = (sec%2 == 0)?  "&nbsp; Q" : "O=";
		repChild(active,"<span class='norev'>The thoughts, they are still in my head. <strong>"+kirby+"(^_^Q&rsquo;)</strong></span>");
		setTimeout('noReview()', 800);
	}
}

// ajax request of reviews.xml data
function requestReview(id) {
	var http = false;
	if (window.XMLHttpRequest) { // good browsers
		http = new XMLHttpRequest();
		if (http.overrideMimeType) http.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // bad browsers
		try {
			http = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http) {
		document.getElementById('warn').innerHTML = "<span class='norev'>Cannot find any reviews :/</span>";
		return false;
	}
	http.onreadystatechange = function() { handle(http,id); };
	http.open('GET', 'reviews.xml', true);
	repChild(active,"<span class='norev'><strong>&lt;(^_^)^</strong> Loading review... <strong>^(^_^)&gt;</strong></span>");
	http.send(null);
}

// handle response from reviews.xml
function handle(http,id) {
	var div = document.getElementById(active);
	if (http.readyState == 4) {
		if (http.status == 200) {
			var reviews = http.responseXML.getElementsByTagName('review');
			var found = false;
			for (var i=0; i<reviews.length && !found; ++i) {
				var xid = reviews[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
				if (xid == id) {
					var content = reviews[i].getElementsByTagName('text')[0];
					var newnode = '';
					var imgs = content.getElementsByTagName('img');
					if (imgs.length > 0) 
						for (var k=0; k<imgs.length; ++k)
							newnode += '<img src="/images/' + imgs[k].childNodes[0].nodeValue + '" alt="" />';
					var paras = content.getElementsByTagName('p');
					if (paras.length >= 1) {
						for (var j=0; j<paras.length; ++j)
							newnode += '<p>'+paras[j].childNodes[0].nodeValue+'</p>';
						repChild(active,newnode);
						found = true;
					}
				}
			}
			if (!found) {
				noRev = true;
				noReview();
			}
		} else {
			repChild(active,'<span class="errors">Cannot find review.</span>');
		}
	}
}

// send specific id to ajax request
function showReview(evt) {
	noRev = false;
	var node;
	var act = document.getElementById(active);
	if (evt) node = evt.target; // good browsers
	else node = window.event.srcElement; // bad browsers
	while (node) {
		if (node.nodeName == "LI") break;
		node = node.parentNode;
	}
	var fid = node.attributes.getNamedItem('id').nodeValue;
	if (fid == active) {
		act.removeChild(act.lastChild);
		active = '';
	} else {
		if (active != "") act.removeChild(act.lastChild);
		active = fid;
		var id = fid.substring(1,fid.length);
		requestReview(id);
	}
}

// randomize style (refresh page)
function randStyle(evt) {
	window.location.href = 'http://anime.zakness.com';
}

// initialize event listeners
function setup() {
	for (var i=0; i<document.getElementById('alist').getElementsByTagName('u').length; ++i) {
		var obj = document.getElementById('r'+i);
		if (obj.addEventListener) obj.addEventListener('click',showReview,false); // good browsers
		else obj.onclick = showReview; // bad browsers
	}
	// random style onclick
	var mast = document.getElementById('header');
	if (mast.addEventListener) mast.addEventListener('click',randStyle,false); // good browsers
	else mast.onclick = randStyle; // bad browsers
}
window.onload = setup;
