var baseicon = new GIcon();
baseicon.shadow = "http://www.kyotokk.com/icon/mm_20_shadow.png";
baseicon.iconSize = new GSize(20,32);
baseicon.shadowSize = new GSize(20,32);
baseicon.iconAnchor = new GPoint(9,32);
baseicon.infoWindowAnchor = new GPoint(10,10);

var map = new GMap(document.getElementById("map"));
map.addControl(new GMapTypeControl());
map.addControl(new GLargeMapControl());
map.addControl(new GOverviewMapControl());
//バス停
var busstop;
var bu_la;
var bu_lo;
var bs_icon = new GIcon(baseicon);
bs_icon.image = "http://www.kyotokk.com/icon/marcador_granate.png";
bs_icon.transparent = "http://www.kyotokk.com/icon/marcador_granate.png";
var Bu_StraightLine = "";
var busstop1;
//駅
var station;
var st_la;
var st_lo;
var st_icon = new GIcon(baseicon);
st_icon.image = "http://www.kyotokk.com/icon/marcador_azul.png";
st_icon.transparent = "http://www.kyotokk.com/icon/marcador_azul.png";			
var station1;
var St_StraightLine = "";

//観光名所
var marker = new Array() ;
var html = new Array() ;
var i = 0;
var xml =  "xml/" + document.sel.xml.value +".xml";
var position = 0;
var name = document.sel.se.value;
var zoom = parseFloat(document.sel.zo.value);
var Center_Latitude;
var Center_Longitude;

var ic = new GIcon(baseicon);
ic.image = "";
ic.transparent = "";

if(document.sel.xml.value == "sakura"){
	ic.image = "http://www.kyotokk.com/icon/006.png";
	ic.transparent = "http://www.kyotokk.com/icon/006.png";
}else if(document.sel.xml.value == "momizi"){
	ic.image = "http://www.kyotokk.com/icon/011.png";
	ic.transparent = "http://www.kyotokk.com/icon/011.png";
}else {
	ic.image = "http://www.kyotokk.com/icon/marcador_amarillo.png";
	ic.transparent = "http://www.kyotokk.com/icon/marcador_amarillo.png";
}

var k_http = new JKL.ParseXML( xml );
var k_data = k_http.parse();


//ホテル・旅館
var jl_http = "http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2369034&pid=875930706&vc_url=http://www.jalan.net/cgi-bin/jalan/jweb/cjw0_90_1.cgi?yad_no=";
var jl_url = "http://jws.jalan.net/APIAdvance/HotelSearch/V1/?key=cyg1118f74cf0f&count=100&xml_ptn=1&l_area=" + parseFloat(document.sel.j_area.value);
var jl_count = 0;
var jl_marker = new Array() ;
var jl_html = new Array() ;
var jl_ic = new GIcon(baseicon);
jl_ic.image = "http://www.kyotokk.com/icon/balloon-gr.png";
jl_ic.transparent = "http://www.kyotokk.com/icon/balloon-gr.png";
var className = "jalan";
var xml2JsonProxy = "http://app.drk7.jp/xml2json/";
var number = 0;

//飲食店
var h_http = "http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2369034&pid=875930787&vc_url=";
var h_http2 = "?vos=nhppvccp99002";
var h_count = 0;
var h_marker = new Array() ;
var h_html = new Array() ;
var h_ic = new GIcon(baseicon);
h_ic.image = "http://www.kyotokk.com/icon/balloon-rd.png";
h_ic.transparent = "http://www.kyotokk.com/icon/balloon-rd.png";
var no =0;

//中心座標取得
for(var g = 0 ; g < parseFloat(k_data.places.number) ; g++ ) {
	if(name == k_data.places.place[g].title){
		Center_Latitude = parseFloat(k_data.places.place[g].latitude.slice(0,8));
		Center_Longitude =  parseFloat(k_data.places.place[g].longitude.slice(0,8));
	}
}
	
