PageSourceSearch

http://clan-banderos.de/teamspeak/js/bbcode.js

js clan-banderos.de collected 2026-10-08 23:42:01 UTC 19,400 bytes, 646 lines download raw bytes

1var form = 'post';
2var textarea = 'message';
3var which=null;
4
5function AddTag(open, close, content) {
6	if(typeof(document.forms[form].elements[textarea])=='undefined'){
7		if(which==null){
8			var textfield = document.forms[form].elements['message[0]'];
9		}
10		else{
11			var textfield = which;
12		}
13	}
14	else{
15		var textfield = document.forms[form].elements[textarea];
16	}
17	textfield.focus();
18	if(typeof document.selection != 'undefined') {
19		var range = document.selection.createRange();
20		if(content == ''){
21			var toinsert = range.text;
22		}
23		else{
24			toinsert = content;
25		}
26		range.text = open + toinsert + close;
27		range = document.selection.createRange();
28		if (toinsert.length == 0) {
29			range.move('character', -close.length);
30		}
31		else {
32			range.moveStart('character', open.length + toinsert.length + close.length);      
33		}
34		range.select();
35	}
36	else if(typeof textfield.selectionStart != 'undefined') {
37		var start = textfield.selectionStart;
38		var end = textfield.selectionEnd;
39		if(content == ''){
40			var toinsert = textfield.value.substring(start, end);
41		}
42		else{
43			toinsert = content;
44		}
45		textfield.value = textfield.value.substr(0, start) + open + toinsert + close + textfield.value.substr(end);
46		var pos;
47		if (toinsert.length == 0) {
48			pos = start + open.length;
49		} 
50		else {
51			pos = start + open.length + toinsert.length + close.length;
52		}
53		textfield.selectionStart = pos;
54		textfield.selectionEnd = pos;
55	}
56	else {
57		if(content == ''){
58			var toinsert=open + close;
59		}
60		else{
61			toinsert=open + content + close;
62		}
63		textfield.innerHTML+=toinsert;
64	}
65}
66
67// insert [img] tag
68function AddImg() {
69	AddTag('[IMG]', '[/IMG]', '');
70}
71
72// insert [url] or [email] tag
73function AddLink(thetype) {
74	AddTag("[" + thetype + "]", "[/" + thetype + "]", '');
75}
76
77// insert html list
78function AddList() {
79	type = prompt(language_array['bbcode']['listguide'], "");
80	if((type == "a") || (type == "1")) {
81		list = "[LIST=" + type + "]\n";
82		listend = "[/LIST=" + type + "]";
83	}
84	else {
85		list = "[LIST]\n";
86		listend = "[/LIST]";
87	}
88	entry = "start";
89	while ((entry != "") && (entry != null)) {
90		entry = prompt(language_array['bbcode']['listpoint'], "");
91		if ((entry != "") && (entry != null))
92			list = list + "[*]" + entry + "[/*]\n";
93	}
94	if(list != "[LIST]\n" && list !="[LIST=" + type + "]\n"){
95		addtext = list + listend;	
96		AddTag('', '', addtext);
97	}
98}
99
100// insert code from another window
101function AddCodeFromWindow(thecode) {
102 	if(typeof(opener.document.forms[form].elements[textarea])=='undefined'){
103		if(which==null){
104			var textfield = opener.document.forms[form].elements['message[0]'];
105		}
106		else{
107			var textfield = which;
108		}
109	}
110	else{
111		var textfield = opener.document.forms[form].elements[textarea];
112	}
113	textfield.focus();
114
115	textfield.focus();
116	if(typeof opener.document.selection != 'undefined') {
117		var range = opener.document.selection.createRange();
118		range.text = thecode;
119		range = opener.document.selection.createRange();
120		range.moveStart('character', thecode.length);      
121		range.select();
122	}
123	else if(typeof textfield.selectionStart != 'undefined') {
124		var start = textfield.selectionStart;
125		var end = textfield.selectionEnd;
126		textfield.value = textfield.value.substr(0, start) + thecode + textfield.value.substr(end);
127		var pos;
128		pos = start + thecode.length;
129		textfield.selectionStart = pos;
130		textfield.selectionEnd = pos;
131	}
132	else {
133		var pos;
134		var re = new RegExp('^[0-9]{0,3}$');
135		while(!re.test(pos)) {
136			pos = prompt(language_array['bbcode']['addcode']+" (0.." + textfield.value.length + "):", "0");
137		}
138		if(pos > textfield.value.length) {
139			pos = textfield.value.length;
140		}
141		textfield.value = textfield.value.substr(0, pos) + thecode + textfield.value.substr(pos);
142	}
143}
144
145// insert [b] tag
146function AddB() {
147	AddTag('[B]', '[/B]', '');
148}
149
150// insert [U] tag
151function AddU() {
152	AddTag('[U]', '[/U]', '');
153}
154
155// insert [I] tag
156function AddI() {
157	AddTag('[I]', '[/I]', '');
158}
159
160// insert [S] tag
161function AddS() {
162	AddTag('[S]', '[/S]', '');
163}
164
165// insert [quote] tag
166function AddQuote() {
167	AddTag('[quote]', '[/quote]', '');
168}
169
170// insert [code] tag
171function AddCodetag() {
172	AddTag('[code]', '[/code]', '');
173}
174
175// insert [Toggle] tag
176function AddToggle() {
177	AddTag("[toggle="+language_array['bbcode']['read_more']+"]", "[/toggle]", '');
178}
179
180// toggle function - read more
181function Toggle(id, multi) {
182	
183  spanid1 = "ToggleRow_"+id;
184  spanid2 = "ToggleImg_"+id;
185	
186  if(multi == true) {
187  	
188	elements = document.getElementsByName(spanid1);
189	val = document.getElementsByName(spanid1)[0].style.display;
190	for (var i=0;i<elements.length;i++) {
191	  if (val == "none") elements[i].style.display = "inline";
192	  else elements[i].style.display = "none";
193	}
194  }
195  else {
196
197	  if (/MSIE/.test(navigator.userAgent)){
198	  	images = document.getElementById(spanid1).getElementsByTagName('img');
199	    anz = images.length
200	    for(i=0;i<anz;i++){
201	    	elem = images[i];
202	        if(typeof elem.onload == "function") elem.onload();
203	    }
204	  }
205	  val = document.getElementById(spanid1).style.display;
206	  if (val == "none")
207	  {
208	    document.getElementById(spanid1).style.display = "block";
209	    document.getElementById(spanid2).src = "images/icons/collapse.gif";
210	    document.getElementById(spanid2).alt = "hide";
211		 document.getElementById(spanid2).title = "hide";
212	  }
213	  else
214	  {
215	    document.getElementById(spanid1).style.display = "none";
216	    document.getElementById(spanid2).src = "images/icons/expand.gif"
217	    document.getElementById(spanid2).alt = "read more";
218		 document.getElementById(spanid2).title = "read more";
219	  }
220  }
221}
222
223// function toggle_linecount
224nodearray = new Array();
225function toggle_linecount(id) {
226
227	elements = document.getElementsByName(id);
228  	if(elements[0].firstChild.firstChild.data != "") {
229		for (var i=0;i<elements.length;i++) {
230			nodearray[i] = elements[i].firstChild.firstChild.data;
231			elements[i].firstChild.firstChild.nodeValue = '';
232		}
233  	} else {
234		for (var i=0;i<elements.length;i++) {
235			elements[i].firstChild.firstChild.nodeValue = nodearray[i];
236		}
237  	}
238
239}
240
241
242// function addRow() ** this adds a new row to the table, containing mapname, mapresult_home, mapresult_opponent
243function addRow(action)
244{
245	var theAction = action;
246  var table = document.getElementById('maplist');
247  var theRows = table.rows.length;
248  var inkrement = theRows;
249  var row = table.insertRow(theRows);
250	
251	// outputs a text like "map #1"
252	var cell0 = row.insertCell(0);
253	var textNode = document.createTextNode('map #' + inkrement);
254	if(theAction=='edit') {
255		var ele0 = document.createElement('input');
256			ele0.setAttribute('type', 'hidden');
257			ele0.setAttribute('name', 'map_id[]');
258			ele0.setAttribute('value', inkrement);
259		cell0.appendChild(ele0);
260	}
261	cell0.appendChild(textNode);
262	// mapname
263  var cell1 = row.insertCell(1);
264  var ele1 = document.createElement('input');
265		ele1.setAttribute('type', 'text');
266		ele1.setAttribute('name', 'map_name[]');
267		ele1.setAttribute('id', 'map_name_' + inkrement);
268		ele1.setAttribute('size', '35');
269		ele1.className='form_off';
270  cell1.appendChild(ele1);
271	// results: home
272  var cell2 = row.insertCell(2);
273  var ele2 = document.createElement('input');
274		ele2.setAttribute('type', 'text');
275		ele2.setAttribute('name', 'map_result_home[]');
276		ele2.setAttribute('id', 'map_result_home_' + inkrement);
277		ele2.setAttribute('size', '3');
278		ele2.className='form_off';
279	cell2.appendChild(ele2);
280	// results: opponent
281	var cell3 = row.insertCell(3);
282	var ele3 = document.createElement('input');
283		ele3.setAttribute('type', 'text');
284		ele3.setAttribute('name', 'map_result_opp[]');
285		ele3.setAttribute('id', 'map_result_opp_' + inkrement);
286		ele3.setAttribute('size', '3');
287		ele3.className='form_off';
288	cell3.appendChild(ele3);
289	// create delete-selection for edit-function
290	if(theAction=='edit') {
291		var cell4 = row.insertCell(4);
292		var ele4 = document.createElement('input');
293			ele4.setAttribute('type', 'checkbox');
294			ele4.setAttribute('name', 'delete['+inkrement+']');
295			ele4.setAttribute('value', inkrement);
296			ele4.className='form_off';
297		cell4.appendChild(ele4);
298	} else {
299		var cell4 = row.insertCell(4);
300	}
301}
302
303// function removeRow() ** removes the last row of a table
304function removeRow()
305{
306  var table = document.getElementById('maplist');
307  var theRows = table.rows.length;
308  if (theRows != 1) table.deleteRow(theRows - 1);
309}
310
311function MM_jumpMenu(targ,selObj,restore){ //v3.0
312  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
313  if (restore) selObj.selectedIndex=0;
314}
315
316function MM_findObj(n, d) { //v4.01
317  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
318    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
319  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
320  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
321  if(!x && d.getElementById) x=d.getElementById(n); return x;
322}
323
324function MM_jumpMenuGo(selName,targ,restore){ //v3.0
325  var selObj = MM_findObj(selName); if (selObj) MM_jumpMenu(targ,selObj,restore);
326}
327
328function MM_confirm(msg, url) { //v1.0
329  if(confirm(msg)) location.replace(url);
330}
331
332function MM_openBrWindow(theURL,winName,features) { 
333  window.open(theURL,winName,features);
334}
335
336function MM_goToURL() { //v3.0
337  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
338  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
339}
340
341function SelectAll() {
342	for(var x=0;x<document.form.elements.length;x++) {
343		var y=document.form.elements[x];
344		if(y.name!='ALL') y.checked=document.form.ALL.checked;
345	}
346}
347
348function MM_swapImgRestore() { //v3.0
349  var i,x,a=document.MM_sr;
349 for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
350}
351
352function MM_preloadImages() { //v3.0
353  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
354    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
355    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
356}
357
358function MM_findObj(n, d) { //v4.01
359  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
360    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
361  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
362  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
363  if(!x && d.getElementById) x=d.getElementById(n); return x;
364}
365
366function MM_swapImage() { //v3.0
367  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
368   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
369}
370
371function checkSize(name, xmax, ymax) {
372
373	var xsize, ysize;
374  xsize=document.getElementById("ws_image_" + name).width;
375  ysize=document.getElementById("ws_image_" + name).Height;
376
377  if(ysize>ymax) {
378  	document.getElementById("ws_image_" + name).height=ymax;
379  	document.getElementById("ws_imagediv_" + name).style.display = "block";
380  }
381
382  if(xsize>xmax) {
383  	document.getElementById("ws_image_" + name).width=xmax;
384  	document.getElementById("ws_imagediv_" + name).style.display = "block";
385  }
386
387}
388
389function AddText(addtext) {
390	AddTag('', '', addtext);
391}
392
393function AddCode(code) {
394	AddText(code);
395}
396	
397/* tooltip */
398
399wmtt = null;
400
401function updateWMTT(e) {
402	x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
403	y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;
404	if (wmtt != null) {
405		wmtt.style.left = (x + 20) + "px";
406		wmtt.style.top 	= (y + 20) + "px";
407	}
408}
409
410function showWMTT(id) {
411	document.onmousemove = updateWMTT;
412	wmtt = document.getElementById(id);
413	wmtt.style.display = "block";
414}
415
416function hideWMTT() {
417	wmtt.style.display = "none";
418	document.onmousemove = "none";
419}
420
421//ajax functions
422
423function postRequest(strURL,id,action) {
424  var xmlHttp;
425  if (window.XMLHttpRequest) { 
426    var xmlHttp = new XMLHttpRequest();
427  }
428  else if (window.ActiveXObject) { 
429    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
430  }
431  xmlHttp.open('POST', strURL, true);
432  xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
433  xmlHttp.onreadystatechange = function() {
434    if (xmlHttp.readyState == 4) {
435      updatepage(xmlHttp.responseText,id,action);
436    }
437  }
438  xmlHttp.send(strURL);
439}
440//update target
441function updatepage(str,id,action){
442	if (action == "add"){
443    document.getElementById(id).innerHTML+=str;
444	}
445	else if (action == "replace"){
446		document.getElementById(id).innerHTML=str;
447	}
448	else if (action == "formfield"){
449		document.getElementById(id).value =trim(str);
450	}
451	else if (action == "return"){
452		return str;
453	}
454	else if (action == "execute"){
455		eval(str);
456	}
457}
458
459//fetch data for onclick/onchange events
460function eventfetch(url,id,action){
461  postRequest(url,id,action);
462}
463//fetch data for timebased events
464function timefetch(url,id,action,milliseconds) {
465	eventfetch(url,id,action);
466  setTimeout(function () { timefetch(url,id,action,milliseconds); },milliseconds);
467}
468//generic fetch function, accepts 5 parameters (first 4 mandatory).
469//url = script to access on the server
470//id = html id (for example of a div, a form field etc.., works with all tags which accept an id)
471//action = add, replace, return or formfield, add adds up content at the end of the original content in the id element, replace replaces the complete content in the id element, formfield replaces a form field value, return simply returns the fetched data
472//base = time or event, time based means script will autoexecute itself every amount of milliseconds specified via the 5th parameter, event based means you are calling the funtion with something like onclick, onchange, onmouseover or directly in a script
473//milliseconds = time in milliseconds till the script should autoexecute itself again (only needed when base
473==time)
474function fetch(url,id,action,base,milliseconds){
475	if(base == "event"){
476		eventfetch(url,id,action);
477	}
478	else if(base == "time"){
479		timefetch(url,id,action,milliseconds);
480	}
481}
482
483//search & overlay functions
484function search(table,column,identifier,search,searchtemp,id,action,exact,searchtype){
485	exact = typeof(exact) != 'undefined' ? exact : 0;
486	searchtype = typeof(searchtype) != 'undefined' ? searchtype : 0;
487  searchrequest="../asearch.php?table="+table+"&column="+column+"&identifier="+identifier+"&search="+search+"&searchtemp="+searchtemp+"&div="+id+"&exact="+exact+"&searchtype="+searchtype;
488  eventfetch(searchrequest,id,action);
489}
490function getposOffset(overlay, offsettype){
491  var totaloffset=(offsettype=="left")? overlay.offsetLeft : overlay.offsetTop;
492  var parentEl=overlay.offsetParent;
493  while (parentEl!=null){
494    totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
495    parentEl=parentEl.offsetParent;
496  }
497  return totaloffset;
498}
499function overlay(curobj, subobjstr, opt_position){
500  if (document.getElementById){
501    var subobj=document.getElementById(subobjstr)
502    subobj.style.display="block"
503    var xpos=getposOffset(curobj, "left")+((typeof opt_position!="undefined" && opt_position.indexOf("right")!=-1)? -(subobj.offsetWidth-curobj.offsetWidth) : 0)
504    var ypos=getposOffset(curobj, "top")+((typeof opt_position!="undefined" && opt_position.indexOf("bottom")!=-1)? curobj.offsetHeight : 0)
505    subobj.style.left=xpos+"px"
506    subobj.style.top=(ypos+15)+"px"
507    return false
508  }
509  else
510    return true
511}
512function overlayclose(subobj){
513	document.getElementById(subobj).style.display="none"
514}
515
516function trim(stringToTrim) {
517  return stringToTrim.replace(/^\s+|\s+$/g,"");
518}
519
520function formcheck_onsend(id){
521	valuestring=document.getElementById(id).value;
522	if(trim(valuestring)==''){
523		return false;
524	}
525	else{
526		return true;
527	}
528}
529//bbcode checker
530function validbbcode(txt){
531	searchregexp = /\[(B|\/B|U|\/U|I|\/I|S|\/S|code|\/code|LIST|LIST[a1=]*|\/LIST[a1=]*|\*|\/\*|\/LIST|EMAIL[a-zA-Z0-9=#@\._-]*|\/EMAIL|URL[a-zA-Z0-9=#,;+@&?%:\/\._-]*|\/URL|IMG|\/IMG|QUOTE[^\]]*|\/QUOTE|TOGGLE[^\]]*|\/TOGGLE|SIZE=[1-5]{1}|\/SIZE|COLOR[^\]]*|\/COLOR|ALIGN[^\]]*|\/ALIGN|FONT[^\]]*|\/FONT)\]/ig;
532	resulttemp=txt.match(searchregexp);
533	if(null==resulttemp){
534	  resulttemp=new Array();
535	}
536	result=new Array();
537	ocode=0;
538	putincounter=0;
539	for(c=0;c<resulttemp.length;c++){
540		if((resulttemp[c]=='[code]') || (resulttemp[c]=='[CODE]') || (resulttemp[c]=='[/code]') || (resulttemp[c]=='[/CODE]')){
541			if((resulttemp[c]=='[code]') || (resulttemp[c]=='[CODE]')){
542				ocode++;
543				if(ocode==1){
544					result[putincounter]=resulttemp[c];
545					putincounter++;
546				}
547			}
548			else{
549				ocode--;
550				if(ocode==0){
551					result[putincounter]=resulttemp[c];
552					putincounter++;
553				}
554			}
555		}
556		else{
557			if(ocode<1){
558				result[putincounter]=resulttemp[c];
559				putincounter++;
560			}
561			continue
562		}
563	}
564	if(result==null){
565    return true;
566  }
567  arraylength=result.length;
568  if(arraylength>0){
569	  starttest=result[0].split('=');
570	  if(!(arraylength % 2)){
571		  if(starttest[0].indexOf('/')==-1){
572		  	openingtagcounter=0;
573		  	closingtagcounter=0;
574		  	for(i=0;i<arraylength;i++){
575		  		temp=result[i].split('[');
576		  		temp=temp[1].split(']');
577		  		temp=temp[0].split('=');
578					if(temp[0].indexOf('/')==-1){
579		  			openingtagcounter++;
580		  		}
581		  		else{ 
582		  			closingtagcounter++;
583		  		}
584		  	}
585		  	if(openingtagcounter==closingtagcounter){
586		  		openingtags=new Array();
587		  		closingtags=new	Array();
588		  		for(i=0;i<arraylength;i++){
589		  			temp=result[i].split('[');
590			  		temp=temp[1].split(']');
591			  		temp=temp[0].split('=');
592					  if(temp[0].indexOf('/')==-1){ 
593			  			openingtags.push(temp[0]);
594			  		}
595			  		else{  
596			  			tmpstring=openingtags.pop();
597			  			if((temp[0].toLowerCase()) == (('/' + tmpstring).toLowerCase())){
598			  				
599			  			}
600			  			else{
601			  				window.alert(language_array['bbcode']['wrong_nesting']);
602			  				return false;
603			  			}
604			  		}
605		  		}
606		  		return true;
607		  	}
608		  	else{
609		  		window.alert(language_array['bbcode']['not_same_amount']);
610		  		return false; 
611		  	}
612		  }
613		  else{
614		  	window.alert(language_array['bbcode']['first_tag_closing_tag']);
615		  	return false; 
616		  }
617	  }
618	  else{
619	  	window.alert(language_array['bbcode']['uneven_amount']);
620	  	return false;
621	  }
622	}
623	else{
624	  return true;
625	}
626}
627
628//initialize javascript language array
629var language_array=new Array();
630language_array['bbcode']=new Array();
631if(typeof(calledfrom)=='undefined'){
632	fetch('getlang.php?modul=bbcode&mode=array','none','execute','event');
633}
634else if(calledfrom=='admin'){
635	fetch('../getlang.php?modul=bbcode&mode=array','none','execute','event');
636}
637//test for valid url
638function url(string){
639	regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
640  result = regexp.test(string);
641  return result;
642}
643
644
645
646

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.