tags = new Array();

function getarraysize(thearray) {
	for (i = 0; i < thearray.length; i++) {
		if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null))
			return i;
		}
	return thearray.length;
}

function arraypush(thearray,value) {
	thearraysize = getarraysize(thearray);
	thearray[thearraysize] = value;
}

function arraypop(thearray) {
	thearraysize = getarraysize(thearray);
	retval = thearray[thearraysize - 1];
	delete thearray[thearraysize - 1];
	return retval;
}

// *******************************************************

// Flash HACK
function flash(theform){
	width = prompt("Gebe die Breite deiner Animation ein:","");
	if (width != ""){
		height = prompt ("Gebe die Höhe deiner Animation ein:","");
		bgcolor = prompt ("Gebe die Hintergrundfarbe deiner Animation ein:","#");
		link = prompt ("Gebe die URL zu deiner Animation ein:","http://");
		if ((width != null) && (height != null) && (bgcolor != null) && (link != null)){
			if ((width != "") && (height != "") && (bgcolor != "") && (link != "")){
			AddTxt = "[flash="+width+","+height+","+bgcolor+"]"+link+"[/flash]";
			AddText(AddTxt,theform);
			}else{
			alert ("Ihre Angaben sind Fehlerhaft, der Code wurde nicht eingetragen!");
			}
		}
	}
theform.message.focus();	
}
// Flash HACK

function setmode(modevalue) {
	document.cookie = "bbcodemode="+modevalue+"; path=/; expires=Wed, 1 Jan 2020 00:00:00 GMT;";
}

function normalmode(theform) {
	return true;
	
}

function stat(thevalue) {
	document.bbform.status.value = eval(thevalue+"_text");
}

// *******************************************************

function closetag(theform) {
	if (normalmode(theform))
		stat('enhanced_only');
	else
		if (tags[0]) {
			theform.message.value += "[/"+ arraypop(tags) +"]";
			}
		else {
			stat('no_tags');
			}
	theform.message.focus();
}

function closeall(theform) {
	if (normalmode(theform))
		stat('enhanced_only');
	else {
		if (tags[0]) {
			while (tags[0]) {
				theform.message.value += "[/"+ arraypop(tags) +"]";
				}
			theform.message.value += " ";
			}
		else {
			stat('no_tags');
			}
		}
	theform.message.focus();
}

// *******************************************************
var text = "";
AddTxt = "";
function getActiveText(selectedtext) { 
	text = (document.all) ? document.selection.createRange().text : document.getSelection();
	if (selectedtext.createTextRange) {
    	selectedtext.caretPos = document.selection.createRange().duplicate();
	}
	return true;
}

function AddText(NewCode,theform) {
	if (theform.message.createTextRange && theform.message.caretPos) {
		var caretPos = theform.message.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
	} else {
		theform.message.value+=NewCode
	}
	setfocus(theform);
	AddTxt = "";
}


function setfocus(theform) {
theform.message.focus();
}

function bbcode(theform,bbcode,prompttext) {
	if ((normalmode(theform)) || (bbcode=="IMG")) {
		if (text) { var dtext=text; } else { var dtext=prompttext; }
		inserttext = prompt(tag_prompt+"\n["+bbcode+"]xxx[/"+bbcode+"]",dtext);
		if ((inserttext != null) && (inserttext != ""))
			AddTxt = "["+bbcode+"]"+inserttext+"[/"+bbcode+"] ";
			AddText(AddTxt,theform);
			
		}
	else {
		donotinsert = false;
		for (i = 0; i < tags.length; i++) {
			if (tags[i] == bbcode)
				donotinsert = true;
			}
		if (donotinsert)
			stat("already_open");
		else {
			theform.message.value += "["+bbcode+"]";
			arraypush(tags,bbcode);
			}
		}
	theform.message.focus();
}

// *******************************************************

function fontformat(theform,thevalue,thetype) {
	if (normalmode(theform)) {
		if (thevalue != 0) {
			if (text) { var dtext=text; } else { var dtext=""; }
			inserttext = prompt(font_formatter_prompt+" "+thetype,dtext);
			if ((inserttext != null) && (inserttext != ""))
				AddTxt = "["+thetype+"="+thevalue+"]"+inserttext+"[/"+thetype+"] ";
				AddText(AddTxt,theform);
				
			}
		}
	else {
		theform.message.value += "["+thetype+"="+thevalue+"]";
		arraypush(tags,thetype);
		}
	theform.sizeselect.selectedIndex = 0;
	theform.fontselect.selectedIndex = 0;
	theform.colorselect.selectedIndex = 0;
	theform.message.focus();
}

