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.