﻿/**********************************************************
* styleswitcher.js
*/

function StyleSwitcher(){}

StyleSwitcher.prototype = {
	cookieName:'fontcss',
	expires:365,
	initialize:function(id,prefix,expires){
		this.prefix = prefix;
		this.triggerElements = [];
		var parent = document.getElementById(id);
		var a = parent.getElementsByTagName('A');

		var len = a.length;
		for(var i = 0; i < len; i++){
			if(a[i].className.indexOf(prefix) != -1){
				this.triggerElements[this.triggerElements.length] = a[i];
			}
		}

		var len = this.triggerElements.length;
		for(var i = 0; i < len; i++) {
			this.triggerElements[i].ins = this;
			this.triggerElements[i].onclick = function() {
				var cls = this.ins.getOneClassName(this.className,prefix);
				if(cls.indexOf(prefix) != -1){
					this.ins.setEffectiveStyle(cls,prefix);
				}
				return false;
			}
		}
	},
	getOneClassName:function(clsName,indexStr){
		var classes = clsName.split(" ");
		var len = classes.length;
		for(var i = 0; i < len; i++){
			if(classes[i].indexOf(indexStr) != -1){
				return classes[i];
			}
		}
	},
	getClassNameOfEffectiveStyle:function(prefix){
		var  lks = document.getElementsByTagName('link')
		var  len = lks.length;
		for(var i = 0; i < len; i++){
			if(lks[i].getAttribute("rel").indexOf("alternate") != -1 &&
			lks[i].className.indexOf(prefix) != -1 && lks[i].disabled == false){
				return this.getOneClassName(lks[i].className,prefix);
				break;
			}
		}
	},
	setEffectiveStyle:function(cls,prefix){
		var  lks = document.getElementsByTagName('link')
		var  len = lks.length;
		for(var i = 0; i < len; i++){
			if(lks[i].getAttribute("rel").indexOf("alternate") != -1 &&
			lks[i].className.indexOf(prefix) != -1){
				lks[i].disabled = true;
				if(lks[i].className.indexOf(cls) != -1) {
					lks[i].disabled = false;
				}
			}
		}
		this.setCookie(this.cookieName,cls,this.expires,"/");
	},
	getCookie:function(name){
		var arg = name + "=";
		var alen = arg.length;
		var clen = document.cookie.length;
		var i = 0;
		while (i < clen){
			var j = i + alen;
			if(document.cookie.substring(i, j) == arg){
				return this.getCookieVal(j);
			}
			i = document.cookie.indexOf(" ", i) + 1;
			if(i == 0) break; 
		}
		return null;
	},
	setCookie:function(name, value, expires, path, domain, secure){
		if(expires) {
			var date = new Date();
			date.setTime(date.getTime()+(expires*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		document.cookie = name + "=" + escape (value) +
			((expires) ? "; expires=" + expires : "") +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			((secure) ? "; secure" : "");
	},
	getCookieVal:function(offset){
		var endstr = document.cookie.indexOf (";", offset);
		if(endstr == -1){
			endstr = document.cookie.length;
		}
		return unescape(document.cookie.substring(offset, endstr));
	}
}

var styleSwitcher = new StyleSwitcher();

function uaStyleSwitcher() {
	styleSwitcher.initialize('readability','readability-',365);
}

window.onunload = function() {
	var cls = styleSwitcher.getClassNameOfEffectiveStyle(styleSwitcher.prefix);
	styleSwitcher.setCookie(styleSwitcher.cookieName, cls, styleSwitcher.expires,"/");
}

styleSwitcher.cookie = styleSwitcher.getCookie(styleSwitcher.cookieName);

if(styleSwitcher.cookie) {
	styleSwitcher.setEffectiveStyle(styleSwitcher.cookie,'readability-');
}