// *******************************************************

function namedlink(theform,thetype) {
	if (text) { var dtext=text; } else { var dtext=""; }
	linktext = prompt(link_text_prompt,dtext);
		var prompttext;
		if (thetype == "URL") {
			prompt_text = link_url_prompt;
			prompt_contents = "http://";
			}
		else {
			prompt_text = link_email_prompt;
			prompt_contents = "";
			}
	linkurl = prompt(prompt_text,prompt_contents);
	if ((linkurl != null) && (linkurl != "")) {
		if ((linktext != null) && (linktext != "")) {
			AddTxt = "["+thetype+"="+linkurl+"]"+linktext+"[/"+thetype+"] ";
			AddText(AddTxt,theform);
			
			}
		else{
			AddTxt = "["+thetype+"]"+linkurl+"[/"+thetype+"] ";
			AddText(AddTxt,theform);
			
		}
	}
}

function namedlink2(theform,thetype) {
	if (text) { var dtext=text; } else { var dtext=""; }
	linktext = prompt(link_text_prompt,dtext);
		var prompttext;
		if (thetype == "CURSOR") {
			prompt_text = link_url_prompt;
			prompt_contents = "http://";
			}
		else {
			prompt_text = link_email_prompt;
			prompt_contents = "";
			}
	linkurl = prompt(prompt_text,prompt_contents);
	if ((linkurl != null) && (linkurl != "")) {
		if ((linktext != null) && (linktext != "")) {
			AddTxt = "["+thetype+"="+linkurl+"]"+linktext+"[/"+thetype+"] ";
			AddText(AddTxt,theform);
			
			}
		else{
			AddTxt = "["+thetype+"]"+linkurl+"[/"+thetype+"] ";
			AddText(AddTxt,theform);
			
		}
	}
}

// *******************************************************

function dolist(theform) {
	listtype = prompt(list_type_prompt, "");
	if ((listtype == "a") || (listtype == "1")) {
		thelist = "[list="+listtype+"]\n";
		listend = "[/list="+listtype+"] ";
		}
	else {
		thelist = "[list]\n";
		listend = "[/list] ";
		}
	listentry = "initial";
	while ((listentry != "") && (listentry != null)) {
		listentry = prompt(list_item_prompt, "");
		if ((listentry != "") && (listentry != null))
			thelist = thelist+"[*]"+listentry+"\n";
		}
	AddTxt = thelist+listend;
	AddText(AddTxt,theform);

}

// *******************************************************

function smilie(thesmilie) {
	AddSmile = " "+thesmilie+" ";
	theform = bbform;
	AddText(AddSmile,theform);
}

function opensmiliewindow(x,y,sid,boardid,styleid) {
		window.open("moresmilies.php?sid="+sid+"&boardid="+boardid+"&styleid="+styleid, "smilies", "toolbar=no,scrollbars=yes,resizable=yes,width="+x+",height="+y);
}

// *******************************************************



function gethelp() {
	alert(HELPTEXT);
}
// *******************************************************
/* Skip these strings */
var undoeng=new Array();
var t_skip=new Array( "html","","code","","img","","sql","","quote","(=[\"']?[^"+String.fromCharCode(92,93)+"]+)?","email","(=[\"']?[a-zA-Z0-9_.-]+@?[a-zA-Z0-9_.-]+[\"']?)?","url","(=[\"']?[^ \"'"+String.fromCharCode(92,93)+"]*[\"']?)?" );

// One character letters

t_table1 = "ABVWGDEZIJKLMNOPRSTUFXCYabvwgdezijklmnoprstufxcy'#";
w_table1 = "ÀÁÂÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÛàáââãäåçèéêëìíîïðñòóôõöûüú";
// Two character letters

t_table2 = "YOJOZHCHSHYUJUYAJAJEyojozhchshyujuyajajeYoYoZhChShYuJuYaJaJe";

w_table2 = "¨¨Æ×ØÞÞßßÝ¸¸æ÷øþþÿÿý¨¨Æ×ØÞÞßßÝ";

// Three character letters

t_table3 = "SCHsch";

w_table3 = "Ùù";



