
(function() {
    //スクリプトや画像などを置く場所の情報
    var scheme = 'http';
//    var domain = 'des-simple-tools.c-brains.co.jp';
    var domain = getSelfDomain();
    var directory = 'tools/web_panel';

    var root_url = scheme + '://' + domain + '/' + directory;

    /**
     * getSelfDomain 自分自身のドメインを取得する
     */
    function getSelfDomain() {
        //web_panel.jsの設置を許可するURLの正規表現
        var allow_pattern = /^https?:\/\/([-a-zA-z]*\.c-brains(\.co)?\.jp|simple-tools\.jp)\/[_a-z/]*web_panel.js/;
        var script_tags = document.getElementsByTagName('script');
        for (var i=0; i<script_tags.length; i++) {
            var res = script_tags[i].src.match(allow_pattern);
            if (res) {
                return res[1];
            }
        }
        return false;
    }

    /**
     *loadJQuery jQueryスクリプトを読み込む
     *
     * @param callback $callback 読み込み完了時に実行する関数
     * @access public
     * @return void
     */
    function loadJQuery(callback) {
        var jquery_src = root_url + '/assets/js/jquery-1.2.6.min.js';
        var s = document.createElement('script');
        s.setAttribute('src',jquery_src);
        document.getElementsByTagName('body')[0].appendChild(s);

        //100ミリ秒ごとに読み込みが終了したかチェックして、終わったときにコールバックを呼ぶ
        var id = window.setInterval(function(){
            if (window['jQuery']
                && window['jQuery']['fn']
                && window['jQuery']['fn']['offset']){

                window.clearInterval(id);
                jQuery.noConflict();
                callback();
            }
        }, 100);
    }

    /**
     *loadCSS CSSの読み込み
     *
     * @access public
     * @return void
     */
    function loadCSSs(){
        var css_tags = '';
        css_tags += '<link rel="stylesheet" type="text/css" media="all" href="' + root_url + '/assets/sta.css" />' + "\n";
        var alternate_css = [
            'font_normal',
            'font_large',
            'font_xlarge',
            'color_white',
            'color_yellow',
            'color_black',
            'image_on',
            'image_off',
            'reset'
        ];
        for (i in alternate_css) {
            css_tags += '<link rel="alternate stylesheet" type="text/css" href="' + root_url + '/assets/css/' + alternate_css[i] +
                '.css" title="' + alternate_css[i].replace('_','-') + '" disabled="true" />' + "\n";
        }
        jQuery('head').append(css_tags);
    }
    function createBar(){
        var bar_tags = '';
        var targetUrl = location.href;

        bar_tags += '<div id="simple-tools-webpanel">'
        + '<p id="sta-logo"><a href="http://simple-tools.jp/web_panel/" target="_blang"><img src="' + root_url + '/assets/img/sta_logo.gif" alt="Simple tools Accessibility のサイトへ" /></a></p>'
        + '<dl>'
        + '<dt><img src="' + root_url + '/assets/img/ti_fontsize.gif" alt="文字サイズ変更" /></dt>'
        + '<dd><a href="javascript:void(0);" class="button" id="font-normal"><img src="' + root_url + '/assets/img/bt_font_normal.gif" alt="文字サイズ：標準" class="rollover" /></a></dd>'
        + '<dd><a href="javascript:void(0);" class="button" id="font-large"><img src="' + root_url + '/assets/img/bt_font_large.gif" alt="文字サイズ：大" class="rollover" /></a></dd>'
        + '<dd><a href="javascript:void(0);" class="button" id="font-xlarge"><img src="' + root_url + '/assets/img/bt_font_xlarge.gif" alt="文字サイズ：特大" class="rollover" /></a></dd>'
        + '</dl>'
        + '<dl>'
        + '<dt><img src="' + root_url + '/assets/img/ti_color.gif" alt="カラー変更" /></dt>'
        + '<dd><a href="javascript:void(0);" class="button" id="color-white"><img src="' + root_url + '/assets/img/bt_color_white.gif" alt="背景色：白 文字色：黒" class="rollover" /></a></dd>'
        + '<dd><a href="javascript:void(0);" class="button" id="color-yellow"><img src="' + root_url + '/assets/img/bt_color_yellow.gif" alt="背景色：黄色 文字色：黒" class="rollover" /></a></dd>'
        + '<dd><a href="javascript:void(0);" class="button" id="color-black"><img src="' + root_url + '/assets/img/bt_color_black.gif" alt="背景色：黒 文字色：白" class="rollover" /></a></dd>'
        + '</dl>'
        + '<dl>'
        + '<dt><img src="' + root_url + '/assets/img/ti_image.gif" alt="画像" /></dt>'
        + '<dd><a href="javascript:void(0);" class="button" id="image-on"><img src="' + root_url + '/assets/img/bt_image_on.gif" alt="画像：表示" class="rollover" /></a></dd>'
        + '<dd><a href="javascript:void(0);" class="button" id="image-off"><img src="' + root_url + '/assets/img/bt_image_off.gif" alt="画像：非表示" class="rollover" /></a></dd>'
        + '</dl>'
        + '<p id="sta-reset"><a href="javascript:void(0);" ><img src="' + root_url + '/assets/img/bt_reset.gif" alt="リセット" class="rollover" /></a></p>'
        + '<!--<p id="sta-help"><a href="javascript:void(0);"><img src="' + root_url + '/assets/img/bt_help.gif" alt="ツールバーのヘルプ" class="rollover" /></a></p>-->'
        + '</div>'
        + '<div id="ga" style="font-size:0;line-height:0;overflow:hidden;height:0;position:absolute; top:-100px;left:-100px;">'
        + '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"" width="18" height="18">'
        + '<param name="movie" value="'+scheme + '://' + domain + '/tools/ga/panel_ga.swf">'
        + '<param name="FlashVars" value="&targetDomain='+targetUrl+'" />'
        + '<embed src="'+scheme + '://' + domain + '/tools/ga/panel_ga.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="18" height="18" FlashVars="&category=&targetDomain='+targetUrl+'"></embed>'
        + '</object>'
        + '</div>'
        jQuery('body').prepend(bar_tags);

    }
    /**
     *loadScript スクリプトの読み込み
     *
     * @access public
     * @return void
     */
    function loadScripts(){
        var script_tags = '';
        script_tags += '<script type="text/javascript" src="' + root_url + '/assets/js/sta.js"></script>';
        jQuery('head').append(script_tags);
    }

    function rollOverImg(el_img) {
        el_img.src = el_img.src.replace(/((_3)?(\.[a-z]+))$/i, "_2$3");
    }

    function rollOutImg(el_img) {
        if (jQuery(el_img).parent().hasClass('on')) {
            el_img.src = el_img.src.replace(/_2(\.[a-z]+)$/i, "_3$1");
        } else {
            el_img.src = el_img.src.replace(/_2(\.[a-z]+)$/i, "$1");
        }
    }

    function pushImg(el_img) {
        el_img.src = el_img.src.replace(/(_2)?(\.[a-z]+$)/i, "_3$2");
    }

    function releaseImg(el_img) {
        el_img.src = el_img.src.replace(/(_2|_3)?(\.[a-z]+$)/i, "$2");
    }

    function webpanelRollover(){
        var id = window.setInterval(function(){
            if (document.getElementById("simple-tools-webpanel")){
                window.clearInterval(id);
                //読み込み時ボタンハイライト
                    jQuery('link:enabled').each(function(){
                        jQuery("#simple-tools-webpanel a.button#" + jQuery(this).attr('title'))
                            .addClass('on')
                            .find("img").each(function(){ pushImg(this); });
                    });

                //ロールオーバー
                jQuery("#simple-tools-webpanel img.rollover")
                    .hover(
                        function(){
                            rollOverImg(this);
                        },function(){
                            rollOutImg(this);
                        });
                //スタイル適用したらずっとハイライト
                jQuery("#simple-tools-webpanel a.button").click(function(){
                    if (!(jQuery(this).parent().hasClass('on'))) {
                        //スタイル適用
                        setActiveStyleSheet(jQuery(this).attr('id'));

                        jQuery(this).parent().parent()
                            .find("a.button").removeClass("on")
                            .find("img").each(function(){ releaseImg(this); });
                        jQuery(this).addClass('on')
                            .find("img").each(function(){ pushImg(this); });
                    }
                });

                //リセットボタン
                jQuery("#simple-tools-webpanel p#sta-reset a").click(function(){
                    resetStyleSheet();
                    jQuery("#simple-tools-webpanel a.button")
                        .removeClass("on")
                        .find("img").each(function(){ releaseImg(this); });
                });
            }
        }, 100);
    }

    /**
     *setUp jQueryが使えるようになった後でCSSやJSの読み込みを順次実行
     *
     * @access public
     * @return void
     */
    function setUp(){
        loadCSSs();
        createBar();
        loadScripts();
        webpanelRollover();
    }
    window.onload = function(){loadJQuery(setUp);};

})();

