/*       _\|/_
         (o o)                         
+-----oOO-{_}-OOo--------------------------------------------------------+
| toendaCMS - Content Management and Weblogging System with XML and SQL  |
+------------------------------------------------------------------------+
| Copyright (c) Toenda Software Development                              |
| Author: Jonathan Naumann                                               |
+------------------------------------------------------------------------+
| 
| Edit JavaScript Functions
|
| File:		edit.js
| Version:	0.1.1
|
+
*/


/************************************************
*
* JAVASCRIPT EDITOR FUNCTIONS
*
* createToolbar(form, lang, script)       -> show the toolbar
* clearCommandHTML(form, id)              -> clear text from all HTML commands
* clearCommandtoendaScript(form, id)      -> clear text from all toendaScript commands
* insertCommand(form, id, command)        -> insert command at position
*
*/



function createToolbar(form, lang, script){
	switch(lang){
		case 'english_EN':
			var tSB_List = 'List';
			var tSB_List = 'List';
			var tSB_ListItem = 'List item';
			var tSB_Center = 'Center';
			var tSB_Right = 'Right';
			var tSB_Left = 'Left';
			var tSB_Link = 'Link';
			var tSB_ClearC = 'Clear Commands';
			break;
		
		case 'germany_DE':
			var tSB_List = 'Liste';
			var tSB_nList = 'Nummerierte Liste';
			var tSB_ListItem = 'Listenpunkt';
			var tSB_Center = 'Zentriert';
			var tSB_Right = 'Rechts';
			var tSB_Left = 'Links';
			var tSB_Link = 'Link';
			var tSB_ClearC = 'Befehle l' + unescape("%F6") + 'schen';
			break;
		
		default:
			var tSB_List = 'List';
			var tSB_nList = 'Numbered List';
			var tSB_ListItem = 'List item';
			var tSB_Center = 'Center';
			var tSB_Right = 'Right';
			var tSB_Left = 'Left';
			var tSB_Link = 'Link';
			var tSB_ClearC = 'Clear Commands';
			break;
	}
	
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="B" onclick="insertCommand(\'' + form + '\', \'content\', \'b\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="I" onclick="insertCommand(\'' + form + '\', \'content\', \'i\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="U" onclick="insertCommand(\'' + form + '\', \'content\', \'u\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="tt" onclick="insertCommand(\'' + form + '\', \'content\', \'tt\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_List + '" onclick="insertCommand(\'' + form + '\', \'content\', \'ul\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_nList + '" onclick="insertCommand(\'' + form + '\', \'content\', \'ol\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_ListItem + '" onclick="insertCommand(\'' + form + '\', \'content\', \'li\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_Center + '" onclick="insertCommand(\'' + form + '\', \'content\', \'center\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_Left + '" onclick="insertCommand(\'' + form + '\', \'content\', \'left\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_Right + '" onclick="insertCommand(\'' + form + '\', \'content\', \'right\', \'' + script + '\');" />');
	document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_Link + '" onclick="insertCommand(\'' + form + '\', \'content\', \'url\', \'' + script + '\');" />');
	
	if(script == 'HTML')
		document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_ClearC + '" onclick="clearCommandHTML(\'' + form + '\', \'content\');" />');
	else
		document.write('<input type="button" name="tcms_more" class="tcms_more" value="' + tSB_ClearC + '" onclick="clearCommandtoendaScript(\'' + form + '\', \'content\');" />');
}



function clearCommandHTML(form, id){
	var content;
	
	input = document.forms[form].elements[id];
	content = input.value;
	
	content = content.replace(/<br \/>/g, '');
	
	content = content.replace(/<strong>/g, '');
	content = content.replace(/<\/strong>/g, '');
	
	content = content.replace(/<em>/g, '');
	content = content.replace(/<\/em>/g, '');
	
	content = content.replace(/<u>/g, '');
	content = content.replace(/<\/u>/g, '');
	
	content = content.replace(/<tt>/g, '');
	content = content.replace(/<\/tt>/g, '');
	
	content = content.replace(/<ul>/g, '');
	content = content.replace(/<\/ul>/g, '');
	
	content = content.replace(/<ol>/g, '');
	content = content.replace(/<\/ol>/g, '');
	
	content = content.replace(/<li>/g, '');
	content = content.replace(/<\/li>/g, '');
	
	content = content.replace(/align="center"/g, '');
	
	content = content.replace(/align="left"/g, '');
	
	content = content.replace(/align="right"/g, '');
	
	input.value = content;
}



function clearCommandtoendaScript(form, id){
	var content;
	
	input = document.forms[form].elements[id];
	content = input.value;
	
	content = content.replace(/{br}/g, '');
	
	content = content.replace(/{b:}/g, '');
	content = content.replace(/{:b}/g, '');
	
	content = content.replace(/{i:}/g, '');
	content = content.replace(/{:i}/g, '');
	
	content = content.replace(/{u:}/g, '');
	content = content.replace(/{:u}/g, '');
	
	content = content.replace(/{tt:}/g, '');
	content = content.replace(/{:tt}/g, '');
	
	content = content.replace(/{ul:}/g, '');
	content = content.replace(/{:ul}/g, '');
	
	content = content.replace(/{ol:}/g, '');
	content = content.replace(/{:ol}/g, '');
	
	content = content.replace(/{li:}/g, '');
	content = content.replace(/{:li}/g, '');
	
	content = content.replace(/{center:}/g, '');
	content = content.replace(/{:center}/g, '');
	
	content = content.replace(/{left:}/g, '');
	content = content.replace(/{:left}/g, '');
	
	content = content.replace(/{right:}/g, '');
	content = content.replace(/{:right}/g, '');
	
	input.value = content;
}



function insertCommand(form, id, command, script){
	var commandValuePre;
	var commandValuePost;
	var insName = '';
	
	var input = document.forms[form].elements[id];
	
	if(script == 'HTML'){
		switch(command){
			case 'b':
				commandValuePre = '<strong>';
				commandValuePost = '</strong>';
				break;
			
			case 'i':
				commandValuePre = '<em>';
				commandValuePost = '</em>';
				break;
			
			case 'u':
				commandValuePre = '<u>';
				commandValuePost = '</u>';
				break;
			
			case 'tt':
				commandValuePre = '<tt>';
				commandValuePost = '</tt>';
				break;
			
			case 'ul':
				commandValuePre = '<ul>';
				commandValuePost = '</ul>';
				break;
			
			case 'ol':
				commandValuePre = '<ol>';
				commandValuePost = '</ol>';
				break;
			
			case 'li':
				commandValuePre = '<li>';
				commandValuePost = '</li>';
				break;
			
			case 'center':
				commandValuePre = '<div align="center">';
				commandValuePost = '</div>';
				break;
			
			case 'left':
				commandValuePre = '<div align="left">';
				commandValuePost = '</div>';
				break;
			
			case 'right':
				commandValuePre = '<div align="right">';
				commandValuePost = '</div>';
				break;
			
			case 'url':
				var insURL = prompt('URL:');
				var insTarget;
				
				var delCheck = confirm('Open in a new window?');
				if(delCheck != false){ insTarget = ' target="_blank"'; }
				else{ insTarget = ''; }
				
				commandValuePre = '<a href="' + insURL + '"' + insTarget + '>';
				commandValuePost = '</a>';
				break;
			
			case 'more':
				commandValuePre = '';
				commandValuePost = '{tcms_more}';
				break;
			
			default:
				commandValuePre = '';
				commandValuePost = '<br />';
				break;
		}
	}
	else{
		switch(command){
			case 'b':
				commandValuePre = '{b:}';
				commandValuePost = '{:b}';
				break;
			
			case 'i':
				commandValuePre = '{i:}';
				commandValuePost = '{:i}';
				break;
			
			case 'u':
				commandValuePre = '{u:}';
				commandValuePost = '{:u}';
				break;
			
			case 'tt':
				commandValuePre = '{tt:}';
				commandValuePost = '{:tt}';
				break;
			
			case 'ul':
				commandValuePre = '{ul:}';
				commandValuePost = '{:ul}';
				break;
			
			case 'ol':
				commandValuePre = '{ol:}';
				commandValuePost = '{:ol}';
				break;
			
			case 'li':
				commandValuePre = '{li:}';
				commandValuePost = '{:li}';
				break;
			
			case 'center':
				commandValuePre = '{center:}';
				commandValuePost = '{:center}';
				break;
			
			case 'left':
				commandValuePre = '{left:}';
				commandValuePost = '{:left}';
				break;
			
			case 'right':
				commandValuePre = '{right:}';
				commandValuePost = '{:right}';
				break;
			
			case 'url':
				var insURL = prompt('URL:');
				var insTarget;
				
				var delCheck = confirm('Open in a new window?');
				if(delCheck != false){ insTarget = '_blank'; }
				else{ insTarget = ''; }
				
				commandValuePre = '{url#' + insURL + '#' + insTarget + ':}';
				commandValuePost = '{:url}';
				break;
			
			case 'more':
				commandValuePre = '';
				commandValuePost = '{tcms_more}';
				break;
			
			default:
				commandValuePre = '';
				commandValuePost = '{br}';
				break;
		}
	}
	
	if(document.selection){
		var oldContent;
		var newContent;
		var selectedContent;
		var changedSelectedContent;
		
		selectedContent = document.selection.createRange().text;
		oldContent = input.value;
		
		if(selectedContent == ''){
			if(command == 'url'){
				insName = prompt('Name:');
			}
			
			input.value = oldContent + commandValuePre + insName + commandValuePost
			input.focus();
		}
		else{
			changedSelectedContent = commandValuePre + selectedContent + commandValuePost;
			
			newContent = oldContent.replace(selectedContent, changedSelectedContent);
			
			input.value = newContent;
			input.focus();
		}
	}
	else if(window.getSelection){
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		
		if(insText.length == 0){
			if(command == 'url'){
				insName = prompt('Name:');
			}
		}
		
		input.value = input.value.substr(0, start) + commandValuePre + insName + insText + commandValuePost + input.value.substr(end);
		
		var pos;
		
		if(insText.length == 0){
			pos = start + commandValuePre.length;
		}else{
			pos = start + commandValuePre.length + insText.length + commandValuePost.length;
		}
		
		input.selectionStart = pos;
		input.selectionEnd = pos;
		input.focus();
	}
	else{
		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");
			pos = input.value.length;
		}
		
		if(pos > input.value.length){
			pos = input.value.length;
		}
		
		var insText = prompt('Insert Command:');
		input.value = input.value.substr(0, pos) + commandValuePre + insText + commandValuePost + input.value.substr(pos);
	}
}



