/* jQuery Accessibility Plugin (ability) - A jQuery plugin to provide accessibility functions
 * Author: Tane Piper (digitalspaghetti@gmail.com) 
 * Website: http://code.google.com/p/ability/
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
 * 
 * === Changelog ===
 * Version 1.0 (20/07/2007)
 * Initial version.
 * Modifies text size to one of 4 CSS styles
 * Change page Style
 * Reset function
 */
(function($) {
	
	function switchStyleSheet(stylename, settings) {
	
		selectors = new Array();
		for (var i=0, len = settings.switcherstyles.length; i < len; i++) {
			if (settings.switcherstyles[i] != settings.defaultcss || jQuery('link[href$='+ settings.styledir + stylename+']').length ) {
				selectors.push('link[href$='+ settings.styledir + settings.switcherstyles[i] +']');
			}
		}
	
		jQuery(selectors.join(', ')).each(function(){
			if (jQuery(this).attr('href').substring(jQuery(this).attr('href').length - (settings.styledir + stylename).length , jQuery(this).attr('href').length) == settings.styledir + stylename) {
					this.disabled = false;
			}
			else {
				jQuery(this).remove();
			}
		});
	
		if ( !jQuery('link[href$='+ settings.styledir + stylename+']').length ) {
			jQuery('head').append('<link rel="stylesheet" type="text/css" media="screen" href="'+settings.styledir + stylename+'" />');
		}
		
		if (settings.savecookie == true){
			jQuery.cookie('style', stylename, {expires: 365, path: '/', domain: siteDomain});
		}
	
	}
	
	function switchTextSize(size, settings) {
		jQuery('body').removeClass().addClass(size);
		if (settings.savecookie == true){
			jQuery.cookie('textsize', size, {expires: 365, path: '/', domain: siteDomain});
		}
	}
	
	function reset(settings) {
		
		if (settings.textsizer == true) {
			jQuery('body').removeClass();
			jQuery.cookie('textsize', null, {expires: -1});
		}
		
		if (settings.switcher == true) {
			switchStyleSheet(settings.defaultcss, settings);
			jQuery.cookie('style', null, {expires: -1});
		}
	}
	
	$.fn.extend({
	/* ability: function(settings)
	 * The constructor method
	 * Example: $().ability();
	 */
		ability: function(settings) {
			var version = "0.1";
			/* Default Settings*/	
			settings = jQuery.extend({
				textsizer: true,
				textsizeclasses: ['m', 'l', 'xl', 'xxl'],
				textsizeclassestitle: ['Tama&ntilde;o de letra: normal', 'Tama&ntilde;o de letra: mediano', 'Tama&ntilde;o de letra: grande', 'Tama&ntilde;o de letra: muy grande'],
				switcher: true,
				switcherstyles: ['default.css', 'high-contrast.css'],
				switcherstylestitle: ['Versi&oacute;n normal', 'Versi&oacute;n de alto contraste'],
				styledir: "/css/",
				savecookie: true,
				defaultcss: 'default.css'
			},settings);
		
			return this.each(function(){
				controlbox = this;
				
				var output = '';
				var breakline = '';		

				var curstyle = jQuery.cookie('style');
				var curtextsize = jQuery.cookie('textsize');
				
				if (settings.textsizer == true) {
					if (curtextsize) { jQuery('body').removeClass().addClass(curtextsize); }
					var textsizer = '<ul class="fontsize">';
					for (var i=0, len = settings.textsizeclasses.length; i < len; i++) {
						textsizer += '<li><a href="#" rel="' + settings.textsizeclasses[i] + '" title="' + settings.textsizeclassestitle[i] + '" class="fir tooltip" id="fontsize'+ i +'"><span>&nbsp;</span>' + settings.textsizeclassestitle[i] + '</a></li>'
					}
					textsizer += '</ul>';
					output += textsizer + breakline;
				}
				
				if (settings.switcher == true) {
					if (curstyle) { switchStyleSheet(curstyle, settings); }
					var switcher = '<ul class="switcher">';
					for (var i=0, len = settings.switcherstyles.length; i < len; i++) {
						//var brokenstring=settings.switcherstyles[i].split(".");
						switcher += '<li><a href="#" rel="' + settings.switcherstyles[i] + '" title="' + settings.switcherstylestitle[i] + '" class="fir tooltip" id="switcher'+ i + '"><span>&nbsp;</span>' + settings.switcherstylestitle[i] + '</a></li>'
					}
					switcher += '</ul>';
					output += switcher + breakline
				}
				//output += '<a href="#" class="reset" title="Reset">Reset</a>';
				
				jQuery(controlbox).html(output);
				
				jQuery('ul.fontsize li a').bind('click', function(){
						switchTextSize(jQuery(this).attr('rel'), settings);
						return false;
				});
				jQuery('ul.switcher li a').bind('click', function(){
					switchStyleSheet(jQuery(this).attr('rel'), settings);
					return false;
				});
				jQuery('a.reset').bind('click', function(){
					reset(settings);
					return false;
				});
				
			});
		}
	});
})(jQuery);