function translit2win2(theform,str){
		if (text != "") { var dtext=text; 
		inserttext = dtext;
		if ((inserttext != null) && (inserttext != ""))
			AddTxt = translit2win(inserttext);
			if (theform.message.createTextRange && theform.message.caretPos) {
				var caretPos = theform.message.caretPos;
				caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? AddTxt : AddTxt;
			} else {
				theform.message.value+=NewCode
			}
			setfocus(theform);

		} else { 
		theform.message.value=translit2win(str); 
		theform.message.focus();
		}
}
function translit2win3(control,str){
		if (text != "") { var dtext=text; 
		inserttext = dtext;
		if ((inserttext != null) && (inserttext != ""))
			AddTxt = translit2win(inserttext);
			if (control.createTextRange && theform.message.caretPos) {
				var caretPos = control.caretPos;
				caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? AddTxt : AddTxt;
			} else {
				control.value+=NewCode
			}
		} else { 
		control.value=translit2win(str); 
		control.focus();
		}
}

function translit2win(str) {
len=str.length;
new_str="";
 for(i=0;i<len;i++)
{
if(str.substr(i).indexOf("^")==0){
end_len=str.substr(i+1).indexOf("^")+2;
 if(end_len>1){
new_str+=str.substr(i,end_len);
i+=end_len-1;
continue;
}
}


 if(str.substr(i).indexOf(":")==0){
end_len=str.substr(i+1).indexOf(":")+2;
if(end_len>1 && str.substr(i,end_len).match("^::[a-zA-Z0-9]+:$")){
new_str+=str.substr(i,end_len);
i+=end_len-1;
 continue;
}
}


/* Check for valid ed2k:/.../ links */
re=new RegExp("^(ed2k:"+String.fromCharCode(92,47,92,47,91,94,92,47,93,43,41),"i");
 if(newArr=str.substr(i).match(re)){
new_str+=newArr[1];
i+=newArr[1].length-1;
continue;
}

/* Check for valid http|new|ftp:/.../ links */
re=new RegExp("^((http|https|news|ftp):"+String.fromCharCode(92,47,92,47,91,92,47)+"a-zA-Z0-9%_?.:+=@-]+) ","i");
if(newArr=str.substr(i).match(re)){
new_str+=newArr[1];
i+=newArr[1].length-1;
continue;
} 

/* Check for simple tags */
re=new RegExp(String.fromCharCode(94,40,92,91,92,47,63)+"(b|i|u|s|font(=[a-z0-9]+)?|size(=[0-9]+)?|color( =#?[a-z0-9]+)?)" + String.fromCharCode(92,93,41),"i");
if(newArr=str.substr(i).match(re)){
 new_str+=newArr[1];i+=newArr[1].length-1;continue;
}

/* Check for tags, described in t_skip[] array */
tag_skip=false;
for(j=0;j<t_skip.length;j+=2){
re=new RegExp(String.fromCharCode(94,40,92,91)+t_skip[j]+t_skip[j+1]+String.fromCharCode(92,93,41),"i");
 if(newArr=str.substr(i).match(re)){
re=new RegExp(String.fromCharCode(92,91,92,47) + t_skip[j] + String.fromCharCode(92,93), "i");
if(end_pos=str.substr(i + newArr[1].length + 2).search(re))
 {end_len=end_pos+newArr[1].length+1+t_skip[j].length+3;new_str+=str.substr(i,end_len);i+=end_len-1 ;tag_skip=true;}
}
if(tag_skip)break;
}
if(tag_skip)continue;

/* Check for valid (mailto:)email@host.com links */
re=new RegExp("^((mailto:)?[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+)", "i");
if(newArr=str.substr(i).match(re)){new_str+=newArr[1];i+=newArr[1].length-1;continue;}

/* Check for valid (mailto:)email@host.com links */
re=new RegExp("^((:)?[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+)", "i");
if(newArr=str.substr(i).match(re)){new_str+=newArr[1];i+=newArr[1].length-1;continue;}

/* Check for 2-character letters */
if(i<len-1)
{
for(j=0;j<w_table2.length;j++){
 if(str.substr(i,2)==t_table2.substr(j*2,2)){
 new_str+=w_table2.substr(j,1);i++;tag_skip=true;break;
}
}
}
if(tag_skip)continue;

/* Check for 3-character letters */
if(i<len-0)
{
for(j=0;j<w_table3.length;j++){
 if(str.substr(i,3)==t_table3.substr(j*3,3)){
 new_str+=w_table3.substr(j,1);i++;tag_skip=true;break;
}
}
}
if(tag_skip)continue;

/* Convert one-character letter */
c=str.substr(i,1);
pos=t_table1.indexOf(c);
 if(pos<0){new_str+=c;}else{new_str+=w_table1.substr(pos,1);}
}
 if(new_str!=str){undoeng[undoeng.length]=str;}
return new_str;
}