Difference between revisions of "HarvardReferences.js"

From relax wiki
Jump to navigation Jump to search
(Created the HarvardReferences.js page according to the HarvardReferences extension readme file.)
 
(No difference)

Latest revision as of 17:02, 20 October 2015

//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);