var showPoiId;
var showPoiType;
var lastCenter;

var searchFunc=null;

function reloadContent() {
	try{
		reloadFunc.call();//그외 각 펑션 수행
	} catch(e){
	}
}

function loadingTAB(){
	var titleHtml = "";

	if($("tabTitleHtml")) titleHtml = $("tabTitleHtml").innerHTML;
	$("areaListData").innerHTML = titleHtml + getLoading (228, 390);
}

function sendArea () {
	reloadFunc = sendArea;
	if( $("coupon") && $("coupon").checked ) sendCouponArea();
	else sendCateArea(themeCode, subThemeCode);
	showAreaTitle(getAreaInfo().name);
}	

//Ajax 결과 장소 보기 
function showArea(res) {
	$("story_data").innerHTML=res.responseText;
	evalScriptsByName("areaScripts");
	showAreaTitle(getAreaInfo().name);
}

function showAreaTitle(areaTitle){
	var obj=$("currAreaBarPost");
	if(obj)obj.innerHTML=areaTitle;
	obj=$("currAreaBarImage")
	if(obj)obj.innerHTML=areaTitle;
	obj=$("currAreaBarArea");	
	if(obj)obj.innerHTML=areaTitle;
}

//Ajax 장소 전송
function sendCateArea(cate1,cate2) {
	loadingTAB(); 
	var cparam="&group_code_large=00&group_code_medium=00&group_code_small=00";
	var reqParam=getCoords()+"cmd=categoryAreaList"+cparam;

	reqParam += "&keyType2=THEME&keyword2="+cate1;
	reqParam += "&keyType3=SUBTHEME&keyword3="+cate2;

	reqParam+="&zoom_level="+map.getZoomLevel()+"&"+getAreaInfo().params;
	//카테코리 선택 영역의 노출 여부에 따라서 리스트 개수가 달라짐
	reqParam+="&categoryYN=" + categoryDivFlag;
	ajaxSend('/view/area.map',reqParam,showAreaRect);
}

function showAreaRect(res) {
	$("areaListData").innerHTML=res.responseText;
	evalScriptsByName("areaChildScripts");
	mapLoad();
	showAreaTitle(getAreaInfo().name);

	if (isLandMark && !isLandMarkShowed) {
		if (showPoiId) {
			sendLandMarker(showPoiType, showPoiId);
		} else {
			sendLandMarker();
		}
	}
}	

//Ajax 장소 전송
function sendCouponArea() {
	loadingTAB(); 
	var cparam="&group_code_large=00&group_code_medium=00&group_code_small=00";
	var reqParam=getCoords()+"cmd=couponAreaList"+cparam;

	reqParam+="&zoom_level="+map.getZoomLevel()+"&"+getAreaInfo().params;
	ajaxSend('/view/area.map',reqParam,showAreaRect);
}

//지역 별 이야기 로딩
function showAreaPost(res) {
	if (!window.r_vCount) return;
	var sid = window.r_vCount;
	$("popInfoDiv").innerHTML = "";
	$("popInfoDiv").innerHTML = res.responseText;
	
	replaceInfoWindow(sid, $("popInfoDiv").innerHTML);
	$("popInfoDiv").innerHTML = "";
	if(onImgFlag)
		evalScriptsByName("areaImgPostScripts");
	else
		evalScriptsByName("areaPostScripts");
}

//Ajax사용자별 이야기 전송
function sendUserPost(user_id) {
	if(!user_id && !chkLogin ()) return;

	var url = '/story/my.map?my_id=' + user_id;
	openWindow (url,"userPost");
}	

var categoryDivFlag = false;

// 테마보기 수정 김형우
function withTheme (code, subcode) {
	if (code == "0") {
		themeCode = null;
	} else {
		themeCode = code;
	}
	if (subcode && subcode != "") {
		subThemeCode = subcode;
	} else {
		subThemeCode = null;
	}
	if(code == 1)categoryDivFlag = true;
	else categoryDivFlag = false;

	reloadContent();
}

