
function overclose(){
	document.getElementById("map_over").style.display = "none";
}
function infoclose(){
	document.getElementById("infomation").style.display = "none";
}


var map, httpObj;
var rangeCatch,rangeStart;
var chara = new Array("A", "B", "C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
var urls = new Array();
var names = new Array();
var tels = new Array();
var addresses = new Array();
var charas = new Array();
var imgs = new Array();

window.onload = function() {
  
  map = new GMap2($("gmap"));
  
  map.setCenter(new GLatLng(lat, lng), 14);
  map.addControl(new GScaleControl());
  map.enableContinuousZoom();
  map.enableScrollWheelZoom();
  gGeo = new GClientGeocoder();
  
  // 移動終了イベント
  GEvent.addListener(map, "moveend", search, false);
  
  // チェックボックスイベント
  for(i=0;i<document.genre.category.length;i++){
    document.genre.category[i].onclick = function(){search();}
  }
  
  // 送信イベント
//  Event.observe($("geoName"), "keydown", function pressReturn(event){
//    if (event.keyCode == Event.KEY_RETURN) searchPoint();
//  }, false);
//  Event.observe($("submit"), "click", searchPoint, false);
  
  
  search();
  
  // ズームコントロールのドラッグイベント
  Event.observe($("range"), "mousedown", function(event){
    rangeCatch = true;
    rangeStart = Event.pointerX(event);
  }, false);
  
  //Event.observe($("zoomout"), "click", function(){map.zoomOut()}, false);
  Event.observe($("scale10"), "click", function(){map.setZoom(10)}, false);
  Event.observe($("scale11"), "click", function(){map.setZoom(11)}, false);
  Event.observe($("scale12"), "click", function(){map.setZoom(12)}, false);
  Event.observe($("scale13"), "click", function(){map.setZoom(13)}, false);
  Event.observe($("scale14"), "click", function(){map.setZoom(14)}, false);
  Event.observe($("scale15"), "click", function(){map.setZoom(15)}, false);
  Event.observe($("scale16"), "click", function(){map.setZoom(16)}, false);
  Event.observe($("scale17"), "click", function(){map.setZoom(17)}, false);
  Event.observe($("scale18"), "click", function(){map.setZoom(18)}, false);
  Event.observe($("scale19"), "click", function(){map.setZoom(19)}, false);
  //Event.observe($("zoomin"), "click", function(){map.zoomIn()}, false);
  
  Event.observe($("zoom"), "mouseup", function(){
    rangeCatch = false;
    map.setZoom((($("range").style.left.replace(/px$/, "") -0) / 75) + 10);
  }, true);
  
  Event.observe($("zoom"), "mousemove", displayXY, false);
  
}


// カーソル移動
function displayXY(event){
  if(rangeCatch == true){
    rangeLeft = (((map.getZoom() - 10) * 75)) + Event.pointerX(event) - rangeStart;
    
    if(rangeLeft < 0) rangeLeft = 0;
    if(rangeLeft > 675) rangeLeft = 675;
    
    var roundLeft = (Math.round(rangeLeft / 75)) * 75;
    $("range").style.left = roundLeft + 'px';
  }
}

function search(){

  $("searching").style.display = '';
  
  // ズームコントロールの位置変更
  $("range").style.left = ((map.getZoom() - 10) * 75) + 'px';
  
  map.clearOverlays();
  
  var zoom = map.getZoom();
  var x = Math.round((map.getCenter()).lng() * 1000000) / 1000000;
  var y = Math.round((map.getCenter()).lat() * 1000000) / 1000000;
  var rect = map.getBounds();
  var xrange = Math.round(rect.toSpan().lng() * 1000000) / 1000000;
  var yrange = Math.round(rect.toSpan().lat() * 1000000) / 1000000;
  
  //genre引き継ぎ
  var Mradi = document.getElementsByName("category");
  var genretype = "";
  for(var i=0; i<Mradi.length; i++){
    if (Mradi[i].checked == true){
       genretype = Mradi[i].value;
    }
  }

  // データベースを取得
  var apiurl = "http://www.osaka-map.jp/xml/phonebook.php?x="+x+"&y="+y+"&xrange="+xrange+"&yrange="+yrange+"&type="+encodeURI(genretype);
  
  httpObj = GXmlHttp.create();
  httpObj.open("get", apiurl);
  httpObj.onreadystatechange = function() {
    if ((httpObj.readyState == 4) && (httpObj.status == 200)) addMarker();
  }
  httpObj.send(null);
  
  // ドコイク表示
  //DokoikuPoint();
  
  // 逆ジオコード
  regeocode(genretype);
}

// 逆ジオコード
function regeocode(genretype){
  $("h1").innerHTML = '';
  $("h2").innerHTML = '';
  
  geocoder = new GClientGeocoder();
  var x = (map.getCenter()).lng();
  var y = (map.getCenter()).lat();
  
  var latlng = new GLatLng(y, x);
  
  geocoder.getLocations(latlng, function dispResult(addresses){
    if (addresses.Status.code == G_GEO_SUCCESS){
      var address = addresses.Placemark[0].address.replace(/^日本/,"").replace(/Japan/,"").replace(/,/g,"").replace(/Prefecture/,"");
      $("h1").innerHTML = address + "周辺の";
      $("h2").innerHTML = address + "周辺の";
    }
    $("h1").innerHTML += genretype + "の地図と電話番号";
    $("h2").innerHTML += "「" + genretype + "」情報を表示中";
  });
}

function addMarker() {
  //genre引き継ぎ
  var Mradi = document.getElementById("genre");
  var genretype = "";
  for(var i=0; i<Mradi.length; i++){
    if (Mradi[i].checked == true){
       genretype = Mradi[i].value;
    }
  }
  table = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\">\n";
  table += "<tr><td class=\"tag\">名称</td><td class=\"tag\">住所</td><td class=\"tag\">電話番号</td></tr>\n";
  var xmlData = httpObj.responseXML;
  var pointData = xmlData.getElementsByTagName("point");
  var lastx,lasty;
  var j = 0;
  for (var i=0; i<pointData.length; i++) {
    var mx = pointData[i].getElementsByTagName("x")[0].firstChild.nodeValue;
    var my = pointData[i].getElementsByTagName("y")[0].firstChild.nodeValue;
    var mname = pointData[i].getElementsByTagName("name")[0].firstChild.nodeValue;
    var maddress = pointData[i].getElementsByTagName("address")[0].firstChild.nodeValue;
    var mtel = pointData[i].getElementsByTagName("tel")[0].firstChild.nodeValue;
    if(mtel != "none"){
    	var ntel = ":"+mtel;
	}else{
		mtel = "";
		var ntel = "";
	}
    
    if(lastx != mx && lasty != my){
      
      if(j>25){moji = "";kigou="";} else {moji = chara[j];kigou=moji+". ";}
      if(chara[j]){Lower = chara[j].toLowerCase();} else {Lower = "none";}
      var pngs = "http://www.osaka-map.jp/img/mapicons/"+Lower+".png";
      
      var marker = new PdMarker(new GLatLng(my, mx));
      marker.setTooltip("<div class='info'><strong>"+kigou+mname+"</strong><br />"+maddress+"<br />"+mtel+"</div>");
      marker.ttLeft = 50;
      marker.ttTop = 150;
      map.addOverlay(marker);
      marker.setImage(pngs);
      
      // クリックしたら情報表示
      GEvent.addListener(marker, "click", function(markerObj) {
        //map.panTo(markerObj);
        //window.open("/sh/"+genretype+"/"+names[markerObj]+":"+tels[markerObj]+".html","shop_info", "location=yes, status=yes, menubar=yes, toolbar=yes, scrollbars=yes, resizable=yes");
        
        document.getElementById("infomation").style.display = "block";
        $("infomation_shop").innerHTML = '<a href="/sh/'+genretype+'/'+names[markerObj]+':'+tels[markerObj]+'.html" target=\"_blank\">'+names[markerObj]+'</a><br />'+addresses[markerObj]+'<br />'+tels[markerObj];
        
      });
      
      // マウスオーバーしたら右側に情報を表示
      names["("+(my*1)+", "+(mx*1)+")"] = mname.replace('(代)','');
      tels["("+(my*1)+", "+(mx*1)+")"] = mtel;
      addresses["("+(my*1)+", "+(mx*1)+")"] = maddress;
      charas["("+(my*1)+", "+(mx*1)+")"] = pngs;
      
      GEvent.addListener(marker, "mouseover", function(markerObj) {
        $("target_name").innerHTML = '<span class="marker" style="background-image: url('+charas[markerObj]+')"></span><a href="/sh/'+genretype+'/'+names[markerObj]+':'+tels[markerObj]+'.html" target="_blank">'+names[markerObj]+'</a>';
        $("target_address").innerHTML = addresses[markerObj];
        $("target_tel").innerHTML = 'TEL:' + tels[markerObj];
      });
      
      
      j++;
    } else {
      pngs = "";
    }

    table += "<tr><td><span class=\"marker\" style=\"background-image: url("+pngs+");\"></span><a href=\"/sh/"+genretype+"/"+mname+ntel+".html\" target=\"_blank\">"+mname+"</a></td><td>"+maddress+"</td><td>"+mtel+"</td></tr>\n";
    
    lastx = mx;
    lasty = my;
  }
  table += "</table>\n";
  
  $("result").innerHTML = table;
  
  $("searching").style.display = 'none';
}

// 表示場所検索
//function searchPoint() {
//  var address = $("geoName").value;
//  gGeo.getLatLng(address, function checkGeo(point) {
//   if (point) {
//      map.setCenter(point, 15);
//   }
// });
//}

// ドコイク表示
function DokoikuPoint(){
  var lastx,lasty;
  for (var i in Dokoiku) {
    var madTitle = Dokoiku[i]['adTitle'];
    var madText1 = Dokoiku[i]['adText1'];
    var madText2 = Dokoiku[i]['adText2'];
    var madUrl = Dokoiku[i]['adUrl'];
    var mpicUrl = Dokoiku[i]['picUrl'];
    var mpositionX = Dokoiku[i]['positionX'];
    var mpositionY = Dokoiku[i]['positionY'];
    
    urls["("+mpositionY+", "+mpositionX+")"] = madUrl;
    
    if(!madTitle){break;}
    
    var imgNo;
    if(i < 9){imgNo = '0' + ((i * 1) + 1);} else {imgNo = 10;}
    var pngs = "http://www.osaka-map.jp/img/admark/admark_"+ imgNo +".png";
    
    if(mpositionX > 0 && mpositionY > 0 && lastx != mpositionX && lasty != mpositionY){
      var marker = new PdMarker(new GLatLng(mpositionY, mpositionX));
      marker.setTooltip("<div class='info'>[PR] <strong>"+madTitle+"</strong><br />"+madText1+madText2+"</div>");
      marker.ttLeft = 50;
      marker.ttTop = 150;
      map.addOverlay(marker);
      marker.setImage(pngs);
      
      // クリックでジャンプ
      GEvent.addListener(marker, "click", function(markerObj) {
        window.open(urls[markerObj], "chizulla_info", "location=yes, status=yes, menubar=yes, toolbar=yes, scrollbars=yes, resizable=yes");
      });
      
      // マウスオーバーしたら右側に情報を表示
      
      names["("+(mpositionY*1)+", "+(mpositionX*1)+")"] = madTitle;
      urls["("+(mpositionY*1)+", "+(mpositionX*1)+")"] = madUrl;
      tels["("+(mpositionY*1)+", "+(mpositionX*1)+")"] = madText2;
      addresses["("+(mpositionY*1)+", "+(mpositionX*1)+")"] = madText1;
      charas["("+(mpositionY*1)+", "+(mpositionX*1)+")"] = pngs;
      imgs["("+(mpositionY*1)+", "+(mpositionX*1)+")"] = mpicUrl;
      
      GEvent.addListener(marker, "mouseover", function(markerObj) {
        $("target_name").innerHTML = '<span class="admarker" style="background-image: url('+charas[markerObj]+');"></span>[PR]<a href="'+urls[markerObj]+'" target="_blank">'+names[markerObj]+'</a>';
        $("target_address").innerHTML = addresses[markerObj]+tels[markerObj];
        $("target_tel").innerHTML = '<span style="width: 160px;text-align:center;"><a href="'+urls[markerObj]+'" target="_blank"><img src="'+imgs[markerObj]+'" width="120" height="60" alt="'+names[markerObj]+'" /></a></span>';
      });
    }
    
    lastx = mpositionX;
    lasty = mpositionY;
  }
}

function adwindowClose(){
  $("adwindow1").style.display = "none";
  $("adwindow2").style.display = "none";
}

function jumpURL(url){
  window.open(url, null);
}
