window.onunload = confirmSave;
bolChangesMade = false;

function addItem(strFormElementSource,strFormElementTarget) {
	bolChangesMade = true;
	objSrc = document.getElementById(strFormElementSource);
	
	if(!objSrc) {
		alert('Interner Fehler: Das Formular ' + strFormElementSource + ' wurde nicht gefunden.');
		return false;
	}
	
	objTrg = document.getElementById(strFormElementTarget);
	
	if(!objTrg) {
		alert('Interner Fehler: Das Formular ' + strFormElementTarget + ' wurde nicht gefunden.');
		return false;
	}
	
	intItemsCopied = 0;
	for(i=0;i<objSrc.length;i++) {
		if(!objSrc.options[i].selected)
			continue;
		
		strValue = objSrc[i].value;
		strText = objSrc[i].text;
		
		if(strValue.length == 0)
			continue;
		
		optNew = new Option(strText,strValue);
		objTrg.options[objTrg.length] = optNew;
		
		intItemsCopied += 1;
	}
	
	if(intItemsCopied > 0) {
		// Delete placeholder
		bolChangesMade = true;
		
		for(i=0;i<objTrg.length;i++) {
			if(objTrg.options[i].value == 'abcd') {
				objTrg.options[i] = null;
			}
		}
	}
	else {
		alert('Kein(e) Element(e) markiert.');
	}
	
	return true;
}

function removeItem(strFormElementSource,strFormElementTarget) {
	bolChangesMade = true;
	
	objTrg = document.getElementById(strFormElementTarget);
	
	if(!objTrg) {
		alert('Interner Fehler: Das Formular ' + strFormElementTarget + ' wurde nicht gefunden.');
		return false;
	}
	
	bolSuccess = false;
	intItemsRemoved = 0;
	while(!bolSuccess) {
		bolRemove = false;
		
		for(i=0;i<objTrg.length;i++) {
			if(objTrg.options[i].selected) {
				intItemsRemoved += 1;
				bolRemove = true;
				objTrg.options[i] = null;
				break;
			}
		}
		
		if(!bolRemove)
			bolSuccess = true;
	}
	
	if(intItemsRemoved < 1) {
		alert('Kein(e) Element(e) markiert.');
	}
	
	return true;
}

function prepareForm() {
	// strForm,strFormElementTarget
	
	objTrg = document.getElementById(strFormElementTarget);
	if(!objTrg) {
		alert('Interner Fehler: Element ' + strFormElementTarget + ' nicht gefunden. Bitte kontaktieren Sie den Webmaster.');
		return false;
	}
	if(!objTrg.length) {
		alert('Interner Fehler: Eigenschaft ' + strFormElementTarget + '.length nicht verfügbar. Bitte kontaktieren Sie den Webmaster.');
		return false;
	}
	intItems = objTrg.length;
	
	for(i=0;i<intItems;i++) {
		objTrg[i].selected = true;
	}
	
	bolChangesMade = false;
	
	objFrm = document.getElementById(strForm);
	if(!objFrm) {
		alert('Interner Fehler: Element ' + strForm + ' nicht gefunden. Bitte kontaktieren Sie den Webmaster.');
		return false;
	}
	objFrm.submit();
	
	return true;
}

function showHint(strHintID) {
	if(!arrHints) {
		alert('Interner Fehler: Array \'hints\' nicht definiert.');
		return false;
	}
	
	if(!arrHints[strHintID]) {
		alert('Interner Fehler: Legende mit ID \'' + strHintID + '\' nicht definiert.');
		return false;
	}
	
	return true;
}

function checkSaveChanges() {
	alert('here');
	if(bolChangesMade) {
		bolWish = confirm('ACHTUNG: Sie haben die vorgenommenen Änderungen noch nicht gespeichert. Möchten Sie die Änderungen zuerst speichern?');
		
		if(bolWish) {
			prepareForm();
		}
	}
	
	return true;
}

bolSecondRun = false;
function showFieldInfoBkp(strFrmElement) {
	/*if(!bolSecondRun) {
		bolSecondRun = true;
		setTimeout("showFieldInfo('" + strFrmElement + "')",500);
	}*/
	
	objSelectMulti = document.getElementById(strFrmElement);
	
	if(!objSelectMulti) {
		alert('Interner Fehler: Element \'' + strFrmElement + '\' nicht definiert.');
		return false;
	}
	
	intIndex = objSelectMulti.selectedIndex;
	
	if(intIndex < 0) {
		alert('Kein Element ausgewaehlt.');
		return false;
	}
	
	if(!objSelectMulti.options[intIndex]) {
		alert('Interner Fehler: Das ausgewaehlte Element konnte nicht aufgerufen werden.');
		return false;
	}
	
	strID = objSelectMulti.options[intIndex].value;
	
	if(strID.length < 1) {
		return false;
	}
	
	objIframe = document.getElementById('iframeDescr');
	
	if(!objIframe) {
		alert('Interner Fehler: Element \'iframeDescr\' nicht definiert.');
		return false;
	}
	
	objIframe.src = '/ajax.php?id=' + strID;
	
	return true;
}

function showFieldInfo(strFrmElement) {
	/*if(!bolSecondRun) {
		bolSecondRun = true;
		setTimeout("showFieldInfo('" + strFrmElement + "')",500);
	}*/
	
	objSelectMulti = document.getElementById(strFrmElement);
	
	if(!objSelectMulti) {
		alert('Interner Fehler: Element \'' + strFrmElement + '\' nicht definiert.');
		return false;
	}
	
	intIndex = objSelectMulti.selectedIndex;
	
	if(intIndex < 0) {
		alert('Kein Element ausgewaehlt.');
		return false;
	}
	
	if(!objSelectMulti.options[intIndex]) {
		alert('Interner Fehler: Das ausgewaehlte Element konnte nicht aufgerufen werden.');
		return false;
	}
	
	strID = objSelectMulti.options[intIndex].value;
	
	if(strID.length < 1) {
		return false;
	}
	
	ahah('/ajax.php?id=' + strID,'ajax');
	
	return true;
}

function confirmSave() {
	if(!bolChangesMade)
		return;
	
	bolSave = confirm('Sollen die Änderungen gespeichert werden?');
	
	if(!bolSave)
		return;
	
	//document.forms[0].submit();
	prepareForm();
}

// Copyright: http://binnyva.blogspot.com/2005/11/ahahasynchronous-html-over-http-ajax.html

function ahah(url, target) {
  document.getElementById(target).innerHTML = ' Fetching data...';
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (req != undefined) {
    req.onreadystatechange = function() {ahahDone(url, target);};
    req.open("GET", url, true);
    req.send("");
  }
}  

function ahahDone(url, target) {
  if (req.readyState == 4) { // only if req is "loaded"
    if (req.status == 200) { // only if "OK"
      document.getElementById(target).innerHTML = req.responseText;
    } else {
      document.getElementById(target).innerHTML=" AHAH Error:\n"+ req.status + "\n" +req.statusText;
    }
  }
}