/* 文字コードはUTF-8 */
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";
				}
			}
		}
	}
};

function search_form_submit(startpoint){
	document.MuseumSearchActionForm.startPoint.value=startpoint;
    document.MuseumSearchActionForm.submit();

    return false;
}

function search_page_submit(startpoint){

    document.MuseumSearchActionForm.startPoint.value=startpoint;
    document.MuseumSearchActionForm.submit();

	return false;
}

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 setInputData = function() {
	var inputedDataEl = document.getElementById("inputedData");
	if (! inputedDataEl) {
		setSearchCondition();
		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 organaizationNameEl = document.getElementById("organizationName");
		if (organaizationNameEl && inputedData.organaizationName) {
			organaizationNameEl.value = inputedData.organaizationName;
		}
		var freeEl = document.getElementById("freetext");
		if (freeEl && inputedData.freetext) {
			freeEl.value = inputedData.freetext;
		}
		JQCheckList.checkEdited();
		var selectedCityId = "";
		if (inputedData.selectedCityIds && inputedData.selectedCityIds.length > 0) {
			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;
				}
			}
		};
		Gallery.onChangePrefecture(onLoadCitiesEvent);
		setSearchCondition();
	});
};
if (typeof YUI == "function") {
	YUI().use('autocomplete', 'autocomplete-highlighters', function (Y) {
		var autoCompleteInit = function() {
			Y.one('body').addClass('yui3-skin-sam');

			if (Y.one('#organizationName')) {
				Y.one('#organizationName').plug(Y.Plugin.AutoComplete, {
					queryDelay: 500,
					maxResults: 10,
					resultHighlighter: 'phraseMatch',
					source: Gallery.contextPath + '/AutoComplete.do?word={query}&type=ORGANIZATION'
				});
			}
		};
		Y.on("domready", autoCompleteInit);
	});
}

var setSearchCondition = function() {
	var el = $("#freetext")[0];
	if (! el) {
		return;
	}
	var maxLength = 36;
	var sb = [];
	sb[sb.length] = el.value;
	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;
	}
	var concatWord = sb.join(" ");
	if (concatWord.length > sb.length) {
		var onGoing = "";
		if (concatWord.length > maxLength) {
			onGoing = "...";
		}
		var searchResultTextEl = document.getElementById("pre_name_check");
		if (searchResultTextEl) {
			searchResultTextEl.innerHTML = "<strong>" + encodeXml(concatWord.substr(0, maxLength)) + onGoing + "</strong>　の検索結果";
		}
	}
};
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: false
	};
	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 organizationId = Gallery.parseParamter("id");
			if (organizationId && organizationId.length > 0 && location.pathname == Gallery.contextPath + "/MuseumDetail.do") {
				Gallery.map.openOrganizationBalloonById(organizationId);
			}
		}
	});
};
var onDocumentReadyFunc = function() {
	setInputData();
	initMap();
};
if (typeof $ == "function") {
	$(document).bind('ready', onDocumentReadyFunc);
}
