// This code was created by Yurivish for Dragon Labs

Object.extend = function(destination, source) {
  for (property in source) {
    destination[property] = source[property];
  }
  return destination;
};

var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
};

var Helper = {
	setCookie: function(name, value) {
		var expires = new Date();
		expires.setTime(expires.getTime() + 365 * 24 * 60 * 60 * 1000);
	  var curCookie = name + '=' + escape(value) + '; expires=' + expires.toGMTString();
	  document.cookie = curCookie;
	},

	getCookie: function(name) {
	  var dc = document.cookie;
	  var prefix = name + '=';
	  var begin = dc.indexOf('; ' + prefix);
	  if (begin == -1) {
	    begin = dc.indexOf(prefix);
	    if (begin != 0) return null;
	  } else
	    begin += 2;
	  var end = document.cookie.indexOf(';', begin);
	  if (end == -1)
	    end = dc.length;
	  return unescape(dc.substring(begin + prefix.length, end));
	}
};

String.prototype.format = function() {
  var params = String.prototype.format.arguments;
  var toReturn = this;

  for (var i = 0; i < params.length; i++) {
    var regex = new RegExp('\{[' + i + ']\}', 'g');
    toReturn = toReturn.replace(regex, params[i]);
  }
 return toReturn;
};

RegExp.escape = function(text) {
  if (!arguments.callee.sRE) {
    var specials = [
      '/', '.', '*', '+', '?', '|',
      '(', ')', '[', ']', '{', '}', '\\'
    ];
    arguments.callee.sRE = new RegExp(
      '(\\' + specials.join('|\\') + ')', 'g'
    );
  }
  return text.replace(arguments.callee.sRE, '\\$1');
};

// Font Sizer 

var FontSizer = Class.create();

FontSizer.prototype = {
	initialize: function(options) {
		var dOptions = {
			cLarge: 'foureyes',
			selLarge: '#font_foureyes',
			selNormal: '#font_normal'
		};

		this.options = Object.extend(dOptions, options);

		this.loadSettings();
		this.initHandlers();
	},

	loadSettings: function() {
		var size = Helper.getCookie('fontSize');
		if (size) this.toggleSize(size);
	},
	
	initHandlers: function() {
		var self = this;

		$(this.options.selNormal).click( function() { 
			self.toggleSize.apply(self, ['']);
		});

		$(this.options.selLarge).click( function() {
			self.toggleSize.apply(self, [self.options.cLarge]); 
		});
		
	},

	toggleSize: function(size) {
		$('body').removeClass(this.options.cLarge)
			.removeClass(this.options.cLarge)
			.addClass(size);

		Helper.setCookie('fontSize', size);
	}
};

