
/* gyoro JS Library */
var map;
var geocoder;
var marker;
var messages;
var categ_target;
var categ_depth;
var categ_depthall;
var categ_select;
categ_select = "";
var valid;

/* HTTP object の作成 */
function gyoroHttpRequest() {
  var XMLhttpObject = null;
  try{
    XMLhttpObject = new XMLHttpRequest();
  } catch(e) {
    try {
      XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e){
        return null;
      }
    }
  }
  return XMLhttpObject;
}

/* POSTメソッドによるデータの送信 */
function dataSend(d_func,d_args){
  var gyoro_poststr;
  gyoro_poststr = 'func=' + d_func;
  for  (i in d_args){
    gyoro_poststr += '&' + i + '=' + encodeURIComponent(d_args[i])
  }
  //送信部分
  request = gyoroHttpRequest();
  request.open("POST",'gyoromap_ajax.php');
  request.setRequestHeader("content-type","application/x-www-form-urlencoded;charset=UTF-8");
  //受信部分
  request.send(gyoro_poststr);
  if(window.opera || window.safari || window.mozes){
    request.onload = function () {
      dataReceive(d_func,request);
    }
  } else {
    request.onreadystatechange = function (){
      if(request.readyState == 4) {
        dataReceive(d_func,request);
      }
    }
  }
}

/* dataSendと連動したデータの受信 */
function dataReceive(func,request) {
  if(func == 'searchmarker') {
    var text        = "";
    /*レスポンスを取得する*/
    var xml_marker  = request.responseXML;
    var items       = xml_marker.getElementsByTagName('item') ;
    var pids        = xml_marker.getElementsByTagName('pid') ;
    var uptimes     = xml_marker.getElementsByTagName('uptime') ;
    var lngs        = xml_marker.getElementsByTagName('lng') ;
    var lats        = xml_marker.getElementsByTagName('lat') ;
    var titles      = xml_marker.getElementsByTagName('title') ;
    var comments    = xml_marker.getElementsByTagName('comment') ;
    var comdigests  = xml_marker.getElementsByTagName('comdigest') ;
    var comdigest2s = xml_marker.getElementsByTagName('comdigest2') ;
    var files       = xml_marker.getElementsByTagName('file') ;
    var thumbs      = xml_marker.getElementsByTagName('thumb') ;
    var files_path  = xml_marker.getElementsByTagName('file_path') ;
    var thumbs_path = xml_marker.getElementsByTagName('thumb_path') ;
    var prates      = xml_marker.getElementsByTagName('prate') ;
    var icons       = xml_marker.getElementsByTagName('icon') ;
    var nums        = xml_marker.getElementsByTagName('num') ;
    var stars       = xml_marker.getElementsByTagName('star') ;
    map.clearOverlays();
    for(i=0 ; i < items.length ; i++){
      var pid        = pids[i].firstChild.nodeValue;
      var uptime     = uptimes[i].firstChild.nodeValue;
      var lng        = lngs[i].firstChild.nodeValue;
      var lat        = lats[i].firstChild.nodeValue;
      var title      = titles[i].firstChild.nodeValue;
      var comment    = comments[i].firstChild.nodeValue;
      var comdigest  = comdigests[i].firstChild.nodeValue;
      var comdigest2 = comdigest2s[i].firstChild.nodeValue;
      var file       = files[i].firstChild.nodeValue;
      var thumb      = thumbs[i].firstChild.nodeValue;
      var file_path  = files_path[i].firstChild.nodeValue;
      var thumb_path = thumbs_path[i].firstChild.nodeValue;
      var prate      = prates[i].firstChild.nodeValue;
      var icon       = icons[i].firstChild.nodeValue;
      var num        = nums[i].firstChild.nodeValue;
      var star       = stars[i].firstChild.nodeValue;
      star = star.split("[");
      star = star.join("<");
      star = star.split("]");
      star = star.join(">");
      star2 = star.split("star2");
      star2 = star2.join("star3");
      var latlng     = new GLatLng(lat,lng);
      var message = "<div class='marker'>";
      message += "<a href='index.php?pid="+pid+"'>"+title+"</a><br />";
      message += "<img src='"+thumb_path+"' width='100' height='75' class='panorama'>";
      message += star2;
      message += "<br>";
      message += comdigest;
      if(num>1){
        message += "<br>（他"+(num-1)+"件）";
      }
      message += "</div>";
      messages[pid] = message;
      createMarker(map,latlng,pid,icon,title);
      text += "<div class='markertable'>";
      text += "<a href='index.php?pid="+pid+"'>";
      text += "<img src='"+thumb_path+"' width='100' height='75' class='panorama'>";
      text += "</a>";
      text += star;
      text += "<br /><a href='index.php?pid="+pid+"'>"+title+"</a>";
      text += " <a href=\"#gmap\" onclick=\"openInfoWin('"+pid+"')\">[地図]</a>";
      text += "<br />";
      text += comdigest2;
      text += "</div>";
    }
    document.getElementById("photolist").innerHTML = text;
  } else if(func == 'searchcateg') {
    categ_depth++;
    var targ = categ_target + categ_depth;
    /*レスポンスを取得する*/
    var xml_cate = request.responseXML;
    /*URIデコードする*/
    /*xml_cate = decodeURIComponent(xml_cate);*/
    var items  = xml_cate.getElementsByTagName('item') ;
    var names  = xml_cate.getElementsByTagName('name') ;
    var styles = xml_cate.getElementsByTagName('style') ;
    var ids    = xml_cate.getElementsByTagName('id') ;
    if(document.getElementById(targ)){
      document.getElementById(targ).options[0] = new Option('','');
      /*操作対象以下の階層のカテゴリーを初期化&不可視化*/
      for(j=categ_depthall; j>=categ_depth; j-- ) {
        var taisho = categ_target + j
        var num_opt = document.getElementById(taisho).options.length;
        document.getElementById(taisho).style.display = 'none';
        for ( k=num_opt; k>=0; k-- ) {
          document.getElementById(taisho).options[k] = null;
        }
      }
      if ( items.length>0 ) {
        /*操作対象の可視化とoption作成*/
        document.getElementById(targ).style.display = '';
        for(i=1 ; i <= items.length ; i++){
          var key = i - 1;
          document.getElementById(targ).options[i] = new Option(names[key].firstChild.nodeValue,ids[key].firstChild.nodeValue); 
					document.getElementById(targ).options[i].style.backgroundColor = styles[key].firstChild.nodeValue;
        }
      }
    }
		if(document.getElementById("photolist")){ // top page
	    setMarker();
		}
  }
}

