// JavaScript Document
// infobox.js
// Infobox-/Maptip-Funktionen

var clpsInfo;
var maptipXFenster;
var maptipIsAdhesive;

//--------
//infobox
//--------
function ibSetContent(content) {
	//xInnerHtml(parent.UPGMainF.document.getElementById("boxInfoContent"), content);
	xInnerHtml(xGetElementById("boxInfoContent"), content);
	clpsInfo = new xCollapsible('elClpsInfo',true,"./images/arrow-down.gif","./images/arrow-right.gif");
	initDbcEditComponent(xGetElementById("boxInfoContent"));
}

function showInfoHTML(InfoHTML) {
	ibSetContent(InfoHTML);
}

function showInfoXML(InfoXML) {
	var xmlLayers = InfoXML.getElementsByTagName('layer');
	var xmlFields;
	var xmlFieldname, xmlFieldvalue;
	var fieldname, fieldvalue;
	var content = "<ul id='elClpsInfo' class='xMenu'>";
    for (var i=0; i<xmlLayers.length; i++ ) {
		content += "<li>";
	  	content += "<span><img src='./images/arrow-down.gif'> ";
	  	content += getXMLFirstChildText(xmlLayers[i],'name');
	  	content += "</span>";
	  	content += "<ul>";	  	
	  	content += "<li>";
	  	content += "<table>"; 	
	  	xmlFields = xmlLayers[i].getElementsByTagName('field');
	  	for (var ii=0; ii<xmlFields.length; ii++) {
	  		fieldname = getXMLFirstChildText(xmlFields[ii],'fieldname');
	  		fieldvalue = getXMLFirstChildText(xmlFields[ii],'fieldvalue');
	  		if ((fieldname!="")&&(fieldvalue!="")) {
		  		content += "<tr><td style='font-style:italic;'>";
		  		content += fieldname + ": ";
		  		content += "</td><td>";
		  		//wenn Link, als Link ausprägen
		  		if ((fieldvalue.indexOf('http://')!=-1)||(fieldvalue.indexOf('file://')!=-1)) {
		  			content += "<a href='" + fieldvalue + "' target='_blank'>Link</a>";
		  		} else {
		  			content += fieldvalue;
		  		}
		  		content += "</td></tr>";
		  	}
	  	}
	  	content += "</table></li>"; 		  	
		content += "</ul></li>";
    }
	content += "</ul>";
	ibSetContent(content);
}

function adjustInfoboxSize() {
	//xHeight('leftColumn', xClientHeight() - 300);	
  	xHeight('boxInfoContent', xClientHeight() - 61 - xHeight('boxFormTools') - (xHeight('boxTitle1')==0 ? -5 : xHeight('boxTitle1')));
}

//--------
//maptip
//--------
function mtSetContent(content) {
	xInnerHtml(xGetElementById("maptipContent"), content);
}

function showMaptipHTML(maptipHTML) {
	if ((maptipHTML!="")&&(maptipHTML!="\n")) {
		if ((maptipHTML.indexOf('href=')!=-1)||(maptipHTML.indexOf('<img')!=-1)) {
			maptipIsAdhesive=true;
		} else {
			maptipIsAdhesive=false;
		}
		mtSetContent(maptipHTML);
		attachMaptip(maptipx, maptipy);
	}
}

function showMaptipXML(infoXML) {
	//Maptip
	var xmlLayers = infoXML.getElementsByTagName('layer');
	var xmlFields;
	var xmlFieldname, xmlFieldvalue;
	var layername, fieldname, fieldvalue;
	var content = "";
    for (var i=0; i<xmlLayers.length; i++ ) {
	  	layername = getXMLFirstChildText(xmlLayers[i],'name');
	  	xmlFields = xmlLayers[i].getElementsByTagName('field');
	  	for (var ii=0; ii<xmlFields.length; ii++) {
	  		fieldname = getXMLFirstChildText(xmlFields[ii],'fieldname');
	  		fieldvalue = getXMLFirstChildText(xmlFields[ii],'fieldvalue');
	  		//alert(layername + ' / ' + fieldname + ' / ' + fieldvalue);
  			content += layername + " / ";
	  		content += fieldname + " : ";
	  		content += fieldvalue + "<br>";			
	  	}	  	
    }
	if (content!="") {
		mtSetContent(content);
		attachMaptip(maptipx, maptipy);
	}
}

//-------------------
//DoubleclickEdit
//-------------------
	function handleDbcEdit(e) {
		function keypress(e){
			if (e.keyCode==13) {
				//[ENTER]
				apply();
			} else if (e.keyCode==27) {
				//[ESC]
				cancel();
			}
		}
		function cancel() {
			callerObj.textContent=formerValue;
			callerObj.ondblclick=handleDbcEdit;
		}
		function apply() {
			function handleEdResponse() {
				console.log(ed_xmlhttp);
				if (ed_xmlhttp.readyState==4) {
					if (ed_xmlhttp.status==200) {
						window.status="Daten erfolgreich geändert.";
					} else {
						alert("Fehler beim Ändern der Daten!\n Die Änderungen wurden nicht übernommen.");
					}
				}
			}
			var ed_xmlhttp = createRequestObject();
			var newval = xGetElementsByTagName('input',callerObj)[0].value;
			if (xGetElementsByTagName('input',callerObj)[0].value!="") {
				callerObj.textContent=newval;
				callerObj.ondblclick=handleDbcEdit;
				//hier senden
                var params = callerObj.id.split(':')[1].split(';');
				var edRequest = 'layername=' + params[0];
				edRequest += '&layeralias=' + params[1];
				edRequest += '&field=' + params[2];
				edRequest += '&id=' + params[3];
				edRequest += '&newval=' + newval;
				edRequest += '&mapfile=' + mapfile;
				ed_xmlhttp.open('POST', "./php/infoSetter.php", true);
		    	ed_xmlhttp.onreadystatechange = handleEdResponse;
				ed_xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				ed_xmlhttp.send(edRequest);
			}
		}
		var callerObj=e.target;
		var formerValue=callerObj.textContent;
		//editierbarer Inhalt
		var newHTMLContent = '';
		newHTMLContent += '<span style="position:relative">';
		newHTMLContent += '<input type="text" value="' + formerValue + '"';
		newHTMLContent += ' style="width:' + (callerObj.offsetWidth-2) + 'px;"';
		newHTMLContent += '>';
		//Buttons einfügen
		newHTMLContent += '<button type="button" class="dbcEditBtOK">OK</button>';
		newHTMLContent += '<button type="button" class="dbcEditBtCancel">Abbrechen</button>';
		newHTMLContent += '</span>';			
		callerObj.innerHTML = newHTMLContent;
		//eventHandler
		callerObj.ondblclick=null;
		xGetElementsByClassName('dbcEditBtOK',callerObj)[0].onclick=apply;
		xGetElementsByClassName('dbcEditBtCancel',callerObj)[0].onclick=cancel;
		xGetElementsByTagName('input',callerObj)[0].onkeyup=keypress;
		xGetElementsByTagName('input',callerObj)[0].focus();
	}
	
	function initDbcEditComponent(parentEle) {
		function setOnDblclickHandler(obj) {
			obj.ondblclick=handleDbcEdit;
		}
		xGetElementsByClassName('editable', parentEle, null, setOnDblclickHandler)
	}

