//<!--
// command history
// ===============

// variables
// ---------


var historyLength = 5;
var undoArr=new Array();
var redoArr=new Array();
var pending; // current text

function histUndo() {
	var
		dummyArr=new Array();
	if(undoArr.length>0) {
		redoArr[redoArr.length]=pending;
		pending=undoArr[undoArr.length-1];
		for(i=0; i<undoArr.length-1; i++) dummyArr[i]=undoArr[i];
		undoArr=dummyArr;
		document.cms.Text.value=pending;
		showPreview();
	} else {
		alert('Kein Undo möglich');
	}
}

function histRedo() {
	var
		dummyArr=new Array;
	if(redoArr.length>0) {
		undoArr[undoArr.length]=pending;
		pending=redoArr[redoArr.length-1];
		for(i=0; i<redoArr.length-1; i++) dummyArr[i]=redoArr[i];
		redoArr=dummyArr;
		document.cms.Text.value=pending;
		showPreview();
	} else {
		alert('Kein Redo möglich');
	}
}

function histPush() {
	var
		dummyArr=new Array;
	if(undoArr.length>=historyLength) {
		// shift it
		for(i=1; i<undoArr.length; i++) {
			dummyArr[i-1]=undoArr[i];
		}
		undoArr=dummyArr;
	}
	undoArr[undoArr.length]=pending;
	pending=document.cms.Text.value;
	redoArr=new Array();
}


function showPreview() {
	/*var prevLay = getElement("preview", []);
	var val=document.cms.Text.value;
	val=val.replace(/\r\n/g, "<br>");
	val=val.replace(/\n/g, "<br>");
	setElementText(prevLay, val);
	*/
}


var workArray = new Array();
workArray[workArray.length] = [1,"<B>substitute</B>","Bitte markieren sie einen Abschnitt!"];
workArray[workArray.length] = [1,"<U>substitute</U>","Bitte markieren sie einen Abschnitt!"];
workArray[workArray.length] = [1,"<I>substitute</I>","Bitte markieren sie einen Abschnitt!"];
workArray[workArray.length] = [1,"<H1>substitute</H1>","Bitte markieren sie einen Abschnitt!"];
workArray[workArray.length] = [2,"OL","Bitte Text selektieren!!"];
workArray[workArray.length] = [2,"UL","Bitte Text selektieren!!"];

function imageDialog() {
  var selStr = document.selection.createRange().text;
	if(selStr=='') {
		alert('Bitte text selektieren!');
	} else {
		imgDialog=window.open('img_browser.asp', "imageDialog", "width=310,height=400,left=100,top=100,scrollbars=yes");
		imgDialog.focus();
	}
}

function createImage(filename) {
  var selStr = document.selection.createRange().text;
	if(selStr=='') {
		alert('Bitte geben Sie eine Bildbeschreibung ein und markieren Sie sie!');
	} else {
		// update document
		document.selection.createRange().text = '<img src="'+filename+'" alt="'+selStr+'">';
		// update editorHistory
		histPush();
		// update preview
		showPreview();
	}
}

function linkDialog() {
  var selStr = document.selection.createRange().text;
	if(selStr=='') {
		alert('Bitte text selektieren!')
	} else {
		lnDialog=window.open('scripts/link_dialog.php', "linkDialog", "width=490,height=350,left=100,top=100,scrollbars=yes");
		lnDialog.focus();
	}
}

function createLink(url, target, cssclass) {
	var selStr = document.selection.createRange().text;
	if(selStr=='') {
		alert('Bitte geben Sie eine Linkbeschreibung ein und markieren Sie sie!');
	} else {
		//target rausparsen wenn _top:
		if (target=="_top"){targetstring="";}else{targetstring=' target="'+target+'"';}
		// update document
		document.selection.createRange().text = '<a href="'+url+'"'+targetstring+' class=\"'+cssclass+'\">'+selStr+'</a>';
		// update editorHistory
		histPush();
		// update preview
		//showPreview();
	}
}

function propertiesDialog() {
	window.open('properties_dialog.asp?s_id='+document.cms.s_id.value, "propertiesDialog", "width=450,height=400,left=100,top=100,scrollbars=yes");
}

function setAnchor() {
  var selStr = document.selection.createRange().text;
	if(selStr=='') {
		alert('Bitte geben Sie den Namen des Ankers ein, und markieren Sie ihn!')
	} else {
		// update document
		document.selection.createRange().text='<a name="'+selStr+'"></a>';
		// update editorHistory
		histPush();
		// update preview
		showPreview();
	}
}

function getAnchor() {
  var selStr = document.selection.createRange().text;
	var ref;
	if(selStr=='') {
		alert('Bitte geben Sie die Beschriftung des Verweises ein, und markieren Sie sie!');
	} else {
		ref=prompt('Geben Sie den Namen des Ankers ein, auf den verwiesen werden soll:', '');
		// update document
		document.selection.createRange().text='<a href="#'+ref+'">'+selStr+'</a>';
		// update editorHistory
		histPush();
		// update preview
		showPreview();
	}
}

