document.onkeydown  = keydownhandler;
document.onkeyup    = keyuphandler;
var f8Pressed = false;

function keydownhandler(e) {
	var e = window.event ? event : e;
	var unicode = e.charCode ? e.charCode : e.keyCode;
	if (unicode == 119) { //F8
		editSpan(true);
		f8presse = true;
	}
}

function keyuphandler(e) {
	var e = window.event ? event : e;
	var unicode = e.charCode ? e.charCode : e.keyCode;
	if (unicode == 119) { //F8
		editSpan(false);
		f8presse = false;
	}
}

function changeCursor(sp, e) {
	if (f8Pressed) {
		$(sp).style.cursor = 'crosshair';
	} else {
		$(sp).style.cursor = '';
	}
}

function editSpan(doit) {
	if (doit) {
		var spans = document.getElementsByTagName('span');
		for (var i = 0; i < spans.length; i++) {
			if (spans[i].id.indexOf('.') > -1) {
				spans[i].className = 'admin';
				spans[i].setAttribute('onclick', 'edit(this);');
				spans[i].onclick = new Function('edit(this);');
			}
		}
		var as = document.getElementsByTagName('a');
		for (var i = 0; i < as.length; i++) {
			as[i].setAttribute('onclick', 'return false;');
			as[i].onclick = new Function('return false;');
		}
	} else {
		var spans = document.getElementsByTagName('span');
		for (var i = 0; i < spans.length; i++) {
			if (spans[i].id.indexOf('.') > -1) {
				spans[i].className = '';
				spans[i].setAttribute('onclick', '');
				spans[i].onclick = null;
			}
		}
		var as = document.getElementsByTagName('a');
		for (var i = 0; i < as.length; i++) {
			as[i].setAttribute('onclick', 'return true;');
			as[i].onclick = new Function('return true;');
		}
	}
}

function edit(sp) {
	window.open(
		'index.php?s=20000&' + 'id=' + $(sp).id,
		'Admin',
		'directories=no,' +
		'height=370,' +
		'width=640,' +
		'left=300,' +
		'top=300,' +
		'location=no,' +
		'menubar=no,' +
		'resizable=no,' +
		'scrollbars=no,' +
		'status=no,' +
		'titlebar=no,' +
		'toolbar=no'
	);
	editSpan(false);
}

function save() {
	var referer = window.opener.document.getElementById($('id').value);
	var frm = Form.serialize($(document.forms[0]),true);
	frm.s = 30000;
	new Ajax.Request('index.php',
		{
			method: 'post',
			parameters: frm,
//			postBody: Object.toJSON(frm),
	    onSuccess: function(xmlHttpRequest) {
	    	var res = xmlHttpRequest.responseText.evalJSON(true);
				referer.innerHTML = res.val;
	    	window.close();
	    },
	    onFailure: function(xmlHttpRequest) {
	    	window.alert(
	    		'Textänderung fehlgeschlagen!\n' +
	    		'Grund: ' +
	    		xmlHttpRequest.status + ' - ' +
	    		xmlHttpRequest.statusText
	    	);
	    },
	    onComplete: function(xmlHttpRequest) {
//	    	window.alert(xmlHttpRequest.responseText);
	    }
	  }
	);
}

function askDelete(url) {
	if (confirm('Wirklich löschen?'))
	{
		location.href = url;
	}
}

function insert(aTag, eTag) {
  var input = document.forms['edit'].elements['val'];
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    if (aTag == "<ul>") {
    	if (insText.substring(0, aTag.length) == aTag) {
    		insText = insText.substring(aTag.length, insText.length - eTag.length)
    		insText = insText.replace(/<li>/g, '').replace(/<\/li>/g, '');
    		aTag = "";
    		eTag = "";
    	}
    	else {
	    	aTag = "<ul>\r<li>"
	    	eTag = "</li>\r</ul>"
	    	insText = insText.replace(/\r\n\r\n/g, '\r\n').replace(/\r\n/g, '</li><li>');
    	}
    }
    if (insText.substring(0, aTag.length) == aTag) {
    	insText = insText.substring(aTag.length, insText.length - eTag.length)
    	aTag = "";
    	eTag = "";
    }
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);      
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    if (aTag == "<ul>") {
    	aTag = "<ul>\r<li>"
    	eTag = "</li>\r</ul>"
    	insText = insText.replace(/\n\n/g, '\n').replace(/\n/g, '</li><li>');
    }
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    if (aTag == "<ul>") {
    	aTag = "<ul>\r<li>"
    	eTag = "</li>\r</ul>"
    	insText = insText.replace(/\n\n/g, '\r\n').replace(/\n/g, '</li><li>');
    }
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}