// Change Theme Tab
function ChgTheme(idx) {
	
	var objTheme = document.getElementById('theme_list');
	objThemeList = objTheme.getElementsByTagName('LI');

	for (var i=0; i<objThemeList.length; i++) {
		objThemeList[i].className = '';
		objThemeList[i].getElementsByTagName('A')[0].className='';
		if (i==0 || i==4) {
			objThemeList[i].className = 'none';
		}
	}

	if (idx == 0)
		objThemeList[idx].getElementsByTagName('A')[0].className='on';
	else
		objThemeList[idx].getElementsByTagName('A')[0].className='on2';

	if (idx == 1){
		ChgSubTheme(0);
		$("sCategoryDiv").style.display='block';
	}
	else
		$("sCategoryDiv").style.display='none';
	
	objThemeList[idx].className = 'active';

	if ( idx < objThemeList.length - 1 ) {
		objThemeList[idx + 1].className = 'none';
	}
}

// Change Theme Tab
function ChgSubTheme(idx) {
	
	var objSubTheme = document.getElementById('sub_theme_list');
	objSubThemeList = objSubTheme.getElementsByTagName('A');

	for (var i=0; i<objSubThemeList.length; i++) {
		objSubThemeList[i].className = '';
	}

	objSubThemeList[idx].className='on';
}

//Ajax 미니지도 만들기 팝업창 관련 2006-06-15 김형우(letina@nate.com)
function sendMiniMap(reqParam){
	var param = reqParam || "";
	ajaxSend('/addon/minimap.map',param,showMiniMap);
}	

//Ajax 미니지도 만들기 팝업창 관련 2006-06-15 김형우(letina@nate.com)
function showMiniMap(res) {
	$("navi_miniMap").innerHTML = "";
	$("navi_miniMap").innerHTML=res.responseText;
	$("navi_miniMap").style.display='block';
	
	eval($("miniscript").innerHTML);
}	

function isInfoVisible () {
	var flag = false;
	if (map.infoWindow && map.infoWindow.isVisible()) {
		flag = true;
	}
	return flag;
}

function replaceInfoWindow (id, html, type) {
	map.replaceInfoWindow(id, html);
}

function activeScript (src, obj) {
	var tmp = trim(src);

	if (tmp.substring(0,3) == "swf") {
		eval (src);
	} else {
		obj.innerHTML = src;
	}
}

function openInfoWindow(id, type) {
	if (map && id != "") {
		if (map.infoWindow && map.openId == id) {
			closeInfoWindow();
			return;
		}

		map.showInfoWindow(id);
 	} 	
}

function closeInfoWindow() {
	map.closeInfoWindow();
}

function openInfoMiniWindow(id, flag) {
  if (map && id != "") {
  	if (map.infoMiniWindow && map.openId == id) {
			map.closeInfoMiniWindow();
			return;
		}
		
    map.showInfoMiniWindow(id, flag);
  }
}

function setIcon(id, flag) {
	var obj = map.markers[id];
	
	try {
		if (flag) {
			map.setStyle(obj, true);
		} else {
			map.setStyle(obj, false);
		}
		
		var showedMarker = map.showMarker;
		if (showedMarker.id == obj.id) {
			map.setStyle(showedMarker, true);
		}
	} catch (e) {}
			
	obj.checkAndSetting(id, flag);
}

function getAreaInfo(){
	if (!window.areaInfo) {
		window.areaInfo={
			code_large : null,
			code_medium : null,
			code_small : null,
			params:"area_code_large=00&area_code_medium=000&area_code_small=000",
			name:"",
			isUdateGU : true
		}	
	}
	
	return window.areaInfo;
}

