var LabelPosX = 0; //left
var LabelPosY = 0; //top
var ElementPosX = 0; //left
var ElementPosY = 0; //top
var abstand = 30;

var XMLHTTP = null;
var t = 0;
var jsonObj = "";
var si = "";
//DEFAULT-EINSTELLUNGEN
var maske = "partner";
var datenDivId = "eingaben";
var errorDivId = "fehler";
var submitDivId = "formbuttons";
var bearbeitenDivId = "bearbeiten";
var menuDivId = "menue";
var datenFormName = "datenform";
var infocontainer = "infocontainer";
var servletpfad = "/pp";
var textladen = "Daten werden geladen ... ";
var textsenden = "Daten werden geprüft ... ";
var token = 0;
var max = 15;
var start = 0;
var pics = 0;

if(window.XMLHttpRequest){
	XMLHTTP = new XMLHttpRequest();	
}	
else if (window.ActiveXObject){
	try{
		XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(ex){
		try{
			XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(ex){
		}
	}
}


function remove(t){
	var c = t.childNodes;
	var a = 0;
	while(t.hasChildNodes()){ //löscht nur die automatisch angelegten Elemente (nicht fehlerdiv und nicht submitdiv)
		var r = t.childNodes[a];
		try{
			if(r.id != errorDivId && r.id != submitDivId && r.id != bearbeitenDivId){
				t.removeChild(r);				
			}
			else{
				a++;
			}
		}
		catch(ex){
			a++;
		}		
	}
}

function getAllFormParametersAsString(form,todo){
	if(todo=="init"){
		return null;
	}
	if(todo=="check"){
		var parameter = "";
		var value = "";
		for(var i=0;i<jsonObj.Elemente.length;i++){
			var el = jsonObj.Elemente[i];
			try{
				var d = document.getElementById(el.id);
				if(d.type=="radio"){
					var radio = document.getElementsByName(el.name);
					for(var r=0;r < radio.length;r++){
						if(radio[r].checked){
							value = radio[r].value;
							break;
						}
					}
				}
				else{
					value = d.value;
				}
				parameter += el.name+"="+value+"&";
			}
			catch(ex){
			}			
		}
		parameter += "action="+todo;
		return parameter;
	}
}

function getAllFormParametersAsStringinJSP(form,todo){
	if(todo=="init"){
		return null;
	}
	if(todo=="check"){
		var parameter = "";
		var value = "";
		
		for(var i=0;i<document.forms[form].elements.length;i++){
			var el = document.forms[form].elements[i];
			if(el.type=="radio"){
				var radio = document.getElementsByName(el.name);
				for(var r=0;r < radio.length;r++){
					if(radio[r].checked){
						value = radio[r].value;
						break;
					}
				}
			}
			else{
				value = el.value;
			}
			parameter += el.name+"="+value+"&";
		}
		parameter += "action="+todo;

		return parameter;
	}
}

function createLink(text, link){
	var l = document.createElement("a");
	createAttribute("href",link,l);
	var t = document.createTextNode(text);
	l.appendChild(t);
	return l;
}
function createImageLink(bild, link){
	var l = document.createElement("a");
	createAttribute("href",link,l);
	createAttribute("rel","lightbox[roadtrip]",l);
	l.appendChild(bild);
	return l;
}

function callJson(action,parameter,parametervalue)
{	
	max = 15;
	pics = 0;
	start = 0;
	//Anpassung Echt-Test
	var url = "/ajax.php?action="+action+"&"+parameter+"="+parametervalue;
	XMLHTTP.open("GET",url);
	if(action=="bilder"){
		XMLHTTP.onreadystatechange = showGalerie;
		//XMLHTTP.onreadystatechange = showTable;
	}
	if(action=="username"){
		XMLHTTP.onreadystatechange = showUsername;
	}
	XMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	XMLHTTP.send(null);
}


function showUsername(){
	if(XMLHTTP.readyState == 4){
		var jsonD = XMLHTTP.responseText;
		jsonObj = eval("("+jsonD+")");
		if(jsonObj.username == "ok"){
			checkUsername('true');
		}
		else{
			checkUsername('false');
		}
	}
}

function showTable(){
	if(XMLHTTP.readyState == 4){
		
		var bilderdiv = document.getElementById("galeriediv");
		
		var theader = document.createElement("table");
		createAttribute("border","1",theader);
		
		var tbody = document.createElement("tbody");
		var tr = document.createElement("tr");
		var td1 = document.createElement("td");
		var text = document.createTextNode("lala");
		td1.appendChild(text);
		tr.appendChild(td1);
		tbody.appendChild(tr);
		theader.appendChild(tbody);
		bilderdiv.appendChild(theader);		
	}
}

function showGalerie(direction){
	var guterbrowser = (document.all)? false : true;
	
	if(XMLHTTP.readyState == 4){
		var jsonD = XMLHTTP.responseText;
		//alert(jsonD);		
		jsonObj = eval("("+jsonD+")");
		var bilderdiv = document.getElementById('galeriediv');
		remove(bilderdiv);
		if(jsonObj.bilder.length>0){
			theader = document.createElement("table");
			createAttribute("border","0",theader);
			tbody = document.createElement("tbody");
		}
		
		var anzahl = jsonObj.bilder.length;
		
		if(anzahl < max){
			max = anzahl;
		}
		var neueZeile = true;
		var spalte = 0;
		if(direction == "zurück"){
			start = start - max;
			/*pics = pics - max;
			if(pics < max){
				pics = max;
			}*/
			pics = start + max;
		}
		else{
			start = pics;
			pics = pics + max;
			if(pics > anzahl){
				pics = anzahl;
			}
		}
		var anfang = true;
		//alert(direction+" "+start+" "+pics);
		for(var i=start;i<pics;i++){	
			if(spalte % 5 == 0)
				neueZeile = true;
			var bild = "/"+jsonObj.bilder[i];
			var thumb = bild+"_t.jpg";
			
			var image = document.createElement("img");
			image.setAttribute('src', thumb);
			image.setAttribute('border', 0);
			if(neueZeile){
				if(!anfang) 
				{
					tbody.appendChild(tr);
					
				}
				var tr = document.createElement("tr");
				neueZeile = false;
			}
			anfang = false;
			var td = document.createElement("td");
			spalte++;
			var link = createImageLink(image,bild);
			td.appendChild(link);
			tr.appendChild(td);
		}
		tbody.appendChild(tr);
		
		var tr = document.createElement("tr");
		var td1 = document.createElement("td");
		createAttribute("colspan","2",td1);
		var td2 = document.createElement("td");
		createAttribute("colspan","3",td2);
		if(anzahl > pics){
			//Es geht also weiter
			var link = createLink("weiter","javascript:showGalerie('vor')");
			createAttribute("align","right",td2);
			td2.appendChild(link);
		}
		if(start > 0){
			//Es geht auch zurück
			var link = createLink("zurück","javascript:showGalerie('zurück')");
			td1.appendChild(link);
		}

		tr.appendChild(td1);
		tr.appendChild(td2);
		
		tbody.appendChild(tr);
		theader.appendChild(tbody);
		bilderdiv.appendChild(theader);
	}
	myLightbox.updateImageList();
}





function createError(fehler){
	var fehlerdiv=document.getElementById(errorDivId);
	remove(fehlerdiv);
	var ul = document.createElement("ul");

	var feld = "";
	var fehlertext = "";
	for(var i=0;i<fehler.length;i++){
		var fehlerObj = fehler[i];
		feld = fehlerObj.feld;
		fehlertext = fehlerObj.text;
		var li = document.createElement("li");
		var text = document.createTextNode(fehlertext);
		li.appendChild(text);
		ul.appendChild(li);
	}
	fehlerdiv.appendChild(ul);	
	//fehlerdiv.style.visibility = 'visible';
	fehlerdiv.style.display = 'block';
}


function createAttribute(attr,value,obj){
	var id = document.createAttribute(attr);
	id.nodeValue = value;
	obj.setAttributeNode(id);	
}

function createId(idname,obj){
	createAttribute("id",idname,obj);
}

function createClass(idname,obj){
	createAttribute("class",idname,obj);
}

function createCSS(css,id,tag){
	var ele = document.createElement("div");
	//createId("Css"+css,ele);
	createId("css"+css+id,ele);
	createClass("Css"+css,ele);
	tag.appendChild(ele);
	return ele;
}

function addHtml(element, htmlliste){
	for(var i=0;i<htmlliste.length;i++){
		var attrObj = htmlliste[i];
		var attr = document.createAttribute(attrObj.attribute);
		attr.nodeValue = attrObj.aValue;		
		element.setAttributeNode(attr);
	}

}

function select(obj,tag){
	var t = document.createElement("select");	
	createId(obj.id,t);
	var wert = obj.wert;
	var typ = obj.typ;
	NeuerEintrag = new Option("Bitte wählen","0",true,false);
	t.options[0] = NeuerEintrag;
	var selected = 0;
	for(var i=0;i<obj.options.length;i++){
		var optionen = obj.options[i];	
		t.name = obj.name;
		NeuerEintrag = new Option(optionen.swert,optionen.owert);
		if(wert == optionen.owert){
			NeuerEintrag.selected = "selected";
			selected = i+1;
		}
		t.options[i+1] = NeuerEintrag;		
	}
	t.selectedIndex = selected;
	var label = document.createTextNode(obj.label);
	var labeldiv = createCSS("Label",obj.id,tag);
	var elementdiv = createCSS("Element",obj.id,tag);	
	labeldiv.appendChild(label);
	elementdiv.appendChild(t);	
}

function input(obj,tag){
	var t = document.createElement("input");	
	createId(obj.id,t);	
	var wert = obj.wert;
	var typ = obj.typ;
	var name = obj.name;	
	t.value = wert;
	t.name = name;
	var label = document.createTextNode(obj.label);
	var labeldiv = createCSS("Label",obj.id,tag);
	var elementdiv = createCSS("Element",obj.id,tag);	
	labeldiv.appendChild(label);
	//Zusätzliche Attribue anhängen
	addHtml(t,obj.html);
	elementdiv.appendChild(t);	

}

function radio(obj,tag){
	var guterbrowser = (document.all)? false : true;
	var wert = obj.wert;
	var typ = obj.typ;

	var label = document.createTextNode(obj.label);
	var labeldiv = createCSS("Label",obj.id,tag);
	labeldiv.appendChild(label);

	var elementdiv = createCSS("Element",obj.id,tag);	

	if(guterbrowser){
		for(var i=0;i<obj.options.length;i++){
			var radio = document.createElement("input");
			createId(obj.id,radio);
			radio.type = 'radio';
			radio.name = obj.name;
			var optionen = obj.options[i];				
			if(wert == optionen.owert){
				radio.checked = 'checked'
			}
			radio.value = optionen.owert;		
			elementdiv.appendChild(radio);	
			var text = document.createTextNode(optionen.swert);
			elementdiv.appendChild(text);
		}
	}
		
	//Radiobuttons hinzufügen fuer IE
	if(!guterbrowser){
		for(var i=0;i<obj.options.length;i++){
			var p = document.createElement("span");
			var radioId = document.createAttribute("id");
			radioId.nodeValue = "radioId"+i;
			p.setAttributeNode(radioId);
			elementdiv.appendChild(p);
			var optionen = obj.options[i];	
			akt = optionen.owert;
			document.all["radioId"+i].insertAdjacentHTML("AfterBegin", optionen.swert+'<input id="'+obj.id+'" type="radio" name="'+obj.name+'" value="'+optionen.owert+'" '+ ((wert == akt)? ' checked="checked"' : '') +'/>&nbsp;&nbsp;');
	    }
   	}
}

function hide(element){
	var d = document.getElementById(element);
	d.style.display = 'none';
}

function show(element,anzeige, text){
	var d = document.getElementById(element);
	remove(d);
	var text = document.createTextNode(text);
	d.appendChild(text);
	d.style.display = anzeige;
}

function setStatus(text){
	var d = document.getElementById(bearbeitenDivId);
	remove(d);
	var textNode = document.createTextNode("Status: "+text);
	d.appendChild(textNode);	
}

function showResult(){
	//Wenn Fehler vorhanden, werden diese auf der Seite dargestellt
	//sind keine Fehler vorhanden, wird auf die nächste Seite weitergeleitet
	if(XMLHTTP.readyState == 4){
		setStatus("Daten lesen");
		var jsonD = XMLHTTP.responseText;
		try{
			jsonObj = eval("("+jsonD+")");
			var error = jsonObj.error;
			maske = jsonObj.aktMask;
			si = jsonObj.si;
			session = jsonObj.session;
			document.title = jsonObj.title;
			token = jsonObj.token;

			if(session == "true"){
				if(error > 0){
					createError(jsonObj.Fehler);
					setStatus("Eingabefehler vorhanden. Bitte korrigieren");
				}
				else if(error == "fatal"){
					showPage("error/applicationerror");
				}
				else{
					setStatus("Seite laden");				
					loadServlet(maske);
				}
			}
			else{
				showPage(maske);
			}			
		}catch(ex){
			alert("Fehler="+ex);
			//showPage("error/applicationerror");
		}
	}
}

function senden(lang,id,maske){
	setStatus("Verbindungsaufbau...");
	XMLHTTP.open("POST","/pp/portal?token="+token+"action=check&aktMask="+maske+"&si="+si+"&output=json&id="+id+"&lang="+lang+"&ajax=1");
	XMLHTTP.onreadystatechange = showResult;
	XMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	parameter = getAllFormParametersAsStringinJSP(datenFormName,'check');
	setStatus("Daten prüfen...");
	XMLHTTP.send(parameter);
}

function showHelp(id){
	document.getElementById(id).style.display = "block";
}

function createHilfeElement(id, name,hilfetext){
	if(hilfetext.length > 0){
		var container = document.getElementById(infocontainer);
	    var div1 = document.createElement("DIV");
		createId("help"+upcaseFirstLetter(name),div1);
	
		var div2 = document.createElement("DIV");
		createClass("foContainerHelpTitle",div2);
		var span1 = document.createElement("SPAN");
		createClass("foHelpTitle",span1);
		var bold = document.createElement("B");
		var headline = document.createTextNode(upcaseFirstLetter(name));
		
		bold.appendChild(headline);
		span1.appendChild(bold);
		div2.appendChild(span1);
		
		var div3 = document.createElement("DIV");
		createClass("foContainerHelpText",div2);
		var p1 = document.createElement("P");
		createClass("foHelpText",p1);
		
		var text = document.createTextNode(hilfetext);
		p1.appendChild(text);
		div3.appendChild(p1);
		
		div1.appendChild(div2);
		div1.appendChild(div3);
		container.appendChild(div1);
		//Erstellen des Hilfelinks am Element
		var elementId = "css"+name+"_id";
		var link = document.createElement("a");
		createAttribute("href","#",link);
		createAttribute("onclick","showHelp('help"+upcaseFirstLetter(name)+"'); return false;",link);
		
		var img = document.createElement("img");
		createAttribute("src","/pp/jsp/img/i_no.gif",img);		
		createAttribute("class","info",img);
		createAttribute("border","0",img);
		createAttribute("id","help"+upcaseFirstLetter(name)+"Caller",img);
		
		link.appendChild(img);
		var e = document.getElementById("cssElement"+id);
		e.appendChild(link);
	}
}

function upcaseFirstLetter(text){
	var b = text.substring(0,1);
	var rest = text.substring(1);
	return b.toUpperCase()+rest;
}

function closediv(ele){
	var d = document.getElementById(ele);
	d.style.display = 'none';
}

function opendiv(ele){
	var d = document.getElementById(ele);
	d.style.display = 'block';
}



function slideUpBox(el){
	//Box wird geschlossen
	if(typeof(slides[0][el]) == "undefined"){
		slides[0][el] = "opened";
	}
	if(slides[0][el] == "opened"){
		new Effect.SlideUp(el, {duration:0.5});
		slides[0][el] = "closed";
	}
}

function slideDownBox(el){
	//Box wird geöffnet
	if(slides[0][el] == "closed"){
		new Effect.SlideDown(el, {duration:0.5});
		slides[0][el] = "opened";
	}
}

function checkKomma(zins){
	var s = "";
	for(i = 0;i<zins.length;i++){
		if(zins.charAt(i)==","){
			s = s + ".";
		}
		else{
			s = s + zins.charAt(i);
		}
	}
	return Math.abs(s);
}

