Корисник:Zocky/SearchBox.js
Из пројекта Википедија
Запамтите: Након снимања, морате очистити кеш вашег веб читача да бисте видели промене: Mozilla/Safari/Konqueror: држите SHIFT док кликћете Reload (или притисните Shift+Ctrl+R), IE: притисните Ctrl-F5, Оpera притисните F5.
// Search box for Mediawiki // (c) 2006 [[User:Zocky]], released under GPL //<pre><nowiki> var sr$t; var sr$f; var sr$s; var sr$r; function srBack() { if (sr$s.value=='') {sr$t.focus(); return } if (sr$f.srRegexp.checked) { var searchString = sr$s.value; } else { searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1'); } searchString="("+searchString+")(?![\\s\\S]*"+searchString+")"; if (sr$f.srCase.checked) var re=new RegExp(searchString); else var re=new RegExp(searchString,"i"); var res = re.exec (sr$t.value.substring(0,sr$t.selectionStart)); if (!res) { var res = re.exec (sr$t.value) } if (res) { sr$t.selectionStart=res.index; sr$t.selectionEnd=res.index+res[1].length; } else sr$t.selectionStart=sr$t.selectionEnd; srSync(); } function srNext() { if (sr$s.value=='') {sr$t.focus(); return } if (sr$f.srRegexp.checked) { var searchString = sr$s.value; } else { searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1'); } if (sr$f.srCase.checked) var re=new RegExp(searchString,"g"); else var re=new RegExp(searchString,"gi"); re.lastIndex=sr$t.selectionEnd; var res = re.exec (sr$t.value) if (!res) { re.lastIndex=0; var res = re.exec (sr$t.value) } if (res) { sr$t.selectionStart=res.index; sr$t.selectionEnd=res.index+res[0].length; } else sr$t.selectionStart=sr$t.selectionEnd; srSync(); } function srReplace() { var sels=sr$t.selectionStart; var sele=sr$t.selectionEnd; var selr=sr$t.value.length-sele; if (sr$s.value=='' || sels==sele) {sr$t.focus(); return } if (sr$f.srRegexp.checked) { var searchString = sr$s.value; var replaceString = sr$r.value; } else { searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1'); replaceString=sr$r.value.replace(/([\$\\])/g,'\\$1'); } if (sr$f.srCase.checked) var re=new RegExp(searchString,"g"); else var re=new RegExp(searchString,"gi"); re.lastIndex=sels; var res = re.exec (sr$t.value) if (res && res.index==sels && res[0].length==sele-sels) { if (sr$f.srRegexp.checked) { replaceString=replaceString.replace(/\\\\/g,'&backslash;').replace(/\\\$/g,'$') var replaceBits=(" "+replaceString).split(/(?=\$)/); replaceString=replaceBits[0].substring(1); var $$; for (var i=1; i<replaceBits.length; i++) $$=replaceBits[i][1]-'0'; if ($$ <=res.length && $$<10 && $$>0) replaceString += $$ + replaceBits[i].substring(2) else replaceString += replaceBits[i]; replaceString=replaceString.replace(/&backslash;/g,"\\").replace(/$/g,"\$") } sr$t.value= sr$t.value.substring(0,sels) + replaceString + sr$t.value.substring(sele); } sr$t.selectionStart=sels; sr$t.selectionEnd=sr$t.value.length-selr; sr$t.focus(); } function srReplaceAll() { if (!sr$s.value) {sr$t.focus(); return } var sels=sr$t.selectionStart; var sele=sr$t.selectionEnd; var selr=sr$t.value.length-sele; var reps; if (sr$f.srRegexp.checked) { var searchString = sr$s.value; var replaceString = sr$r.value; } else { searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1'); replaceString=sr$r.value.replace(/([\$\\])/g,'\\$1'); } if (sele>sels) reps=sr$t.value.substring(sels,sele); else reps=sr$t.value; if (sr$f.srCase.checked) var re=new RegExp(searchString,"g"); else var re=new RegExp(searchString,"gi"); reps=reps.replace(re,replaceString); if (sele>sels) sr$t.value = sr$t.value.substring(0,sels) + reps + sr$t.value.substring(sele); else sr$t.value = reps; sr$t.selectionStart=sels; sr$t.selectionEnd=sele>sels ? sr$t.value.length-selr : sels; sr$t.focus(); } function srSync() { var i; var allLines=0; var lineNo=0; var w=sr$t.cols-5; var dummy=sr$t.value.split("\n"); for (i=0;i<dummy.length;i++){allLines+=Math.ceil(dummy[i].length/w)} var dummy=sr$t.value.substring(0,sr$t.selectionStart).split("\n"); for (i=0;i<dummy.length;i++){lineNo+=Math.ceil(dummy[i].length/w)} // alert (w+" "+lineNo+"/"+allLines); sr$t.scrollTop=sr$t.scrollHeight*(lineNo-10)/allLines; sr$t.focus(); } function srInit() { var latin=(document.getElementById('pt-mytalk').firstChild.innerHTML.toLowerCase()=="moj razgovor"); if(document.getElementById('wpTextbox1')) { var srBoxCode ='<form name="srForm"><table id="srBox" cellpadding="0" cellspacing="2">' +'<tr><td valign="bottom"><small>' + (latin ? 'traži:' : 'тражи' ) + '</small><br/><input type="text" name="srSearch" ' +'onkeypress="event.which == 13 && srNext()"; value=""/></td>' +'<td valign="bottom"><small>' + (latin ? 'zamena:' : 'замена' ) +'</small><br/><input type="text" name="srReplace" ' +'onkeypress="event.which == 13 && srNext()"; value=""/></td>' +'<td valign="top">' +'<input type="checkbox" name="srCase"' +'onclick="sr$t.focus()";/><small>' +(latin ? 'razlikuj mala/velika slova':'разликуј мала/велика ') +'</small>' +'<input type="checkbox" name="srRegexp"' +'onclick="sr$t.focus()";/><small>' +(latin ? 'regularni izrazi' : 'регуларни изрази' ) +'</small><br/>' +'<a href="javascript:srBack()" ' +'onmouseover="sr$t.focus()"><</a> ' +'<a href="javascript:srNext()" onmouseover="sr$t.focus()">' +(latin ? 'traži' : 'тражи' ) +'  ></a> ' +'<a href="javascript:srReplace();srBack()" ' +'onmouseover="sr$t.focus()"><</a> ' +'<a href="javascript:srReplace()" onmouseover="sr$t.focus()">' +(latin ? 'zameni' : 'замени' ) +'</a> ' +'<a href="javascript:srReplace();srNext()" ' +'onmouseover="sr$t.focus()">></a> ' +'<a href="javascript:srReplaceAll()" onmouseover="sr$t.focus()">' +(latin ? 'zameni sve' : 'замени све' ) +'</a></td></tr></table></form>' var sr=document.createElement('div'); sr.innerHTML=srBoxCode; var ep=document.getElementById('toolbar'); if (!ep) ep= document.getElementById('editform'); ep.parentNode.insertBefore(sr,ep); sr$t=document.editform.wpTextbox1; sr$f=document.srForm; sr$s=document.srForm.srSearch; sr$r=document.srForm.srReplace; } } document.write('<link rel="stylesheet" type="text/css" href="' + 'http://en.wikipedia.org/w/index.php?title=User:Zocky/SearchBox.css' + '&action=raw&ctype=text/css&dontcountme=s">'); addLoadEvent(srInit); //</nowiki></pre>