// JavaScript Document
/*Request Done CheckVar*/
var requestReady = true;

/*Ajax Request-Objekt*/
switchRequest = new Request({  
		url: 'ajax.php',
		onRequest: function(){
			requestReady = false;
		},
		onSuccess: function(result){  
			var parts = result.split('###SPLIT###');
			//alert(result);
			if(parts[0] == 'getText'){
				if(parseInt(parts[1]) == 1){
					if($('active_version').value == 'btn_old'){
						alert('Es gibt noch keine ältere Version dieses Textes!');
						$('txtEdit').innerHTML = '';
					}else{
						$('txtEdit').innerHTML = escapeHTML(parts[2].trim());
					}
				}else{
					$('txtEdit').innerHTML = escapeHTML(parts[2].trim());
				}
				requestReady = true;
			}else if(parts[0] == 'preview'){
				alert(result);
				$(parts[1]).innerHTML = escapeHTML(parts[2]);
				requestReady = true;
			}else if(parts[0] == 'publish'){
				//alert(result);
				if(parts[2] == 'old'){
					alert('Die Archiv-Version des Textes wurde wiederhergestellt! Die zuletzt aktuelle Fassung wurde ins Archiv verschoben!');
				}else{
					alert('Der neue Text wurde veröffentlicht! Die zuletzt aktuelle Fassung wurde ins Archiv verschoben!');	
				}
				requestReady = true;
			}
		}
});

/*Parameter setzen! Eventhandler setzen! */
window.addEvent('domready', function(){
	if($('session').value == 1){
		$$('.content_text').addEvents({
			'mouseover': function(){
				this.setStyle('backgroundColor', '#eea1a1');
				this.setStyle('cursor', 'pointer');
			},
			'mouseout': function(){
				if(($('textId').value != this.id) || ($('edit_text').getStyle('visibility') == 'hidden')){
					this.setStyle('backgroundColor', '');
				}
			},
			'click': function(){
				fnNewEdit(this.id);	
			}
		});
		
		$$('.btn_big').addEvents({
			'mouseover': function(){
				this.setStyle('backgroundColor', '#eea1a1');
			},
			'mouseout': function(){
				this.setStyle('backgroundColor', '');
			},
			'click': function(){
				
			}
		});
		
		$('btn_clear_new').addEvent('click', function(event){
			$('txtEdit').innerHTML = '';
		});
		
		var viewBtns = Array($('btn_view_old'),$('btn_view_akt'),$('btn_view_new'));
		for(i=0;i<=viewBtns.length-1;i++){
			viewBtns[i].addEvent('click', function(event){
				activeText = $('textId').value;
				$(activeText).innerHTML = $('txtEdit').value;
			});
		}
		
		var publishBtns = Array($('btn_publish_old'),$('btn_publish_new'));
		for(i=0;i<=publishBtns.length-1;i++){
			publishBtns[i].addEvent('click', function(event){
				activeText = $('textId').value;
				active_ver = $('active_version').value.substr(4,6);
				escapedText = escape($('txtEdit').value);
				publishText(activeText,active_ver,escapedText);
			});
		}


		var versionBtns = Array($('btn_old'),$('btn_akt'),$('btn_new'));
		for(i=0;i<=versionBtns.length-1;i++){
			versionBtns[i].addEvents({
				'mouseover': function(){
					this.setStyle('backgroundColor', '#ceb58d');
				},
				'mouseout': function(){
					if($('active_version').value != this.id){
						this.setStyle('backgroundColor', '');
					}
				},
				'click': function(){
					$$('.btn_version').setStyle ('backgroundColor', '#eee');
					$('active_version').value = this.id;
					active_ver = $('active_version').value.substr(4,6);
					if(active_ver != 'new'){
						$('txtEdit').disabled = true;
					}else{
						$('txtEdit').disabled = false;
					}
					$$('.historyBtns').setStyle ('display', 'none');
					$('edit_history_'+active_ver).setStyle ('display', 'block');
					this.setStyle('backgroundColor', '#ceb58d');
					ajaxGetDb(active_ver, $('textId').value,'getText');
				}
			});
		}
		basePosX = $('edit_text').offsetLeft.toInt();
		basePosY = $('edit_text').offsetTop.toInt();
		$('edit_text').setStyle('left', basePosX+250);
		$('edit_text').setStyle('top', basePosY+200);
		makeDraggable($('edit_text'));		
	}
	$$('a', 'button').addEvent('focus', function(event){
			this.blur();
	});
});

