document.write("<script language='JavaScript' type='text/javascript' src='rateaj/js/uai.js'></script>");
document.write("<script language='JavaScript' type='text/javascript' src='rateaj/js/config.js'></script>");
document.write("<script language='JavaScript' type='text/javascript' src='rateaj/js/util.js'></script>");
document.write("<script language='JavaScript' type='text/javascript' src='rateaj/js/rate.js'></script>");
document.write("<script language='JavaScript' type='text/javascript' src='rateaj/js/time.js'></script>");

var isClicked = false;
var view = new Object();

view.Contoroller = Class.create({
    /**
     * コンストラクタ.
     */
    initialize: function() {
        // ペ綵uFFFDジコン繝\uFFFD繝\uFFFD全て読み込んだタイミングで以下綵uFFFD処逅\uFFFD\uFFFD実行を開始す繧\uFFFD
        document.observe('dom:loaded', function() {
            // 画面表示用モ繝\uFFFDを取蠕\uFFFD
            view.contoroller.model = new view.Model();
            view.contoroller.uai = new UAIdentifier();
            view.contoroller.tmp = '';
        });
    },
    /**
     * 画像がクリ繝\uFFFDされた時の制御を行う.
     * @param $id 画像判別用ID
     */
    mouseClick: function($id) {
        if(!isClicked) {
            isClicked = true;
            // 画面のアイコン等綵uFFFD表示を藹uFFFDり替える
            view.contoroller.model.toggleView($id);
        }
        isClicked = false;
    },
    /**
     * レート表示部蛻\uFFFDマウスオーバ綵uFFFDした時綵uFFFD制御を行う.
     * @param縲\uFFFDート表示判別用ID
     */
    mouseOver: function($id) {
        // ブラウザがネスケとそれ以外で次の処逅\uFFFD\uFFFD蛻\uFFFD蛻\uFFFDを行う
        // ネスケの場合だけmouseorverとmouseoutの解釈が他ブラウザと違うようなので…
        if(view.contoroller.uai.netscape) {

            // ネスケの場合画面に本来は消えて縺\uFFFDはず綵uFFFD高藹uFFFDなどの諠\uFFFD\uFFFDが残ってしま縺\uFFFD\uFFFD合があるので
            // 荳\uFFFD非表示にしてから画面表示を行うようにする縲\uFFFD
            if(view.contoroller.tmp != $id) {
                view.contoroller.tmp = util.getContoryCode($id);
            }

            $clickedContoryCode = CLICKED_CONTORY_CODE;

            CONTORY_CODE.each(function($roopContoryCode){
                // クリ繝\uFFFD中の国と現在マウスオーバ綵uFFFDして縺\uFFFD国以外で表示されて縺\uFFFDも綵uFFFDは非表示に蛻\uFFFD替える
                if($clickedContoryCode != $roopContoryCode && view.contoroller.tmp != $roopContoryCode) {
                    // レート表示フラグがtrueの場蜷\uFFFD
                    if(util.isDisplay($clickedContoryCode+SEPARATE_UNDER+$roopContoryCode)) {
                        view.contoroller.model.toggleRateInfo($roopContoryCode, style_hide);
                    }
                }
            });
            view.contoroller.model.toggleRateInfo($id, style_disp);
        } else {
            // 画面のレート表示を藹uFFFDり替える
	        view.contoroller.model.toggleRateInfo($id, style_disp);
        }
    },
    /**
     * レート表示部蛻\uFFFDら綵uFFFDウスが外れた時の制御を行う.
     * @param縲\uFFFDート表示判別用ID
     */
    mouseOut: function($id) {
        // ブラウザがネスケとそれ以外で次の処逅\uFFFD\uFFFD蛻\uFFFD蛻\uFFFDを行う
        // ネスケの場合だけmouseorverとmouseoutの解釈が他ブラウザと違うようなので…
        if(view.contoroller.uai.netscape) {
            view.contoroller.model.toggleRateInfo($id, style_hide);
        } else {
            // 画面のレート表示を藹uFFFDり替える
            view.contoroller.model.toggleRateInfo($id, style_hide);
        }
    }
});

