﻿var map;
var sikaku_waku;    
var g_marker;
var geocoder_rtcd;
var max_index = 50;	//マーカー max50
var marker = new Array(max_index - 1);		

function map_dsp()
{    
    // or
    if (( document.getElementById(preitem + "hidmap").value != "" ) || ( document.getElementById(preitem + "hidmaparea").value != "" ))
    {
      if (GBrowserIsCompatible())
      {
    
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl());

        if (( document.getElementById("hidmaponly") != null ) || ( document.getElementById(preitem + "hidmapeat") != null ) || ( document.getElementById("hidlargemap") != null ))
        {
            map.addControl(new GLargeMapControl());        
        }
        else
        {
            map.addControl(new GSmallMapControl());        
        }              

        var w_zoom = "";
        if ( document.getElementById(preitem + "hidmapzoom") != null)
        {
            w_zoom = document.getElementById(preitem + "hidmapzoom").value;
        }
        if (w_zoom == "")
        {
            w_zoom = 9; //指定なし
        }
        else
        {
            w_zoom = parseInt(w_zoom);
        }


        if ( document.getElementById(preitem + "hidmap").value != "" )
        {
    	    var w_item = new Array();
		    var w_item2 = new Array();
		
	    	w_item = document.getElementById(preitem + "hidmap").value.split(",");	// "xx:xx,xx:xx"の形式（カンマ区切り）を分解


		    //-日本全体ラベルあり-----------------/
            if ( document.getElementById("hidjapan") != null)
            {
                //カスタムマーカー   
                var mini_marker = new GIcon();
                mini_marker.image = "/dayimg/hp/mm_20_green.png";
                mini_marker.iconSize = new GSize(12, 20);
                mini_marker.iconAnchor = new GPoint(6, 20);
                mini_marker.infoWindowAnchor = new GPoint(5, 1);
            }

		    //-食べログ-----------------/
            if ( document.getElementById(preitem + "hidmapeat") != null)
            {
                //カスタムマーカー   
                var mini_marker = new GIcon();
                mini_marker.image = "/dayimg/hp/blue-dot.png";
                mini_marker.iconSize = new GSize(32, 32);
                mini_marker.iconAnchor = new GPoint(16, 32);
                mini_marker.infoWindowAnchor = new GPoint(16, 0);
            }



	        for (var j=0; j<w_item.length; j++)
	        {	

                if ( j >= max_index )
                {
                    break;
                }

    			// w_item2[0]:緯度, w_item2[1]:経度
				w_item2 = null;
				w_item2 = w_item[j].split(":");	// "xx:xx"を分解								
				
		        //位置生成
                var point = new GLatLng(w_item2[0],w_item2[1]);

                // 1件目センター指定
                if ( j == 0 )
                {
                    map.setCenter(point,w_zoom);
                }


    		    //-日本全体ラベルか食べログ-----------------/
                if ( (document.getElementById("hidjapan") != null) || ( document.getElementById(preitem + "hidmapeat") != null))
                {
                    marker[j] = new GMarker(point,mini_marker);
                }
                else
                {
                    //センター指定後、マーカー生成
                    marker[j] = new GMarker(point);
                }


                //マーカー独自プロパティ設定（番号）
                marker[j].no = j;

                //マーカー描画
                map.addOverlay(marker[j]);
                
              
                if ( document.getElementById("hidmaponly") == null )
                {
                    //マーカーclickイベント追加
                    GEvent.addListener(marker[j], "click", function(){
                    this.openInfoWindowHtml(mapinfo_get(this.no));
                    } );
                }
                else
                {
                    return;
                }              
		
		    }
		}
		
		//-○○の近く+範囲指定-----------------/
        if ( document.getElementById(preitem + "hidmaparea").value != "" )
        {
 
            div_dsp("div範囲設定");
            
            //eatか
            if ( document.getElementById(preitem + "hidmapeat") == null )
            {
               map_areasel_dsp("result");            
            }
            else
            {
               map_eat_areasel_dsp();
            }        

            map.setZoom(w_zoom);            

        }
         
		//-日本全体ラベルあり-----------------/
        if ( document.getElementById("hidjapan") != null)
        {
            japanlabel_dsp();
        }
        //		
      }
    }
}

function mapinfo_get(j)
{

    var detail_fix1 = preitem + "gldmap_ctl"; //項目名
    if ( document.getElementById("hidjapan") != null )
    {
        detail_fix1 = preitem + "gldjapan_ctl"; //項目名
    }
    if ( document.getElementById(preitem + "hidmapeat") != null)
    {
        detail_fix1 = preitem + "gldmap2_ctl"; //項目名
    }
	
    var detail_fix2 = "_div明細";
    var detail;

    if ( (j + 2) < 10 )
    {
        detail = detail_fix1 + "0" + (j + 2) + detail_fix2;
    }
    else
    {
         detail = detail_fix1 + (j + 2) + detail_fix2;
    }
	
    return document.getElementById(detail).innerHTML;
}


