//スタイルクラス定義
function StyleClass(name, element, offsrc, onsrc, imgname) {
    this.name = name;
    this.element = element;
    this.offsrc = offsrc;
    this.onsrc = onsrc;
    this.imgname = imgname;
};
StyleClass.styles = new Array();
StyleClass.prototype.set = function() {
    for(var i=0; i<StyleClass.styles.length; i++) {
        StyleClass.styles[i].unset();
    }
    this.element.disabled = false;
    fontsize_changer.defStyle = this;

    if ( fontsize_changer.load ) this.rollover();
};
StyleClass.prototype.unset = function() {
    this.element.disabled = true;

    if(fontsize_changer.defStyle == this) fontsize_changer.defStyle = null;

    if ( fontsize_changer.load ) this.rollout();
};
StyleClass.prototype.toString = function() {
	return this.name;
};
StyleClass.prototype.rollover = function() {
    chimg(this.onsrc,this.imgname);
};
StyleClass.prototype.rollout = function() {
    if ( fontsize_changer.defStyle != this ) {
        chimg(this.offsrc,this.imgname);
    }
};

//Array拡張
Array.prototype.push = function ( value ) {
	this[this.length] = value;
	return this.length;
}

//クッキー操作シングルトンオブジェクト定義
//The Following Script Is Written By Peter-Paul Koch
//http://www.quirksmode.org/
var handleCookie = new function() {
    this.createCookie = function(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    };
    this.readCookie = function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    };
    this.eraseCookie = function(name) {
        this.createCookie(name,"",-1);
    }
};

//フォントサイズ名前空間定義
var fontsize_changer = new function() {
    this.medium = null;
    this.small = null;
    this.big = null;
    this.defStyle = null;
    this.load = false;
};

//実行
(function() {
    // link element 取得
    var allLinkElements = document.getElementsByTagName("LINK");
    for(var i=0; i<allLinkElements.length; i++) {
        if(allLinkElements[i].getAttribute("rel").indexOf("stylesheet") > -1 && allLinkElements[i].getAttribute("title") && allLinkElements[i].getAttribute("title").length > 0) {
            var input = null;
            switch(allLinkElements[i].getAttribute("title")) {
                case "medium fontsize" : {
                    input = fontsize_changer.medium
                        = new StyleClass("medium",
                                         allLinkElements[i],
                                         "/shared/image/fontsize-m.gif","/shared/image/fontsize-m_on.gif","fontsizeMenuMedium"
                                         );
                    break;
                }
                case "small fontsize" : {
                    input = fontsize_changer.small
                        = new StyleClass("small",
                                         allLinkElements[i],
                                         "/shared/image/fontsize-s.gif","/shared/image/fontsize-s_on.gif","fontsizeMenuSmall"
                                         );
                    break;
                }
                case "big fontsize" : {
                    input = fontsize_changer.big
                        = new StyleClass("big",
                                         allLinkElements[i],
                                         "/shared/image/fontsize-l.gif","/shared/image/fontsize-l_on.gif","fontsizeMenuBig"
                                         );
                    break;
                }
                default : {
                    break;
                }
            }

            if(input != null) StyleClass.styles.push(input);
        }
    }

    //クッキーから前回の設定を読み出し
    var cookiedStyle = handleCookie.readCookie('defStyle');
    if(cookiedStyle != null && cookiedStyle != "") {
        if(typeof eval("fontsize_changer."+cookiedStyle) != "undefined") {
            fontsize_changer.defStyle = eval("fontsize_changer."+cookiedStyle);
        }
    }
    else {
        fontsize_changer.defStyle = fontsize_changer.medium;
    }

    //デフォルトを設定
    fontsize_changer.defStyle.set();

    //アンロードでクッキーに保存
    window.onunload = function() {
        if(fontsize_changer.defStyle != null) {
            handleCookie.createCookie('defStyle',fontsize_changer.defStyle.toString(),365);
        }
    }
    //ロードしたら、デフォルトの文字サイズの画像をロールオーバー
    window.onload = function() {
        fontsize_changer.load = true;
        fontsize_changer.defStyle.rollover();
        if ( typeof preloadimg == "function" ) {
            preloadimg();
        }
    };

    //スクリプト有効の時だけ、切り替えボタンを表示するためのスタイルを出力
    var style = '<style type="text/css">';
    style += '#fontsizeMenu {display:block;}';
    style += '</style>';
    document.write(style);
}());


