//GMap2
var map;

//選択状態のマーカー
var currentMarker = null;

//お店一覧
var shopList = [];

//初期選択状態のお店
var defaultShopRegcode = "2796";
//var defaultShopRegcode = "21";
//var defaultShopRegcode = "2";
//------------------------------------------------------------------
//初期化
function initialize(){
    //未対応ブラウザならなにもしない
    if(GBrowserIsCompatible() == false){
        return;
    }

    //GoogleMapの起動
    map = new GMap2(document.getElementById("mapCanvas"));


    map.addControl(new GLargeMapControl());
    //初期値
    //    map.setCenter(new GLatLng(35.7, 139.7), 12);
    map.setCenter(new GLatLng(43.1976080, 141.001419), 12-2);



    //移動のイベント
    GEvent.addListener(map, "moveend", function() {
        //                    var center = map.getCenter();
        //                    document.getElementById("message").innerHTML = center.toString();

        setMarker();
    });

    //各種イベント設定
    $("#select15,#select30,#select50").bind("click",function(){
        setMarker();
    });
    $("#findButton").bind("click",find);

    $("#findText").keypress(function(e){
      if(e.which == 13){
          find();
      }
    } );

    $("#findText").focus();

    //初期
    setMarker();
    defaultSelect(defaultShopRegcode);
    refreshShopDetail(currentMarker);
}


//初期状態の選択状態にするマーカー
function defaultSelect(shopRegcode){
    for(i=0; i<shopList.length ;i++){
        //if(shopList[i].shop.reg_code == shopRegcode){
//            alert(shopList[i].shop.name);
          if(shopList[i].shop.no == shopRegcode){

            currentMarker = shopList[i];
            currentMarker.openInfoWindowHtml(makeMarkerText(currentMarker.shop));
            
            return;
        }
    }
}
//------------------------------------------------------------------
//マーカーを複数作成
function batchMarker(map){
    var showicon;
    var chouchinIcon = new GIcon(G_DEFAULT_ICON);
    var chouchinIcon_cp = new GIcon(G_DEFAULT_ICON);
    chouchinIcon.image = "http://midori-chouchin.jp/img/icon/tyou0.png";
    //chouchinIcon_cp.image="http://midori-chouchin.jp/img/icon/tyou7.png";//del sasaki 20100806　緑提灯クーポンのコメント化　
    chouchinIcon_cp.image = "http://midori-chouchin.jp/img/icon/tyou0.png";//add sasaki 20100806  緑提灯クーポンのアイコンを通常に戻す

    var markerOptions = {
        icon:chouchinIcon,
        icon_cp:chouchinIcon_cp
    };

    var bounds = map.getBounds();

    //x12 - lng:0.24 , lat:0.14

    localBatch = [];
    
    localShopList = ajax_get_shoplist(bounds);//データを同期取得
    
    if(localShopList != null){
        for (var i = 0; i < localShopList.length; i++) {
            var shop = localShopList[i];

            //どっちのアイコンを使うか判断
            if(shop.couponflg=="1"){
              showicon=markerOptions.icon_cp;
            }else{
              showicon=markerOptions.icon;
            }

            var point = new GLatLng(
                shop.lat,
                shop.lng);

            //                    if(currentMarker != null){
            //                        alert(currentMarker.lat + "=" +point.lat()+"\n"+currentMarker.lng + "=" +point.lng()+"\n");
            //                    }
            if((currentMarker == null) || (currentMarker.lat != point.lat()) || (currentMarker.lng != point.lng())){
                localBatch.push( createMarker( point , showicon ,shop) );
            }
        }
    }
    return localBatch;
}
//------------------------------------------------------------------
//マーカーに表示するhtmlの生成
function makeMarkerText(shop){
    var star = "";
    for(i=0; i<shop.star ;i++){
        star += "★";
    }
    
    var html ="<a href='"+shop.url+"' target='_blank' style='font-size: 14pt;'>"+
    shop.name +
    "</a><br><span style='color:#44FF44;font-size: 13pt;'>"+ star + "</span>";
    
    return html;
}


//------------------------------------------------------------------
//  マーカーの作成
function createMarker(point ,markerOptions,shop){
    var marker = new GMarker(point , markerOptions);
    marker.shop = shop;
    marker.lat = point.lat();
    marker.lng = point.lng();

    //マーカーのポップアップを開くとき
    GEvent.addListener(marker, "click", function(){ //マーカーをクリック
        marker.openInfoWindowHtml(makeMarkerText(marker.shop));
    //                    alert("click:"+shop.no);
    });
    GEvent.addListener(marker, "infowindowopen", function(){ //別の店情報を開く

        currentMarker = marker;
        refreshShopDetail(marker);
        currentToTop();
        refreshShopList();
    //                        alert("open:"+shop.no);
    });

    //マーカーを閉じるとき
    GEvent.addListener(marker, "infowindowclose", function(){ //今開いてる店情報を閉じる

        currentMarker = null;
        refreshShopDetail(null);
    //                        alert("close:"+shop.no);
    });
    return marker;
}

//------------------------------------------------------------------
//マーカーの更新
function setMarker(){
    var shop;

    //選択中以外のマーカーの削除
    var max = shopList.length;
    for(i=0; i<max;i++){
        shop = shopList[i];
        if((currentMarker == null) || (shop.lat != currentMarker.lat) || (shop.lng != currentMarker.lng)){
            map.removeOverlay(shopList[i]);
        }
    }
    //

    //新規にデータ取得
    var localBatch = batchMarker(map);
    
    for(i=0;i<localBatch.length;i++){
        shop = localBatch[i];
        if((currentMarker == null) || (shop.lat != currentMarker.lat) || (shop.lng != currentMarker.lng)){
            map.addOverlay(localBatch[i]);
        }
    }


    //新しく追加したマーカーとのこりを足す
//    if(currentMarker != null){
//        //        localBatch.push(currentMarker);
//        localBatch.unshift(currentMarker);
//    }

    shopList = localBatch;

    refreshShopList();
}