//配列にデータ入力
    for(0 ; i < parseFloat(k_data.places.number) ; i++ ) {
		var latitude = parseFloat(k_data.places.place[i].latitude.slice(0,8));
		var longitude =  parseFloat(k_data.places.place[i].longitude.slice(0,8));
		var StraightLine = distance(Center_Latitude,Center_Longitude,latitude,longitude);//距離計算
		var point    = new GPoint( longitude, latitude );
	 
			var k_bus = k_data.places.place[i].bus;
			var k_sta = k_data.places.place[i].sta;
			var k_holiday = k_data.places.place[i].holiday;
			var k_time = k_data.places.place[i].time;
			var k_charge = k_data.places.place[i].charge;
			var k_outline = k_data.places.place[i].outline;
			
			if(k_bus == '0'){
				 k_bus = "";
			}
			
			if(k_sta == '0'){
				 k_sta = "";
			}
		
			if(k_holiday == '0'){
				 k_holiday = "";
			}
		
			if(k_time == '0'){
				 k_time = "";
			}
		
			if(k_charge == '0'){
				 k_charge = "";
			}

			html[i] = "<table class='hotel_data'><tr><td colspan='3'><b><a href='http://www.kyotokk.com/" + k_data.places.place[i].link + "'>" + k_data.places.place[i].title + "</a></b></td></tr>";
			html[i] += "<tr><td class='poto' rowspan='5'><a href='http://www.kyotokk.com/" + k_data.places.place[i].link + "'><img src='ph/";
			html[i] += k_data.places.place[i].image;
			html[i] += "' height='120' width='160' border='0' alt='"+ k_data.places.place[i].title +"' title='"+ k_data.places.place[i].title +"'></a></td>";
			html[i] += "<td class='title'>バス停</td><td class='data'>" + k_bus + "</td>";
			html[i] += "<tr><td>最寄り駅</td><td>" + k_sta + "</td></tr>";
			html[i] += "<tr><td class='title'>休日</td><td class='data'>" + k_holiday + "</td></tr>";
			html[i] += "<tr><td>拝観時間</td><td>" + k_time + "</td></tr>";
			html[i] += "<tr><td class='title'>拝観料</td><td class='data'>" + k_charge + "</td></tr>";
			html[i] += "</table>";
			html[i] += "<table class='hotel_data'><tr><td>" + k_outline + "</td></tr><tr><td><font color='#FF0000'>";
			html[i] += name + "から直線距離　約" + StraightLine + "m</font></td></tr></table>";

		     if(name == k_data.places.place[i].title){
		     position = i;
				map.setCenter(new GLatLng(latitude, longitude), zoom);
				map.addOverlay(new GMarker(new GPoint(longitude,latitude)));
				
				if(0 != parseFloat(k_data.places.place[i].bu_latitude)){
					bu_la = parseFloat(k_data.places.place[i].bu_latitude.slice(0,8));
					bu_lo = parseFloat(k_data.places.place[i].bu_longitude.slice(0,8));
					busstop = k_data.places.place[i].bus;
					busstop1 = new GMarker(new GLatLng(bu_la, bu_lo),bs_icon);
					Bu_StraightLine = distance(Center_Latitude,Center_Longitude,bu_la,bu_lo);//距離計算
				}
				
				if(0 != parseFloat(k_data.places.place[i].st_latitude)){
					st_la = parseFloat(k_data.places.place[i].st_latitude.slice(0,8));
					st_lo = parseFloat(k_data.places.place[i].st_longitude.slice(0,8));
					station = k_data.places.place[i].sta;
					station1 = new GMarker(new GLatLng(st_la, st_lo),st_icon);
					St_StraightLine = distance(Center_Latitude,Center_Longitude,st_la,st_lo);//距離計算
				}

		     }
		marker[i] = new GMarker(point,ic);
    }

//観光名所
function checkbox1clicked()  {
	if (document.sel.select1.checked == true) {
	    for(var j=0; j < parseFloat(k_data.places.number) ; j++ ) {
		    if(marker[position] != marker[j]){
				map.addOverlay(marker[j]);
				gevent(j);
			}
		}
	} else {
	    for(var j=0; j < parseFloat(k_data.places.number) ; j++ ) {
	        map.removeOverlay(marker[j]);
	    }
	}
}

function gevent(j)  {
	GEvent.addListener(marker[j], "click", function() {
		marker[j].openInfoWindowHtml(html[j]);
	});
}

//バス停
function checkbox2clicked() {
      if (document.sel.select2.checked == true) {
		map.addOverlay(busstop1);
	  	map.panTo(new GLatLng(bu_la,bu_lo), zoom);
		bevent();
      } else {
        map.removeOverlay(busstop1);
	  	map.panTo(new GLatLng(Center_Latitude,Center_Longitude), zoom);
      }
}

//駅
function checkbox3clicked() {
      if (document.sel.select3.checked == true) {
		map.addOverlay(station1);
	  	map.panTo(new GLatLng(st_la,st_lo), zoom);
		sevent();
      } else {
        map.removeOverlay(station1);
	  	map.panTo(new GLatLng(Center_Latitude,Center_Longitude), zoom);
      }
}

