/**
 * URLのGETパラメータを配列に格納する関数
 *
 * @version 1.0
 * @author matsuo_ryuji@cyberagent.co.jp
 * @return Array
 *
 * 利用例：
 *   URLが http://www.example.com/exam.html?a=1&b=2 の場合。
 *
 *   var param = get_urlparam(); // GET値を取得し配列で返す
 *   var value_a = param.a;      // a=1 の部分
 *   var value_b = param.b;      // b=1 の部分
 */
var get_urlparam = function() {
    // GETパラメータを取得
    var query = window.location.search.substring(1);

    // 取得したパラメータを分解
    var params = query.split('&');

    // name=value を分解し配列に格納する
    var result = new Array();
    for (var i=0; i<params.length; i++) {
        var pos = params[i].indexOf('=');
        if (pos > 0) {
            var key = params[i].substring(0, pos);
            var value = params[i].substring(pos + 1);
            result[key] = value;
        }
    }

    // 取得結果を呼び出し元に返却
    return result;
}

/**
 * 連想配列からGETパラメータに変換する関数
 *
 * @version 1.0
 * @author matsuo_ryuji@cyberagent.co.jp
 * @param params 連想配列
 * @return String
 *
 * 利用例：
 *   連想配列が params = { a: "hello", b: "world" } の場合。
 *   var query = make_getquery(params);
 *   で query = "a=hello&b=world" と同義。
 */
var build_query = function(params) {
    var result = new Array();
    for (var key in params) {
        result.push(key + "=" + encodeURIComponent(params[key]));
    }
    return result.join("&");
}

/**
 * GETパラメータを引き継いで画面遷移する関数
 *
 * @version 1.0
 * @author matsuo_ryuji@cyberagent.co.jp
 * @param url 遷移先URL
 * 
 * 利用例：
 * 　<a href="javascript:void(0);" onclick="javascript:maintain_query('/new/new.cgi');">...</a>
 */
var maintain_query = function(url){
    if (!url) { return false; }
    var params = get_urlparam();
    var query = build_query(params);
    if (query) {
        location.href = url + "?" + query;
    } else {
        location.href = url;
    }
}

