
var sidemap_flash_version = '8.0.0';
var id_overlay = "sidemap_overlay";
var id_swfarea = "sidemap_swfarea";
var id_swfarea_container = "sidemap_swfarea_container";
var _area_shop_xml = '/shop/shop.xml';
var _area_shop_data = {};
var _all_shop_data = [];

document.observe("dom:loaded", function(event){
	_initializeMapFlash();
	_initializeComicSearch();
});

function _initializeMapFlash(callcount){
	if(callcount == null){
		callcount = 0;
	}
	var btn = $("btn_sidemap_open");
	if(btn == null){
		if(callcount > 10){
			return;
		}
		var cnt = callcount;
		cnt++;
		window.setTimeout(function(){ _initializeMapFlash(cnt); }, 500);
		return;
	}

	if(swfobject.hasFlashPlayerVersion(sidemap_flash_version)){
		btn.observe("click", function(event){
			var btn = this.childElements()[0];
			var offset = $(btn).cumulativeOffset();
			var dimensions = $(btn).getDimensions();
			var from = {
				top: offset.top,
				left: offset.left,
				width: dimensions.width,
				height: dimensions.height
			};
			openSideMap(from);
		});
	}
	else{
		btn.hide();
	}
}

function _initializeComicSearch(){
	_all_shop_data = [];
	
	var shop_xml = _area_shop_xml;
	if(window.ALT_SHOP_XML){
		shop_xml = ALT_SHOP_XML;
	}
	
	new Ajax.Request(shop_xml, {
		method: "get",
		onSuccess: function(response){
			var doc = response.responseXML;
			var nl_prefecture = doc.getElementsByTagName('prefecture');
			for(var i=0; i<nl_prefecture.length; i++){
				var elem_prefecture = nl_prefecture.item(i);
				var pref_key = elem_prefecture.getAttribute('key');
				var nl_shop = elem_prefecture.getElementsByTagName('shop');
				var shops = [];
				for(var j=0; j<nl_shop.length; j++){
					var elem_shop = nl_shop.item(j);
					var value = elem_shop.getAttribute('navikomi');
					var label = elem_shop.getAttribute('name');
					shops.push({label:label, value:value});
					_all_shop_data.push({label:label, value:value});
				}
				_area_shop_data[pref_key] = shops;
			}
		}
	});
}

function openSideMap(from){
	var swfarea_top_margin = 50;
	var swfarea_w = 640;
	var swfarea_h = 441;
	var button_area_h = 32;
	var swfarea_margin_w = 10;
	var swfarea_margin_h = 10;
	var swfarea_padding_w = 0;
	var swfarea_padding_h = 10;
	var swfarea_outer_w = swfarea_w + (swfarea_margin_w * 2) + (swfarea_padding_w * 2);
	var swfarea_outer_h = swfarea_h + (swfarea_margin_h * 2) + (swfarea_padding_h * 2) + button_area_h;

	var body = document.getElementsByTagName("body").item(0);
	var swfarea = $(id_swfarea);
	if(swfarea == null){
		swfarea = new Element("div", {id: id_swfarea});
		swfarea.setStyle({
			position: "absolute",
			background: "#FFFFFF",
			width: swfarea_outer_w + "px",
			height: swfarea_outer_h + "px",
			zIndex: 10000,
			top: "0px",
			left: "0px",
			display: "none"
		});

		var swfarea_inner = new Element("div");
		swfarea_inner.setStyle({
			marginTop: swfarea_margin_w + 'px',
			marginBottom: swfarea_margin_w + 'px',
			marginLeft: swfarea_margin_h + 'px',
			marginRight: swfarea_margin_h + 'px',
			paddingTop: swfarea_padding_h + 'px',
			paddingBottom: swfarea_padding_h + 'px',
			paddingLeft: swfarea_padding_w + 'px',
			paddingRight: swfarea_padding_w + 'px',
			background: "#EEEEEE"
		});
		var swfarea_container = new Element("div", {id: id_swfarea_container});
		swfarea_inner.appendChild(swfarea_container);
		swfarea.appendChild(swfarea_inner);

		var button_area = new Element("div");
		button_area.setStyle({
			textAlign: "center",
			marginBottom: "10px"
		});
		
		var button_a = new Element("a", {href: "javas"+"cript:;"});
		var button = new Element("img", {src:"/shared/img/btn_020_001.gif", width:110, height:22, alt:""}); 
		button_a.observe("click", closeSideMap);
		button_a.appendChild(button);
		button_area.appendChild(button_a);
		
		swfarea.appendChild(button_area);
		
		body.appendChild(swfarea);
		swfobject.embedSWF("/shared/swf/map_s.swf", id_swfarea_container, swfarea_w, swfarea_h, sidemap_flash_version);
	}
	
	var scroll_offset = document.viewport.getScrollOffsets();
	var swfarea_t = 0;
	var swfarea_l = from.left + from.width - swfarea_outer_w;
	
	var view_height = document.viewport.getHeight();
	if(view_height == 0 || view_height == null){
		view_height = document.body.clientHeight || document.documentElement.clientHeight;
	}
	
	if(view_height > swfarea_outer_h){
		swfarea_t = (view_height - swfarea_outer_h) / 2;
		if(swfarea_t > swfarea_top_margin){
			swfarea_t = swfarea_top_margin;
		}
	}
	else{
		swfarea_t = 0;
	}
	swfarea_t += scroll_offset.top;
	
	swfarea.show();
	
	swfarea.setStyle({
		top: swfarea_t + "px",
		left: swfarea_l + "px",
		width: swfarea_outer_w + "px",
		height: swfarea_outer_h + "px"
	});
		
	_showOverlay();
}

