diff --git a/ninechan.js b/ninechan.js new file mode 100644 index 0000000..52c7b8b --- /dev/null +++ b/ninechan.js @@ -0,0 +1,90 @@ +/* + * Ninechan JavaScript Backend + * By Flashwave <http://flash.moe> + * Distributed under the MIT-License + */ + +var ninechan = { + + // Variables + cookiePrefix: null, + + // Initialise ninechan.js + init: function() { + if(this.cookieData('get', this.cookiePrefix + 'style') == "") + this.setStyle(this.getMainStyle()); + else + this.setStyle(this.cookieData('get', this.cookiePrefix + 'style')); + }, + + // Get or set cookie data + cookieData: function(action, name, data) { + switch(action) { + case 'get': + return (result = new RegExp('(^|; )' + encodeURIComponent(name) + '=([^;]*)').exec(document.cookie)) ? result[2] : ''; + + case 'set': + document.cookie = name + '=' + data; + return; + + default: + return; + } + }, + + // Get the main style + getMainStyle: function() { + var i, a; + + for(i = 0; (a = document.getElementsByTagName('link')[i]); i++) { + if( + a.getAttribute('rel').indexOf('style') != -1 && + a.getAttribute('rel').indexOf('alt') == -1 && + a.getAttribute('title') + ) + return a.getAttribute('title'); + } + + return null; + }, + + // Get the current active style + getActiveStyle: function() { + var i, a; + + for(i = 0; (a = document.getElementsByTagName('link')[i]); i++) { + if( + a.getAttribute('rel').indexOf('style') != -1 && + a.getAttribute('title') && + !a.disabled + ) + return a.getAttribute('title'); + } + + return null; + }, + + // Set a style + setStyle: function(title) { + var i, a, t; + + t = false; + + this.cookieData('set', this.cookiePrefix + 'style', title); + + for(i = 0; (a = document.getElementsByTagName('link')[i]); i++) { + if( + a.getAttribute('rel').indexOf('style') != -1 && + a.getAttribute('title') + ) { + a.disabled = (a.getAttribute('title') == title) ? false : true; + t = true; + } + } + + if(!t && title != null) { + this.setStyle(this.getMainStyle()); + } + } + +}