HarvardReferences.js

From relax wiki
Jump to navigation Jump to search

//Scripts for supporting extension http://www.mediawiki.org/wiki/Extension:HarvardReferences

var HrvHighlight = new function(){

var state = "";

function setBackground(prm_name){ var anchorTags = document.getElementsByTagName("li"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className=="harvBackground"){ ob1.className = ""; } }

var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id.indexOf("harv_note-"+prm_name)==0){ ob1.parentNode.className = "harvBackground"; }else if(ob1.id.indexOf("harv_note-")==0){ ob1.parentNode.className = ""; } } }


function setBackground1(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id.indexOf("harv_note-")==0){ ob1.parentNode.className = ""; } } var anchorTags = document.getElementsByTagName("li"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className=="harvBackground"){ ob1.className = ""; }

if(ob1.id.indexOf("cite_note-"+prm_name+"-"+prm_n)==0){ ob1.className = "harvBackground"; }else if(ob1.id.indexOf("cite_note-")==0){ ob1.className = ""; } }

}

function setBackground2(prm_name){

var n="";

var arr=prm_name.split("-"); var arr1=arr[1].split("_");

if(arr[2]){ n="cite_note-"+arr1[0]+"-"+arr1[1]; }else{ n="cite_note-"+arr[1]; }

var anchorTags = document.getElementsByTagName("li"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className=="harvBackground"){ ob1.className = ""; } if(ob1.id.indexOf("cite_note-")==0){ if(ob1.id==n){ ob1.className = "harvBackground"; }else{ ob1.className = ""; } } }

}

//when user clicks to harv ref in article text function whenUserClicksToHarvRef(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } }

var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id=="harv_ref-"+prm_name+"-"+prm_n){ ob1.className = "harvVisitedLink"; }else if(ob1.id=="harv_note-"+prm_name+"-"+prm_n){ ob1.className = "harvReferenceLink"; }else if(ob1.id=="harv_note-"+prm_name){ ob1.className = "harvReferenceLink"; }else{ ob1.className = ""; } } setBackground(prm_name); }

//when user clicks to big backlink from bibliography function whenUserClicksToHarvBigBacklink(prm_name){ var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } }

var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; }

if(ob1.id.indexOf("harv_ref-"+prm_name+"-")==0){ ob1.className = "harvVisitedLink"; }else if(ob1.id=="harv_note-"+prm_name){ ob1.className = "harvReferenceLink"; } }

setBackground(prm_name); }

//when user clicks to small (number) backlink from bibliography function whenUserClicksToHarvSmallBacklink(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; } }

var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink" || ob1.className == "harvVisitedLink"){ ob1.className = ""; }

if(ob1.id=="harv_ref-"+prm_name+"-"+prm_n){ ob1.className = "harvVisitedLink"; }else if(ob1.id=="harv_note-"+prm_name){ ob1.className = "harvReferenceLink"; }else if(ob1.id=="harv_note-"+prm_name+"-"+prm_n){ ob1.className = "harvReferenceLink"; } } setBackground(prm_name); }

function showRefsMode(n){ var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.id.indexOf("harv_ref-")==0){ if(n==""){ ob1.style.display = ""; ob2=ob1.childNodes[0]; ob3=ob2.childNodes[0]; if(ob3.nodeValue.indexOf("*")>=0){ t=ob2.title; ob3.nodeValue=t; }; }else if(n=="hide"){ ob1.style.display = "none"; }else if (n=="short"){ ob1.style.display = ""; ob2=ob1.childNodes[0]; ob3=ob2.childNodes[0]; var t=ob3.nodeValue; if(ob1.childNodes.length>1){ var p=ob1.childNodes[1].nodeValue; t=t+ob1.childNodes[1].nodeValue; ob1.childNodes[1].nodeValue=""; } ob2.title=t; ob3.nodeValue="* "; }else{ ob1.style.display = ""; } } } }

this.changeFormat = function(){

var s=state; if(s==""){ s="short"; }else if(s=="short"){ s="hide"; }else if(s=="hide"){ s=""; } state=s; showRefsMode(s); }

