// --------------------------------------------------------------------
// Author  : metaphase
// Create  : 2009/03/09
// Update  : 2009/03/09
// Description : 店舗検索を制御する
// --------------------------------------------------------------------

var shopSearch = {

	//-----------------------------------------
	// 設定値
	//-----------------------------------------
	conf : {
		// アクティブな地域(編集不可)
		active : ''
	},

	//-----------------------------------------
	// 店舗検索 初期化
	//-----------------------------------------
	init : function() {
		
		// 検索結果エリアを取得
		var tohoku = document.getElementById('tohoku');
		var kanto = document.getElementById('kanto');
		var hokuriku = document.getElementById('hokuriku');
		var tokai = document.getElementById('tokai');
		var kansai = document.getElementById('kansai');
		var chugoku = document.getElementById('chugoku');
		var kyushu = document.getElementById('kyushu');
		
		// 検索結果エリアを非表示にする
		tohoku.style.display = 'none';
		kanto.style.display = 'none';
		hokuriku.style.display = 'none';
		tokai.style.display = 'none';
		kansai.style.display = 'none';
		chugoku.style.display = 'none';
		kyushu.style.display = 'none';
		var japan = new Array(tohoku,kanto,hokuriku,tokai,kansai,chugoku,kyushu);
		
		// アンカーリンクにイベントを付加する
		for (var x = 0; x < japan.length; x++) {
			var elm = japan[x];
			var list = elm.getElementsByTagName('LI');
			for (var y = 0; y < list.length; y++) {
				var a = list[y].getElementsByTagName('A');
				var href = a[0].getAttribute('href');
				// scrollerとの競合回避
				if ( discernBrowser.isIE6() || discernBrowser.isIE7() ) {
					href = href.split('#');
					href = href[1];
				} else {
					href = href.replace('javascript:','');
					href = href.replace('scroller.main(\'#','');
					href = href.replace('\');','');
				}
				a[0].setAttribute('href','javascript:shopSearch.extract(\''+elm.id+'\',\''+href+'\');');
			}
		}
		
		// 地図にイベントを付加する
		var map = document.getElementById('Map');
		var areas = map.getElementsByTagName('AREA');
		var len = areas.length;
		for (var x = 0; x < len; x++) {
			// マウスアウト付加
			areas[x].onmouseout = function() {
				shopSearch.changBg('');
			}
			// マウスオーバー＆クリック付加
			var href = areas[x].getAttribute('href');
			if ( discernBrowser.isIE6() || discernBrowser.isIE7() ) {
				href = href.split('#');
				href = '#' + href[1];
			}
			switch (href) {
				case '#tohoku':
					areas[x].setAttribute('href','javascript:shopSearch.search(\'tohoku\');');
					areas[x].onmouseover = function() {
						shopSearch.changBg('tohoku');
					}
					break;
				case '#kanto':
					areas[x].setAttribute('href','javascript:shopSearch.search(\'kanto\');');
					areas[x].onmouseover = function() {
						shopSearch.changBg('kanto');
					}
					break;
				case '#hokuriku':
					areas[x].setAttribute('href','javascript:shopSearch.search(\'hokuriku\');');
					areas[x].onmouseover = function() {
						shopSearch.changBg('hokuriku');
					}
					break;
				case '#tokai':
					areas[x].setAttribute('href','javascript:shopSearch.search(\'tokai\');');
					areas[x].onmouseover = function() {
						shopSearch.changBg('tokai');
					}
					break;
				case '#kansai':
					areas[x].setAttribute('href','javascript:shopSearch.search(\'kansai\');');
					areas[x].onmouseover = function() {
						shopSearch.changBg('kansai');
					}
					break;
				case '#chugoku':
					areas[x].setAttribute('href','javascript:shopSearch.search(\'chugoku\');');
					areas[x].onmouseover = function() {
						shopSearch.changBg('chugoku');
					}
					break;
				case '#kyushu':
					areas[x].setAttribute('href','javascript:shopSearch.search(\'kyushu\');');
					areas[x].onmouseover = function() {
						shopSearch.changBg('kyushu');
					}
					break;
			}
		}
		
	},

	//-----------------------------------------
	// 店舗検索 地図画像の変更
	//-----------------------------------------
	changBg : function(id) {
		var map = document.getElementById('shopMap');
		var img = map.getElementsByTagName('IMG')[1];
		switch (id) {
			case 'tohoku':
				img.setAttribute('src','images/map_tohoku.gif');
				break;
			case 'kanto':
				img.setAttribute('src','images/map_kanto.gif');
				break;
			case 'hokuriku':
				img.setAttribute('src','images/map_hokuriku.gif');
				break;
			case 'tokai':
				img.setAttribute('src','images/map_tokai.gif');
				break;
			case 'kansai':
				img.setAttribute('src','images/map_kansai.gif');
				break;
			case 'chugoku':
				img.setAttribute('src','images/map_chugoku.gif');
				break;
			case 'kyushu':
				img.setAttribute('src','images/map_kyushu.gif');
				break;
			default:
				if ( shopSearch.conf.active == '' ) {
					img.setAttribute('src','images/map_default.gif');
				} else {
					img.setAttribute('src','images/map_'+shopSearch.conf.active+'.gif');
				}
				break;
		}
	},

	//-----------------------------------------
	// 店舗検索 地域で検索
	//-----------------------------------------
	search : function(id) {
		var area = document.getElementById(id);
		var target = area.getElementsByTagName('DIV');
		for (var x = 0; x < target.length; x++) {
			if ( target[x].id != null && target[x].id != '' ) {
				target[x].style.display = 'block';
			}
		}
		switch (id) {
			case 'tohoku':
				document.getElementById('tohoku').style.display = 'block';
				document.getElementById('kanto').style.display = 'none';
				document.getElementById('hokuriku').style.display = 'none';
				document.getElementById('tokai').style.display = 'none';
				document.getElementById('kansai').style.display = 'none';
				document.getElementById('chugoku').style.display = 'none';
				document.getElementById('kyushu').style.display = 'none';
				break;
			case 'kanto':
				document.getElementById('tohoku').style.display = 'none';
				document.getElementById('kanto').style.display = 'block';
				document.getElementById('hokuriku').style.display = 'none';
				document.getElementById('tokai').style.display = 'none';
				document.getElementById('kansai').style.display = 'none';
				document.getElementById('chugoku').style.display = 'none';
				document.getElementById('kyushu').style.display = 'none';
				break;
			case 'hokuriku':
				document.getElementById('tohoku').style.display = 'none';
				document.getElementById('kanto').style.display = 'none';
				document.getElementById('hokuriku').style.display = 'block';
				document.getElementById('tokai').style.display = 'none';
				document.getElementById('kansai').style.display = 'none';
				document.getElementById('chugoku').style.display = 'none';
				document.getElementById('kyushu').style.display = 'none';
				break;
			case 'tokai':
				document.getElementById('tohoku').style.display = 'none';
				document.getElementById('kanto').style.display = 'none';
				document.getElementById('hokuriku').style.display = 'none';
				document.getElementById('tokai').style.display = 'block';
				document.getElementById('kansai').style.display = 'none';
				document.getElementById('chugoku').style.display = 'none';
				document.getElementById('kyushu').style.display = 'none';
				break;
			case 'kansai':
				document.getElementById('tohoku').style.display = 'none';
				document.getElementById('kanto').style.display = 'none';
				document.getElementById('hokuriku').style.display = 'none';
				document.getElementById('tokai').style.display = 'none';
				document.getElementById('kansai').style.display = 'block';
				document.getElementById('chugoku').style.display = 'none';
				document.getElementById('kyushu').style.display = 'none';
				break;
			case 'chugoku':
				document.getElementById('tohoku').style.display = 'none';
				document.getElementById('kanto').style.display = 'none';
				document.getElementById('hokuriku').style.display = 'none';
				document.getElementById('tokai').style.display = 'none';
				document.getElementById('kansai').style.display = 'none';
				document.getElementById('chugoku').style.display = 'block';
				document.getElementById('kyushu').style.display = 'none';
				break;
			case 'kyushu':
				document.getElementById('tohoku').style.display = 'none';
				document.getElementById('kanto').style.display = 'none';
				document.getElementById('hokuriku').style.display = 'none';
				document.getElementById('tokai').style.display = 'none';
				document.getElementById('kansai').style.display = 'none';
				document.getElementById('chugoku').style.display = 'none';
				document.getElementById('kyushu').style.display = 'block';
				break;
		}
		
		shopSearch.conf.active = id;
		shopSearch.changBg(id);
		
	},

	//-----------------------------------------
	// 店舗検索 県で絞り込み
	//-----------------------------------------
	extract : function(area,id) {
		
		var area = document.getElementById(area);
		var target = area.getElementsByTagName('DIV');
		for (var x = 0; x < target.length; x++) {
			if ( target[x].id != null && target[x].id != '' ) {
				target[x].style.display = 'none';
			}
		}
		document.getElementById(id).style.display = 'block';
		
	},

	//-----------------------------------------
	// Loadイベントに追加
	//-----------------------------------------
	addLoadEvent : function() {
		try {
			window.addEventListener('load', this.init, false);
		} catch (e) {
			window.attachEvent('onload', this.init);
		}
	}

}

