/*global de*/
de = this.de || {};
de.datev = de.datev || {};
de.datev.portal = de.datev.portal || {};
de.datev.portal.produkte = de.datev.portal.produkte || {};
de.datev.portal.produkte.seminarbelegung = function () {
    var thisNamespace = de.datev.portal.produkte.seminarbelegung || {};


////////////////////////////////////////////////
/////////// Belegung der Seminartermine ////////
////////////////////////////////////////////////

//(1) Belegdaten mit jedem Buttonklick ziehen
var getData = function (id) {
	var pfad = de.datev.dom.getElementsByTagAndClassName("div", "seminarheader")[0].id;
	pfad = pfad+id;
	//alert(pfad);

	var request = null;
	//Firefox bzw. IE7
	try {
		request = new XMLHttpRequest();
		request.open("GET", pfad, true);
		request.onreadystatechange = processChange(request, anzeigen, id);
        request.send(null);
	}
	catch(e){
		//IE 5 bzw. 6
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
			request.open("GET", pfad, true);
			request.onreadystatechange = processChange(request, anzeigen, id);
        	request.send(null);
		}
		catch(e){
			try{
				request = new ActiveXObject("Microsoft.XMLHTTP");
				request.open("GET", pfad, true);
				request.onreadystatechange = processChange(request, anzeigen, id);
        		request.send(null);
			}
			catch(e){
				//Fallback-Anzeige, wenn Request fehlschlaegt
				var textelement = manipulateElements(id);
				if (!textelement.hasChildNodes()){
					textelement.appendChild(document.createTextNode("keine Informationen vorhanden"));

				}/*end - Fallback*/
			}/*end -  ActiveXObject("Microsoft.XMLHTTP") */
		}/*end - ActiveXObject("Msxml2.XMLHTTP");*/
	}/*end - XMLHttpRequest*/
};

// (2)
var processChange = function (request, handler, id) {
	return function()
	{
		// only if req shows "loaded" und der Request nicht leer ist
		//alert("BREAK-2000: request.readyState=" + request.readyState + " request.responseText=" + request.responseText);
		var rs = request.readyState;
		
		if ( request.readyState !== 4 )
		{
//			alert("STATE != 4:" + rs);
			return;
		}
		if ( request.responseText == '' )
		{
//			alert("STATE == 4, EMPTY RESPONSE");
			var textelement = manipulateElements(id);
			if (!textelement.hasChildNodes())
			{
				textelement.appendChild(document.createTextNode("keine Informationen vorhanden"));
			}
			return;
		}
//		alert("STATE == 4, NONEMPTY RESPONSE=" + request.responseText + "=");
   		handler(request, id);
   }
};

// (3)
var anzeigen = function (request, id) {

	if(isNaN(id)){return;}

	var daten = request.responseText;
	var datenArray = daten.split(',');


	//Button
		//Belegung auslesen
		var belegung = getBelegung(datenArray, id);
//		alert("BELEGUNG=" + belegung);

		//Button ausblenden, Belegung anzeigen
		var textelement = manipulateElements(id);
		if (!textelement.hasChildNodes()){
			textelement.appendChild(document.createTextNode(belegung));
		}
};

//(4)
var getBelegung = function (datenArray, id)
{
	for(var i=0; i < datenArray.length; i++)
	{
			//Position des Doppelpunktes
			var trennerPos = datenArray[i].indexOf(":");
			var datenId = datenArray[i].substring(0, trennerPos);

			//Matching der Ids
			if(id == datenId)
			{

				//Lesen des Status
				var status = datenArray[i].substring(trennerPos + 1);

				Number(status);
				if(status == 0)
				{
					return "ausgebucht";
				}
				if (status < 20)
				{
					return "fast ausgebucht";
				}
				if (status >= 20)
				{
					return "frei";
				}
				else
				{
					 return "keine Informationen vorhanden";
				}
			}
	}
	 return "keine Informationen vorhanden";
};

//(5)
var manipulateElements = function (id) {

	//Link ausblenden
	var linkId = "link_";
	linkId = linkId.concat(id);
	var link = document.getElementById(linkId);
	link.style.display = "none";

	//Text einblenden
	var textId = "text_";
	textId = textId.concat(id);
	var textelement = document.getElementById(textId);
	textelement.style.display = "block";

	//Textelement uebergeben
	return textelement;
};

//////////////////////////////////////////////////////
// PUBLIC
//////////////////////////////////////////////////////
thisNamespace.getData = getData;

return thisNamespace;
}(); // de.datev.portal.produkte.seminarbelegung