view.Model = Class.create({
    /**
     * コンストラクタ.
     */
    initialize: function() {
    },
    /**
     * 国画像をクリ繝\uFFFDした時綵uFFFD画面の表示・非表示の蛻\uFFFD替えを行います綵uFFFD
     * @param $id 国別キー(識別キー)
     */
    toggleView: function($id) {

        // $idからクリ繝\uFFFDされた国別キーを取蠕\uFFFD
        var $clickedContoryCode = util.getContoryCode($id);

        // rate.jsのグローバル変数にクリ繝\uFFFDされた国別キーをセ繝\uFFFD
        // (非同期でレート情報を書き換える時綵uFFFD判定に蠢\uFFFD\uFFFD
        CLICKED_CONTORY_CODE = $clickedContoryCode;

        var $eventId = 'img_'+$clickedContoryCode;

        // もし要邏\uFFFD\uFFFDロゴが既に会社ロゴ縺\uFFFDた藹uFFFD合綵uFFFD何もしな縺\uFFFD
        if($($eventId).src.indexOf(CONFIG_INFO['companyLogo'],0) > -1) {
            return;
        }

        // 国別IDキーでループさせる
        CONTORY_CODE.each(function($roopContoryCode){
            if($clickedContoryCode == $roopContoryCode) {
                // クリ繝\uFFFDされた国の画像を会社ロゴに変換
                util.changeImg($eventId, CONFIG_INFO['imgPath']+SEPARATE_DIR+CONFIG_INFO['companyLogo']);
                // 後ろの世界地図も書き換縺\uFFFD
                $img = CONFIG_INFO['worldMap'];
                util.changeBackgroundImg('mapBox', CONFIG_INFO['imgPath']+SEPARATE_DIR+$img['world_img_'+$roopContoryCode]);

                // クリ繝\uFFFDされた画像綵uFFFDレート情報を消す
                Display.rateInfoUpperBoxDispOrHide($roopContoryCode, style_hide);
                Display.rateInfoLowerBoxDispOrHide($roopContoryCode, style_hide);

            } else {
                // 会社ロゴの場合綵uFFFD国のアイコンを藹uFFFDに戻縺\uFFFD
                if($('img_'+$roopContoryCode).src.indexOf(CONFIG_INFO['companyLogo'],0) > -1) {
                    $img = CONFIG_INFO['worldMap'];
                    util.changeImg('img_'+$roopContoryCode, CONFIG_INFO['imgPath']+SEPARATE_DIR+$img['contory_img_'+$roopContoryCode]);
                }

                // レート情報の初期蛹\uFFFD
                Display.initRateInfo($roopContoryCode);

                // レート表示フラグがtrueの場蜷\uFFFD
                if(util.isDisplay($clickedContoryCode+SEPARATE_UNDER+$roopContoryCode)) {
                     // 表示名を蛻\uFFFD替えま縺\uFFFD
                     var $currencyPairName = util.getCurrencyPairName($clickedContoryCode, $roopContoryCode);
                     util.writeHTML('name_'+$roopContoryCode, $currencyPairName);

                     // レートを表示
                     Display.render($clickedContoryCode, $roopContoryCode);

                     // 表示OFFになって縺\uFFFDも綵uFFFDをONにする
                     Display.rateInfoUpperBoxDispOrHide($roopContoryCode, style_disp);
                     // 下段はOFFのまま
                     Display.rateInfoLowerBoxDispOrHide($roopContoryCode, style_hide);
                } else {
                     // 表示しな縺\uFFFD\uFFFDに画面に要邏\uFFFD表示されて縺\uFFFD場合綵uFFFD全て非表示にする
                     Display.rateInfoUpperBoxDispOrHide($roopContoryCode, style_hide);
                     Display.rateInfoLowerBoxDispOrHide($roopContoryCode, style_hide);
                }
            }
        });
    },
    /**
     * レート情報フィールドにマウスが来たとき綵uFFFD画面表示縲\uFFFD表示の蛻\uFFFD替えを行いま縺\uFFFD
     * @param $id 国別キー(識別キー)
     * @param $mode none(非表示) or block(表示)
     */
    toggleRateInfo: function($id, $mode) {
        var $countoryCode = '';
        // $idが数値の場蜷\uFFFD
        if(!isNaN($id)) {
            $countoryCode = util.getContoryCode($id);
        } else {
            $countoryCode = $id;
        }
        Display.rateInfoLowerBoxDispOrHide($countoryCode, $mode);
    }
});

