sharedCons = new Cons;

function Cons() {

	this.rawXML;
	this.bezeichnungen = new Array;
	this.orte = new Array;
	this.verpflegung = new Array;
	this.unterkuenfte = new Array;
	this.generes = new Array;
	this.arten = new Array;
	this.spieler = new Array;
	this.nscs = new Array;
	this.kampangen = new Array;
	this.websites = new Array;
	this.beschreibungen = new Array;
	this.kosten = new Array;
	this.regeln = new Array;
	this.anfaenge = new Array;
	this.enden = new Array;
	this.teilnehmer = new Array;
	this.viewingFunction = new Function;
}

Cons.prototype.stringFromXML = ConsStringFromXML;
Cons.prototype.initWithXML = ConsFromXML;
Cons.prototype.updateData = ConsUpdateData;
Cons.prototype.asString = ConsAsString;
Cons.prototype.conWithTitle = ConWithTitle;
Cons.prototype.conDetailsWithTitle = ConDetailsWithTitle;
Cons.prototype.titlesView = ConsTitlesView;
Cons.prototype.indexOfTitle = ConsIndexOfTitle;
Cons.prototype.viewFunction = ConsViewFunction;


function ConsFromXML(xml) {

	if (window.DOMParser) {
		parser = new DOMParser();
		xmlDoc = parser.parseFromString(xml,"text/xml");
	} else { // Internet Explorer
		//xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		//xmlDoc.async="false";
		//xmlDoc.loadXML(xml); 
		//Fahr zur Hölle!!
		/*Resultiert im innerHTML Bug vom IE. Is mir zu viel Arbeit die Scheiße.*/
	}

	this.rawXML = xmlDoc;

	var count = xmlDoc.getElementsByTagName("con").length;

	function copyValues(array, key) {
		for(i = 0; i < xmlDoc.getElementsByTagName(key).length; i ++) {
			array[i] = xmlDoc.getElementsByTagName(key)[i].childNodes[0].nodeValue;
		}
	}

	copyValues(this.bezeichnungen, "Bezeichnung");
	copyValues(this.orte, "Ort");
	copyValues(this.verpflegung, "Verpflegung");
	copyValues(this.unterkuenfte, "Unterkunft");
	copyValues(this.generes, "Genere");
	copyValues(this.arten, "Art");
	copyValues(this.spieler, "Spieler");
	copyValues(this.nscs, "NSC");
	copyValues(this.kampangen, "Kampange");
	copyValues(this.websites, "Web");
	copyValues(this.beschreibungen, "Beschreibung");
	copyValues(this.kosten, "Kosten");
	copyValues(this.regeln, "Regeln");
	copyValues(this.anfaenge, "Anfang");
	copyValues(this.enden, "Ende");
	copyValues(this.teilnehmer, "Teilnehmer");
}

function ConsUpdateData() {

	if (window.XMLHttpRequest)
	{
		xmlhttp = new XMLHttpRequest();
	} else {// code for IE6, IE5
		//xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		//Fahr zur Hölle!!
	}

	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			sharedCons.initWithXML(xmlhttp.responseText);
			sharedCons.viewingFunction(sharedCons.titlesView());
		}
	}
	var url = "consHelper.php";
	var params = "";
	xmlhttp.open("POST", url, true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.send(params);
}

function ConsStringFromXML(xml) {

	this.initWithXML(xml);

	return this.asString();
}

function ConsAsString() {

	var consString = "";

	for(i = 0; i < this.bezeichnungen.lenght(); i ++) {

		consString += this.conWithTitle(this.bezeichnungen[i]);
	}

	return consString;
}

function ConsIndexOfTitle(title) {

	for(i = 0; i < this.bezeichnungen.length; i ++) {
		if (this.bezeichnungen[i] == title) {
			return i;
		}
	}

	return null;
}

function ConWithTitle(title) {

	var conString = "";
	i = this.indexOfTitle(title);
	conString = "<b>" + this.bezeichnungen[i] + "</b>" + ", <br>" 
		+ this.conDetailsWithTitle(this.bezeichnungen[i]);
	return conString;
}

function ConDetailsWithTitle(title) {

	var conString = "";

	i = this.indexOfTitle(title);

	conString += "<sup>" + this.anfaenge[i] + " - " + this.enden[i] + "</sup><br><br>"
		+ "<i>Ort: </i>" + this.orte[i] + "<br" 
		+ "<i>Unterkunft: </i>" + this.unterkuenfte[i] + "<br>" 
		+ "<i>Futter: </i>" + this.verpflegung[i] + "<br>" 
		+ "<i>Style: </i>" + this.generes[i] + " - " + this.arten[i] + "<br>" 
		+ "<i>Spieler: </i>" + this.spieler[i] + ", <i>NSC: </i>" + this.nscs[i] + "<br>"
		+ "<i>Kampange: </i>" + this.kampangen[i] + "<br>" 
		+ "<i>Zaster: </i>" + this.kosten[i] + "<br>" 
		+ "<i>Regeln: </i>" + this.regeln[i] + "<br><br>"
		+ this.beschreibungen[i] + "<br><br>" 
		+ "<a href="+ this.websites[i] + ">" + this.websites[i] + "</a><br>"
		+ "<a href=\""+this.teilnehmer[i]+"\"><button>Ich mach mit!</button></a></br>";

	return conString;
}

function ConsTitlesView() {

	var titlesString = "";
	var count = xmlDoc.getElementsByTagName("con").length;
	for(i = 0; i< count; i ++) {
		titlesString += "<p><a onclick=\"showDetailsForCon(\'"+this.bezeichnungen[i]+"\');\">"+this.bezeichnungen[i]+"</a></p>";
	}

	return titlesString;
}

function ConsViewFunction(showGroovyShit) {

	this.viewingFunction = showGroovyShit;
}