//距離計算
function distance(sirad,skrad,syutenido,syutenkeido){
    var from_x = skrad * Math.PI / 180;
    var from_y = sirad * Math.PI / 180;
    var to_x = syutenkeido * Math.PI / 180;
    var to_y = syutenido * Math.PI / 180;
    var deg = Math.sin(from_y) * Math.sin(to_y) + Math.cos(from_y) * Math.cos(to_y) * Math.cos(to_x-from_x);
    var dist = 6378140 * (Math.atan(-deg / Math.sqrt(-deg * deg +1)) + Math.PI / 2);
    return Math.round(dist);
}

function bevent()  {
	GEvent.addListener( busstop1, "click", function() {
	　　busstop1.openInfoWindowHtml("<b><p align='left'>"+ busstop +"</p></b><p align='left'><font color='#FF0000'>" + name + "から直線距離 約" + Bu_StraightLine + "m</font></p>" );
	});
}

function sevent()  {
	GEvent.addListener( station1, "click", function() {
	　　station1.openInfoWindowHtml("<b><p align='left'>"+ station +"</p></b><p align='left'><font color='#FF0000'>" + name + "から直線距離 約" + St_StraightLine + "m</font></p>" );
	});
}

//ホテル・旅館
var jalan = {
  init : function() {
    hotel();
  }
  ,
  onload : function( jSonData ){
     number =jSonData[ "DisplayPerPage" ];
      for(0 ; jl_count < number ; jl_count++ ) {
	      var X = parseFloat(jSonData["Hotel"][jl_count][ "X" ]);
	      var Y = parseFloat(jSonData["Hotel"][jl_count][ "Y" ]);
	      
		  X /= 3600000.0;
		  Y /= 3600000.0;
		  X = X - Y*0.000046038-X*0.000083043+0.010040;
		  Y = Y - Y*0.00010695+X*0.000017464+0.0046017;
		  var jl_point    = new GPoint( X, Y );
		  var jl_id = jSonData["Hotel"][jl_count][ "HotelID" ];
		  var jl_title = jSonData["Hotel"][jl_count][ "HotelName" ];
		  var CatchCopy = jSonData["Hotel"][jl_count][ "HotelCatchCopy" ];
		  var Rating = parseFloat(jSonData["Hotel"][jl_count][ "Rating" ]);
		  //口コミ処理
		  if(isNaN(Rating) == true){
		  	Rating = "";//口コミが無ければ空白
		  }else{
		  	Rating += " / 5点満点";
		  }
		  
	      jl_html[jl_count] = "<table class='hotel_data'><tr><td colspan='3'>";
	      jl_html[jl_count] += "<b><a href='" + jl_http + jl_id +"' rel='nofollow' target='_blank'>" + jl_title + "</a></b></td></tr>";
	      jl_html[jl_count] += "<tr><td class='poto' rowspan='5'><a href='" + jl_http + jl_id +"' rel='nofollow' target='_blank'><img src='";
	      jl_html[jl_count] += jSonData["Hotel"][jl_count][ "PictureURL" ];
	      jl_html[jl_count] += "' height='120' width='160' border='0' alt='"+ jl_title +"' title='"+ jl_title +"'></a></td>";
	      jl_html[jl_count] += "<td class='title'>宿タイプ</td><td class='data'>" + jSonData["Hotel"][jl_count][ "HotelType" ] + "</td>";
	      jl_html[jl_count] += "<tr><td>チェックイン</td><td>" + jSonData["Hotel"][jl_count][ "CheckInTime" ] + "</td></tr>";
	      jl_html[jl_count] += "<tr><td class='title'>チェックアウト</td><td class='data'>" + jSonData["Hotel"][jl_count][ "CheckOutTime" ] + "</td></tr>";
	      jl_html[jl_count] += "<tr><td>参考料金</td><td>" + jSonData["Hotel"][jl_count][ "SampleRateFrom" ] + " 円 ～</td></tr>";
	      jl_html[jl_count] += "<tr><td class='title'>クチコミ評点</td><td class='data'>" + Rating + "</td></tr>";
		  jl_html[jl_count] += "</table>";
		  jl_html[jl_count] += "<table class='hotel_data'><tr><td>" + jSonData["Hotel"][jl_count][ "HotelCatchCopy" ] + "</td></tr></table>";
		  
		          
		jl_marker[jl_count] = new GMarker(jl_point,jl_ic);
		map.addOverlay(jl_marker[jl_count]);//マーカー表示
		jl_gevent(jl_count);
	  }
	  jSonData["Hotel"];
  }
}

