Ozein.FontSizeChanger = new Class.create();
Ozein.FontSizeChanger.prototype = {
    cookieName: 'c_kig_fontsize',
    cookieExpires: 2592000, //有効期限30日
    cookiePath: '/',
    initialize: function(node, options) {
        this.setOptions(options);
        this.searchbox = node;
        
        var parts = document.getElementsByAttribute('ozein_fontsize', '*', node);
        var len = parts.length;
        for(var i=0; i<len; ++i) {
            var partsName = parts[i].getAttribute('ozein_fontsize');
            this.setChanger(parts[i], partsName);
        }
        
        var size = this.options.defaultSize;
        if(this.options.useCookie) {
            this.c = new Ozein.Cookie(this.cookieName);
            this.c.setPath(this.cookiePath);
            this.c.setExpires(this.cookieExpires);
            
            var csize = this.c.getCookie(this.cookieName);
        }
        if(csize) {
            size = csize;
        }
        if(eval("this.options."+size)) {
            this.doChange(this, size);
        }
    },
    setOptions: function(options) {
        this.options = {
            trigger: 'click',
            target: 'contentBlock',
            defaultSize: 'small',
            small: '100%',
            middle: '120%',
            large: '150%',
            onImg: null,
            offImg: null,
            onClass: null,
            offClass: null,
            useCookie: true
        }
        Object.extend(this.options, options || {});
    },
    setChanger: function(node, attr) {
        if(!this.btns) this.btns = {};
        this.btns[attr] = node;
        
        Event.observe(node, this.options.trigger, this.doChange.bindAsEventListener(this, attr));
    },
    doChange: function(e, size) {
        for(var i in this.btns) {
            if(i == size) {
                this.btns[i].src = this.btns[i].src.replace(this.options.offImg+".", this.options.onImg+".");
                if(this.options.onClass) {
                    Element.addClassName(this.btns[i], this.options.onClass);
                }
            } else {
                if(this.options.onClass) Element.removeClassName(this.btns[i], this.options.onClass);
                if(this.options.offClass) Element.removeClassName(this.btns[i], this.options.offClass);
                this.btns[i].src = this.btns[i].src.replace(this.options.onImg+".",this.options.offImg+".");
                if(this.options.offClass) {
                    Element.addClassName(this.btns[i], this.options.offClass);
                }
            }
        }
        
        var fontsize = eval("this.options."+size);
        if(this.options.target) {
            var elem = $(this.options.target);
            elem.style.fontSize = fontsize;
        } else {
            // targetがなければbody全体のフォントサイズを変更
            document.body.style.fontSize = fontsize;
        }
        if(this.options.useCookie) {
            this.c.setValue(this.cookieName, size);
            this.c.setCookie();
        }
    }
}