Display = {
    /**
     * 画面にサーバ綵uFFFDから取得してくるレート情報の反映させま縺\uFFFD
     * @param $clickedContoryCode 現在クリ繝\uFFFDされて縺\uFFFD国別キー
     * @param $roopContoryCode 今回レート情報蛻\uFFFD替え対象の国別キー
     */
    render: function($clickedContoryCode, $roopContoryCode) {

        // 通貨ペアコードを取蠕\uFFFD
        var $currencyPairCode = util.getCurrencyPairCode($clickedContoryCode, $roopContoryCode);

        // レート情報を取蠕\uFFFD
        var $record = util.getRateRecord($currencyPairCode);

        // 表示繝\uFFFDスト文險\uFFFD初期蛹\uFFFD---)
        var $bid = no_rate;
        var $ask = no_rate;
        var $open = no_rate;
        var $high = no_rate;
        var $low = no_rate;

        //縲\uFFFDート情報があれ綵uFFFD表示用の処逅\uFFFD行う
        if($record != null) {
            $bid = $record['bid'];
            $ask = $record['ask'];
            $open = $record['open'];
            $high = $record['high'];
            $low = $record['low'];

            // bidとaskは前回諠\uFFFD\uFFFDと比霈\uFFFDして色も藹uFFFDり替える
            $oldBid = $('bid_'+$roopContoryCode).innerHTML;
            $oldAsk = $('ask_'+$roopContoryCode).innerHTML;

            if($oldBid != no_rate) {
                switch(util.compareTo($oldBid, $bid)) {
                    case 0:
                        $('bid_'+$roopContoryCode).style.color='black';
                        $('bid_'+$roopContoryCode).style.fontWeight='normal';
                        break;
                    case 1:
                        $('bid_'+$roopContoryCode).style.color='blue';
                        $('bid_'+$roopContoryCode).style.fontWeight='bold';
                        break;
                    case -1:
                        $('bid_'+$roopContoryCode).style.color='red';
                        $('bid_'+$roopContoryCode).style.fontWeight='bold';
                        break;
                    default:
                        $('bid_'+$roopContoryCode).style.color='black';
                        $('bid_'+$roopContoryCode).style.fontWeight='normal';
                        break;
                }
            }

            if($oldAsk != no_rate) {
                switch(util.compareTo($oldAsk, $ask)) {
                    case 0:
                        $('ask_'+$roopContoryCode).style.color='black';
                        $('ask_'+$roopContoryCode).style.fontWeight='normal';
                        break;
                    case 1:
                        $('ask_'+$roopContoryCode).style.color='blue';
                        $('ask_'+$roopContoryCode).style.fontWeight='bold';
                        break;
                    case -1:
                        $('ask_'+$roopContoryCode).style.color='red';
                        $('ask_'+$roopContoryCode).style.fontWeight='bold';
                        break;
                    default:
                        $('ask_'+$roopContoryCode).style.color='black';
                        $('ask_'+$roopContoryCode).style.fontWeight='normal';
                        break;
                }
            }
        }
        util.writeHTML('bid_'+$roopContoryCode, $bid);
        util.writeHTML('ask_'+$roopContoryCode, $ask);
        util.writeHTML('open_'+$roopContoryCode, $open);
        util.writeHTML('high_'+$roopContoryCode, $high);
        util.writeHTML('low_'+$roopContoryCode, $low);
    },
    /**
     * 画面に表示されて縺\uFFFD通貨ペア名綵uFFFDbid、askの表示縲\uFFFD表示を行いま縺\uFFFD
     * @param $countoryCode 国別キー(識別キー)
     * @param $mode none(非表示) or block(表示)
     */
    rateInfoUpperBoxDispOrHide: function($countoryCode, $mode) {
        util.display('name_'+$countoryCode, $mode);
        util.display('bid_'+$countoryCode, $mode);
        util.display('space_'+$countoryCode, $mode);
        util.display('ask_'+$countoryCode, $mode);
        util.display('rateBox_'+$countoryCode, $mode);
    },
    /**
     * 画面に表示されて縺\uFFFD高藹uFFFD、安藹uFFFD、始藹uFFFDの表示縲\uFFFD表示を行いま縺\uFFFD
     * @param $countoryCode 国別キー(識別キー)
     * @param $mode none(非表示) or block(表示)
     */
    rateInfoLowerBoxDispOrHide: function($countoryCode, $mode) {
        util.display('open_disp_'+$countoryCode, $mode);
        util.display('high_disp_'+$countoryCode, $mode);
        util.display('low_disp_'+$countoryCode, $mode);
        util.display('open_'+$countoryCode, $mode);
        util.display('high_'+$countoryCode, $mode);
        util.display('low_'+$countoryCode, $mode);
        
        if($mode == style_hide)
			$('rateBox_'+$countoryCode).style.height = "28px";
		else
			$('rateBox_'+$countoryCode).style.height = "58px";	//before 68px
    },
    /**
     * レート表示部蛻\uFFFD\uFFFD初期化を行いま縺\uFFFD
     * @param $countoryCode 国別キー(識別キー)
     */
    initRateInfo: function($countoryCode) {
        util.writeHTML('name_'+$countoryCode, '');
        util.writeHTML('bid_'+$countoryCode, no_rate);
        util.writeHTML('ask_'+$countoryCode, no_rate);
        util.writeHTML('open_'+$countoryCode, no_rate);
        util.writeHTML('high_'+$countoryCode, no_rate);
        util.writeHTML('low_'+$countoryCode, no_rate);

        $('bid_'+$countoryCode).style.color = font_black;
        $('bid_'+$countoryCode).style.fontWeight = weight_normal;
        $('ask_'+$countoryCode).style.color = font_black;
        $('ask_'+$countoryCode).style.fontWeight = weight_normal;
    }
};
view.contoroller = new view.Contoroller();

function init() {
rate_loaded();
time_loaded();
}

function rate_loaded() {
var rate = new Rate();
rate.ajaxRequest();
setTimeout(rate_loaded, CALL_RATE_TIMEER);
}

function time_loaded() {
var time = new timeZone();
time.update_watch();
setTimeout(time_loaded, CALL_WATCH_TIMMER);
}