User:Dfko/common.js

var accessIsAlreadyOpenPrefixes = new Array(	'10.1098', '10.1155', '10.1186', '10.1371', '10.1534', '10.2196', '10.3352', '10.3389', '10.3390',	'10.3814', '10.3897', '10.4061', '10.5194', '10.5402', '10.6064', '10.7167', '10.7554', '10.7717'	); var refSpanSelector = "span.citation.journal"; var doiRegex = /dx\.doi\.org\/(.*)/g; var citationSpans = document.querySelectorAll(refSpanSelector); var doiLinks = []; var doiLinkElements = []; for (i = 0; i < citationSpans.length; i++) { var links = citationSpans[i].querySelectorAll("a"); for (j = 0; j < links.length; j++) { var link = decodeURIComponent(links[j].href); var match = doiRegex.exec(link); if (match !== null && accessIsAlreadyOpenPrefixes.indexOf(match[1].slice(0, 8)) == -1) { doiLinks.push(link); doiLinkElements.push(links[j]); }	} }

function oabutton(options) { var about = { version: 0.1, author: "Mark MacGillivray", created: "01102014", description: "A javascript client that operates against the Open Access Button 2.0 API" };   var defaults = { api: 'http://oabutton.cottagelabs.com/api', api_key: '' };   this.options = $.extend(defaults, options); this.response = {}; }

oabutton.prototype = { send: function(action,o) { this.options.api_key && !o.data.api_key ? o.data.api_key = this.options.api_key : false; var vars = { type: 'POST', url: this.options.api + '/' + action, contentType: 'application/json', dataType: 'JSON', processData: false, //crossDomain: true, cache: false, context: this, data: JSON.stringify(o.data) };       vars.success = function(res) { this.response = res; if ( !this.options.api_key && res.api_key ) { this.options.api_key = res.api_key; }           if ( !this.options.username && res.username ) { this.options.username = res.username; }           typeof o.success == 'function' ? o.success(res) : false; };       typeof o.error == 'function' ? vars.error = o.error : false; $.ajax(vars); },   register: function(o) { // o should be an object containing a data object with email, profession, username // and also a success function and error function if required this.send('register',o); },   status: function(o) { //this.send('status',o); // TODO: annoying behaviour of CORS on POST means this is being fugded as a JSONP GET for now this.options.api_key && !o.data.api_key ? o.data.api_key = this.options.api_key : false; var vars = { type: 'GET', url: this.options.api + '/status', cache: false, context: this, dataType: 'JSONP', data: o.data, success: function(res) { this.response = res; typeof o.success == 'function' ? o.success(res) : false; }       };        typeof o.error == 'function' ? vars.error = o.error : false; $.ajax(vars); },   blocked: function(o,rid) { var t = 'blocked'; if ( rid ) { t += '/' + rid; }       this.send(t,o); },   wishlist: function(o) { this.send('wishlist',o); }   // TODO: add the processor API route };

var oaicon = "data:image/png;base64,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"; var blockedicon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAANCAYAAACUwi84AAAABmJLR0QA/wD/AP+gvaeTAAABGElEQVQYlWWPIUsEYRiEn/nuPTyElSuL4C8wiGcQLt5fsNlMwvoLLIu4wl0wickmVoMmTYbjNmkR/4JgEQSTcLDf7mvZDeIDUwaGmRGAu2s6nR4B+5IE3OZ5fiXJewD9fv9c0pmkBfANHJdlmczn8ycVRTE0sy9Jh3me3wDMZrMDd78OIawHM9sEelVVPdAi6RHoufu2AQYwGAyqoig2AEIIP03TAKxal4oxLsxsBFDX9VvnB3cfAg6MOtPddyR5jHEtSNoD1HZ/AO/ddTObGLDbBqsQwrakJsb4Cay4+9gkLd0dwNx9q67rqhsOLM3d74ExoKZpSv5yF9I0vZD0wn+e0zS9DFmWVUmSTIBT4LXVSYxxkmVZ9QuaFG7xFQUbEgAAAABJRU5ErkJggg==";

// BEWARE the api key is hardcoded below. var OaButtonApi = new oabutton({api_key: '44ab0972-3a56-4d1d-ba10-c98c5342ac1d'}); var oabuttonhref = "javascript:(function{oabuid='44ab0972-3a56-4d1d-ba10-c98c5342ac1d';_my_script=document.createElement('SCRIPT');_my_script.type='text/javascript';_my_script.src='https://openaccessbutton.org/static/oabutton_includer.js?';document.getElementsByTagName('head')[0].appendChild(_my_script);})";

doiLinkElements.forEach(function(e,i,a) {	var data = {url: decodeURIComponent(e.href)};	var successCallback = function(response) {		var blockedCount = response.blocked;		var wishCount = response.wishlist;		var oaiconImg = document.createElement("img");		if(blockedCount > 0) {			oaiconImg.src = blockedicon;		} else {			oaiconImg.src = oaicon;		}		oaiconImg.height = 12; oaiconImg.width = 12;		var oaiconAnchor = document.createElement("a");		oaiconAnchor.href = oabuttonhref;		oaiconAnchor.appendChild(oaiconImg);		e.parentNode.appendChild(oaiconAnchor);		var oaSpanNode = document.createElement("span");		var oaSpanText = document.createTextNode(" Blocked reports: "+blockedCount+". Wishlisted "+wishCount+" times.");		oaSpanNode.appendChild(oaSpanText);		e.parentNode.appendChild(oaSpanNode);	};	OaButtonApi.status({data: data, success: successCallback, linkElement: e}); });