function publishText(active, version, text){
	if(text == ''){
		confirmation = confirm('Dieser Text ist leer! Sind Sie ganz sicher daß Sie ihn trotzdem veröffentlichen möchten?');	
	}else{
		confirmation = confirm('Möchten sie diesen Text wirklich veröffentlichen? Der aktuelle Stand wird damit ins Archiv verschoben, ist aber bis zur nächsten Änderung wiederherstellbar.');
	}
	
	if(confirmation){
		ajaxSendDb(version, active, 'publish', text);
	}
	
}

/*ajax-Request*/
function ajaxSendDb(version, who, action, text){
	if(requestReady){
		querystring = 'action='+action+'&id='+who+'&version='+version+'&text='+text;
		switchRequest.send(querystring);
	}else{
		alert('Die letzte Abfrage ist noch nicht beendet. Bitte versuchen Sie es in ein paar sekunden noch einmal!');	
	}
}

function ajaxGetDb(version, who, action){
	if(requestReady){
		querystring = 'action='+action+'&id='+who+'&version='+version;
		switchRequest.send(querystring);
	}else{
		alert('Die letzte Abfrage ist noch nicht beendet. Bitte versuchen Sie es in ein paar sekunden noch einmal!');	
	}
}

/*escapeHTML vs. Sonderzeichen*/
function escapeHTML (str)
{
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}; 

/*Editfenster öffnen.*/
function fnNewEdit(textID){
	$('edit_title').innerHTML = '<b>Editieren von Text: '+textID+'</b>';
	$('textId').value = textID;
	$$('.content_text').setStyle('backgroundColor', '');
	$(textID).setStyle('backgroundColor', '#eea1a1');
	ajaxGetDb('akt', textID,'getText');
	$$('.btn_big').setStyle ('backgroundColor', '#eee');
	$$('.btn_version').setStyle ('backgroundColor', '#eee');
	$('active_version').value = 'btn_akt';
	active_ver = 'akt';
	$('txtEdit').disabled = true;
	$$('.historyBtns').setStyle ('display', 'none');
	$('edit_history_'+active_ver).setStyle ('display', 'block');
	$('btn_akt').setStyle ('backgroundColor', '#ceb58d');
	$('edit_text').style.visibility = 'visible';
}

/*Editfenster schliessen.*/
function closeEdit(){
	$('edit_text').style.visibility = 'hidden';
	$$('.content_text').setStyle('backgroundColor', '');
}


/*formatfunktionen für txtEdit*/
function insert(aTag, eTag) {
  var input = document.forms['frmEdit'].elements['txtEdit'];
  if(input.disabled == false){
	  input.focus();
	  /* f&uuml;r Internet Explorer */
	  if(typeof document.selection != 'undefined') {
		/* Einf&uuml;gen des Formatierungscodes */
		var range = document.selection.createRange();
		var insText = range.text;
		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&uuml;r neuere auf Gecko basierende Browser */
	  else if(typeof input.selectionStart != 'undefined')
	  {
		/* Einf&uuml;gen des Formatierungscodes */
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		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&uuml;r die &uuml;brigen Browser */
	  else
	  {
		/* Abfrage der Einf&uuml;geposition */
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos)) {
		  pos = prompt("Einf&uuml;gen an Position (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length) {
		  pos = input.value.length;
		}
		/* Einf&uuml;gen des Formatierungscodes */
		var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
		input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
	  }
  }
}

/*helplayer ein/ausblenden*/
function showhelplayer(showhide){
	$('helplayer').style.display = showhide;
}

/*link setzen für txtEdit (wird evtl wieder entfernt)*/
function setHl(){
	var input = document.forms['frmEdit'].elements['txtEdit'];
	if(input.disabled == false){
		targetHl = prompt("Bitte das Linkziel angeben!", "http://");
		//alert(input.value.substr(0,input.selectionStart));
		gesamtNum = input.value.length;
		beforeText = input.value.substr(0,input.selectionStart);
		aftertextlength = (gesamtNum-input.selectionEnd);
		afterText = input.value.substr(input.selectionEnd,aftertextlength);
		linktextlength = (input.selectionEnd-input.selectionStart);
		linkText = input.value.substr(input.selectionStart,linktextlength);
		newtext = beforeText+'<a href="'+targetHl+'" target="_BLANK">'+linkText+'</a>'+afterText;
		input.value = newtext;
	}
}

/*draggable objekt für editfenster*/
function makeDraggable(drag){
	var newDrag = new Drag.Move(drag , {
			grid: 1,
			handle: $('edit_head'),
			onStart: function(el, dr) {
				
			},
			onDrag: function(el){
				
			},
			onDrop: function(el, dr) {
				
			},
			onComplete: function(el,dr){
			
			},
			onLeave: function(el, dr) {
								
			},
			onEnter: function(el, dr) {
				
			}
	});
}

