/*
 *=============================================
 * ユーティリティオブジェクト
 *=============================================
 */
var Utils = {
    numberToHankaku: function(num){
        var replace = '1234567890';
        var from = '１２３４５６７８９０';

        var ret = '';
        var c;
        var n;
        for (var i=0; i<num.length; i++){
            c = num.charAt(i);
            n = from.indexOf(c,0);
            if (n >= 0)
                c = replace.charAt(n);
            ret += c;
        }
        return ret;
    },
    
    number_format: function(num){
        return num.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g, '$1,');
    },

    // クラス名から始めの文字列にマッチするものを返す
    matchClassName: function(element, name){
        var reg = new RegExp('^'+name);
        return Element.classNames(element).detect(function(value){
            return value.match(reg);
        });
    },

    // クラス名の始めにマッチする文字列を指定して残りの文字列を返す
    cutClassName: function(element, name){
        var matched = this.matchClassName(element, name);

        if (matched){
            var reg = new RegExp('^'+name);
            return matched.replace(reg, '');
        }
    },

    /*
     * 非同期メッセージ
     */
    announceHandler: null,
    announceLoading: function(message){
        Element.show('announce');
        if ($('announceBody'))
        $('announceBody').innerHTML = message;
        else
        $('announce').firstChild.innerHTML = message;
        if (this.announceHandler != null){
            clearTimeout(this.announceHandler);
        }
    },
    announceLoaded: function(message){
        Element.show('announce');
        if ($('announceBody'))
        $('announceBody').innerHTML = message;
        else
        $('announce').firstChild.innerHTML = message;
        if (this.announceHandler != null){
            clearTimeout(this.announceHandler);
        }
        this.announceHandler = setTimeout(this.announceLoadedEnd, 5000);
    },
    announceLoadedEnd: function(){
        Element.hide('announce');
    },

    initAnnounce: function(){
        if (this.announceHandler != null){
            clearTimeout(this.announceHandler);
        }
        this.announceHandler = setTimeout(this.announceLoadedEnd, 7000);
    }
}

/*
 * メッセージ初期値のタイムアウト設定
 */
Event.observe(window, 'load', Utils.initAnnounce.bind(Utils));