shopSearch.addLoadEvent();

var discernBrowser = {
	
	isIE : function() {
		IE='\v'=='v';
		if(IE){
			return true;
		}else{
			return false;
		}
	},
	
	isIE5 : function() {
		var md = window.showModelessDialog;
		var ns = document.namespaces;
		var im = document.implementation;
		if(discernBrowser.isIE()){
			if( !window.XMLHttpRequest && ( (md && ns && !im) || (md && !ns && !im) ) ){
				return true;
			} else if (discernBrowser.isIEQuirks()) {
				return true;
			} else {
				return false;
			}
		}else{
			return false;
		}
	},
	
	isIE6 : function() {
		var md = window.showModelessDialog;
		var ns = document.namespaces;
		var im = document.implementation;
		if(discernBrowser.isIE()){
			if(!window.XMLHttpRequest && (md && ns && im) ){
				return true;
			} else {
				return false;
			}
		}else{
			return false;
		}
	},
	
	isIE7 : function() {
		if(discernBrowser.isIE()){
			if(window.XMLHttpRequest){
				if(!document.documentMode){
					return true;
				} else if (document.documentMode && document.documentMode == '7') {
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		}else{
			return false;
		}
	},
	
	isIEQuirks : function() {
		if(discernBrowser.isIE()){
			if(window.XMLHttpRequest){
				if(document.documentMode && document.documentMode == '5'){
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		}else{
			return false;
		}
	},
	
	isEmulateIE7 : function() {
		if(discernBrowser.isIE()){
			if(window.XMLHttpRequest){
				if(document.documentMode && document.documentMode == '7'){
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		}else{
			return false;
		}
	},
	
	isIE8 : function() {
		if(discernBrowser.isIE()){
			if(document.documentMode && !discernBrowser.isEmulateIE7() && !discernBrowser.isIEQuirks()){
				return true;
			} else {
				return false;
			}
		}else{
			return false;
		}
	},
	
	isFirefox : function() {
		FF=/a/[-1]=='a';
		if(FF){
			return true;
		}else{
			return false;
		}
	},
	
	isFirefox2 : function() {
		FF2=(function x(){})[-6]=='x';
		if(FF2){
			return true;
		}else{
			return false;
		}
	},
	
	isFirefox3 : function() {
		FF3=(function x(){})[-5]=='x';
		if(FF3){
			return true;
		}else{
			return false;
		}
	},
	
	isSafari : function() {
		Saf=/a/.__proto__=='//';
		if(Saf){
			return true;
		}else{
			return false;
		}
	},
	
	isOpera : function() {
		Op=/^function \(/.test([].sort);
		if(Op){
			return true;
		}else{
			return false;
		}
	},
	
	isChrome : function() {
		Chr=/source/.test((/a/.toString+''));
		if(Chr){
			return true;
		}else{
			return false;
		}
	}
	
}