function location_search(sSource) {
    /* 初期化処理 */
    var searchs = new Array();	/* アイテム配列を追加 */
    {
        var nCur = 0, nRet = 0, sSearch = sSource.substr(1), sName, sValue;
        nRet = sSearch.indexOf('=', nCur)		// 最初の'='を検索
        while(nRet >= 0) {
            // '='以前が変数名
            sName = sSearch.substring(nCur, nRet);
            nCur = nRet + 1;
            // 値を取り出す
            nRet = sSearch.indexOf('&', nCur);	// 変数の区切りを検索
            if (nRet == -1) nRet = sSearch.length + 1;		// なければ最後まで
            sValue = sSearch.substring(nCur, nRet);
            // 配列に格納
            searchs[sName] = sValue;
            // 次を検索
            nCur = nRet + 1;
            nRet = sSearch.indexOf('=', nCur);
        }
    }
    /* 値 */
    this.valueOf = function () {return sSource;}
    
    /* 値を取り出すメソッド */
    this.item = function (sVarname) {
        try {
            return searchs[sVarname];	//あれば返す
        } catch(e) {
            return '';				//なければ空文字を返す
        }
    }
    /* 要素数 */
    this.length   = function () {return searchs.length;}
    /* toString */
    this.toString = function () {return this.length + '';}
}