var utloop = {
    '$': function(id) {
        return document.getElementById(id);
    },

    'data': function(str) {
        if (String(str).match(/^[a-z0-9,]+$/)) {
            return str;
        }
        else {
            return null;
        }
    },

    'username': function(str) {
        if (str == null) str = '';
        return String(str).replace('\'', '\\\'');
    },

    'num': function(v, d) {
        return typeof v == 'number' ? v : d;
    },

    'getquery': function() {
        if (1 < location.search.length) {
            return this.parsequery(location.search.substr(1));
        }
        return {};
    },

    'parsequery': function(str) {
        var q = {};
        var nvp = str.split('&');
        for (var i = 0; i < nvp.length; i++) {
            var nv = nvp[i].split('=');
            if (nv[1] != null && nv[1].match(/^[0-9\.]+$/)) {
                nv[1] = Number(nv[1]);
            }
            else if (nv[1] == 'true' || nv[1] == 'false') {
                nv[1] = nv[1] == 'true' ? true : false;
            }
            else {
                nv[1] = decodeURIComponent(nv[1]);
            }
            q[decodeURIComponent(nv[0])] = nv[1];
        }
        return q;
    }
};