//멥 로딩 
function mapLoad(prefix) {
  if (prefix == null) prefix = "";
  if (!$(prefix+"totCnt") || eval($(prefix+"totCnt").value)<=0) {
  	map.unloadPage();
  	
  	/* 삭제됐을때나 비공개시 처리 
  	 * 기본적으로 페이징 안하고 map.vm 에서 처리 
  	 * by WDH 2006.10.17 
  	 */
		try {
	  	if (!map.landFlag && isLandMark) {
				map.addOverlay(map.landMarker);
	    	map.landFlag = !map.landFlag;
			}
		} catch (e) {return;}
  	return;
	}

  var totCnt = $(prefix+"totCnt").value;

  var info = [];
  var tmp;

  for (var i = 1;i <= totCnt;i++) {
    var mark_img = null;
    var width = null;
    var height = null;
  	var poi_id = null;
		var poi_name = null;
		var groupCodeLarge = null;
		var groupCodeMedium = null;
		var groupCodeSmall = null;
		var areaCodeLarge = null;
		var areaCodeMedium = null;
		var areaCodeSmall = null;
    var func = null;
    var mini = null;
    var iconHtmlMode = null;
    var iconHtml = null;
    var bgImg = null;

		if ($(prefix+"image_" + i)) mark_img = $(prefix+"image_" + i).value;
		if ($(prefix+"width_" + i)) width = $(prefix+"width_" + i).value;
		if ($(prefix+"height_" + i)) height = $(prefix+"height_" + i).value;
		if ($(prefix+"poiid_" + i)) poi_id = $(prefix+"poiid_" + i).value;
		if ($(prefix+"poiname_" + i)) poi_name = $(prefix+"poiname_" + i).value;
    if ($(prefix+"groupCodeLarge_" + i)) groupCodeLarge = $(prefix+"groupCodeLarge_" + i).value;
    if ($(prefix+"groupCodeMedium_" + i)) groupCodeMedium = $(prefix+"groupCodeMedium_" + i).value;
    if ($(prefix+"groupCodeSmall_" + i)) groupCodeSmall = $(prefix+"groupCodeSmall_" + i).value;
    if ($(prefix+"areaCodeLarge_" + i)) areaCodeLarge = $(prefix+"areaCodeLarge_" + i).value;
    if ($(prefix+"areaCodeMedium_" + i)) areaCodeMedium = $(prefix+"areaCodeMedium_" + i).value;
    if ($(prefix+"areaCodeSmall_" + i)) areaCodeSmall = $(prefix+"areaCodeSmall_" + i).value;
    if ($(prefix+"func_" + i)) func=eval($(prefix+"func_" + i).value);
    if ($(prefix+"mini_" + i)) mini = $(prefix+"mini_" + i).value;
    if ($(prefix+"iconHtmlMode_" + i)) iconHtmlMode = $(prefix+"iconHtmlMode_" + i).value;
    if ($(prefix+"iconHtml_" + i)) iconHtml = $(prefix+"iconHtml_" + i).innerHTML;
    if ($(prefix+"bgImg_" + i)) bgImg = $(prefix+"bgImg_" + i).value;

    tmp = {
      id:$(prefix+"id_" + i).value,
      lat:$(prefix+"lat_" + i).value,
      lng:$(prefix+"lng_" + i).value,
      image:mark_img,
      width:width,
      height:height,
      func:func,
      poi_id:poi_id,
      poi_name:poi_name,
      group_large:groupCodeLarge,
      group_medium:groupCodeMedium,
      group_small:groupCodeSmall,
      area_large:areaCodeLarge,
      area_medium:areaCodeMedium,
      area_small:areaCodeSmall,
      mini:mini,
      prefix:prefix,
      html:$(prefix+"popInfo_" + i).innerHTML,
      iconHtmlMode:iconHtmlMode,
      iconHtml:iconHtml,
      bgImg:bgImg
    };

    info[i-1] = tmp;  
  }

	var obj = $(prefix + "showId");

	if (obj) {
		map.loadPage(info, obj.value, prefix);
 	} else {
		map.loadPage(info);
 	}
}

/* menu 정리 */
var menu = ["initmap", "print", "url", "miniMap"];
var menuDiv = ["navi_print", "navi_url", "navi_miniMap"];
var divFlag = false;
var oldMenu = "";

function initDiv (menu) {
	if (divFlag) {
		for (var i=0;i < menuDiv.length;i++) {
			$(menuDiv[i]).style.display = 'none';
		}
		
		if (menu != oldMenu) {
			divFlag = !divFlag;
		}
	}
}


/* 맵초기화 */
function initMap () {
	initDiv(menu[0]);
	
	if (map.lastLatLng) {
		map.recenterOrPanToLatLng(map.lastLatLng);
	}
}

/* 출력하기 */
function printToggle() {
	initDiv(menu[1]);
	
	var center = map.getCenterLatLng();
	var zoom_level = map.getZoomLevel();
		
	printMap(map, center.x, center.y);
	$("navi_Print").style.display='block';
	
	divFlag =	!divFlag;
	oldMenu = menu[2];
}

/* 주소 카피 */
function printUrl() {
	initDiv(menu[2]);
	
	if (!divFlag) {
		var center = map.getCenterLatLng();
		var zoom_level = map.getZoomLevel();
		var val = MAPVIEW_HOME + "?center_x=" + center.x + "&center_y=" + center.y + "&zoom_level=" + zoom_level;
		
		window.clipboardData.setData("Text",val);
		$("navi_url").style.display='block';
	}
	
	divFlag =	!divFlag;
	oldMenu = menu[3];
}