function mapinfo_dsp(j)
{
    //位置生成
    //var point = new GLatLng(w_ido,w_keido);
    //センター移動
    //map.panTo(point);
    // 情報window表示(縦に-32px)
    //map.openInfoWindowHtml(point, mapinfo_get(j), {pixelOffset: new GSize(0,-32)});
    GEvent.trigger(marker[j], "click");
}


function map_areasel_dsp(result)
{    
    if ( document.getElementById(preitem + "hidmaparea").value != "" )
    {
      if (GBrowserIsCompatible())
      {
        // hidmaparea_wへcopy    
        document.getElementById("hidmaparea_w").value = document.getElementById(preitem + "hidmaparea").value;

    	var w_item = new Array();
		w_item = document.getElementById(preitem + "hidmaparea").value.split(":");	// "xx:xx:xx"の形式を分解

        // form設定        
    	switch (w_item[2])
		{
	    	case "1":
               document.getElementById("rbtn範囲1").checked = true;        
               document.getElementById("rbtn範囲2").checked = false;
               document.getElementById("rbtn範囲3").checked = false;
			   break;
	    	case "2":
               document.getElementById("rbtn範囲1").checked = false;        
               document.getElementById("rbtn範囲2").checked = true;
               document.getElementById("rbtn範囲3").checked = false;
			   break;
	    	case "3":
               document.getElementById("rbtn範囲1").checked = false;        
               document.getElementById("rbtn範囲2").checked = false;
               document.getElementById("rbtn範囲3").checked = true;
			   break;
			default:
               document.getElementById("rbtn範囲1").checked = false;        
               document.getElementById("rbtn範囲2").checked = true;
               document.getElementById("rbtn範囲3").checked = false;
			   break;
		}

        
        if ( document.getElementById(preitem + "hids地域") != null )
        {
            if (document.getElementById(preitem + "hids地域").value == "範囲指定あり" )
            {
                document.getElementById("lbl範囲").innerText = "●範囲が指定されています●";
          	    document.getElementById("btn解除").disabled = false;
            }
            else
            {
                document.getElementById("lbl範囲").innerText = "現在、範囲は指定されていません。";
          	    document.getElementById("btn解除").disabled = true;
            }
        }
        

        // 範囲設定画面時
        if (result != "result")
        {
            map = new GMap2(document.getElementById("map"));
            map.addControl(new GSmallMapControl());
            map.addControl(new GScaleControl());
        }

        //    
        var w_zoom = "";
        if ( document.getElementById(preitem + "hidmapzoom") != null)
        {
            w_zoom = document.getElementById(preitem + "hidmapzoom").value;
        }
        if (w_zoom == "")
        {
            w_zoom = 8;
        }
        else
        {
            w_zoom = parseInt(w_zoom);
        }

        //位置生成
        var point = new GLatLng(w_item[0],w_item[1]);

        //センター指定
        map.setCenter(point,w_zoom);

        //カスタムマーカー   
        var custom_markerobj = new GIcon();
        custom_markerobj.image = "/dayimg/hp/maker_p.gif";
        custom_markerobj.iconSize = new GSize(30, 35);
        custom_markerobj.iconAnchor = new GPoint(15, 35);

        //センター指定後、グローバル変数g_maker 生成(ドラッグ可能)
        g_marker = new GMarker(point, {icon: custom_markerobj, draggable: true});
        
        //マーカー描画
        map.addOverlay(g_marker);

    
        //四角線表示
        map.addOverlay(sikaku_waku=mapareawaku_get(w_item[0],w_item[1]));

        //マーカードラッグ終了で、移動した四角線の再表示
        GEvent.addListener(g_marker, "dragend", function() { 
            mapareawaku_redsp();
            document.getElementById(preitem + "hidmaparea_mv").value = "1";
        });
        

      }
    }    
    
}

function mapareawaku_redsp()
{
    if (map == null)
    {
        return;
    }
    //四角線の再表示

    //現在の四角線を消す
    map.removeOverlay(sikaku_waku);
                
    //移動後のマーカーの座標を取得します
    var move_point = g_marker.getPoint();
    //y:x:範囲倍率で hidmaparea_wへ     
    var w_ritu = "1";           

    if ( document.getElementById("rbtn範囲1").checked )
    {
        w_ritu = "1"; 
    }
    else if ( document.getElementById("rbtn範囲2").checked )
    {
        w_ritu = "2";    
    }
    else if ( document.getElementById("rbtn範囲3").checked )
    {
        w_ritu = "3";    
    }   
    
    document.getElementById("hidmaparea_w").value = move_point.lat() + ":" + move_point.lng() + ":" + w_ritu;        
    map.addOverlay(sikaku_waku=mapareawaku_get(move_point.lat(), move_point.lng()));
}


