﻿var fontSizeSwitcher = {
    str: '',
    config: {
        area: ['alpha'],	//対象となるエリア（ID)
        length: 3,
        id: ['sizeNormal', 'sizeLarge', 'sizeMax'],
        label: ['標準', '大きく', '最大'],
        size: ['100%', '125%', '150%'],
        cookieName: 'spjFontSizeSwitcher',
        cookieDate: 90
    },

    changeFontSize: function(size) {
        var config = this.config;
        var items  = document.getElementById('fontSizeSwitcher').childNodes;

        for(var i = 0, l = items.length; i < l ; i++) {
            if(size == i) {
                this.setClassName(items[i], 'current');
            }
            else {
                this.removeClassName(items[i]);
            }
        }

        var ss = document.styleSheets[0];

        for(var i = 0, l = config.area.length; i < l; i++) {
//            if (document.fileModifiedDate) {
            if (window.attachEvent && !window.opera) {
                ss.addRule('#' + config.area[i], 'font-size: ' + config.size[size]  + ';');
            }
            else {
                ss.insertRule('#' + config.area[i] + '{ font-size: ' + config.size[size]  + '; }', ss.cssRules.length);
            }
        }

        // set cookie
        this.setCookie(size);
    },

    setCookie: function(data) {
        var t = new Date();
        t.setTime(t.getTime() + (1000 * 60 * 60 * 24 * Number(this.config.cookieDate)));
        document.cookie = this.config.cookieName + '=' + encodeURIComponent(data) + '; path=/; expires=' + t.toGMTString();
    },

    getCookie: function(m) {
        return (m = ('; ' + document.cookie + ';').match('; ' + this.config.cookieName + '=(.*?);')) ? decodeURIComponent(m[1]) : null;
    },

    setClassName: function(elem, str) {
//            if(document.fileModifiedDate) {
            if (window.attachEvent && !window.opera) {
                elem.className = str;
            }
            else {
                elem.setAttribute('class', str);
            }
    },

    removeClassName: function(elem) {
//            if(document.fileModifiedDate) {
            if (window.attachEvent && !window.opera) {
                elem.removeAttribute('className');
            }
            else {
                elem.removeAttribute('class');
            }
    },

    start: function() {
        var target = this;
        var config = this.config;
        var size   = this.getCookie('s');

        for(var i = 0, l = config.length; i < l ; i++) {
            this.str += '<li id="' + config.id[i] + '" onclick="fontSizeSwitcher.changeFontSize(' + i + ')">' + config.label[i] + '</li>';
        }

        document.write('<ul id="fontSizeSwitcher">' + this.str + '</ul>');

        if(size == null) {
            size = 0;
        }

        this.changeFontSize(size)
    }
}

fontSizeSwitcher.start();
