//  gestión tamaño texto  - javascript no intrusivo

var cfResizer = {

    defaultSize: 12,
	actualSize: 12,
    maxSize: 25,
    minSize: 10,
	sizeInc: 1,
    selectors: ['div#main','div#footer', 'td'],
	
	init: function() {
        if (!document.getElementById || !document.getElementsByTagName) return;
		cfResizer.addEvents();
		var cookSize=Get_Cookie('textSize'); 
        if (isNaN(parseFloat(cookSize)) || cookSize > cfResizer.maxSize || cookSize < cfResizer.minSize) {
			cookSize = cfResizer.defaultSize;
        } 
        if (cookSize != cfResizer.defaultSize) cfResizer.set(cookSize - cfResizer.defaultSize);
    },

    addEvents: function () {
		try {
	        var sizeInc = document.getElementById('sizeInc');
			var sizeDec = document.getElementById('sizeDec');
			var sizeReset = document.getElementById('sizeReset');
			Event.add(sizeInc,'click', function () { cfResizer.set(cfResizer.sizeInc); return false;});
			Event.add(sizeDec,'click', function () { cfResizer.set(-cfResizer.sizeInc); return false;});
			Event.add(sizeReset,'click', function () { cfResizer.reset(); return false;});
		} catch(e) { 
			// the resizer interface is not present
		}
    },
    
    set: function(dif) {
        var list;
        if (dif > 0) {
            if ( this.actualSize + dif > this.maxSize ) dif = this.maxSize - this.actualSize;
        } else if (dif < 0) {
            if ( this.actualSize + dif < this.minSize ) dif = this.minSize - this.actualSize;
        }
		if (dif == 0) return;
        this.actualSize += dif;
        var len_i = this.selectors.length;
        for (var i=0; i<len_i; i++) {
            this.actualSize = Math.max(this.minSize, this.actualSize); 
			this.actualSize = Math.min(this.maxSize, this.actualSize);
            list = getBySelector(this.selectors[i]);
			var len_j=list.length;
            for (var j=0; j<len_j; j++) list[j].style.fontSize = this.actualSize + "px";
        }
		 Set_Cookie('textSize', this.actualSize, 365, '/'); 
    },

    reset: function() {
        var list;
		var len_i = this.selectors.length;
        for (var i=0; i<len_i; i++) {
            list = getBySelector(this.selectors[i]);
			var len_j=list.length;
            for (var j=0; j<len_j; j++) list[j].style.fontSize = '';
        }
        this.actualSize = this.defaultSize;
		Delete_Cookie('textSize','/');
    }

};


// función auxiliar para llamar a document.getElementsBySelector
//- returns an array of element objects from the current document
function getBySelector(selector){
  if (!document.getElementsBySelector) {
	return new Array();
  }
  arrElem = document.getElementsBySelector(selector);
  return arrElem;
}

// gestión de eventos
var Event = {
	add: function(obj,type,fn) {
		if (obj.attachEvent) {
			obj['e'+type+fn] = fn;
			obj[type+fn] = function() { obj['e'+type+fn](window.event); }
			obj.attachEvent('on'+type,obj[type+fn]);
		} else
		obj.addEventListener(type,fn,false);
	},
	remove: function(obj,type,fn) {
		if (obj.detachEvent) {
			obj.detachEvent('on'+type,obj[type+fn]);
			obj[type+fn] = null;
		} else
		obj.removeEventListener(type,fn,false);
	}
}