function escapeUTF8(str){
  return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){
    var c=s.charCodeAt(0);
    return (c<16?"%0"+c.toString(16):c<128?"%"+c.toString(16):c<2048?"%"+(c>>6|192).toString(16)+"%"+(c&63|128).toString(16):"%"+(c>>12|224).toString(16)+"%"+(c>>6&63|128).toString(16)+"%"+(c&63|128).toString(16)).toUpperCase()
  })
}

function jumpFromTop(formid) {
  document.charset='UTF-8';
  //var jumpto = 'http://lbs-stg.mapion.co.jp/map/uc/PoiAttr?';
  var jumpto = 'http://lbs.mapion.co.jp/map/uc/PoiAttr?';
//  var jumpto ='http://uniqlo.donotfree.com/shop20090327/test.php?';
  // フォームの値をチェック
  var elements = document.forms[formid].elements;
  var item_codes = '';
  var tcodes = '';
  var sgrp = false;
  var eki = false;
  var rosen = false;
  var keyword = false;
  if(elements) {
    var j=0, k=0, l=0;
    for(var i=0; i < elements.length; i++) {
// シングルクォート、ダブルクォート対策
//      e.value = e.value.toString().split('"').join('”'); // 全部置換
//      e.value = e.value.toString().split("'").join("’"); // 全部置換
      var e = elements[i];	
      var utf8str = escapeUTF8(e.value);
      if(e.value.length <= 0) continue;
      if(e.type == 'checkbox') {
        if(e.checked) {
          if(e.name.match('item_code')) {
//            if(k>0) item_codes += ',';
            if(k>0) item_codes += ' ';
            item_codes += '^'+e.value;
            j++; k++;
          } else if(e.name.match('tcode')) {
            if(l>0) tcodes += ',';
            tcodes += e.value;
            j++; l++;
          } else {
            if(j>0) jumpto += '&';
            jumpto += e.name+'='+e.value;
            j++;
          }
        }
      } else if(e.type == 'radio') {
        if(e.checked) {
          if(j>0) jumpto += '&';
          jumpto += e.name+'='+e.value;
          j++;
        }
      } else if(e.type == 'select') {
        if(j>0) jumpto += '&';
        jumpto += e.name+'='+e.value;
        j++;
      } else {
        if(e.name.match('genre1_name')) {
          if(!e.value.match('路線名で検索')) {
            if(j>0) jumpto += '&';
            //jumpto += e.name+'=%25'+e.value+'%25';
            //jumpto += '&rosen'+'=%25'+e.value+'%25';
            jumpto += e.name+'=%25'+utf8str+'%25';
            jumpto += '&rosen'+'=%25'+utf8str+'%25';
            sgrp = true; rosen = true;
            j++;
          }
        } else if(e.name.match('poi_name')) {
          if(!e.value.match('駅名で検索')) {
            var withouteki = escapeUTF8(e.value);
            if(e.value.match('駅$')) {
              withouteki = e.value.replace(new RegExp('駅'),new String(''));
              withouteki = escapeUTF8(withouteki);
            }
            if(j>0) jumpto += '&';
            //jumpto += e.name+'=%25'+e.value+'%25';
            jumpto += e.name+'=%25'+withouteki+'%25';
            //jumpto += '&eki=%25'+e.value+'%25';
            jumpto += '&eki=%25'+utf8str+'%25';
            sgrp = true; eki = true;
            j++;
          }
        } else if(e.name.match('q')) {
          if(!e.value.match('フリーワードで検索')) {
            if(j>0) jumpto += '&';
            //jumpto += e.name+'=%25'+e.value+'%25';
            //jumpto += e.name+'='+e.value;
            jumpto += e.name+'='+utf8str;
            keyword = true;
            j++;
          }
        } else {
          if(j>0) jumpto += '&';
          jumpto += e.name+'='+e.value;
          j++;
        }
      }
    }
  }
  if(item_codes.length > 0) {
    jumpto += '&item_code='+item_codes;
  }
  if(tcodes.length > 0) {
    jumpto += '&tcode='+tcodes;
  }
  if(sgrp) {
    jumpto += '&sgrp=st01';
  }
//  if(!eki && !rosen && keyword) {
//    //jumpto += '&srt=poi_name_yomi';
//    jumpto += '&srt=kencode,kw_yomi';
//  } else {
//    jumpto += '&srt=genre1_code,genre_relate_order';
//    jumpto += '&pm=500';
//  }
  if(eki || rosen) {
    jumpto += '&srt=genre1_code,genre_relate_order';
    jumpto += '&pm=500';
  } else {
    jumpto += '&srt=kencode,kw_yomi';
  }
// デバッグ用
//alert(jumpto);

  location.href = jumpto;

  return(false);
}