function hideUrl() {
	$("navi_url").style.display='none';
	
	divFlag =	!divFlag;
	oldMenu = menu[3];
}

/* 짧은 주소 카피 */
function copySUrl(url) {
	if (!divFlag) {
		window.clipboardData.setData("Text",url);
		$("navi_url").style.display='block';
	}
	
	divFlag =	!divFlag;
}

function hideSUrl() {
	$("navi_url").style.display='none';
	divFlag =	!divFlag;
}

/* 미니지도 만들기 */
function miniMapToggle(user_id) {
	//if(!chkLogin ()) return;

	initDiv(menu[3]);

	if (!divFlag) {
		fadeInAllScreen();

		sendMiniMap();
 	}
 	
	divFlag =	!divFlag;
	oldMenu = menu[4];
}

function hideMiniGido () {
	fadeOutAllScreen();
	
	divFlag =	!divFlag;
	oldMenu = menu[4];
}

/* 다른 지역 이동 */
function setRegion(id) {
	var region = getCenter(id);

	try{
		mapCenterAndZoom(region.x, region.y, map.getZoomLevel());
	} catch(e) {
	}
}

/* 주변의 인기장소 */
var lastBestCenter;

function setCenter(x, y, type, id) {
	isLandMarkShowed = false;
	
	if (isInfoVisible()) {
		closeInfoWindow();
	}

	showPoiId = id;
	showPoiType = type;

	reloadFunc = sendArea;

	if (lastBestCenter && (x == lastBestCenter.x && y == lastBestCenter.y)) {
		reloadContent();
	} else {
		map.landMarker = makeLandMark(x, y);

		mapCenterAndZoom(x, y, SEARCH_DEFAULT_ZOOM);
	}

	lastBestId = id;
	lastBestCenter = new OPoint(x,y);
}

/* 다른 지역이동시 센터 좌표 */
function getCenter(id) {
	return regionSet.get(id);
}

/* 이야기 등록 */
function regPost (user_id) {
	if(!chkLogin ()) return;
	/* 타운 사용자 체크 */
	var tmp = user_id.substring(0,1);
	if (tmp == TOWN_CD) {
		townLayer(true);
		return;
	} else if (IsAlpha(tmp)) {
		alert (MSG_REG);
		return;
	}
	
	topLayerReg();
}

function townLayer(flag) {
	if (flag) {
		fadeInAllScreen();
		$("postTown").style.display = "block";
	} else {
		fadeOutAllScreen();
		$("postTown").style.display = "none";
	}
}

/* 포스팅 관련 공통으로 쓰는 변수 */
var POST_AREA = {};
var POST_POI = {};

var postClick_x;
var postClick_y;
var photoClick_x;
var photoClick_y;

function sendPostStory (x, y) {
	/* 타운 사용자 체크 */
	var tmp = user_id.substring(0,1);
	if (tmp == TOWN_CD) {
		townLayer(true);
		return;
	} else if (IsAlpha(tmp)) {
		alert (MSG_REG);
		return;
	}

	postClick_x = x;
	postClick_y = y;
	$("postStory").innerHTML = "";
	
	var reqParam = "cmd=info&coord_x=" + x + "&coord_y=" + y;
	ajaxSend('/post/poststory.map', reqParam, showPostStory);
}

function showPostStory (res) {
	if (map.ctxMenu) map.removeOverlay (map.ctxMenu);
	
	if (!regFlag) {
		fadeInAllScreen();
	}
	
	$("postStory").innerHTML = "";
	$("postStory").style.visibility = "visible";
	$("postStory").innerHTML=res.responseText;
	evalScriptsByName("postScripts");

	$("simpleNames").innerHTML = LOADINGTITLE;

	var url = "/addon/dong.map?fnc=simpleDong&x=" + postClick_x/10 + "&y=" + postClick_y/10;
	$("hiddenFrame").src = url;
	getPoi(1,1);
}

function sendPostPhoto (x, y) {
	$("postPhoto").innerHTML = "";
	
	if (arguments.length == 2) {
		photoClick_x = x;
		photoClick_y = y;
	} else {
		photoClick_x = null;
		photoClick_y = null;
	}

	var param = "cmd=photo";
	param += "&poi_type=" + POST_POI.poi_type + "&poi_id=" + POST_POI.poi_id;
	ajaxSend('/post/poststory.map', param, showPostPhoto);
}
	
