//-------------- AJAX request

function makeRequest(url, addInfo) {
	var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    	http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    if (url.indexOf('.xml')!=-1)
	    http_request.onreadystatechange = function() { alertXml(http_request, addInfo); };
	else
	    http_request.onreadystatechange = function() { alertHtml(http_request, addInfo); };
    http_request.open('GET', url, true);
    http_request.send(null);
}

//------------ on XML reading, populate the javascript model

function alertHtml(http_request, addInfo) {
    if (http_request.readyState == 4) {
		document.getElementById(addInfo).innerHTML = http_request.responseText;
    }	
}

function alertXml(http_request) {
    if (http_request.readyState == 4) {
		text = http_request.responseText;
		var xml;
		var userAgent = navigator.userAgent;
		if (userAgent)
		
		if (window.XMLHttpRequest && !(userAgent.indexOf("MSIE")!=-1)){ // Mozilla, Safari, Opera
		   var parser = new DOMParser(); 
		   xml = parser.parseFromString(text, "text/xml"); 
		} else if (window.ActiveXObject){ 
		   xml = new ActiveXObject("Microsoft.XMLDOM") 
		   xml.async="false"; 
		   xml.loadXML(text);   
		} 
        initXml(xml);
    }
}

function init(className) {
	currentClass = className;
	makeRequest('data.xml');
	makeRequest('custom-top.html', 'custom-top');
	makeRequest('custom-bottom.html', 'custom-bottom');
}

function initHeader () {
	var res="";
	res+="<table class='head'>"
	res+="<tr><td class='sum'>"
	res+=line1;
	res+="</tr><tr><td class='link'>"
	res+=line2;
	res+="</tr><tr><td class='class'>"
	res+="<table><tr><td class='fill'>&nbsp;</td>"
	for(var c in classes) {
		var classe = classes[c];
		if (currentClass==classe.sh)
			res+="<td class='tabon'"
		else
			res+="<td class='taboff'"
		res+=" onmouseover='javascript:goClass(\""+classe.sh+"\")'>"
		res+="<img src='img/"+classe.sh+".gif'/>&nbsp;"
		res+="<a class='c-"+classe.sh+"' href='c-"+classe.sh+".html'>"
		res+=classe.array.length
		res+="&nbsp;"
		res+=classe.name
		res+="</a>"
		res+="</td>"
	}
	res+="<td class='fill'>&nbsp;</td></tr></table>"
	res+="</tr><tr><td class='actor'>"
	var classe = classes[currentClass];
	if (classe!=null) {
	var actors = classe.array;	
	for (var i=0; i<actors.length; i++) {
		actor = actors[i];
		res+="<img src='img/"+classe.sh+".gif'/>&nbsp;"
		res+="<a class='c-"+classe.sh+"' href='"+actor.page+".html'>";
		res+=actor.name;
		res+="</a> &nbsp; &nbsp; "
	}	
	}
	res+="</tr></table>"
    document.getElementById("header").innerHTML = res;
}

function goClass (className) {
	if (currentClass!=className) {
		currentClass=className;
		initHeader();
	}
}

var currentClass = 'rog';
var line1;
var line2;
var classes = new Object();

function initXml(xml) {
	line1 = xml.getElementsByTagName("line1")[0].firstChild.nodeValue;
	line2 = xml.getElementsByTagName("line2")[0].firstChild.nodeValue;
	tips["help1"] = xml.getElementsByTagName("help1")[0].firstChild.nodeValue;
	tips["help2"] = xml.getElementsByTagName("help2")[0].firstChild.nodeValue;
	tips["help3"] = xml.getElementsByTagName("help3")[0].firstChild.nodeValue;
	classNodes = xml.getElementsByTagName("class");
	for (var i = 0; i < classNodes.length; i++) {
		classNode = classNodes[i];
		var classe = new Object();
		classe.name = classNode.getAttribute('name');
		classe.sh = classNode.getAttribute('sh');
		classes[classe.sh] = classe;
		actorNodes = classNode.getElementsByTagName("actor");
		classe.array = new Array(actorNodes.length);
		for (var j = 0; j < actorNodes.length; j++) {
			actorNode = actorNodes[j];
			var actor = new Object();
			actor.name = actorNode.getAttribute('name');
			actor.page = actorNode.getAttribute('page');
			classe.array[j] = actor;
		}
	}
	initHeader();
}
