ФЭНДОМ


function xRomixReplaceBookRefs_RusEng(str){ var str1=; for(i=0; i<str.length; i++){ var c=str.charAt(i); if(c=='|') {break;} //по символу | прерываем обработку else if(c==' ') {c='_'} else if(c=='.') {c='_'} else if(c==',') {c='_'} else if(c=='-') {c='_'} else if(c>='а' && c<='я'){ if(c=='а') {c='a'} else if(c=='б') {c='b'} else if(c=='в') {c='v'} else if(c=='г') {c='g'} else if(c=='д') {c='d'} else if(c=='е') {c='e'} else if(c=='ж') {c='zh'} else if(c=='з') {c='z'} else if(c=='и') {c='i'} else if(c=='й') {c='j'} else if(c=='к') {c='k'} else if(c=='л') {c='l'} else if(c=='м') {c='m'} else if(c=='н') {c='n'} else if(c=='о') {c='o'} else if(c=='п') {c='p'} else if(c=='р') {c='r'} else if(c=='с') {c='s'} else if(c=='т') {c='t'} else if(c=='у') {c='u'} else if(c=='ф') {c='f'} else if(c=='х') {c='h'} else if(c=='ц') {c='c'} else if(c=='ч') {c='ch'} else if(c=='ш') {c='sh'} else if(c=='щ') {c='sx'} else if(c=='ъ') {c='_'} else if(c=='ы') {c='y'} else if(c=='ь') {c='_'} else if(c=='э') {c='ye'} else if(c=='ю') {c='yu'} else if(c=='я') {c='ya'} ; }else if(c>='А' && c<='Я'){ if(c=='А') {c='А'} else if(c=='Б') {c='B'} else if(c=='В') {c='V'} else if(c=='Г') {c='G'} else if(c=='Д') {c='D'} else if(c=='Е') {c='E'} else if(c=='Ж') {c='ZH'} else if(c=='З') {c='Z'} else if(c=='И') {c='I'} else if(c=='Й') {c='J'} else if(c=='К') {c='K'} else if(c=='Л') {c='L'} else if(c=='М') {c='M'} else if(c=='Н') {c='N'} else if(c=='О') {c='O'} else if(c=='П') {c='P'} else if(c=='Р') {c='R'} else if(c=='С') {c='S'} else if(c=='Т') {c='T'} else if(c=='У') {c='U'} else if(c=='Ф') {c='F'} else if(c=='Х') {c='H'} else if(c=='Ц') {c='C'} else if(c=='Ч') {c='CH'} else if(c=='Ш') {c='SH'} else if(c=='Щ') {c='SX'} else if(c=='Ъ') {c='_'} else if(c=='Ы') {c='Y'} else if(c=='Ь') {c='_'} else if(c=='Э') {c='YE'} else if(c=='Ю') {c='YU'} else if(c=='Я') {c='YA'} ; } ;

str1+=c; } return str1; }


//Глобальные переменные var xRomixReplaceBookRefs_BodyContent; var xRomixReplaceBookRefs_RefCounter; var xRomixReplaceBookRefs_LastRef; //последняя обратная ссылка

function xRomixReplaceBookRefs_ClickOnRef(str, id) { //Эта функция выполнится при клике на ссылку - аналог ref //Окрасим ссылки var s1="backlink_"+str+"_id_"+id; var s2="backlink_"+str+"_id_"; var s3="backlink_"; var s4="CITEREF_"+str; var s5="CITEREF_";

var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++) { var ob=anchorTags[i]; if(ob.name.indexOf(s1)==0){ ob.style.backgroundColor="yellow"; //ссылка, с которой был клик - желтый }else if(ob.name.indexOf(s2)==0){ ob.style.backgroundColor="lightgray"; //похожие ссылки - серый }else if(ob.name.indexOf(s3)==0){ ob.style.backgroundColor=""; }else if(ob.name.indexOf(s4)==0){ ob.parentNode.style.backgroundColor="#DDEEFF"; //цель в разделе библиографии }else if(ob.name.indexOf(s5)==0){ ob.parentNode.style.backgroundColor=""; } }

xRomixReplaceBookRefs_LastRef=id; //Запомним номер ссылки для обратного перехода

}


function xRomixBookRefs_Backlink(s){ //Функция выполнится при клике на обратную ссылку. var s1="backlink_"+s+"_id_"+xRomixReplaceBookRefs_LastRef; var s2="backlink_"+s+"_id_"; var s3="backlink_";

var link=""; var ok=0;

//Подсветка ссылок, которые содержат строку s var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++) { var ob1=anchorTags[i]; if(ob1.name.indexOf(s1)==0 && xRomixReplaceBookRefs_LastRef!=""){ ob1.style.backgroundColor="yellow"; link=ob1.name; ok=1; }else if(ob1.name.indexOf(s2)==0){ ob1.style.backgroundColor="lightgray"; if(ok==0 && link==""){ link=ob1.name; } }else if(ob1.name.indexOf(s3)==0){ ob1.style.backgroundColor=""; } }

document.location.href="#"+link; //переход по найденной ссылке return false; //отмена стандартного действия

}

function xRomixReplaceBookRefs($0,$1,$2) { //Эта функция вызывается для замены найденного текста методом replace(). //Первый параметр функции содержит найденную подстроку, остальные - подсовпадения RegExp (выделенные круглыми скобками в запросе RegExp). // http://www.citforum.ru/internet/javascript/js_new13.shtml var s=""+$0;

if(s.charAt(1)=='*'){ //Ссылка-цель вида [*Это ссылка] s=s.slice(2,-1); var n=xRomixReplaceBookRefs_RusEng(s); var qn="'"+n+"'"; var a='<a href="#backlink_'+n+'" onClick="return xRomixBookRefs_Backlink('+qn+')" name="CITEREF_'+n+'">['+s+']</a>'; s=a;

}else{ //Ссылка-источник вида [ссылка], у которой есть цель. var n=$2;

//n теперь содержит имя внутри квадратных скобок (без них самих) //Отрежем все что после символа |, если он есть. var p=n.indexOf("|"); if(p>=0){ n=n.substr(0,p); }

//Попытаемся найти якорь с этим же именем (если ее нет, то замену не производим) searchStr="[*"+n+"]"; if(xRomixReplaceBookRefs_BodyContent.indexOf(searchStr)!=-1){ //Если такой якорь найден var n=xRomixReplaceBookRefs_RusEng(n); xRomixReplaceBookRefs_RefCounter++; //увеличиваем счетчик

//Производим замену ссылки var cnt=xRomixReplaceBookRefs_RefCounter; var nn='backlink_'+n+'_id_'+cnt;

s='<a href="#CITEREF_'+n+'" name="'+nn+'" onClick="xRomixReplaceBookRefs_ClickOnRef(\+n+'\', '+cnt+');">'+$0+'</a>'+ '</a>'; } } return s; }

//Это главная функция, с нее начинается работа скрипта после загрузки страницы addOnloadHook(function() { if (wgAction=="view"){ //только для страниц просмотра xRomixReplaceBookRefs_RefCounter=0; xRomixReplaceBookRefs_LastRef=""; var on=document.getElementById('X-romix_SciRefs_On'); if(!on) return;

var doc=document.getElementById('bodyContent'); var s=doc.innerHTML; xRomixReplaceBookRefs_BodyContent=s; //Регулярное выражение для поиска ссылок в формате [Ссылка 1] var reg = /(\[)(.+?)(\])/g //Выполняем замену s=s.replace(reg,xRomixReplaceBookRefs); //xRomixReplaceBookRefs - это функция, которая будет вызвана для выполнения замены doc.innerHTML=s; } });