function showPostPhoto (res) {
	$("postPhoto").innerHTML = "";
	$("postPhoto").style.visibility = "visible";
	$("postPhoto").innerHTML=res.responseText;

	evalScriptsByName("photoScripts");
	
	if (photoClick_x) {
		$("photoNames").innerHTML = LOADINGTITLE;
	
		var url = "/addon/dong.map?fnc=simplePhotoDong&x=" + photoClick_x/10 + "&y=" + photoClick_y/10;

		$("hiddenFrame").src = url;
	} else {
		var title = POST_AREA.area_name_large + " " + POST_AREA.area_name_medium + " " 
							+ POST_AREA.area_name_small + " " + "<span style=\"font-weight:bold;color:#fe6e00;\">" + POST_POI.poi_name + "</span>";

		$("area_name").value = POST_AREA.area_name_large + " " + POST_AREA.area_name_medium + " " + POST_AREA.area_name_small;
		$("photoNames").innerHTML = title;
	}
}

function setAreaInfo (obj, flag) {
	var result = obj.Search_dong;

	if (result.success == 1) {
		var simpleNames = "";		
		if (flag == "photo") {
			simpleNames = result.si + " " + result.gu + " " + result.hdong + " " + "<font style=\"font-weight:bold;\">" + POST_POI.poi_name + "</font>"
		} else {
			simpleNames = result.si + " " + result.gu + " " + "<font style=\"font-weight:bold;\">" + result.hdong + "</font>"
		}

		POST_AREA = {
			"area_name_large":result.si, "area_name_medium":result.gu, "area_name_small":result.hdong, 
			"area_code_large":result.hcode.substring(0,2), "area_code_medium":result.hcode.substring(2,5), "area_code_small":result.hcode.substring(5,8),
			"simpleNames":simpleNames
		}
	} else {
		POST_AREA = {
			"area_name_large":"", "area_name_medium":"", "area_name_small":"", 
			"area_code_large":"", "area_code_medium":"", "area_code_small":"",
			"simpleNames":NATION_NAME
		}
	}
}

function simpleDong (obj) {
	setAreaInfo(obj, "post");
	$("simpleNames").innerHTML = POST_AREA.simpleNames;
}

function simplePhotoDong (obj) {
	setAreaInfo(obj, "photo");
	$("photoNames").innerHTML = POST_AREA.simpleNames;
	$("area_name").value = POST_AREA.area_name_large + " " + POST_AREA.area_name_medium + " " + POST_AREA.area_name_small;
}

function getFormatPoiInfo () {
	var s = "&poi_id=" + POST_POI.poi_id + "&poi_name1=" + encodeURIComponent(POST_POI.poi_name) + "&poi_type=" + POST_POI.poi_type +
				"&x_coord=" + POST_POI.x_coord + "&y_coord=" + POST_POI.y_coord + "&zoom_level=" + POST_POI.level +
				"&group_code_large=" + POST_POI.group_large + "&group_code_medium=" + POST_POI.group_medium + "&group_code_small=" + POST_POI.group_small + 
				"&area_code_large=" + POST_POI.area_large + "&area_code_medium=" + POST_POI.area_medium + "&area_code_small=" + POST_POI.area_small;

	return s;
}

function setFormatPoiInfo (id, name, type, x, y, g1, g2, g3, a1, a2, a3) {
	POST_POI = null;
	POST_POI = {"poi_id": id, "poi_name": name, "poi_type": type, "x_coord": x, "y_coord": y, "level": this.map.zoomLevel,
  		"group_large":g1, "group_medium":g2, "group_small":g3, "area_large":a1, "area_medium":a2, "area_small":a3}
}

function mapCenterAndZoom (x, y, level) {
	if (!level) level = map.getZoomLevel();
	map.centerAndZoom(new OPoint(x, y), level);
}

function makeLandMark (x_coord, y_coord) {
	if (map.landMarker) {
		map.removeOverlay (map.landMarker);
		map.landMarker = null;
	}

	var icon = new OIcon(MINI_PATH + DEFAULT_PIN, new OSize(19, 20));
	var marker = new OMark(new OPoint(x_coord, y_coord), {icon:icon});
	marker.cursor = "pointer";
	OEvent.bind(marker, "click", marker, sendLandMarker);

	map.addOverlay (marker);
	return marker;
}