function closeSideMap(){
	_hideOverlay();
	var swfarea = $(id_swfarea);
	if(swfarea){
		swfarea.hide();
	}
}

function _showOverlay(){
	var body = document.getElementsByTagName("body").item(0);

	var overlay = $(id_overlay);
	if(overlay == null){
		overlay = new Element("div", {id: id_overlay});
		overlay.setStyle({
			position: "absolute",
			top: "0px",
			left: "0px",
			background: "#000000",
			zIndex: 9999,
			display: "none"
		});
		overlay.setOpacity(0.3);
		body.appendChild(overlay);
	}

	var doc_w = $(body).getWidth();
	var doc_h = $(body).getHeight();
	
	if(Prototype.Browser.IE){
		doc_w = document.body.scrollWidth || document.documentElement.scrollWidth;
		doc_h = document.body.scrollHeight || document.documentElement.scrollHeight;
	}
	
	overlay.setStyle({
		"width": doc_w + "px",
		"height": doc_h + "px"
	});
	overlay.show();
	overlay.observe("click", closeSideMap);

	var nl_select = document.getElementsByTagName("select");
	for(var i=0; i<nl_select.length; i++){
		nl_select.item(i).style.visibility = "hidden";
	}	

	return overlay;
}

function _hideOverlay(){
	var overlay = $(id_overlay);
	
	if(overlay){
		overlay.hide();
	}
	
	var nl_select = document.getElementsByTagName("select");
	for(var i=0; i<nl_select.length; i++){
		nl_select.item(i).style.visibility = "";
	}	
}

function changeComicSearchShopArea(parentId, childId){
	var val = $(parentId).getValue();
	var options = [];
	if(_area_shop_data[val]){
		options = _area_shop_data[val];
	}
	$(childId).options.selectedIndex = 0;
	while($(childId).options.length > 1){
		$($(childId).options[1]).remove();
	}
	for(var i=0; i<options.length; i++){
		$(childId).insert(new Element("option", {value: options[i].value}).update(options[i].label));
	}
}


function selectAreaSWF(area_key, pref_key){
	closeSideMap();

	if(area_key == null){
		area_key = '';
	}
	if(pref_key == null){
		pref_key = '';
	}
	
	if(window.SWF_ONSELECT_TO_RESULT){
		location.href = window.SEARCH_RESULT_URL + '?c03_category3_1=' + area_key + '&c03_category3_2=' + pref_key;
	}
	else{
		var select_value = pref_key != '' ? pref_key : area_key;
		var area_select = $("select_sidemap_area");
		if(area_select != null){
			for(var i=0; i<area_select.options.length; i++){
				if(area_select.options[i].value == select_value){
					area_select.selectedIndex = i;
					break;
				}
			}
		}
	}
}