function setStyle(styleName) {
  var selStr = document.selection.createRange().text;
	if(selStr=='') {
		alert('Bitte markieren Sie einen zu formatierenden Bereich!');
	} else {
		// update document
		document.selection.createRange().text='<span class="'+styleName+'">'+selStr+'</span>';
		// update editorHistory
		histPush();
		// update preview
		showPreview();
	}
}

function makeTable() {
  var selStr = document.selection.createRange().text;
	var lines;
	var cells;
	var i, j;
	var newSel;
	var lenErr=false;
	if(selStr=='') {
		alert('Bitte markieren Sie einen zu formatierenden Bereich! Trennen Sie Tabellenzeilen durch Zeilenumbrüche, Spalten durch senkrechte Striche ("|")!');
	} else {
		selStr=selStr.replace(/\r/, '');
		lines=selStr.split('\n');
		cells=new Array();
		for(i=0; i<lines.length; i++) {
			cells[i]=lines[i].split('|');
		}
		j=cells[0].length;
		for(i=1; i<cells.length; i++) {
			if(cells[i].length!=j) lenErr=true;
		}
		if(lenErr) {
			alert('Fehler: Die Zeilen der Tabelle sind nicht gleichlang!');
		} else {
			newSel='<table cellpadding="0" cellspacing="0" border="0">'
			for(i=0; i<cells.length; i++) {
				newSel+='<tr>';
				for(j=0; j<cells[i].length; j++) {
					newSel+='<td>'+cells[i][j]+'</td>';
				}
				newSel+='</tr>';
			}
			newSel+='</table>'
			// update document
			document.selection.createRange().text=newSel;
			// update editorHistory
			histPush();
			// update preview
			showPreview();
		}
	}
}

function rplSelection(work) {
  var SelStr = document.selection.createRange().text;
  var RplStr, Selstr2;
  if(SelStr != "") {
	  switch(workArray[work][0]) {
			case 0:
				SelStr2 = SelStr.split(";;");
				var Ausdruck = /(.*)href(.*)target(.*)label(.*)/;
				Ausdruck.exec(workArray[work][1]);
				RplStr = RegExp.$1 + SelStr2[1] + RegExp.$2 + SelStr2[2] + RegExp.$3 + SelStr2[0] + RegExp.$4;
				break;
			case 1:
				var Ausdruck = /(.*)substitute(.*)/;
				Ausdruck.exec(workArray[work][1]);
				RplStr = RegExp.$1 + SelStr + RegExp.$2
				break;
			case 2:
				SelStr2 = SelStr.split("\r\n");
				RplStr = "<" + workArray[work][1] + ">";
				for(var i = 0;i < SelStr2.length; i++) {
					RplStr += "<LI>" + SelStr2[i] + "</LI>";
				}
				RplStr += "</" + workArray[work][1] + ">";
				break;
		}
		document.selection.createRange().text = RplStr;

		// update editorHistory
		histPush();
		
		showPreview();
  } else {
		alert("Bitte Text selektieren!!");
  }
}

function store() {
	document.forms.cms.action='store.asp';
	document.forms.cms.comment.value=prompt('Bitte geben Sie einen Kommentar zur Version ein:', '');
	document.forms.cms.submit();
}

function remove() {
	document.forms.cms.action='remove.asp';
	document.forms.cms.submit();
}


function checkdependentvalues(elementfield)
{
	
	XSave=document.forms[0].PopupsizeX.value;
	YSave=document.forms[0].PopupsizeY.value;
	XAuto=document.forms[0].width.value;
	YAuto=document.forms[0].height.value;
	
	switch (elementfield)
	{
		case ('width'):	
			if (document.forms[0].width.value=="auto")
			{document.forms[0].PopupsizeX.value="";}
			else 
			{document.forms[0].PopupsizeX.value=XSave;}
		break;
		case ('height'):	
			if (document.forms[0].height.value=="auto")
			{document.forms[0].PopupsizeY.value="";}
			else 
			{document.forms[0].PopupsizeY.value=YSave;}
		break;
		case ('PopUpX'):	
			if (document.forms[0].PopupsizeX.value=="" || document.forms[0].PopupsizeX.value=="0" )
			{document.forms[0].width.value="auto";}
			else 
			{document.forms[0].width.value="fix";}
		break;
		case ('PopUpY'):	
			if (document.forms[0].PopupsizeY.value=="" || document.forms[0].PopupsizeY.value=="0" )
			{document.forms[0].height.value="auto";}
			else 
			{document.forms[0].height.value="fix";}
		break;
	}
	
}
//-->