function mapareawaku_get(w_ido,w_keido)
{
    //四角線返却
    var w_hani = 0.16;  //約15km*18kmの（横*縦）                     
    if ( document.getElementById("rbtn範囲1").checked )
    {
        w_hani = 0.16;                
    }
    else if ( document.getElementById("rbtn範囲2").checked )
    {
        w_hani = 0.32;  //２倍                
    }
    else if ( document.getElementById("rbtn範囲3").checked )
    {
        w_hani = 0.48;  //３倍                
    }   
     
     
    var w_num;
       
    // 少数第３位までにする
    w_num = (parseFloat(w_ido) + w_hani) * 1000;
    var w_num0p = parseInt(w_num) / 1000;

    w_num = (parseFloat(w_ido) - w_hani) * 1000;    
    var w_num0m = parseInt(w_num) / 1000;

    w_num = (parseFloat(w_keido) + w_hani) * 1000;
    var w_num1p = parseInt(w_num) / 1000;

    w_num = (parseFloat(w_keido) - w_hani) * 1000;    
    var w_num1m = parseInt(w_num) / 1000;
     
    var l_top = new GLatLng(w_num0p, w_num1m);        
    var l_btm = new GLatLng(w_num0m, w_num1m);
    var r_top = new GLatLng(w_num0p, w_num1p);
    var r_btm = new GLatLng(w_num0m, w_num1p);
    // 配列化
    var sikaku_points = [l_top, l_btm, r_btm, r_top, l_top];

    return new GPolyline(sikaku_points, "#ff0000");
    
}

//
function map_eat_areasel_dsp()
{    
    if ( document.getElementById(preitem + "hidmaparea").value != "" )
    {
      if (GBrowserIsCompatible())
      {

    	var w_item = new Array();
		w_item = document.getElementById(preitem + "hidmaparea").value.split(":");	// "xx:xx"の形式を分解

        //    
        var w_zoom = "";
        if ( document.getElementById(preitem + "hidmapzoom") != null)
        {
            w_zoom = document.getElementById(preitem + "hidmapzoom").value;
        }
        if (w_zoom == "")
        {
            w_zoom = 14;
        }
        else
        {
            w_zoom = parseInt(w_zoom);
        }
       
        //位置生成
        var point = new GLatLng(w_item[0],w_item[1]);

        //センター指定
        map.setCenter(point,w_zoom);

        //カスタムマーカー   
        var custom_markerobj = new GIcon();
        custom_markerobj.image = "/dayimg/hp/maker_p.gif";
        custom_markerobj.iconSize = new GSize(30, 35);
        custom_markerobj.iconAnchor = new GPoint(15, 35);

        //センター指定後、グローバル変数g_maker 生成(ドラッグ可能)
        g_marker = new GMarker(point, {icon: custom_markerobj, draggable: true});
        
        //マーカー描画
        map.addOverlay(g_marker);

        //マーカードラッグ終了で、移動後のマーカーの座標をhidmapareaへ
        GEvent.addListener(g_marker, "dragend", function() { 
            var move_point = g_marker.getPoint();
            document.getElementById(preitem + "hidmaparea").value = move_point.lat() + ":" + move_point.lng();
            document.getElementById("hidmaparea_w").value = move_point.lat() + ":" + move_point.lng();  
        });       

      }
    }    
    
}

function mapzoom_set()
{
    document.getElementById(preitem + "hidmapzoom").value = map.getZoom();
}

//
function latlng_get(adress)
{
    geocoder_rtcd = 0;   
    geocoder = new GClientGeocoder();
    
　　　　　　　　if (geocoder)
　　　　　　　　{
　　　　　　　　　　geocoder.getLatLng(adress,
　　　　　　　　　　　　function(point)
　　　　　　　　　　　　{
　　　　　　　　　　　　　　if (point != null)
　　　　　　　　　　　　　　{
                              document.getElementById(preitem + "hidmapgeo").value = point.lat() + ":" + point.lng() + ":2";
　　　　　　　　　　　　　      geocoder_rtcd = 1;
　　　　　　　　　　　　　　}
　　　　　　　　　　　　　　else
　　　　　　　　　　　　　　{
　　　　　　　　　　　　　      geocoder_rtcd = 2;
　　　　　　　　　　　　　　}
　　　　　　　　　　　　}
　　　　　　　　　　);
　　　　　　　　}

}

function geo_chk()
{
     
       	    if ( document.getElementById(preitem + "txt住所").value == "" )
       	    {
                alert("住所やスポット名が未入力です。入力して下さい。");
                return false;
            }
            else
            {
                //geocoder
                if (loopcnt == 0)
                {
                    latlng_get(document.getElementById(preitem + "txt住所").value);
                }
              
                loopcnt++;
                
                // 10回まで(5秒まで）
                if ((geocoder_rtcd == 0) && (loopcnt < 11))
                {
                     setTimeout("geo_chk()",500);
                     return false;
                }
                else
                {
                    if (geocoder_rtcd > 0)
                    {
                        if (geocoder_rtcd == 1)
                        {
	                        document.getElementById(preitem + "btnAD").click();
                        }
                        else 
                        {
                            loopcnt = 0; //0clear
                            alert("入力した住所やスポット名が見つかりません。変更して下さい。");
                            return false;
                        }                
                    }
                    else
                    {
                        loopcnt = 0; //0clear
                        alert("タイムアウト：入力した住所やスポット名が見つかりません。変更して下さい。");
                        return false;
                    }                
                }
         
           }

}