function call(){
  var script = document.createElement( "script" );
  script.charset = "UTF-8";
  script.src = 
    xml2JsonProxy + 
    'var=' + this.className + 
    '&' + 'url=' + 
    escape(jl_url);
  document.body.appendChild( script );
}

//ホテル・旅館マーカー
function jl_gevent(jc)  {
	GEvent.addListener(jl_marker[jc], "click", function() {
		jl_marker[jc].openInfoWindowHtml(jl_html[jc]);
	});
}

//ホテル・旅館クリック
function checkbox4clicked()  {
	if (document.sel.select4.checked == true) {
		if(jl_html == ""){						//初回
			call();								//ホテル・旅館データ取得
		}else{									//二回目以降
		    for(var h1 = 0; h1 < number ; h1++ ) {
					map.addOverlay(jl_marker[h1]);//マーカー表示
					jl_gevent(h1);
			}
		}
	} else {
	    for(var h2 = 0; h2 < number ; h2++ ) {
	        map.removeOverlay(jl_marker[h2]);//マーカー非表示
	    }
	}
}


//飲食店データ
function do_search (){
	var h_url = "http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=747873c90f364b36&count=100&format=jsonp&callback=my_callback2&middle_area=" + document.sel.h_area.value;
	jsr = new JSONscriptRequest( h_url );
	jsr.buildScriptTag();
	jsr.addScriptTag();
}

//配列にデータを入力
function my_callback2 (json){
	var h_request = json.results;
	no = parseFloat(h_request.results_returned);
	for(var gi = 0 ; gi < no ; gi++ ) {
		var X =  h_request.shop[gi].lng;
		var Y =  h_request.shop[gi].lat;
		var h_point    = new GPoint( parseFloat(X), parseFloat(Y));
		var u = h_request.shop[gi].urls.pc;
		var h_title = h_request.shop[gi].name;
		h_html[gi] = "<table class='hotel_data'><tr><td colspan='3'>";
	    h_html[gi] += "<a href='" + h_http + u + h_http2 +"' rel='nofollow' target='_blank'>" + h_title + "</a></td></tr>";	    
	    h_html[gi] += "<tr><td class='poto' rowspan='5'><a href='" + h_http + u + h_http2 +"' rel='nofollow' target='_blank'><img src='";	    
		h_html[gi] += h_request.shop[gi].photo.pc.m;		
		h_html[gi] += "' height='120' width='160' alt='"+ h_title +"' title='"+ h_title +"' class='find_border' /></a></td>";
	    h_html[gi] += "<td class='title'>お店ジャンル</td><td class='data'>" + h_request.shop[gi].genre.name + "</td>";
	    h_html[gi] += "<tr><td>平均予算</td><td>" +  h_request.shop[gi].budget.average + "</td></tr>";
	    h_html[gi] += "<tr><td class='title'>営業時間</td><td class='data'>" +  h_request.shop[gi].open + "</td></tr>";
	    h_html[gi] += "<tr><td>定休日</td><td>" +  h_request.shop[gi].close + "</td></tr>";
	    h_html[gi] += "<tr><td class='title'>コース</td><td class='data'>" + h_request.shop[gi].course + "</td></tr>";
		h_html[gi] += "</table>";
		h_html[gi] += "<table class='hotel_data'><tr><td>" + h_request.shop[gi]['catch'] + "</td></tr></table>";//予約語に注意（識別子がありませんエラー）
		
		h_marker[gi] = new GMarker(h_point,h_ic);
		map.addOverlay(h_marker[gi]);//マーカー表示
		h_gevent(gi);
		
	}
}

//飲食店マーカー
function h_gevent(hc){
	GEvent.addListener(h_marker[hc], "click", function() {
		h_marker[hc].openInfoWindowHtml(h_html[hc]);
	});
}

//飲食店クリック
function checkbox5clicked() {	
	if (document.sel.select5.checked == true) {
		if(h_html == ""){						//初回
			do_search();//飲食店データ取得
		}else{									//二回目以降
		    for(var g1 = 0; g1 < no ; g1++ ) {
					map.addOverlay(h_marker[g1]);//マーカー表示
					h_gevent(g1);
			}
		}
	}else {
	    for(var g2 = 0; g2 < no ; g2++ ) {
	        map.removeOverlay(h_marker[g2]);//マーカー非表示
	    }
	}
}