﻿// JScript 파일


var GMapInit = {
    map : null, //big map
    overmap : null, //little map
    infowin : null,
    
    mapData : null,
    markerGroups : {"All":[], "숙소": [], "상품/할인입장권": [], "관광정보": []},
    
    initialize : function(mapdiv)
    {
        var mapDiv = document.getElementById(mapdiv);
        if (GBrowserIsCompatible())
        {
	        GMapInit.map = new GMap2(mapDiv);
	        var map = GMapInit.map;
      
	        map.enableDoubleClickZoom();
	        //map.enableScrollWheelZoom();
    	    
	        //add tile overlay
            var myCopyright = new GCopyrightCollection("© ");
            myCopyright.addCopyright(new GCopyright('GHN', new GLatLngBounds(new GLatLng(33.1, 126.18), new GLatLng(33.55, 126.95)), 0,'©2007 GHN'));

            var tilelayer = new GTileLayer(myCopyright);
            tilelayer.getTileUrl = function(tile, zoom)
            {
                var k  = zoom - 10;
                var zz = 1;
                for(; k>0; k--) zz *= 2;
                
                if(zoom>=10 && zoom <= 18)
                {
                    if(870*zz <= tile.x && tile.x<874*zz && 410*zz<=tile.y && tile.y<413*zz)
                    {
                        if(zoom >= 10 && zoom <=15)
                        {
                            return ('http://gimg.seejeju.com/img/' + zoom + '/' + zoom + '_' + tile.y + '_' + tile.x + '.png');
                        }
                    }
                }
                return "";
            };

            tilelayer.isPng = function() {return true;};
            tilelayer.getOpacity = function() { return 1.0; }
    	    
    	    GEvent.addListener(map, "move", 
    	        function() 
    	        {
    	            var allowedBounds = new GLatLngBounds(new GLatLng(33.1, 126.18), new GLatLng(33.55, 126.95));
    	            
                    if (allowedBounds.contains(map.getCenter())) { return; }                    
                    var C = map.getCenter();
                    var X = C.lng();
                    var Y = C.lat();

                    var AmaxX = allowedBounds.getNorthEast().lng();
                    var AmaxY = allowedBounds.getNorthEast().lat();
                    var AminX = allowedBounds.getSouthWest().lng();
                    var AminY = allowedBounds.getSouthWest().lat();

                    if (X < AminX) {X = AminX;}
                    if (X > AmaxX) {X = AmaxX;}
                    if (Y < AminY) {Y = AminY;}
                    if (Y > AmaxY) {Y = AmaxY;}
                    
                    map.setCenter(new GLatLng(Y,X));
    	        }
    	    );
    	    
    	    var qryzoomlevel = GUtil.getQueryString('zoom');
    	    qryzoomlevel = GUtil.parseNumber(qryzoomlevel);
    	    var zzzz = 11;
    	    if(qryzoomlevel< 10 || qryzoomlevel > 14) zzzz == 11;    	    
    	    else zzzz = qryzoomlevel;
    	    GSideSearchBar.InitZoomSlide(map, 10, 14, zzzz);
    	    
	        var myTileLayer = new GTileLayerOverlay(tilelayer);
	        map.addOverlay(myTileLayer);
    	    
	        //==========disable scrolling on the page if over map==========
	        GEvent.addDomListener(mapDiv, "DOMMouseScroll", GMapInit.wheelevent);
	        mapDiv.onmousewheel = GMapInit.wheelevent;
	        
	        GEvent.addListener(map, "movestart", function() { GMapInit.HideAllPopUp(); });
            GEvent.addListener(map, "zoomstart", function() { GMapInit.HideAllPopUp(); });            
	        
	        LabeledMarker.initCtlStatic(map);//LabeledMarker	        
	        map.addControl(new GSideBar('id_gmapItemTypeSelector'));//Side Bar
	        
	        
	        GMapInit.InitIcons();
        }
        else
        {
	        mapDiv.innerHTML = "<div style='font-weight:bold;'>지도를 보려면 자바스크립트가 사용 가능한 브라우저가 필요합니다.<br/>인터넷 익스프로러를 사용중인 경우 자바스크립트를 활성화 시켜야 합니다.</div>";
        }
        
        return true;
    },
    
    InitIcons : function()
    {   
        var baseIcon = new GIcon();
        baseIcon.iconSize=new GSize(16,16);
        baseIcon.shadowSize=new GSize(0,0);
        baseIcon.iconAnchor=new GPoint(0,16);
        baseIcon.infoWindowAnchor=new GPoint(16,16);                
        GMapInit.icoLodge = new GIcon(baseIcon, "/CS/Map/GoogleMap/JS/img/h.png", null, "/CS/Map/GoogleMap/JS/img/h.png");
        GMapInit.icoTicket = new GIcon(baseIcon, "/CS/Map/GoogleMap/JS/img/m.png", null, "/CS/Map/GoogleMap/JS/img/m.png");
        GMapInit.icoTour = new GIcon(baseIcon, "/CS/Map/GoogleMap/JS/img/c.png", null, "/CS/Map/GoogleMap/JS/img/c.png");
    },

    wheelevent :function(e)
    {
        if (!e) e = window.event;
        if (e.preventDefault) e.preventDefault();
        e.returnValue = false;
    },
    
    //CID, X, Y, 제목, 분류 ,상세분류
    createMarker :function(point, data, micon) //point:좌표 값이다.
    {
        var marker = new LabeledMarker(point, {mapItemData:data, icon:micon, labelText:data[3]});
        GMapInit.markerGroups[ data[4] ].push(marker);
        return marker;
    },
    
    AddTourItem : function(idx, d)
    {
        var point = new GLatLng(d[2], d[1]);
        if(d[4].indexOf('숙소')>=0) mkkk = GMapInit.createMarker(point, d, GMapInit.icoLodge);
        else if(d[4].indexOf('할인입장권')>=0) mkkk = GMapInit.createMarker(point, d, GMapInit.icoTicket);
        else mkkk = GMapInit.createMarker(point, d, GMapInit.icoTour); //관광정보 등..
        
        GMapInit.markerGroups["All"][idx] = mkkk;        
        mkkk.mapItemInfo = d; //CID, X, Y, 제목, 분류 ,상세분류        
        GMapInit.map.addOverlay(mkkk);
    },
    
    LoadTourItems : function()
    {
        if(GMapInit.mapData != null) return;
        
        GmapShowOnLoadDataMsg(true);
        
        window.setTimeout( 
            function()
            {   
                var dresult = ob_post.post('/CS/map/WS/PositionInfo.aspx', 'GMapDataForType');                
                GMapInit.mapData = dresult.split('#');
                
                var m = null;
                var p = null;
                var spdata  = null;
                for(idx = 0; idx < GMapInit.mapData.length; idx++)
                {
                    spdata = GMapInit.mapData[idx].split('|');
                    GMapInit.mapData[idx] = spdata;
                }
                GmapShowOnLoadDataMsg(false);
                
                var iiii_chk = null;
                if(GUtil.getQueryString('lodge')!=null)
                {
                    iiii_chk = $('chkgmapsbarLodgeAll');
                    iiii_chk.checked = 'checked';
                    iiii_chk.onclick();
                }
                    
                if(GUtil.getQueryString('ticket')!=null)
                {
                    iiii_chk = $('chkgmapsbarTicketAll');
                    iiii_chk.checked = 'checked';
                    iiii_chk.onclick();
                }
                if(GUtil.getQueryString('tour')!=null)
                {
                    iiii_chk = $('chkgmapsbarTourAll');
                    iiii_chk.checked = 'checked';
                    iiii_chk.onclick();
                }
                
                if(GUtil.getQueryString('lodge')==null && GUtil.getQueryString('ticket')==null && GUtil.getQueryString('tour')==null)
                {
                    iiii_chk = $('chkgmapsbarTicketAll');
                    iiii_chk.checked = 'checked';
                    iiii_chk.onclick();
                }
                
            }, 50 );
    },
    
    InitMarkersByType : function(type, initialShow)
    {
        GmapShowOnLoadDataMsg(true);
        
        window.setTimeout( 
            function()
            {
                for(idx = 0; idx < GMapInit.mapData.length; idx++)
                {
                    spdata = GMapInit.mapData[idx];
                    
                    if(spdata[4]==type)
                    {
                        GMapInit.AddTourItem(idx, spdata); //add tour item to map
                        if(initialShow==false)
                            GMapInit.markerGroups[ 'All' ][idx].hide();
                    }
                }
                
                GmapShowOnLoadDataMsg(false);
            }, 50  );
    },
    
    ToggleMarkByType : function(isShow, type, subtype)
    {
        var mks = GMapInit.markerGroups[ type ];
        if(mks.length == 0) GMapInit.InitMarkersByType(type, true);
        
        for(k=0; k<mks.length; k++)
        {         
            if(isShow)
            {
                if(subtype==null || mks[k].mapItemInfo[5].indexOf(subtype)>=0) //CID, X, Y, 제목, 분류 ,상세분류
                    mks[k].show();
            }
            else
            {
                if(subtype==null || mks[k].mapItemInfo[5].indexOf(subtype)>=0) //CID, X, Y, 제목, 분류 ,상세분류
                    mks[k].hide();
            }
        }
    }, 
    
    HideAllMarker : function()
    {
        var mks = GMapInit.markerGroups[ 'All' ];
        for(k=0; k<mks.length; k++)
        {   
            if(mks[k]!=null)      
                mks[k].hide();
        }
    },
    
    HideAllPopUp : function()
    {
        MapItemInfo.HideForm();    
        MapItemDetail.CloseDetailView();    
    }    
}