/* 選択エリア内のマーカーを探して返す */
function setMarker(){
  center = map.getCenter();
　document.cookie = "ckcenter=" + center + ";expires=" + valid;
  gbounds = map.getBounds();
  args = new Array();
  args['SouthWest'] = gbounds.getSouthWest();
  args['NorthEast'] = gbounds.getNorthEast();
  args['zoom'] = map.getZoom();
　document.cookie = "ckzoom=" + args['zoom'] + ";expires=" + valid;
  args['categ_select'] = categ_select;
  dataSend('searchmarker',args);
  document.getElementById("scale").innerHTML = " 現在のスケール："+map.getZoom();
}


function load() {
  // cookie expiration
    valid = new Date();
    valid.setTime(valid.getTime() + (10 * 1000 * 60 * 60 * 24));
　　valid = valid.toGMTString();
	// acquire cookie
  if (GBrowserIsCompatible()) {
    marker = new Array();
    messages = new Array();
    geocoder = new GClientGeocoder();
    map = new GMap2(document.getElementById("map"));
    GEvent.addListener(map, "dragend", function(){setMarker();});
    GEvent.addListener(map, "zoomend", function(){setMarker();});
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GOverviewMapControl(),new GControlPosition(G_ANCHOR_BOTTOM_RIGHT));
    map.setCenter(new GLatLng(36.069793, 138.096964), 10);
  }
}

function searchAddr(){
  addr = document.getElementById("query").value;
  geocoder.getLatLng(addr, moveCenter);
}

function openInfoWin(pid){
  marker[pid].openInfoWindowHtml("<div style='width:200px'>"+messages[pid]+"</div>");
}

function createMarker(map,point,pid,iconid,titlename) {
  var icon = new GIcon();
  icon.image  = "images/"+iconid;
  if (iconid == "icon1.png"){
    icon.shadow = "images/shadow.png";
    icon.iconSize   = new GSize(32, 32);
    icon.shadowSize = new GSize(59, 32);
    icon.iconAnchor = new GPoint(16,32);
    icon.infoWindowAnchor = new GPoint(16,0);
  } else {
    icon.shadow = "images/shadow00.png";
    icon.iconSize   = new GSize(32, 32);
    icon.shadowSize = new GSize(39, 32);
    icon.iconAnchor = new GPoint(0,32);
    icon.infoWindowAnchor = new GPoint(16,0);
  }
  var opt = {icon:icon,title:titlename};
  marker[pid] = new GMarker(point,opt);
  map.addOverlay(marker[pid]);
  GEvent.addListener(marker[pid], "click", function() {
    marker[pid].openInfoWindowHtml("<div style='width:200px'>"+messages[pid]+"</div>");
  });
}

function moveCenter(latlng){
  if (latlng){
    map.setCenter(latlng, 14);
  }else{
    alert('住所が見つかりませんでした。');
  }
}

function utilWinOpen(id) {
  if( document.getElementById(id).style.display == "none"){
    document.getElementById(id).style.display = "";
  } else {
    document.getElementById(id).style.display = "none";
  }
}




function searchCate(target,depth,depthall) {
  categ_target = target;
  categ_depth = depth;
  categ_depthall = depthall;
  var id = categ_target + categ_depth;
  var search_id = document.getElementById(id).value;
  categ_select = search_id;

  /*実在項目が選択されたとき AJAX検索へ*/
  if ( search_id ) {
　　document.cookie = "ckctg=" + search_id + ";expires=" + valid;
    args = new Array();
    args['i'] = search_id;
    dataSend('searchcateg',args);
  /*一番上の空白が選択されたときは、それ以下を消す*/
  } else {
　　document.cookie = "ckctg=;expires=" + valid;
    for(j=categ_depthall; j>categ_depth; j-- ) {
      var taisho = categ_target + j
      var num_opt = document.getElementById(taisho).options.length;
      document.getElementById(taisho).style.display = 'none';
      for ( k=num_opt; k>=0; k-- ) {
        document.getElementById(taisho).options[k] = null;
      }
    }
		if(document.getElementById("photolist")){ // top page
	    setMarker();
		}
  }
}




// -----------------------------------------------------------------------------
// Globals for Gyoroair
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 115;    // This is Flash Player 9 Update 3
// -----------------------------------------------------------------------------




