/****************************** siemens' new web appearance script *****/
/****************************** Copyright (c) 2007-2009 Siemens AG *****/
/***********************************************************************/
/************************************************* module fontsize *****/
/***********************************************************************/
/************************************** author virtual identity AG *****/
/* $LastChangedDate: 2009-04-23 20:47:25 +0200 (Do, 23 Apr 2009) $ *****/

function init_fontsize() {
	if ($('pagetools-fontsize')) {
		var font = new FontSize;
		var title = new Cookie('text-size').read(font.getDefaultStyleSheet());
		font.setActiveStyleSheet(title);
	}
}

var FontSize = Class.create();

FontSize.prototype = {

	initialize: function() {
		$("tools-fontsize-decrease").observe("click", function() {
			this.fontSizeDown();
		}.bindAsEventListener(this));
		$("tools-fontsize-enlarge").observe("click", function() {
			this.fontSizeUp();
		}.bindAsEventListener(this));
	},

	fontSizeUp: function() {
		switch(this.getActiveStyleSheet()) {
			case 'A+':
				this.setActiveStyleSheet('A++');
				break;
			case 'A++':
				break;
			default:
				this.setActiveStyleSheet('A+');
				break;
		}
	},

	fontSizeDown: function() {
		switch(this.getActiveStyleSheet()){
			case 'A+':
				this.setActiveStyleSheet('A');
				break;
			case 'A++':
				this.setActiveStyleSheet('A+');
				break;
		}
	},

	setActiveStyleSheet: function(title) {
		var i, a;
		for(i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
			if (/\bstylesheet\b/.test(a.rel) && a.title) {
				a.disabled = true; /* always set true first for IE7 */
				if (a.title == title) {
					a.disabled = false;
				}
			}
		}

		switch(title) {
			case 'A+':
				$('tools-fontsize-enlarge').removeClassName('deactivated');
				$('tools-fontsize-decrease').removeClassName('deactivated');
				break;
			case 'A++':
				$('tools-fontsize-enlarge').addClassName('deactivated');
				break;
			default:
				$('tools-fontsize-decrease').addClassName('deactivated');
				break;
		}
		
		new Cookie('text-size').write(title, 365 * 24 * 3600);
		
	},

	getActiveStyleSheet: function() {
		var i, a;
		for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
			if (/\bstylesheet\b/.test(a.rel) && a.title && !a.disabled) {
				return a.title;
			}
		}
		return this.getDefaultStyleSheet();
	},

	getDefaultStyleSheet: function() {
		return 'A';
	}
}

Cookie = Class.create();

Cookie.prototype = {

	initialize: function(name) {
		this.name = name;
	},
	
	write: function(value, seconds) {
		
		if (seconds) {
			var date = new Date();
			date.setTime(date.getTime() + (1000 * seconds));
			var expires = "; expires=" + date.toGMTString();
		} else {
			var expires = "";
		}
		document.cookie = this.name + "=" + value + expires + "; path=/";
	},

	read: function(defaultValue) {
		var parts = document.cookie.split(';');
		var reg   = new RegExp('^\\s*' + this.name + '=(.*)$');
		var part;
		while(part = parts.pop()) {
			var matches = part.match(reg);
			if (matches) {
				return matches[1];
			}
		}
		return defaultValue;
	},
	
	remove: function() {
		this.write('', -86400);
	}
}
