if (document.styleSheets && document.getElementsByTagName) {
/* -------------------- 設定 -------------------- */
/* 選択フォームのラベル */
label = 'style: ';
/* スタイル適用しない時の選択肢名 */
nostyle = 'no style';
/* 選択フォームを含むdiv要素のclass名 */
selectformclass = 'sss';
/* cookieの名前 */
cname = 'STYLESHEET';
/* cookieの有効日数 */
cdays = 100;
/* スタイルシート追加 （実験的） */
addstyles = new Array(
    /* 追加しない場合は空配列 Array() にする */
    'plant',        'http://deztec.jp/x/etc/img/CSSplant.css',
    'think',        'http://deztec.jp/x/etc/img/CSSthink.css',
    'folio',        'http://deztec.jp/x/etc/img/CSSfolio.css'
);
/* ------------------ 設定終了 ------------------ */
/*
    初期化
*/
    /* オブジェクトをグローバル変数として設定 */
    sss = document.styleSheets;
    nsel = document.createElement('SELECT');
    di = document.implementation;
    /* 追加スタイルが設定されていれば追加 */
    if (addstyles.length) appendStyleLink();
    /* スタイル適用 */
    setStyle();
    /* unload時イベント（スタイル名をcookieへ保存）を設定 */
    addEvent(window, 'unload', setCookie);
    /* 以降は読み込み完了時に実行 */
    addEvent(window, 'load', initialize);
}
/*
    初期化（読み込み完了後）
*/
function initialize() {
    sss = document.styleSheets;
    /* 選択フォームを追加 */
    appendSelectForm();
}
/*
    スタイル追加
*/
function appendStyleLink() {
    /* 既にtitleつきのスタイルがあるかどうかをチェック */
    var noTitledStyle = true;
    for (var i = 0; i < sss.length; i++) {
        if (!sss.item(i).title) continue;
        noTitledStyle = false;
        break;
    }
    /* リンク要素生成・追加 */
    for (var i = 0; i < addstyles.length; i += 2) {
        var stitle = addstyles[i];
        var shref = addstyles[i+1];
        var nlink = document.createElement('LINK');
        nlink.rel = (noTitledStyle && i == 0) ? 'stylesheet' : 'alternate stylesheet';
        nlink.type = 'text/css';
        nlink.href = shref;
        nlink.title = stitle;
        var nhead = document.getElementsByTagName('HEAD').item(0);
        nhead.appendChild(nlink);
    }
}
/*
    cookieに保存された名前のスタイルを適用する
*/
function setStyle() {
    /* cookieからスタイル名を取得 */
    var stitle = getCookie();
    if (!stitle) return;
    /* スタイルの変更 */
    applyStyle(stitle);
}
/*
    選択フォームを追加
*/
function appendSelectForm() {
    var ndiv = document.createElement('DIV');
    ndiv.className = selectformclass;
    var nlabel = document.createElement('LABEL');
    nlabel.appendChild(document.createTextNode(label));
    ndiv.appendChild(nlabel);
    for (var i = 0; i < sss.length; i++) {
        var opttxt = sss.item(i).title;
        /* 既に同じスタイル名がある場合は除く */
        var isSameTitle = false;
        for (j = 0; j < i; j++) {
            if (sss.item(j).title != opttxt) continue;
            isSameTitle = true;
            break;
        }
        if (!opttxt || isSameTitle) continue;
        /* 選択肢を追加 */
        var nopt = document.createElement('OPTION');
        nopt.appendChild(document.createTextNode(opttxt));
        nsel.appendChild(nopt);
    }
    /* スタイル無しの選択肢を追加 */
    var nopt = document.createElement('OPTION');
    nopt.appendChild(document.createTextNode(nostyle));
    nsel.appendChild(nopt);
    /* 選択フォームの状態を変更 */
    var stitle = getStyleTitle() || nostyle;
    for (var i = 0; i < nsel.length; i++) {
        var opttxt = nsel.options.item(i).text;
        if (opttxt == stitle) nsel.selectedIndex = i;
    }
    /* 選択フォームを本文に追加 */
    nlabel.appendChild(nsel);
    var nbody = document.getElementsByTagName('BODY').item(0);
    nbody.insertBefore(ndiv, nbody.firstChild);
    /* スタイル設定 */
    selectFormStyle(ndiv);  /* 必要無ければ削除 */
    /* 選択フォーム変更時イベントを設定 */
    addEvent(nsel, 'change', changeSelectForm);
}
/*
    フォームで選択された名前のスタイルを適用する
*/
function changeSelectForm() {
    var stitle = nsel.options.item(nsel.selectedIndex).text;
    /* Mozillaだったら nsel.value でもOK */
    applyStyle(stitle);
}
/*
    スタイルの適用
*/
function applyStyle(stitle) {
    for (var i = 0; i < sss.length; i++) {
        var ss = sss.item(i);
        ss.disabled = (ss.title == stitle || !ss.title) ? false : true;
    }
}
/*
    スタイル名をcookieへ保存
*/
function setCookie() {
    /* 現在適用されているスタイルの名前を取得 */
    var stitle = getStyleTitle() || nostyle;
    var c =  cname + '=' + escape(stitle) + ';' + 'path=/';
    /* 有効日数が設定されていれば追加 */
    if (cdays) {
        var cexp = new Date();
        cexp.setTime(cexp.getTime() + 1000*60*60*24*cdays);
        c += ';expires=' + cexp.toGMTString();
    }
    document.cookie = c;
}
/*
    cookieからスタイル名を取得
*/
function getCookie() {
    var c = document.cookie + ';';
    var cindex = c.indexOf(cname + '=');
    if (cindex == -1) return false;
    var clen = c.indexOf(';', cindex + cname.length + 1);
    return unescape(c.substring(cindex + cname.length + 1, clen));
}
/*
    イベント追加のためのwrapper
*/
function addEvent(obj, eventType, func) {
    if (di && di.hasFeature('HTMLEvents', '2.0')) {
        /* DOM2 HTMLEvents対応 */
        obj.addEventListener(eventType, func, false);
    } else if (obj.attachEvent) {
        /* WinIE5-6用 */
        obj.attachEvent('on' + eventType, func);
    } else {
        /* MacIE5用 */
        obj['on' + eventType] = func;
    }
}
/*
    現在適用されているスタイルの名前を取得
*/
function getStyleTitle() {
    for (var i = 0; i < sss.length; i++) {
        var ss = sss.item(i);
        if (ss.title && !ss.disabled) return ss.title;
    }
    return false;
}
/*
    選択フォームのスタイル設定
*/
function selectFormStyle(obj) {
    var os = obj.style;
}
