کاربر:Behaafarid/FootNoteTools.js
از ویکیپدیا، دانشنامهٔ آزاد.
نکته: پس از ذخیرهسازی ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را خالی کنید. موزیلا / فایرفاکس / Safari: کلید Shift را نگهدارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-Shift-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای Cmd-Shift-R)؛ اینترنت اکسپلورر: کلید Ctrl نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید؛ Konqueror: روی دکمهٔ Reload کلیک کنید و یا کلید F5 را فشار دهید؛ اُپرا: کاربران اُپرا ممکن است لازم باشد که بطور کامل حافظهٔ نهانی مرورگر را در منوی Tools→Preferences خالی کنند.
<pre>
function Sorter(obj)
{
var ref = "ref"; //name of ref tag
var Note= "Note"; //name of Note tag
var s = obj.value;
var ss = new Array();
var notes=new Array();
var counter = 0;
var sl; //left substring
var sr; //right substring
//Find First occurence of Notes (used later)
var noteplace1 = s.indexOf("{{"+Note+"|");
//extract keys
posa=s.indexOf("{{"+ref+"|");
posb = s.indexOf("}}",posa);
a = posa+6;
b = posb;
while (posa>-1){
ss.push(s.slice(a,b));
posa=s.indexOf("{{"+ref+"|",posb);
posb = s.indexOf("}}",posa);
a = posa+6;
b = posb;
}
//Find the corresponding footnotes
posa=s.indexOf("#{{"+Note+"|"+ss.pop()+"}}");
posb=s.indexOf("\n",posa);
while (posa>-1){
notes.push(s.slice(posa,posb));
counter = counter + 1;
//remove that string:
sl=s.slice(0,posa);
sr=s.slice(posb+1);//+1 to remove newline character as well.
s = sl+sr;
posa=s.indexOf("#{{"+Note+"|"+ss.pop()+"}}");
posb=s.indexOf("\n",posa);
}
//put the strings back
//first slice string from the 1st occurence of Notes
//to make room for notes insertion
if (noteplace1 > -1)
{
sl = s.slice(0,noteplace1);
sr = s.slice(noteplace1);
}
while (counter>0){
sl = sl + notes.pop() + "\n";
counter = counter -1;
}
s = sl+sr;
//update string.
obj.value=s;
alert("SUCCESS");
}
</pre>

