/**
 * 툴바 (메뉴)
 * */
class ToolBarControlls {

	constructor(props) {
		this.mapMng = props.mapMng;
		this.hybridLayer = this.mapMng.addHybridMap(mapMng.map);
		this.toobarEvent();
		this.helpSlider = this.helpBxSlider();
	}

	cleanToolBarInfo() {
		$(".toolbar .btn").not(".mapView").removeClass("active");
		$(".toolbar .dep1").removeClass("active");
		$(".menuArea button").removeClass("active");
		$(".utilArea button").removeClass("active");
		$(".utilArea").find('.innerBtn').removeClass("active");
		$(".utilArea").find('.innerNotice').removeClass("active");
	}

	cleanPopup() {
		// 주소 미니팝업(마커) 삭제
		window.juso.removeJusoMiniMarker();

		// 팝업창
		$(".popup").hide();

		//즐겨찾기 버튼 활성화 삭제 및 즐겨찾기 창 숨기기
		$('.btnFavorite').removeClass('active');
		$("#listFavoritePopup").hide();
	}

	helpBxSlider() {
        var slider = $('#helpArea .mobile .mobileSlide').bxSlider({
            auto:false,
            infiniteLoop:false,
            controls:false,
            onSlideAfter:function(){
                $('.mobile .current li').eq(slider.getCurrentSlide()).addClass('active').siblings('li').removeClass('active');
            }
        });
        return slider;
	}

