var markers = {};
var estates = [];
var selected = {};
var gmap;

var initialZoomLevel = 14;
var images_url = '/ohnav/files';
var imgs_url = '/ohnav/files';
var data_url = '/ohnav/js/map_contents.js';
var default_interval = 2000;

function load() {
	if (GBrowserIsCompatible()) {
		if(typeof(GMap2) == 'undefined'){
			alert("GoogleMapが利用できません。ブラウザのキャッシュを削除すると解決する可能性があります。");
			return;
		}
		initGMap();
		initTypes();
	}
//	var accordion = new Spry.Widget.Accordion(document.getElementById("Accordion1"));
}

function initGMap() {
	gmap = new GMap2(document.getElementById("gmap"));
	gmap.addControl(new GLargeMapControl());
	gmap.addControl(new GMapTypeControl());
	gmap.setCenter(new GLatLng(35.495041,133.692718), initialZoomLevel);
}

function initTypes() {
	data_url += '?' + (new Date).getTime();

	GDownloadUrl(data_url, function(data, responseCode) {
		estates = eval('(' + data + ')');

		for (var i = 0; i < estates.length; i++) {

			var estate = estates[i].Estates;

			var EntryRoot = document.getElementById('Accordion1');
			try {
				addEntry(
					EntryRoot,
					estate
				);
			}
			catch(e) { }
			EntryRoot.normalize();
		}
	});

	setTimeout('doDefaultSelection()', default_interval);
}

function doDefaultSelection() {
	var arg = {};
	str = location.search.substring(1);
	arr = str.split('&');
	for (var i = 0; i < arr.length; i++) {
		kv = arr[i].split('=');
		arg[kv[0]] = kv[1];
	}

	if (arg['estate']) {
		selectEntry(arg['estate']);
	}
	else {
		if (estates[0] != undefined) {
			selectEntry(estates[0].Estates.id);
		}
	}
}

function getUL(type, name) {
	return document.getElementById('gmap' + ucFirst(type) + name);
}

function addEntry(root, entry) {
	var child = document.createElement('div');
	Element.addClassName(child, 'AccordionPanel');
	
	var child_tab = document.createElement('div');
	Element.addClassName(child_tab, 'AccordionPanelTab');

	var tab_h5 = document.createElement('h5');
	tab_h5.appendChild(document.createTextNode('空き家物件 No.' + entry.regist_no));
	child_tab.appendChild(tab_h5);
	child.appendChild(child_tab);

	var child_text = document.createElement('div');
	child_text.setAttribute('rel', entry.id);
	Element.addClassName(child_text, 'AccordionPanelContent');
	
	var text_p = document.createElement('p');
	text_p.appendChild(document.createTextNode(entry.estate_address));
	child_text.appendChild(text_p);
	
	var btn_ul = document.createElement('ul');
	Element.addClassName(btn_ul, 'btn');
	
	if (entry.now_negotiate == 0) {
		var btn_li_detail = document.createElement('li');
		Element.addClassName(btn_li_detail, 'details');
		var detail_a = document.createElement('a');
		detail_a.setAttribute('href', "/ohnav/estates/view/" + entry.id);
		detail_a.appendChild(document.createTextNode('詳細へ'));
		btn_li_detail.appendChild(detail_a);
		btn_ul.appendChild(btn_li_detail);

		var btn_li_useit = document.createElement('li');
		Element.addClassName(btn_li_useit, 'useit');
		var useit_a = document.createElement('a');
		useit_a.setAttribute('href', "/ohnav/estates/booking/" + entry.id);

		useit_a.appendChild(document.createTextNode('利用申込'));
		btn_li_useit.appendChild(useit_a);
		btn_ul.appendChild(btn_li_useit);
	}


	child_text.appendChild(btn_ul);

	child.appendChild(child_text);

	root.appendChild(child);
	addMarker(entry);
}

function ucFirst (str) {
	return str.substr(0, 1).toUpperCase() + str.substr(1, str.length);
}


function selectEntry(entryID) {
	GEvent.trigger(markers[entryID], 'click');

	for (i in markers) {
		if (e = document.getElementById('entry' + i)) {
			if (i == entryID) {
				e.style.fontWeight = 'bold';
			}
			else if (e.style.fontWeight != 'normal') {
				e.style.fontWeight = 'normal';
			}
		}
	}
}

function addMarker(data) {
	var marker = new GMarker(new GLatLng(data.estate_map_lat, data.estate_map_lng));

	GEvent.addListener(marker, 'click', function() {
		var content = document.createElement('div');
		content.setAttribute(
			(document.all ? 'className' : 'class'), 'gmapWindow'
		);

		content.appendChild(
			createContentDiv('gmapTitle', document.createTextNode('登録No. ' + data.regist_no))
		);

		if (data.image_estate_exterior) {
			var img = document.createElement('img');

			if (data.has_thum_image_estate_exterior) {
				img.setAttribute('src', images_url + '/thum_' + data.image_estate_exterior);
			} else {
				img.setAttribute('src', images_url + '/' + data.image_estate_exterior);
			}
			img.setAttribute('width', 200);
			img.setAttribute('height', 150);
			img.setAttribute('border', 0);
			img.setAttribute('alt', data.regist_no);

			content.appendChild(createContentDiv(
				'gmapImage',
				img
			));
		}


		if (data.now_negotiate == 0) {
			if (data.estate_address) {
				var t = createContentDiv('gmapText');

				t.appendChild(document.createTextNode(data.estate_address));

				content.appendChild(createContentDiv(
					'gmapText',
					document.createTextNode(data.estate_address)
				));
			}

			var link = document.createElement('p');

			var info_a = document.createElement('a');
			info_a.setAttribute('href', './estates/view/' + data.id);
			info_a.setAttribute('target', '_blank');
			info_a.appendChild(document.createTextNode('詳細ページ'));
			link.appendChild(info_a);

			content.appendChild(createContentDiv(
				'gmapUrl',
				link
			));
		}

		marker.openInfoWindowHtml(content);
	});

	gmap.addOverlay(marker);

	markers[data.id] = marker;
}

function createContentDiv(classname, child) {
	var div = document.createElement('div');
	div.setAttribute((document.all ? 'className' : 'class'), classname);

	if (child) {
		div.appendChild(child);
	}

	return div;
}

