var ba_default = 83;
var ba_increment = 10;
var ba_expires = '7';
var ba_max = 103;
var ba_min = 63;

function BalunaFont(ba_increment, ba_default) {
	this.ba_cookie_name = 'baluna_font_size';
	this.dom = (document.getElementById);
	this.ba_increment = ba_increment;
	this.ba_default = ba_default;
	this.body = (this.dom)?document.getElementsByTagName('body')[0].style:document.all.tags('body')[0].style;
	
	this.setSize = setSize;
	this.getDefault = getDefault;
	this.setCookie = setCookie;
	this.getCookie = getCookie;
	this.setExpire = getExpire;
	this.baInit = baInit;
	this.ba_max = ba_max;
	this.ba_min = ba_min;

	this.default_size = this.getDefault();
	this.ba_expires = getExpire(ba_expires);
}

function baInit() {
	this.body.fontSize = Math.round(this.default_size) + '%';
}
function setSize(direction) {
	this.default_size = (direction && (this.default_size + (direction*this.ba_increment) > 0))?this.default_size+(direction*this.ba_increment):this.ba_default;
	if((this.default_size > this.ba_max) || (this.default_size < this.ba_min)) this.default_size = this.ba_default;
	this.setCookie(this.ba_cookie_name, this.default_size);
	this.body.fontSize = Math.round(this.default_size) + '%';
}
function getDefault() {
	var default_size = this.getCookie(this.ba_cookie_name);
	if (default_size) return parseInt(default_size);
	else return this.ba_default;
}

function getCookie(cookieName) {
	var cookies = document.cookie.split(';');
	for(i = 0; i < cookies.length; i++) {
		var cookie_key_value = cookies[i].split('=');
		if(cookie_key_value[0].replace(/^\s*|\s*$/g,"") == cookieName) {
			return cookie_key_value[1];
		}
	}
	return false;
}

function setCookie(cookieName, defaultSize) {
	var cookies = this.ba_cookie_name + '=' + defaultSize + '; expires=' + this.ba_expires + '; path=/;';
	document.cookie = cookies;
	return true;
}

function getExpire(unitNumber) {
	var date = new Date();
	date.setTime(date.getTime()+(unitNumber*24*60*60*1000));
	return date.toGMTString();
}

balunaFont = new BalunaFont(ba_increment, ba_default);
