
var searchPanelControle = function(forceOpen) {
	var context = $('#search-panel');
	var klass = 'search-panel-open';
	var dl = context.find('dl.box');
	var dd = context.find('dd.body');
	dd.addClass('init');

	var open = function() {
		if (! dl.hasClass(klass)) {
			dl.addClass(klass);
			dd.slideDown();
			document.getElementById("h_searchPanelIsOpen").value = true;
		}
	};

	var close = function() {
		if (dl.hasClass(klass)) {
			dl.removeClass(klass);
			dd.slideUp();
			document.getElementById("h_searchPanelIsOpen").value = false;
		}
	};

	if (typeof forceOpen == "boolean") {
		if (forceOpen) {
			open();
		} else {
			close();
		}
	} else {
		if (dl.hasClass(klass)) {
			close();
		} else {
			open();
		}
	}
};

var isOpenPanel = function() {
	if(document.URL.indexOf("SearchDisplay.do") > 0){
		return false;
	}
	if (document.referrer.indexOf("SearchIndex.do") > 0) {
		if (document.getElementById("h_searchPanelIsOpen").value == "true") {
			return true;
		} else {
			return false;
		}
	} else if (document.referrer.indexOf("SearchDisplay.do") > 0 && document.referrer.indexOf("linkType=region") > 0) {
		return true;
	}
	return false;
};

if (typeof $ == "function" && typeof JQCheckList == "object") {
	$(document).ready(function(){
		if (isOpenPanel()) {
			searchPanelControle(true);
		}
	});
}

if (typeof $ == "function" && typeof JQCheckList == "object") {
	$(document).bind('ready', function () {

	JQCheckList.checkEdited();
	JQCheckList.ins = {};
	JQCheckList.ins.era = $('#era_cd').checkList({checkAll:0});
	JQCheckList.ins.genre = $('#genre_cd').checkList({checkAll:0});
	JQCheckList.ins.classNation = $('#classNation').checkList({checkAll:0});
	JQCheckList.ins.keywords = $('#keywords').checkList({checkAll:0});

	});

	$(window).bind('load', function () {
		var context = $('#search-panel');
		context.find('dt.title').click(searchPanelControle);
	});
}

/* 文字コードはUTF-8 */
document.getElementById('<script type="text/javascript" src="./../../../jp/resource/script/default.js"></script>');

var fc = new Object();
fc.init = function(fname){
	fc.timer = setTimeout("fc.checkSelection('" + fname + "')", 100);
};
fc.checkSelection = function(fname){
	if(typeof(document.forms[fname]) != "undefined"){
		var f = document.forms[fname];
		for(var i = 0; i < f.elements.length; i++){
			var e = f.elements[i];
			if(e.type == "checkbox"){
				if(e.checked && e.parentNode.className == "item"){
					e.parentNode.className = "item active";
				}
				else if(e.checked && e.parentNode.parentNode.parentNode.className == "item"){
					e.parentNode.parentNode.parentNode.className = "item active";
				}
				else if(!e.checked && e.parentNode.className == "item active"){
					e.parentNode.className = "item";
				}
				else if(!e.checked && e.parentNode.parentNode.parentNode.className == "item active"){
					e.parentNode.parentNode.parentNode.className = "item";
				}
			}
		}
	}
};
fc.checkRensouSelection = function(fname){
	if(typeof(document.forms[fname]) != "undefined"){
		var f = document.forms[fname];
		for(var i = 0; i < f.elements.length; i++){
			var e = f.elements[i];
			if(e.type == "checkbox"){
				if(e.checked && e.parentNode.className == "item active"){
					e.parentNode.className = "item";
					e.checked = false;
				}
				else if(e.checked && e.parentNode.parentNode.parentNode.className == "item active"){
					e.parentNode.parentNode.parentNode.className = "item";
					e.checked = false;
				}
				else if(!e.checked && e.parentNode.className == "item active"){
					e.parentNode.className = "item";
				}
				else if(!e.checked && e.parentNode.parentNode.parentNode.className == "item active"){
					e.parentNode.parentNode.parentNode.className = "item";
				}
			}
		}
	}
};
fc.inputDefaultValue = new Array();
fc.clearInput = function(obj){
	if(typeof(obj.name) != "undefined"){
		var nm = '' + obj.name;
		if(typeof(fc.inputDefaultValue[nm]) == "undefined"){
			fc.inputDefaultValue[nm] = obj.value;
		}
		if(obj.value == fc.inputDefaultValue[nm]){
			obj.value = '';
		}
	}
};

