/**
 * Script zur Änderung eines Spielorts
 *
 * $URL: svn://192.168.1.20/RBL-dev/tags/2011-06-25-a_rbl/jkcms/js/spielort.ajax.js $
 * $Rev: 1865 $
 * $Author: jk $
 * $Date: 2011-06-08 00:42:35 +0200 (Mi, 08 Jun 2011) $
 */

var fEditSport = new ajax_obj("fEditSport");
var fDragSport = new ajax_obj("fDragSport");
var fSelectSport = new ajax_obj("fSelectSport");

/**
 * Öffnet das Spielort Formular
 * 
 * @param id SpielortID
 * @param onSavedFn Funktion, wenn gespeichert
 * @return bool false
 */
function edit_sport(id, onSavedFn) {
	var url = '/ajax/spielort.edit.php?sportid=' + id;

	fEditSport.width = 340;
	fEditSport.minheight = 250;

	fEditSport.create_container(ajax_event.pageX, ajax_event.pageY);
	fEditSport.onSaved = onSavedFn;
	fEditSport.load(url);

	return false;
}

/**
 * Speichert den Ort
 * 
 * @param id SpielortID
 * @return bool false
 */
function save_sport(id) {
	var form = document.getElementById("sportedit");
	if (form) {
		var url = '/ajax/spielort.edit.php?but[save]=s&sportid=' + id +'&'+ ajax_form2url(form);
		fEditSport.onLoad = fEditSport.onSaved;
		document.body.style.cursor = 'wait';
		fEditSport.create_container(-1, -1); // gleiche Position
		fEditSport.load(url);
	}
	return false;
}

/**
 * Ereignis, wenn Spielort gespeichert
 */
function sport_saved() {
	document.body.style.cursor = 'auto';
	fEditSport.onLoad = null;

	if ((typeof(fEditSport.xmlresult) == 'object') && (fEditSport.xmlresult['id'])) {
		var id = fEditSport.xmlresult['id'];
		for (var key in fEditSport.xmlresult) {
			var el = document.getElementById(key + '_' + id);
			if (el) {
				ajax_SetTextNode(el, fEditSport.xmlresult[key]);
			}
		}
		fEditSport.close();
	}
}

/**
 * löscht einen Spielort
 * 
 * @param id SpielortID
 * @return bool false
 */
function delete_sport(id) {
	var x = ajax_event.pageX;
	var y = ajax_event.pageY;
	if (confirm("Soll der Spielort wirklich gelöscht werden?")) {
		var url = '/ajax/spielort.edit.php?but[del]=d&sportid=' + id;

		fEditSport.width = 340;
		fEditSport.minheight =  270;        // geschätzte Höhe des Containers

		fEditSport.create_container(x, y);
		fEditSport.onLoad = sport_deleted;
		document.body.style.cursor = 'wait';
		fEditSport.load(url);
	}
	return false;
}

/**
 * Ereignis, wenn Spielort gelöscht
 */
function sport_deleted() {
	document.body.style.cursor = 'auto';
	fEditSport.onLoad = null;

	if ((typeof(fEditSport.xmlresult) == 'object') && (fEditSport.xmlresult['id'])) {
		var id = fEditSport.xmlresult['id'];
		// Zeile 1 ausblenden
		el = document.getElementById('r1_'+id);
		if (el) {
			el.style.display = 'none';
		} else {
			alert('r1_'+id+' nicht gefunden!');
		}
		// Zeile 2 ausblenden
		el = document.getElementById('r2_'+id);
		if (el) {
			el.style.display = 'none';
		} else {
			alert('r2_'+id+' nicht gefunden!');
		}

		fEditSport.close();
	}
}

/**
 * Prototyp: Auswahl eines Spielorts mit Add-Button
 * 
 * @param key_id Dom ID des Elements, das die OrtID enthält
 * @param val_id Dom ID des Elements, das den Ortstext enthält
 */
function fSearch_ort(key_id, val_id) {

	this.url = '/ajax/spielort.select.php';
	this.target_key_id = key_id;
	this.target_val_id = val_id;
	this.onChange = null;
	
	this.onOk = function(id, name) {
		this.setNodeValueById(this.target_key_id, id);
		this.setTextNodeById(this.target_val_id, name);
		this.close();
		if (this.onChange) this.onChange(id);
	};
	
	this.onSetup = function () {
		var buttons = this.container.getElementsByTagName("button");
		if (buttons.length > 0) {
			buttons[0].onclick = function() {
				edit_sport('new', this.add_ort);
				fEditSport.search_obj = this.search_obj;
			};
			buttons[0].search_obj = this;
			buttons[0].add_ort = function () {
				if ((typeof(fEditSport.xmlresult) == 'object') && (fEditSport.xmlresult['id'])) {
					var name = fEditSport.xmlresult['name'];
					if (fEditSport.xmlresult['strasse']) name.concat('; ' + fEditSport.xmlresult['strasse']);
					if (fEditSport.xmlresult['ort'])     name.concat('; ' + fEditSport.xmlresult['ort']);
					var id = fEditSport.xmlresult['id'];

					var i = fEditSport.search_obj.selector.options.length;
					var newOption = new Option(name, id, false, true);
					fEditSport.search_obj.selector.options[i] = newOption;

					fEditSport.close();
				}
				document.body.style.cursor = 'auto';
			};
			
		}
	};

	var id = document.getElementById(key_id);
	if (id) {
		this.open('?sportid=' + id.value, 400);
	} else {
		alert('Fehler in fSearch_ort: ID "' + key_id + '" nicht gefunden!');
	}
}
fSearch_ort.prototype = new fSearch();

function select_ort() {
	var search = new fSearch_ort("sport_id", "sport_name");
}

/**
 * Ereignis: Spielort in Suchformular hinzugefügt
 */
function sport_added() {
	if ((typeof(fEditSport.xmlresult) == 'object') && (fEditSport.xmlresult['id'])) {
		var sel = document.getElementById("select_sportid");
		var i = sel.options.length;
		var name = fEditSport.xmlresult['name'];
		if (fEditSport.xmlresult['strasse']) name += '; ' + fEditSport.xmlresult['strasse'];
		if (fEditSport.xmlresult['ort'])     name += '; ' + fEditSport.xmlresult['ort'];
		var id = fEditSport.xmlresult['id'];

		var newOption = new Option(name, id, false, true);
		sel.options[i] = newOption;

		fEditSport.close();
	}
}