	toobarEvent() {

		let obj = this;
		$("#map0-timeSeries").after("<label for='map0-timeSeries' class='offscreen'>연도</label>")

		// 토지, 건물
		$(document).on("click", ".mapTab li" , function(e) {
			let obj = $(this);
			let dataValue = obj.attr("data-value");
			window.initMode = dataValue;
			window.tocMng.removeAllLayerObject();
			window.tocMng.addLocalStorageLayers();
			window.juso.removeJusoMiniMarker();
		});

		$(document).on('change', "#checkHybrid", function(){
			let $obj = $(this);
			if($obj.prop('checked')) {
				obj.mapMng.visibleLayer(obj.hybridLayer.getODFId(), true)
			} else {
				obj.mapMng.visibleLayer(obj.hybridLayer.getODFId(), false);
			}
		});

		$(document).on("click", ".searchArea input, .searchArea button, .menuArea li, .menuArea button" , function(e) {

			if( $(this).hasClass("locComplete") ) return ;

			window.mapMng .clearEvent();
			obj.cleanToolBarInfo(); // 툴바 활성화 초기화
			$("#areaPopup").hide();

		});

		/**
		 * 일필지, 국토이용, 공지사항 버튼 클릭 시 ...
		 * */
		$(document).on("click", ".utilArea .btn, .utilArea button, .menuArea button", function() {
			let $obj = $(this);
			let id = $obj.attr("data-id");
			let type = $obj.attr("data-type");

			if( $(this).hasClass("locComplete") ) return ;

			if ($obj.hasClass("btnMenu02")) { // 국토이용분석 메뉴
				if ($obj.hasClass("active")) {
					obj.cleanToolBarInfo();
					return ;
				}
			}

			$("#areaPopup").hide();
			obj.cleanToolBarInfo(); // 툴바 활성화 초기화
			obj.cleanPopup();
			window.mapMng .clearEvent();
			$obj.addClass("active").siblings('.innerBtn').addClass("active");
			$obj.addClass("active").siblings('.innerNotice').addClass("active");

			if (id) {
				window.mapContentMng.onLoad(id, type);
				setTimeout(obj.cleanToolBarInfo, 500);
			}
		});


		/**
		 * 즐겨찾기, 레이어, 줌, 초기화, 그리기.....
		 * */
		$(document).on("click", ".toolbar .btn, .toolbar button", function(e) {
			let $obj = $(this);

			$(".utilArea button").removeClass("active");
			$(".utilArea").find('.innerBtn').removeClass("active");
			$(".utilArea").find('.innerNotice').removeClass("active");
			$("#areaPopup").hide();

			// 활성화중인 이벤트 삭제
			window.mapMng .clearEvent();
			obj.cleanPopup();

			let baseId = bcrnMapSeCode === '01' ? "odf-control-map0-basemap-eMapBasic" : "odf-control-map0-basemap-vWorldBase";

			// 바로이맵
			if ($obj.hasClass("baroE")) {
				let $obj = $(this);
				if($("#checkHybrid").prop('checked')) {
					$("#checkHybrid").trigger('click');
				}
				$("#" + baseId).click();
			}
			// 백지도
			if ($obj.hasClass("whiteMap")) {
				if($("#checkHybrid").prop('checked')) {
					$("#checkHybrid").trigger('click');
				}
				$("#odf-control-map0-basemap-eMapWhiteEdu").click();
			}
			// 정사영상
			if ($obj.hasClass("airplane")) {
				$("#odf-control-map0-basemap-eMapAIR").click();
			}
			// 영문지도
			if ($obj.hasClass("space")) {
				if($("#checkHybrid").prop('checked')) {
					$("#checkHybrid").trigger('click');
				}
				$("#odf-control-map0-basemap-eMapEnglish").click();
			}
			// 초기화
			if ($obj.hasClass("btnReset")) {
				$(".btn-control-clear").click();
				window.mapMng.mapDrawHandler.settingDrawLayer();
				setTimeout(function() {
					$obj.removeClass('active');
				}, 200);
			}
			// 줌인
			if ($obj.hasClass("btnScaleUp")) {
				$(".btn-control-zoom-in").click();
				$obj.removeClass('active');
			}
			// 줌아웃
			if ($obj.hasClass("btnScaleDown")) {
				$(".btn-control-zoom-out").click();
				$obj.removeClass('active');
			}
			// 인덱스맵
			if ($obj.hasClass("btnIndex")) {
				$(".btn-control-overviewmap").click();
				$obj.removeClass('active');
			}
			// 텍스트
			if ($obj.hasClass("text")) {
				$('#odf-control-map0-draw-text').click();
			}
			// 폴리곤
			if ($obj.hasClass("polygon")) {
				$('#odf-control-map0-draw-polygon').click();
			}
			// 선
			if ($obj.hasClass("line")) {
				$('#odf-control-map0-draw-lineString').click();
			}
			// 점
			if ($obj.hasClass("point")) {
				$('#odf-control-map0-draw-point').click();
			}
			// 원
			if ($obj.hasClass("circle")) {
				$('#odf-control-map0-draw-circle').click();
			}
			// 사각형
			if ($obj.hasClass("rectangle")) {
				$('#odf-control-map0-draw-box').click();
			}
			// 곡선
			if ($obj.hasClass("curve")) {
				$('#odf-control-map0-draw-curve').click();
			}
			// 버퍼
			if ($obj.hasClass("buffer")) {
				$('#odf-control-map0-draw-buffer').click();
			}
			// 면적
			if ($obj.hasClass("area")) {
				let dataValue = $obj.attr("data-value");
				if (dataValue == 'measure') return ;
				$('#odf-control-map0-measure-area').click();
			}
			// 거리
			if ($obj.hasClass("distance")) {
				let dataValue = $obj.attr("data-value");
				if (dataValue == 'measure') return ;
				$('#odf-control-map0-measure-distance').click();
			}
			// 출력
			if ($obj.hasClass("printing")) {
				$('#odf-control-map0-print').click();
			}
			// 이미지
			if ($obj.hasClass("capture")) {
				$('#odf-control-map0-img').click();
			}
			// 즐겨찾기
			if ($obj.hasClass("btnFavorite")) {
				favorites.openListPopup();
			}
			// 도움말
			if ($obj.hasClass("btnHelp2")) {
				$('#helpArea').show();
				let helpSlider = obj.helpSlider;
				helpSlider.reloadSlider();
				setTimeout(function() {
					$obj.removeClass('active');
				}, 200);
			}

	    });

		// 현재위치
		$(document).on("click", ".geoLocationBtn", function(e) {
			let obj = this;
			geoLocation.setGeoLocationCallbackFunction(null);
			geoLocation.watchPosition();
			setTimeout(function() {
				$(obj).removeClass("active");
			}, 500);
		});

	    // 년도별 정사영상
		// 정사영상 콤보 박스 생성
	    let eMapAirSelect = $('.toolbar .airplaneS');
	    $("#map0-timeSeries > option").each((idex ,item) => {
	    	let year = item.value.split("_")[1];
	    	eMapAirSelect.append(`<option value=${year}>${year}</option>`);
	    });

	    eMapAirSelect.change(function(e) {
	    	let value = 'AIRPHOTO_'+$(this).val();
	    	odf.event.trigger(document.querySelector("#map0-timeSeries"),'change',{target:{value:value}});
	    });


		/**
		 * 콘텐츠 닫기 X 버튼
		 * */
		$(document).on("click", "#toc .btnTocToggle", function() {
//			$(".popup").hide();
			$(".popup").not("#jusoPopup").hide();
			let $toc = $("#toc");
			if ($toc.hasClass("hide")) {
				$toc.removeClass("hide");
				$(".btnLayer").addClass("active");
			} else {
				$toc.addClass("hide");
				$('.btnNotice').removeClass('active');// 즐겨찾기 버튼 active 삭제
				$(".btnLayer").removeClass("active");
			}
		});

		/**
		 * 레이어 목록 닫기
		 * */
		$(document).on("click", "#toc .btnLeftClose", function() {
			$(".popup").hide();
			let $toc = $("#toc");
			$toc.addClass("hide");
			$(".btnLayer").removeClass("active");
			$('.btnNotice').removeClass('active');// 즐겨찾기 버튼 active 삭제
		});

		/**
		 * 콘텐츠 닫기 X 버튼
		 * */
		$(document).on("click", "#toc .btnTocClose", function() {
//			$(".popup").hide();
			$(".popup").not("#jusoPopup").hide();

			let $toc = $("#toc");
			$toc.addClass("hide");
			$('.btnNotice').removeClass('active');// 즐겨찾기 버튼 active 삭제
			$(".btnLayer").removeClass("active");
		});

		/**
		 * 레이어 콘텐츠 목록 보기 버튼
		 * */
		$(document).on("click", ".btnLayer", function() {
			$(".popup").hide();
			let $obj = $(this);
			let $toc = $("#toc");
			if ($obj.hasClass("active")) {
				$obj.removeClass("active");
				$toc.addClass("hide");
			} else {
				$obj.addClass("active");
				$toc.find(".left").addClass("active");
				$toc.find(".right").removeClass("active");
				$toc.removeClass("hide");
			}

	    });

	    /**
	     * 통계 메인 탭 선택 시
	     * */
		$(document).on("click", "#landUse .toggleArea li", function(e) {
			$(".popup").hide();
			let idx = $(this).index();
			$("#landUse .toggleArea li").removeClass("active").eq(idx).addClass("active");

			let $menu = $("#landUse .tabNav .tabList");
			$menu.addClass("hidden").children().removeClass("active");
			$menu.eq(idx).removeClass("hidden").children().eq(0).addClass("active");
		});


		/**
		 * 통계 서브메뉴 클릭 시
		 * */
		$(document).on("click", ".tabList li", function() {
			let $obj = $(this);
			if ($obj.parent().parent().hasClass("customMenu")) {
				$obj.addClass('active').siblings('li').removeClass('active');
			} else {
				let idx = $obj.index();
				$obj.addClass('active').siblings('li').removeClass('active');
				$obj.closest('.tabNav').siblings('.tabCont').removeClass('active').eq(idx).addClass('active');
			}
		});


		/**
		 * 도움말
		 * */
		let localStorage = window.localStorage;
		let localStorageHelpCloseId = "HelpClose-";
		let isHelpClose = localStorage.getItem(localStorageHelpCloseId);
		if (isHelpClose != "true") $('#helpArea').show();
		else $('#helpArea').hide();
		$(document).on("click", ".btnHelpClose", function() {
			$('#helpArea').hide();
			if (!localStorage) return ;
			localStorage.removeItem(localStorageHelpCloseId);
			localStorage.setItem(localStorageHelpCloseId, "true");
	    });

	}

}