function search_page_submit(startpoint, searchType){

    document.SearchIndexActionForm.startPoint.value=startpoint;
   	document.SearchIndexActionForm.searchType.value = searchType;
    document.SearchIndexActionForm.submit();

	return false;
}

function search_submit(searchType) {

	document.SearchIndexActionForm.isAscSort.value = false;
	document.SearchIndexActionForm.heritageSortStr.value = "";

	if (document.SearchIndexActionForm.retention_id) {
		document.SearchIndexActionForm.retention_id.value = "";
	}

	document.SearchIndexActionForm.searchType.value = searchType;
    document.SearchIndexActionForm.submit();

    return false;
}

function sort_heritage(heritageSortStr, isAsc) {
	document.SearchIndexActionForm.isAscSort.value = isAsc;
	document.SearchIndexActionForm.heritageSortStr.value = heritageSortStr;
    document.SearchIndexActionForm.submit();
}

// control return key
function control_return_key() {
	if (window.event.keyCode == 13) {
//		if (window.event.srcElement.name == "getaString") {
//			document.SearchIndexActionForm.getaString2.value = window.event.srcElement.value;
//		}
		if (window.event.srcElement.name == "getaString2") {
			document.SearchIndexActionForm.getaString.value = window.event.srcElement.value;
		}
	}

	return false;
}

function connectMap () {
	var context = $('#search-panel');
	var klass = 'search-panel-open';
	var dl = context.find('dl.box');
	var dd = context.find('dd.body');
	if (dl.hasClass(klass) == false) {
		context.find('dt.title').click();
	}
	var top = context.offset().top - 10;
	if (top < $(window).scrollTop()) {
		$(/safari/i.test(navigator.userAgent) ? 'body' : 'html').animate({scrollTop:top}, 'normal');
	}
	// put code affect Google map here
}


if (typeof jQuery != 'undefined') {
	$(document).bind('ready', function () {
		if ($('#ttl3_map, #map-area').length != 2) return;
		var klass = 'map-area-open';
		var button = $('#ttl3_map');
		var area = $('#map-area');
		var container = button.parent();
		button.click(function () {
			if (container.hasClass(klass)) {
				container.removeClass(klass);
				area.slideUp();
			}
			else {
				container.addClass(klass);
				area.slideDown();
			}
		});
	});
}

var initMap = function () {

	var prefEl = document.getElementById("prefecture_cd");
	var prefectureCd = (prefEl) ? prefEl.value : null;

	var position = Gallery.getMapInitPosition(prefectureCd);

	var eventFunc = function() {
		var latEl = document.getElementById("h_latitude");
		var lngEl = document.getElementById("h_longitude");
		var zoomEl = document.getElementById("h_zoom");

		if (latEl) {
			latEl.value = Gallery.map.gmap.getCenter().lat();
		}
		if (lngEl) {
			lngEl.value = Gallery.map.gmap.getCenter().lng();
		}
		if (zoomEl) {
			zoomEl.value = Gallery.map.gmap.getZoom();
		}
	};

	var opt = {
		initLat : position.latitude,
		initLng : position.longitude,
		zoom: position.zoom,
		showHeritage: true
	};
	if (document.getElementById("h_pageId")) {
		opt.pageId = document.getElementById("h_pageId").value;
	}
	var mapEid = "map_canvas";
	if (! document.getElementById(mapEid)) {
		return;
	}
	var isInit = true;
	Gallery.map = new Gallery.Map(mapEid, opt);
	google.maps.event.addListener(Gallery.map.gmap, "idle", function() {
		eventFunc();
		if (isInit) {
			isInit = false;
			var heritageId = Gallery.parseParamter("heritageId");
			if (heritageId && heritageId.length > 0) {
				Gallery.map.openBalloonByHeritageId(heritageId);
			}
		}
	});
};
var recheckAssocHeritage = function() {
	var el = document.getElementById("assocHeritageIds");
	if (! el) {
		return;
	}
	var assocHeritageIdListString = el.innerHTML;
	var assocHeritageIdList = assocHeritageIdListString.split(",");
	var isNeedCheck = function(val) {
		for (var i = 0; i < assocHeritageIdList.length; i++) {
			if (assocHeritageIdList[i] == val) {
				return true;
			}
		}
		return false;
	};
	$("input.checkbox1").each(function(index, el){
		var isCheck = isNeedCheck(el.value);
		el.checked = isCheck;
		if (isCheck) {
			fc.checkSelection(el.form.name);
		}
	});
};

