Корисник: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>