//------------------------------------------------------------------
//お店の情報更新
function refreshShopDetail(marker){

    var shopname = "";
    var address  = "";
    var tel      = "";
    var fax      = "";
    var time     = "";
    var holiday  = "";
    var url      = "";
    var star     = "";
    var note     = "";
    var couponurl = "";

    if(marker != null){
        var shop = marker.shop;
        
        shopname = shop.name;
        address  = shop.address ;
        tel      = shop.tel ;
        fax      = shop.fax ;
        time     = shop.time ;
        holiday  = shop.holiday ;
        url      = shop.url;
        note      = shop.note;
        couponurl = shop.couponurl;
        for(i=0; i<shop.star ;i++){
            star += "★";
        }
    }
    $("#shopName").html( shopname );
    $("#shopAddress").html( address );
    $("#shopTel").html( tel );
    $("#shopFax").html( fax );
    $("#time").html( time );
    $("#holiday").html( holiday );
    $("#couponurl2").html( couponurl );

if(couponurl == "" || couponurl == null){
    $("#couponlink").attr("style" , "display:none" );
}else{
    $("#couponlink").attr("style" , "display:inline" );
}

    $("#couponurl").attr("href" , couponurl );
    $("#url").attr("href" , url );
    $("#star").html( star );
    $("#note").html( note );

}

//------------------------------------------------------------------
//お店の一覧表示
function refreshShopList(){

    //                alert("length:"+batch.length+" current:"+currentMarkerNo);
    var data = "";

    data += "<ul style=\"width:220px;\">" ;

    var max = shopList.length;

    var odd  = "#FFFFFF";
    var even = "#CCFFCC";


    for(var i=0; i<max ;i++){

        var shop = shopList[i].shop;
        var color = (i%2 != 0)?odd:even;
    var couponurl = "";
        var couponurl = shop.couponurl;

        data += "<li style=\"background:"+color+";padding-left:5px;padding-top:2px;padding-bottom:2px;\">";
        data += "<a href=# onClick='return selectShop(";
        data += shop.no;
        data += ");'>";
//mod sasaki 20100806 緑提灯クーポンのコメント化 start
//if(couponurl == "" || couponurl == null){
//        data += shop.name;
//}else{
//        data += shop.name + "  『ク』";
//}
//mod sasaki 20100806 緑提灯クーポンのコメント化 end

data += shop.name;//add sasaki 20100806 
        data += "</a>";
        data += "</li>";

    }
    data += "</ul>";
    //                alert("length:"+batch.length+" current:"+currentMarkerNo);

    $("#shopList").html( data ).attr("scrollTop","0");
}

//------------------------------------------------------------------
//現在地を元にお店情報の取得
function ajax_get_shoplist(bounds){
    var sw = bounds.getSouthWest();  //南西範囲
    var ne = bounds.getNorthEast();  //北東範囲


//    var url = "./map_ajax_shop_list.php";
    var url = "../introduction_map_ajax.php";


    var json = $.ajax({
        type: "POST",
        url: url,
        async: false ,
        data: {
            "sw_lng":sw.lng() ,       //南西経度
            "sw_lat":sw.lat() ,       //南西緯度
            "ne_lng":ne.lng() ,       //北東経度
            "ne_lat":ne.lat() ,       //北東緯度
            "select":getSelectCount() //表示件数取得

        }
    }).responseText;
  
    return eval(json);
}

//------------------------------------------------------------------
//お店の一覧から選択された場合
function selectShop(no){

    var marker = null;
    for(i=0 ; i<shopList.length ; i++){
        if(shopList[i].shop.no == no){
            marker = shopList[i];
            break;
        }
    }

    if(marker != null){
        currentMarker = marker;
        marker.openInfoWindowHtml(makeMarkerText(marker.shop));
    }

    return false;

}
//------------------------------------------------------------------
//選択中のマーカーを最初に移す
function currentToTop(){
    if(currentMarker != null){
        var newShopList = new Array();

        newShopList.push(currentMarker);
      
        for(i=0 ; i<shopList.length ; i++){
            if(shopList[i].shop.no != currentMarker.shop.no ){
                newShopList.push(shopList[i]);
            }
        }
        shopList = newShopList;
    //        alert("SORT完了"+currentMarker.shop.no);
    }
}

//------------------------------------------------------------------
//ランドマークで検索
function find(){
    var findData = $("#findText").attr("value");

    //ランドマークが入力されているか
    if((findData == null) || (findData.length == 0)){
        return false;
    }

    var  geocoder = new GClientGeocoder();
    geocoder.getLatLng(
        findData,
        function(point) {
            //    alert("検索結果取得:"+point);
            if (point == null) {
                alert("入力したランドマークが見つかりませんでした。");
            } else {
                map.setCenter(point , 12);
            //                map.panTo(point);
            }
        });

    refreshShopDetail(null);

    return false;
}
//------------------------------------------------------------------
//ラジオボタンの選択状態
function getSelectCount(){
    var select = 15;
    if($("#select30").attr("checked")){
        select = 30;
    }else if($("#select50").attr("checked")){
        select = 50;
    }

    //    alert(select);

    return select;
}

