下記のコードは、1分ごとに"和暦"と"西暦"に切り替わる『(カレンダー機能付き)デジタル時計』で、
マウスポインターの動きに合わせて付いて行くものですが、問題があるのです。
更新させると、西暦に比べて和暦の移動速度が極端に遅くなる(重くなる)のです。
ブラウザは、IE11です。
この重さの問題を解決したいのですが、コードをどのように書き換えればいいのでしょうか。
以前にも同じ質問をしたのですが、別コードのためにコードの組み立てができません。
分かる方は、教えていただけないでしょうか。よろしくお願いします。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>文字マウスストーカー</title>

<style type="text/css">
body {background-color: black;}

#myText {
    font-style: italic;
    font-weight: bold;
    font-family: 'comic sans ms', verdana, arial;
    color: gold;
    position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;
}
#myText div {position: relative;}
#myText div div {position: absolute;top: 0;left: 0;text-align: center;}
</style>

<script type="text/javascript">
<!--
/* Circling text trail- Tim Tilton
 Website: http://www.tempermedia.com/
 Visit: http://www.dynamicdrive.com/ for Original Source and tons of scripts
 Modified Here for more flexibility and modern browser support
 Modifications as first seen in http://www.dynamicdrive.com/forums/
 username:jscheuer1 - This notice must remain for legal use
 */

;(function(){

    var msg = "";
    var size = 24;
    var circleY = 0.75; var circleX = 2;
    var letter_spacing = 5;
    var diameter = 10;
    var rotation = 0.4;
    var speed = 0.3;

    if (!window.addEventListener && !window.attachEvent || !document.createElement) return;

    msg = msg.split('');
    var n = msg.length - 1, a = Math.round(size * diameter * 0.208333), currStep = 20,
        ymouse = a * circleY + 20, xmouse = a * circleX + 20, y = [], x = [], Y = [], X = [],
        o = document.createElement('div'), oi = document.createElement('div'),
        b = document.compatMode && document.compatMode != "BackCompat"? document.documentElement : document.body,

    mouse = function(e){
        e = e || window.event;
        ymouse = !isNaN(e.pageY)? e.pageY : e.clientY; // y-position
        xmouse = !isNaN(e.pageX)? e.pageX : e.clientX; // x-position
    },

    makecircle = function(){ // rotation/positioning
        if(init.nopy){
            o.style.top = (b || document.body).scrollTop + 'px';
            o.style.left = (b || document.body).scrollLeft + 'px';
        };

        currStep -= rotation;

        for (var d, i = n; i > -1; --i){ // makes the circle
            d = document.getElementById('iemsg' + i).style;
            d.top = Math.round(y[i] + a * Math.sin((currStep + i) / letter_spacing) * circleY - 15) + 'px';
            d.left = Math.round(x[i] + a * Math.cos((currStep + i) / letter_spacing) * circleX) + 'px';
        };
    },

    drag = function(){ // makes the resistance

        var date = new Date();
        var mt = date.getMinutes();

        if( mt%2==0 ){

            var date = new Date(),
                m = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"),
                w = new Array("?", "?", "?", "?", "?", "?", "?"),

                month = m[date.getMonth()],
                day = date.getDate(),
                week = w[date.getDay()],

                Hour = date.getHours(),
                Min = date.getMinutes(),
                Sec = date.getSeconds();

            if(Min <= 9) { 
                Min = "0" + Min; 
            }
            if(Sec <= 9) { 
                Sec =  "0" +  Sec; 
            }

            var option = { year: '2-digit' };

            t = date.toLocaleDateString("ja-JP-u-ca-japanese", option).replace(/\u200e/g, "").replace(" ", "") +
                " " + month + day + "日" + " " + week + " " + Hour + ":" + Min + ":" + Sec;

        }else{

            var date = new Date(),
                w = new Array("Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"),
                m = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),

                day = date.getDate(),
                week = w[date.getDay()],
                year = date.getYear() + 1900,

                Hour = date.getHours(),
                Min = date.getMinutes(),
                Sec = date.getSeconds();

            if(Min <= 9) { 
                Min = "0" + Min; 
            }
            if(Sec <= 9) { 
                Sec =  "0" +  Sec; 
            }

            if((day == 1)||(day == 21)||(day == 31)){
                day=day+ "st";
            }
            else if((day == 2)||(day == 22)){
                day=day+ "nd";
            }
            else if((day == 3)||(day == 23)){
                day=day+ "rd";
            }
            else{
                day=day+ "th";
            }

            t = " " + week + " " + day + " " + m[date.getMonth()] + " " + year + "◆" + " " +  Hour + ":" + Min + ":" + Sec;

        }

        var currentLength = msg.length;

        // 状態の変更
        msg = t.split('');
        n = msg.length - 1;

        // 文字要素の変更
        for (var i = Math.max(currentLength, msg.length) - 1; i > -1; --i)
        {
            var d = i < currentLength ? document.getElementById('iemsg' + i) : null;

            if (d)
            {
                if (i < t.length)
                {
                    // 既存要素の内容変更
                    d.innerHTML = msg[i];
                }
                else
                {
                    // 不要になった要素の削除
                    d.parentElement.removeChild(d);
                }
            }
            else
            {
                // 不足要素の追加
                d = document.createElement('div');
                d.id = 'iemsg' + i;
                d.style.height = d.style.width = a + 'px';
                d.appendChild(document.createTextNode(msg[i]));
                oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0;
            }
        };

        y[0] = Y[0] += (ymouse - Y[0]) * speed;
        x[0] = X[0] += (xmouse - 20 - X[0]) * speed;

        for (var i = n; i > 0; --i){
            y[i] = Y[i] += (y[i-1] - Y[i]) * speed;
            x[i] = X[i] += (x[i-1] - X[i]) * speed;
        };

        makecircle();
    },

    init = function(){ // appends message divs, & sets initial values for positioning arrays

        if(!isNaN(window.pageYOffset)){
            ymouse += window.pageYOffset;
            xmouse += window.pageXOffset;
        } else init.nopy = true;

        for (var d, i = n; i > -1; --i){
            d = document.createElement('div'); d.id = 'iemsg' + i;
            d.style.height = d.style.width = a + 'px';
            d.appendChild(document.createTextNode(msg[i]));
            oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0;
        };

        o.appendChild(oi); document.body.appendChild(o);
        setInterval(drag, 25);
    },

    ascroll = function(){
        ymouse += window.pageYOffset;
        xmouse += window.pageXOffset;
        window.removeEventListener('scroll', ascroll, false);
    };

    o.id = 'myText'; o.style.fontSize = size + 'px';

    if (window.addEventListener){
        window.addEventListener('load', init, false);
        document.addEventListener('mouseover', mouse, false);
        document.addEventListener('mousemove', mouse, false);

        if (/Apple/.test(navigator.vendor))
            window.addEventListener('scroll', ascroll, false);
    }
    else if (window.attachEvent){
        window.attachEvent('onload', init);
        document.attachEvent('onmousemove', mouse);
    };
})();

// -->
</script>
</head>

<body></body>
</html>