if (typeof YUI == "function") {
	YUI().use('autocomplete', 'autocomplete-highlighters', function (Y) {
		var autoCompleteInit = function() {
			Y.one('body').addClass('yui3-skin-sam');

			if (Y.one('#museum')) {
				Y.one('#museum').plug(Y.Plugin.AutoComplete, {
					queryDelay: 500,
					maxResults: 10,
					resultHighlighter: 'phraseMatch',
					source: Gallery.contextPath + '/AutoComplete.do?word={query}&type=ORGANIZATION'
				});
			}
			if (Y.one('#appellation')) {
				Y.one('#appellation').plug(Y.Plugin.AutoComplete, {
					queryDelay: 500,
					maxResults: 10,
					resultHighlighter: 'phraseMatch',
					source: Gallery.contextPath + '/AutoComplete.do?word={query}&type=HERITAGE'
				});
			}
			if (Y.one('#author')) {
				Y.one('#author').plug(Y.Plugin.AutoComplete, {
					queryDelay: 500,
					maxResults: 10,
					resultHighlighter: 'phraseMatch',
					source: Gallery.contextPath + '/AutoComplete.do?word={query}&type=CREATOR'
				});
			}
		};
		Y.on("domready", autoCompleteInit);
	});
}

function encodeXml(str) {
	var map = {
		'<': '&lt;',
		'>': '&gt;',
		'&': '&amp;',
		'"': '&quot;'
	};
	return str.replace(/([\&"<>])/g, function(s, key) {return map[key];});
};

function decodeXml(str) {
	var map = {
		'&lt;': '<',
		'&gt;': '>',
		'&amp;': '&',
		'&quot;': '"'
	};

	return str.replace(/(&lt;|&gt;|&amp;|&quot;)/g, function(s, key) {return map[key];});
}

var initSyncSelectEl = function() {
	Gallery.syncSelectEl = new Gallery.SyncSelectEl(["numOfItemsList1", "numOfItemsList2", "numOfItemsList3"]);
};
var setInputeData = function() {
	var inputedDataEl = document.getElementById("inputedData");
	if (! inputedDataEl) {
		return;
	}
	YUI().use('json', function (Y) {

		var jsonString = decodeXml(inputedDataEl.innerHTML);
		var inputedData = {};
		if (jsonString.length > 0) {
			try {
				inputedData = Y.JSON.parse(jsonString);
			} catch (e) {
			}
		}
		var freeEl = document.getElementById("freetext");
		if (freeEl) {
			freeEl.value = inputedData.freetext;
		}
		var creatorNameEl = document.getElementById("author");
		if (creatorNameEl) {
			creatorNameEl.value = inputedData.creatorName;
		}
		var heritageNameEl = document.getElementById("appellation");
		if (heritageNameEl) {
			heritageNameEl.value = inputedData.heritageName;
		}
		var organizationNameEl = document.getElementById("museum");
		if (organizationNameEl) {
			organizationNameEl.value = inputedData.organizationName;
		}
		JQCheckList.checkEdited();
		if (inputedData.selectedCityIds || inputedData.selectedCityIds.length > 0) {
			var selectedCityId = inputedData.selectedCityIds[0];
			var onLoadCitiesEvent = function(selecteEl) {
				for (var i = 0; i < selecteEl.options.length; i++) {
					var option = selecteEl.options[i];
					if (option.value == selectedCityId) {
						option.selected = true;
						selecteEl.selectedIndex = i;
						setSearchCondition();
						return;
					}
				}
				setSearchCondition();
			};
		}
		var doAjax = Gallery.onChangePrefecture(onLoadCitiesEvent);
		if (! doAjax) {
			setSearchCondition();
		}
	});
};
var setSearchCondition = function() {
	var el = $("#freetext")[0];
	if (! el) {
		return;
	}
	var maxLength = 36;
	var sb = [];
	sb[sb.length] = el.value;
	sb[sb.length] = $("#appellation")[0].value;
	sb[sb.length] = $("#author")[0].value;
	sb[sb.length] = $("#museum")[0].value;
	var eraEl = $("#era_cd")[0];
	if (eraEl && eraEl.selectedIndex > 0) {
		sb[sb.length] = eraEl.nextSibling.childNodes[0].innerHTML.replace(/　/g, "");
	}
	var genreEl = $("#genre_cd")[0];
	if (genreEl && genreEl.selectedIndex > 0) {
		sb[sb.length] = genreEl.nextSibling.childNodes[0].innerHTML.replace(/　/g, "");
	}
	var classNationEl = $("#classNation")[0];
	if (classNationEl && classNationEl.selectedIndex > 0) {
		sb[sb.length] = classNationEl.nextSibling.childNodes[0].innerHTML.replace(/　/g, "");
	}
	var keywordEl = $("#keywords")[0];
	if (keywordEl && keywordEl.selectedIndex > 0) {
		sb[sb.length] = keywordEl.nextSibling.childNodes[0].innerHTML.replace(/　/g, "");
	}
	var prefectureEl = $("#prefecture_cd")[0];
	if (prefectureEl.selectedIndex != 0) {
		sb[sb.length] = prefectureEl.options[prefectureEl.selectedIndex].innerHTML.replace(/　/g, "");
	}
	var cityEl = $("#municipality_cd")[0];
	if (cityEl.selectedIndex > 0) {
		sb[sb.length] = cityEl.options[cityEl.selectedIndex].innerHTML.replace(/　/g, "");
	}
	var hitNarticles = function() {
		var el = document.getElementById("hitNarticles");
		if (el) {
			return el.innerHTML;
		}
		return null;
	};
	var sortEl = function() {
		var result = "";
		var array = new Array(5);
		array[0] = "sort_heritage_name";
		array[1] = "sort_creator_name";
		array[2] = "sort_create_year";
		array[3] = "sort_organizaiton_name";
		array[4] = "sort_regist_date";
		array[5] = "sort_assoc";
		for (var i = 0; i < array.length; i++) {
			var sortType = getSortType(array[i]);
			if (sortType) {
				result = sortType;
			}
		}
		return result;
	};
	var getSortType = function(sortType) {
		var el = document.getElementById(sortType);
		if (el.className) {
			return el.title;
		}
		return null;
	};
	var concatWord = sb.join(" ");
	if (concatWord.length > sb.length) {
		var onGoing = "";
		if (concatWord.length > maxLength) {
			onGoing = "...";
		}
		document.getElementById("ttl5_ltxt").innerHTML = "<strong>" + encodeXml(concatWord.substr(0, maxLength)) + onGoing + "</strong>　の検索結果";
	}
	if (keywordEl) {
		document.getElementById("ttl5_ltxt").innerHTML = "<strong>検索結果(連想検索の結果" + hitNarticles() + "を" + sortEl() + "で並び替え)</strong>";
	}
};
var onDocumentReadyFunc = function() {
	initMap();
	recheckAssocHeritage();
	initSyncSelectEl();
	setInputeData();
};
if (typeof $ == "function") {
	$(document).bind('ready', onDocumentReadyFunc);
}
var clickMap = function (heritageId, myEl, baloonType) {

	var close = function() {
		myEl.isOpen=false;
		$(myEl).removeClass('highlight');
	};

	var open = function() {
		searchPanelControle(true);
		myEl.isOpen=true;
		$(myEl).addClass('highlight');
	};

	if(myEl.isOpen==true){
		Gallery.map.closePreviousBalloon();
	}else{
		open();
		Gallery.map.openBalloonByHeritageId(heritageId,	open, close);
	}
	connectMap();
};

