User:Spang/searchbox.js

From Uncyclopedia, the content-free encyclopedia
Jump to navigation Jump to search

Note: After saving, you have to bypass your browser's cache to see the changes.

  • Internet Explorer: hold down the Ctrl key and click the Refresh or Reload button, or press Ctrl+F5.
  • Firefox: hold down the Shift key while clicking Reload; alternatively press Ctrl+F5 or Ctrl-Shift-R.
  • Opera, Konqueror and Safari users can just click the Reload button.
  • Chrome: press Ctrl+F5 or Shift+F5
// Search box for Mediawiki
// (c) 2006 [[wikipedia:User:Zocky]] (http://en.wikipedia.org/wiki/User:Zocky), released under GPL
//<pre><nowiki>

var sr$t;var sr$f;var sr$s;var sr$r;var sr$w;var sr$i;var sr$re;var sr$mc;function $e(id){return document.getElementById(id)};function srBack(){if(sr$s.value==''){sr$t.focus();return};if(sr$re.checked){var searchString=sr$s.value}else{searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1')};searchString="("+searchString+")(?![\\s\\S]*"+searchString+")";if(sr$mc.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$re.checked){var searchString=sr$s.value}else{searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1')};if(sr$mc.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$re.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$mc.checked)var re=new RegExp(searchString,"g");else var re=new RegExp(searchString,"gi");re.lastIndex=sels;var res=re.exec(sr$t.value);var $$=0;if(res&&res.index==sels&&res[0].length==sele-sels){if(sr$re.checked){replaceString=replaceString.replace(/\\\\/g,'&backslash;').replace(/\\\$/g,'&dollar;');var replaceBits=(" "+replaceString).split(/(?=\$\d)/);replaceString=replaceBits[0].substring(1);for(var i=1;i<replaceBits.length;i++){$$=replaceBits[i][1]-'0';if($$<res.length)replaceString+=res[$$]+replaceBits[i].substring(2);else replaceString+=replaceBits[i]}replaceString=replaceString.replace(/\\n/,"\n").replace(/&backslash;/g,"\\").replace(/&dollar;/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;srSync()};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$re.checked){var searchString=sr$s.value;var replaceString=sr$r.value.replace(/\\\\/,'&backslash;').replace(/\\n/,'\n').replace(/&backslash;/,"\\")}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$mc.checked)var re=new RegExp(searchString,"g");else var re=new RegExp(searchString,"gi");var replaceCounter=0;var replaceFunc=function(){replaceCounter++;return replaceString};reps=reps.replace(re,replaceFunc);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;window.status=replaceCounter+" ocurrences of "+searchString+" replaced.";srSync()};function srToggleCase(){var sels=sr$t.selectionStart;var sele=sr$t.selectionEnd;var selr=sr$t.value.length-sele;var selt=sr$t.value.substring(sels,sele);if(sele>sels){if(selt==selt.toUpperCase())selt=selt.toLowerCase();else if(selt==selt.toLowerCase()&&sele-sels>1)selt=selt.substring(0,1).toUpperCase()+selt.substring(1).toLowerCase();else selt=selt.toUpperCase();sr$t.value=sr$t.value.substring(0,sels)+selt+sr$t.value.substring(sele);sr$t.selectionStart=sels;sr$t.selectionEnd=sele>sels?sr$t.value.length-selr:sels};srSync()};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)};sr$t.scrollTop=sr$t.scrollHeight*(lineNo-10)/allLines;sr$t.focus()};function srInit(){if($e('wpTextbox1')){var srBoxCode='<div id="srForm"><table id="srBox" cellpadding="0" cellspacing="2">'+'<tr><td valign="bottom"><small><span style="color:#000000;">search for:</span></small><br/>'+'<input type="text" id="srSearch" accesskey="F" tabindex="8"'+'onkeypress="event.which == 13 && srNext()"; value=""/></td>'+'<td valign="bottom"><small><span style="color:#000000;">replace with:</span></small><br/><input type="text" id="srReplace" accesskey="G" tabindex="9"'+'onkeypress="event.which == 13 && srNext()"; value=""/></td>'+'<td valign="top">'+'<input type="checkbox" id="srCase" onclick="sr$t.focus()" tabindex="10"/><small><span style="color:#000000;">match case</span</small>'+'<input type="checkbox" id="srRegexp" onclick="sr$t.focus()" tabindex="11"/><small><span style="color:#000000;">use regexp</span></small><br/> '+'<a href="javascript:srBack()" onmouseover="sr$t.focus()" title="find previous match [alt-2]" accesskey="2">&lt;</a>&nbsp;'+'<a href="javascript:srNext()" onmouseover="sr$t.focus()" title="find next match [alt-3]" accesskey="3">find&nbsp;&nbsp;&gt;</a>&emsp;'+'<a href="javascript:srReplace();srBack()" onmouseover="sr$t.focus()" title="replace and find previous match [alt-4]" accesskey="4">&lt;</a>&nbsp;'+'<a href="javascript:srReplace()" onmouseover="sr$t.focus()" title="replace this match">replace</a>&nbsp;'+'<a href="javascript:srReplace();srNext()" onmouseover="sr$t.focus()" title="replace and find next match [alt-5]" accesskey="5">&gt;</a>&emsp;'+'<a href="javascript:srReplaceall()" onmouseover="sr$t.focus()" title="replace all matches [alt-7]" accesskey="7">replace&nbsp;all</a>&emsp;'+'</td></tr></table></div>';var ep=$e('searchInput');if(ep)ep.accessKey='none';sr$t=document.editform.wpTextbox1;sr$w=sr$t.style.width;var sr=document.createElement('div');sr.innerHTML=srBoxCode;var im=document.createElement('span');im.innerHTML='<a id="SearchIcon" href="javascript:srShowHide()"><img style="cursor: pointer;" title="Search/Replace" alt="Search/Replace" src="http://upload.wikimedia.org/wikipedia/en/1/12/Button_find.png" border="0" height="22" width="23"></a><a href="javascript:srToggleCase()"><img style="cursor: pointer;" title="Toggle case" alt="Toggle case" src="http://upload.wikimedia.org/wikipedia/en/1/12/Button_case.png" border="0" height="22" width="23"></a>';var ep=$e('toolbar');if(ep){ep.appendChild(im)}else{var ep=$e('editform');ep.parentNode.insertBefore(im,ep)};sr$i=$e('SearchIcon');sr$i.accessKey="F";sr.firstChild.style.display='none';var ep=$e('editform');ep.parentNode.insertBefore(sr,ep);sr$f=$e('srForm');sr$s=$e('srSearch');sr$r=$e('srReplace');sr$re=$e('srRegexp');sr$mc=$e('srCase')}};function srShowHide(){if(sr$f.style.display=='none'){sr$f.style.display='block';sr$i.accessKey="none";sr$t.style.width='auto';sr$s.focus()}else{sr$f.style.display='none';sr$t.style.width=sr$w;sr$i.accessKey="F"}};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">');

//</nowiki></pre>