//when user clicks to ref in article text whenUserClicksToRef function whenUserClicksToRef(prm_name, prm_n){ var anchorTags = document.getElementsByTagName("sup"); //alert('"#cite_ref'+prm_name+'-'+prm_n+'"'); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; //alert(ob1.id+"==="+ob1.id.indexOf('cite_ref-')); if(ob1.id.indexOf("cite_ref-")==0){ if(ob1.id=="cite_ref"+prm_name+"-"+prm_n){ ob1.className = "harvVisitedLink"; }else{ ob1.className = "harvNone"; } }else if(ob1.id.indexOf("harv_ref-")==0){ ob1.className = ""; }else if(ob1.id.indexOf("harv_note-")==0){ ob1.className = ""; } } //setBackground(prm_name);

var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; var h=ob1.href; var p=h.lastIndexOf("#"); if(p==-1) continue; var h=h.substring(p, h.length); if(h.indexOf("#cite_ref-")==0){ if(h == "#cite_ref"+prm_name+"-"+prm_n){ ob1.className = "harvReferenceLink"; }else{ ob1.className = ""; } } } setBackground1(prm_name, prm_n); }

function handler1(id){ var arr=id.split("-"); whenUserClicksToHarvRef(arr[1], arr[2]); }

function handler2(id){ var arr=id.split("-"); if(arr[2]){ whenUserClicksToHarvSmallBacklink(arr[1], arr[2]); }else{ whenUserClicksToHarvBigBacklink(arr[1]); } }

function handler3(id){ var arr=id.split("-"); if(arr[2]){ whenUserClicksToRef("-"+arr[1], arr[2]); }else{ whenUserClicksToRef("", arr[1]); } }

function handler4(id, h){ var p=h.lastIndexOf("#"); if(p==-1) return; var h=h.substring(p+1, h.length); whenUserClicksToBackRef(h); }

//when user clicks to ref in article text whenUserClicksToRef function whenUserClicksToBackRef(prm_href){

var anchorTags = document.getElementsByTagName("sup"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; if(ob1.className == "harvReferenceLink"){ ob1.className = ""; } if(ob1.className == "harvVisitedLink"){ ob1.className = ""; } if(ob1.id.indexOf("cite_ref-")==0){ if(ob1.id==prm_href){ ob1.className = "harvVisitedLink"; }else{ ob1.className = ""; } } }

var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i]; var h=ob1.href; var p=h.lastIndexOf("#"); if(p==-1) continue; var h=h.substring(p, h.length); if(h.indexOf("#cite_ref-")==0){ if(h == "#"+prm_href){ ob1.className = "harvReferenceLink"; }else{ ob1.className = ""; } } } setBackground2(prm_href); }

//Main function on load page this.onLoad = function(){ if (wgAction=="view"){ //only for view pages var ok=0; //install events var anchorTags = document.getElementsByTagName("a"); for (var i = 0; i < anchorTags.length ; i++){ var ob1=anchorTags[i];

if(ob1.href.indexOf("#harv_note-")>=0){ ob1.onclick= function(){handler1(this.parentNode.id)}; }else if(ob1.href.indexOf("#harv_ref-")>=0){ ob1.onclick= function(){handler2(this.parentNode.id)}; ok=1; }else if(ob1.href.indexOf("#cite_note-")>=0){ ob1.onclick= function(){handler3(this.parentNode.id)}; ok=1; }else if(ob1.href.indexOf("#cite_ref-")>=0){ ob1.onclick= function(){handler4(this.parentNode.id, this.href)}; ok=1; } }

//install the portlet if(ok==1){ var hist; var url; if (!(hist = document.getElementById('ca-history') )) return; if (!(url = hist.getElementsByTagName('a')[0] )) return; if (!(url = url.href )) return; addPortletLink('p-cactions', 'javascript:HrvHighlight.changeFormat();', 'links', 'ca-harvrefs', 'Change format of harvard references', );

var s=state; if(s!="") showRefsMode(s); } } }

}//obj

//Script is starting here if (doneOnloadHook) HrvHighlight.onLoad() else addOnloadHook(HrvHighlight.onLoad);