    var map, moveendlistener, res, page = 1, total_count = 0;
    var cat1 = 1, koyou_keitai = 1;

    function load() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        // 左上のズームなどのコントロール
        map.addControl(new GLargeMapControl());
        // 右上の衛星写真等との切り替え
        map.addControl(new GMapTypeControl());
        // 右下のサブウィンドウ
        map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(37.892196, 139.020996), 5);

        addMarker();
        moveendlistener = GEvent.addListener(map, "moveend", mapMoveEnd );

        // マーカーをクリックした時に停止したmoveend処理を再開
        GEvent.addListener(map, "infowindowclose", afterInfoWindowClose );

	// 情報ウィンドウを開いたときの画面更新を回避
	GEvent.addListener(map, "infowindowopen", afterInfoWindowOpen );
      }
    }

    function mapMoveEnd(){
      page = 1;
      addMarker();
    }

    function afterInfoWindowOpen(){
      GEvent.removeListener(moveendlistener);
    }

    function afterInfoWindowClose(){
      moveendlistener = GEvent.addListener(map, "moveend", mapMoveEnd );
    }

    function moveArea(select){
      if(select == 2){
	// 北海道
        map.setZoom(7);
        map.panTo(new GLatLng(43.612216, 142.910156));
      }else if(select == 3){
	// 北東北
        map.setZoom(8);
        map.panTo(new GLatLng(40.174676,140.971069));
      }else if(select == 4){
	// 南東北
        map.setZoom(8);
        map.panTo(new GLatLng(38.061067,140.196533));
      }else if(select == 5){
	// 北陸
        map.setZoom(8);
        map.panTo(new GLatLng(36.712467,138.427734));
      }else if(select == 6){
	// 北関東
        map.setZoom(9);
        map.panTo(new GLatLng(36.341678,139.669189));
      }else if(select == 7){
	// 東京都
	map.setZoom(10);
        map.panTo(new GLatLng(35.680027,139.767208));
      }else if(select == 8){
	// 千葉
	map.setZoom(10);
        map.panTo(new GLatLng(35.433819,140.248718));
      }else if(select == 9){
	// 神奈川
	map.setZoom(10);
        map.panTo(new GLatLng(35.368895,139.364318));
      }else if(select == 10){
	// 甲信越
	map.setZoom(9);
        map.panTo(new GLatLng(35.559043,137.966308));
      }else if(select == 11){
	// 東海
	map.setZoom(10);
        map.panTo(new GLatLng(34.946739,137.026977));
      }else if(select == 12){
	// 北近畿
	map.setZoom(9);
        map.panTo(new GLatLng(35.065973,135.648193));
      }else if(select == 13){
	// 南近畿
	map.setZoom(9);
        map.panTo(new GLatLng(34.179997,135.856933));
      }else if(select == 14){
	// 大阪・神戸
	map.setZoom(10);
        map.panTo(new GLatLng(34.750639,135.362548));
      }else if(select == 15){
	// 中国
	map.setZoom(8);
        map.panTo(new GLatLng(34.840858,133.198242));
      }else if(select == 16){
	// 四国
	map.setZoom(8);
        map.panTo(new GLatLng(33.724339,133.577270));
      }else if(select == 17){
	// 九州
	map.setZoom(8);
        map.panTo(new GLatLng(32.314991,131.066894));
      }else if(select == 18){
	// 沖縄
	map.setZoom(9);
        map.panTo(new GLatLng(26.290952,127.768249));
      }
      addMarker();
    }

    function addMarker(select){
      if(select < 10){
        cat1 = select;
      }else if(select < 20){
        koyou_keitai = select - 10;
      }
      map.clearOverlays(); // 全てのマーカーを消去（線も消えるので注意）
      
      var bounds = map.getBounds();

      max_lng = bounds.getNorthEast().lng();
      min_lng = bounds.getSouthWest().lng();
      max_lat = bounds.getNorthEast().lat();
      min_lat = bounds.getSouthWest().lat();

      // 地図表示用
      //var str = "<table style=\"border: 1px solid\">";
      var str = "<table>";
      // var url = "http://www.driver-job.jp/map/geo.php?max_lng=" + max_lng + "&min_lng=" + min_lng + "&max_lat=" + max_lat + "&min_lat=" + min_lat;
      var url = "http://www.driver-job.jp/map/geo.php?max_lng=" + max_lng + "&min_lng=" + min_lng + "&max_lat=" + max_lat + "&min_lat=" + min_lat
              + "&cat1=" + cat1 + "&koyou_keitai=" + koyou_keitai + "&page=" + page;
      var request = GXmlHttp.create();
      request.open("GET", url, true);
      request.onreadystatechange = function(){
        if(request.readyState == 4) {
          eval("res = " + request.responseText);
          for(var i = 0; i < res.marker.length; i++){
            var lng = res.marker[i].lng;
            var lat = res.marker[i].lat;
            var id = res.marker[i].id;
            var source = res.marker[i].source;
            var salary_style = res.marker[i].salary_style;
            var is_keiken = res.marker[i].is_keiken;
            var is_shakaihoken = res.marker[i].is_shakaihoken;
            var is_age = res.marker[i].is_age;
            var is_seishain = res.marker[i].is_seishain;
            var is_haken = res.marker[i].is_haken;
            var is_mycar = res.marker[i].is_mycar;
            var is_kinmusaki_shikaku = res.marker[i].is_kinmusaki_shikaku;

            var image_file1 = res.marker[i].image_file1;
            
            var low_salary = res.marker[i].low_salary;
            if(low_salary == 0){
              low_salary = "";
            }else{
              low_salary += " 円";
            }
            var high_salary = res.marker[i].high_salary;
            if(high_salary == 0){
              high_salary = "";
            }else{
              high_salary += " 円";
            }
            var campaign_title = res.marker[i].campaign_title;
            var client_name = res.marker[i].client_name;
            var point = new GPoint(lng, lat);
            var marker = new GMarker(point);
            map.addOverlay(createMarker(point, id, campaign_title, client_name, source,
                                        is_keiken, is_shakaihoken, is_age, is_seishain, is_haken, is_mycar, is_kinmusaki_shikaku, 
                                        salary_style, low_salary, high_salary, image_file1));
            
            str += "<tr><td style=\"border:solid 1px #cccccc;\"><a href=\"#\" onClick=\"openIW(" + i + ")\">"
                 + campaign_title + "</a><br>"+ client_name + "<br>"
                 + low_salary + " ～ " + high_salary 
                 + "<div align=\"right\"><a href=\"http://www.driver-job.jp/campaign/" + id + "\" target=\"_blank\">[詳細]</a>"
                 + "</div></td></tr>";
          }
          str += "</table>";
          document.getElementById("result").innerHTML = str;
          try{
            total_count = res.marker[0].total_count;
            var next_count = 10;
            if(total_count < (page * 10 + 10)){
              next_count = total_count % 10;
            }
            var display_count = 10;
            if(total_count < (page * 10)){
              display_count = total_count;
            }else{
              display_count = page * 10;
            }
            
            var page_str = "";
            page_str += "<table width=\"190\"><tr>";

            if(page != 1){
              page_str += "<td align=\"left\"><a href=\"#\" onClick=\"prevPage()\">前の10件</a></td>";
            }else{
              page_str += "<td></td>";
            }
            if(total_count > page * 10){
              page_str += "<td align=\"right\"><a href=\"#\" onClick=\"nextPage()\">次の" + next_count + "件</a></td>";
            }else{
              page_str += "<td></td>";
            }
            page_str += "</tr></table>";
            //document.getElementById("pager").innerHTML = page_str;
            document.getElementById("pager2").innerHTML = page_str;
            
            var display_info = "";
            if(total_count > 0){
              display_info += "<font size=\"4\">" + total_count + "</font>" + " 件中 " + (((page - 1) * 10) + 1) + " - " + display_count + " 件を表示";
            }else{
              display_info += "表示中の範囲に求人情報はありません";
            }

            // by tz
            var display_info2 = "";
            display_info2 += "<table width=\"100%\">";
            display_info2 += "<tr>";
            display_info2 += "<td>";
            display_info2 += display_info;
            display_info2 += "</td>";
            display_info2 += "<td width=\"190\">";
            display_info2 += page_str;
            display_info2 += "</td>";
            display_info2 += "</tr>";
            display_info2 += "</table>";

            //document.getElementById("display_info").innerHTML = display_info;
            document.getElementById("display_info").innerHTML = display_info2;
          }catch(e){
            //document.getElementById("pager").innerHTML = "";
            document.getElementById("pager2").innerHTML = "";
            document.getElementById("display_info").innerHTML = "表示中の範囲に求人情報はありません";
          }
        }
      }
      request.send(null);
    }

    function prevPage(){
      page--;
      addMarker();
    }

    function nextPage(){
      page++;
      addMarker();
    }

    function createMarker(point, id, campaign_title, client_name, source, is_keiken, is_shakaihoken, is_age, is_seishain,
                          is_haken, is_mycar, is_kinmusaki_shikaku, salary_style, low_salary, high_salary, image_file1) {
      var marker = new GMarker(point);
      GEvent.addListener(marker, "click", function() {
        GEvent.removeListener(moveendlistener);
        if(is_keiken == 1){
          is_keiken = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/beginner.gif\" alt=\"未経験\"> ";
        }else{
          is_keiken = "";
        }
        if(is_shakaihoken == 1){
          is_shakaihoken = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/syaho.gif\" alt=\"社保完備\"> ";
        }else{
          is_shakaihoken = "";
        }
        if(is_age == 1){
          is_age = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/nenrei.gif\" alt=\"年齢不問\"> ";
        }else{
          is_age = "";
        }
        if(is_seishain == 1){
          is_seishain = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/seisyain.gif\" alt=\"正社員\"> ";
        }else{
          is_seishain = "";
        }
        if(is_haken == 1){
          is_haken = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/haken.gif\" alt=\"派遣\"> ";
        }else{
          is_haken = "";
        }
        if(is_mycar == 1){
          is_mycar = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/car.gif\" alt=\"マイカー通勤可\"> ";
        }else{
          is_mycar = "";
        }
        if(is_kinmusaki_shikaku == 1){
          is_kinmusaki_shikaku = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/nintei.gif\" alt=\"勤務先資格\"> ";
        }else{
          is_kinmusaki_shikaku = "";
        }

        var info = "<a href=\"http://www.driver-job.jp/campaign/" + id + "\"  target=\"_blank\">"
                 + campaign_title + "<br>" + client_name + "</a><br><br>"
                 + "<table><tr><td>情報元</td><td>" + source + "</td></tr>"
                 + "<tr><td>アイコン</td><td>" + is_haken + is_kinmusaki_shikaku + is_mycar + is_keiken + is_shakaihoken
                 + is_seishain + is_age + "</td></tr>"
                 + "<tr><td>賃金形態</td><td>" + salary_style + "</td></tr>"
                 + "<tr><td>給与</td><td>" + low_salary + " ～ " + high_salary + "</td></tr></table>";
        var photo = "<img src=\"http://www.driver-job.jp/photo/" + image_file1 + "\" width=\"200\"><br>"
                  + "<div align=\"center\"><a href=\"http://www.driver-job.jp/campaign/" + id + "\"  target=\"_blank\">"
                  + "詳細情報</a></div>";
        var tabList = [new GInfoWindowTab("求人情報", info), new GInfoWindowTab("写真", photo)];
        marker.openInfoWindowTabsHtml(tabList);
      });
      return marker;
    }

    function openIW(index){
      var is_keiken = "", is_shakaihoken = "", is_age = "", is_seishain = "", is_haken = "", is_mycar = "", is_kinmusaki_shikaku = "";
      GEvent.removeListener(moveendlistener);
      if(res.marker[index].is_keiken == 1) is_keiken = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/beginner.gif\" alt=\"未経験\"> ";
      if(res.marker[index].is_shakaihoken == 1) is_shakaihoken = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/syaho.gif\" alt=\"社保完備\"> ";
      if(res.marker[index].is_age == 1) is_age = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/nenrei.gif\" alt=\"年齢不問\"> ";
      if(res.marker[index].is_seishain == 1) is_seishain = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/seisyain.gif\" alt=\"正社員\"> ";
      if(res.marker[index].is_haken == 1) is_haken = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/haken.gif\" alt=\"派遣\"> ";
      if(res.marker[index].is_mycar == 1) is_mycar = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/car.gif\" alt=\"マイカー通勤可\"> ";
      if(res.marker[index].is_kinmusaki_shikaku == 1) is_kinmusaki_shikaku = "<img src=\"http://www.driver-job.jp/modules/mod_djsearch/nintei.gif\" alt=\"勤務先資格\"> ";

      var low_salary = res.marker[index].low_salary;
      if(low_salary == 0){
        low_salary = "";
      }else{
        low_salary += " 円";
      }
      var high_salary = res.marker[index].high_salary;
      if(high_salary == 0){
        high_salary = "";
      }else{
        high_salary += " 円";
      }
      var info = "<a href=\"http://www.driver-job.jp/campaign/" + res.marker[index].id + "\"  target=\"_blank\">"
               + res.marker[index].campaign_title + "<br>" + res.marker[index].client_name + "</a><br><br>"
               + "<table><tr><td>情報元</td><td>" + res.marker[index].source + "</td></tr>"
               + "<tr><td>アイコン</td><td>" + is_haken + is_kinmusaki_shikaku + is_mycar + is_keiken + is_shakaihoken
               + is_seishain + is_age + "</td></tr>"
               + "<tr><td>賃金形態</td><td>" + res.marker[index].salary_style + "</td></tr>"
               + "<tr><td>給与</td><td>" + low_salary + " ～ " + high_salary + "</td></tr></table>";
      var photo = "<img src=\"http://www.driver-job.jp/photo/" + res.marker[index].image_file1 + "\" width=\"200\"><br>"
               + "<div align=\"center\"><a href=\"http://www.driver-job.jp/campaign/" + res.marker[index].id + "\"  target=\"_blank\">"
               + "詳細情報</a></div>";
      var tabList = [new GInfoWindowTab("求人情報", info), new GInfoWindowTab("写真", photo)];
      map.openInfoWindowTabsHtml(new GLatLng(res.marker[index].lat, res.marker[index].lng), tabList);
      // alert(res.marker[index].client_name);
      
    }