function jumpFromFlash(kencode, mstr) {
  var formid = 'sform';
  document.charset='UTF-8';
  //var jumpto = 'http://lbs-stg.mapion.co.jp/map/uc/PoiAttr?';
  var jumpto = 'http://lbs.mapion.co.jp/map/uc/PoiAttr?';
//  var jumpto ='http://uniqlo.donotfree.com/shop20090327/test.php?';
  // フォームの値をチェック
  var elements = document.forms[formid].elements;
  var item_codes = '';
  var tcodes = '';
  var sgrp = false;
  var eki = false;
  var rosen = false;
  var keyword = false;
  if(elements) {
    var j=0, k=0, l=0;
    for(var i=0; i < elements.length; i++) {
// シングルクォート、ダブルクォート対策
//      e.value = e.value.toString().split('"').join('”'); // 全部置換
//      e.value = e.value.toString().split("'").join("’"); // 全部置換
      var e = elements[i];	
      var utf8str = escapeUTF8(e.value);
      if(e.value.length <= 0) continue;
      if(e.type == 'checkbox') {
        if(e.checked) {
          if(e.name.match('item_code')) {
//            if(k>0) item_codes += ',';
            if(k>0) item_codes += ' ';
            item_codes += '^'+e.value;
            j++; k++;
          } else if(e.name.match('tcode')) {
            if(l>0) tcodes += ',';
            tcodes += e.value;
            j++; l++;
          } else {
            if(j>0) jumpto += '&';
            jumpto += e.name+'='+e.value;
            j++;
          }
        }
      } else if(e.type == 'radio') {
        if(e.checked) {
          if(j>0) jumpto += '&';
          jumpto += e.name+'='+e.value;
          j++;
        }
      } else if(e.type == 'select') {
        if(j>0) jumpto += '&';
        jumpto += e.name+'='+e.value;
        j++;
      } else {
        if(e.name.match('genre1_name')) {
          if(!e.value.match('路線名で検索')) {
            if(j>0) jumpto += '&';
            //jumpto += e.name+'=%25'+e.value+'%25';
            //jumpto += '&rosen'+'=%25'+e.value+'%25';
            jumpto += e.name+'=%25'+utf8str+'%25';
            jumpto += '&rosen'+'=%25'+utf8str+'%25';
            sgrp = true; rosen = true;
            j++;
          }
        } else if(e.name.match('poi_name')) {
          if(!e.value.match('駅名で検索')) {
            var withouteki = e.value;;
            if(e.value.match('駅$')) {
              withouteki = e.value.replace(new RegExp('駅'),new String(''));
              withouteki = escapeUTF8(withouteki);
            }
            if(j>0) jumpto += '&';
            //jumpto += e.name+'=%25'+e.value+'%25';
            jumpto += e.name+'=%25'+withouteki+'%25';
            //jumpto += '&eki=%25'+e.value+'%25';
            jumpto += '&eki=%25'+utf8str+'%25';
            sgrp = true; eki = true;
            j++;
          }
        } else if(e.name.match('q')) {
          if(!e.value.match('フリーワードで検索')) {
            if(j>0) jumpto += '&';
            //jumpto += e.name+'=%25'+e.value+'%25';
            //jumpto += e.name+'='+e.value;
            jumpto += e.name+'='+utf8str;
            keyword = true;
            j++;
          }
        } else {
          if(j>0) jumpto += '&';
          jumpto += e.name+'='+e.value;
          j++;
        }
      }
    }
  }
  if(item_codes.length > 0) {
    jumpto += '&item_code='+item_codes;
  }
  if(tcodes.length > 0) {
    jumpto += '&tcode='+tcodes;
  }
  if(sgrp) {
    jumpto += '&sgrp=st01';
  }
//  if(!eki && !rosen && keyword) {
//    //jumpto += '&srt=poi_name_yomi';
//    jumpto += '&srt=kencode,kw_yomi';
//  } else {
//    jumpto += '&srt=genre1_code,genre_relate_order';
//    jumpto += '&pm=500';
//  }
  if(eki || rosen) {
    jumpto += '&srt=genre1_code,genre_relate_order';
    jumpto += '&pm=500';
  } else {
    jumpto += '&srt=kencode,kw_yomi';
  }
  jumpto += '&kencode='+kencode;
  if(mstr) {
    jumpto += '&city_name='+escapeUTF8(mstr);
  }
// デバッグ用
//alert(jumpto);

  location.href = jumpto;

  return(false);
}

