//<![CDATA[
var $j=jQuery.noConflict();

//メイン
window.onload = mapControl;
window.onunload = GUnload;
var obj_map;
var obj_controlmap;
var obj_markers=[];
var obj_htmls=[];
var obj_lat=[];
var obj_lng=[];
var obj_markerNo=[];


	//コントローラクラス
	function mapControl(){

		if(!GBrowserIsCompatible()){
			alert('お使いのブラウザではご利用になれません');
			return;
		}
//35.23664622093195, 137.900390625
		var obj_point = {x:35.23664622093195,y:137.900390625}
		this.obj_controlmap = new class_controlmap(obj_point);
		this.obj_controlmap.sqladdMarkers(obj_controlmap.obj_map);
		this.obj_controlmap.actionClick(obj_controlmap.obj_map);
	}

	function areaclick(i){
		areanumber=i;
		this.obj_controlmap.sqladdMarkers(obj_controlmap.obj_map);
//		this.obj_controlmap.actionClick(obj_controlmap.obj_map);
	}

	function searchPoint(){
		this.obj_controlmap.search(obj_controlmap.obj_map);
	}

	function myclick(i) {
		var latobj=obj_lat[i];
		var lngobj=obj_lng[i];
		latobj=parseFloat(latobj)+0.0005;
		lngobj=parseFloat(lngobj)+0.001;
		var latlng = new GLatLng(latobj,lngobj);
		this.obj_controlmap.panPoint(obj_controlmap.obj_map,latlng,i);
	}


	//インスタンス生成
	var class_controlmap = new Class.create();


	//マップ操作モデルクラス
	class_controlmap.prototype={

		//■イニシャライズ
		initialize:function(obj_point){

			this.obj_map = new GMap2($('map'));
			this.obj_map.addControl(new GLargeMapControl());
			this.obj_map.addControl(new GMapTypeControl(true));
			this.obj_map.enableScrollWheelZoom();
			this.obj_map.enableContinuousZoom();
//			minimapsize = new GSize(160,160);
//			this.obj_map.addControl(new GOverviewMapControl(minimapsize));
			pos = new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize (80,5));
			this.obj_map.addControl(new GScaleControl(),pos);
			this.obj_map.setCenter(new GLatLng( obj_point.x , obj_point.y ),7);

			//MAP上ではページスクロール禁止
			if(obj_gecko.IsGecko()){
				//Geckoブラウザ全般
				GEvent.addDomListener(this.obj_map.getContainer(), "DOMMouseScroll", 
				function(oEvent) { if (oEvent.preventDefault) 
				oEvent.preventDefault(); }); 
				/* 今回使わないのでコメントアウト
				//Geckoブラウザ詳細分別
				if(obj_gecko.IsGeckoOne()){
					// Mozilla1.0.0rc1〜のGeckoブラウザ
					if(obj_gecko.IsGeckoTrunk()){
						// Mozilla1.x
					}else{
						// Mozilla1.0.x
					}
				}else{
					// M16〜Mozilla0.9.9までの古いGeckoエンジン
				}*/
			}else{
				//上記以外のブラウザ
				var mapElem = $("map");
				mapElem.onmousewheel = 	function(){
					var e = window.event;
					e.returnValue = false;
					e.cancelBubble = true;
				}; 
			}
		},


		//■クリックイベント
		actionClick:function(obj_map){
			//クリック
			GEvent.addListener(obj_map,'click',
				function(obj_marker){
					if(obj_marker){
						var ll=obj_marker.getPoint();

						if(obj_marker.searchflg=='1'){
							obj_marker.openInfoWindowHtml(
							"検索ワード:"	+obj_marker.searchword
							);
						}else{
						obj_marker.openInfoWindowHtml(
								 "店舗名："		+obj_marker.name+"<br />"
								+"郵便番号:"	+obj_marker.postnum+"<br />"
								+"住所:"		+obj_marker.add_1+obj_marker.add_2+obj_marker.add_3+obj_marker.add_4+obj_marker.add_5+"<br />"
								+"TEL:"			+obj_marker.tel+"<br />"
							);
						}
					}
				}
			);
		},

		panPoint:function(obj_map,latlngpoint,i){

			var sp=obj_marker.getPoint();
//			obj_map.panBy(new GSize(-100,-100));
			obj_map.setCenter(sp,18);

			obj_marker=obj_markers[i];
			obj_marker.openInfoWindowHtml("店舗名："+obj_marker.name+"<br />"
				+"郵便番号:"+obj_marker.postnum+"<br />"
				+"住所:"+obj_marker.add_1+obj_marker.add_2+obj_marker.add_3+obj_marker.add_4+obj_marker.add_5+"<br />"
				+"TEL:"+obj_marker.tel+"<br />"
			);

		},

		//XMLからマーカ情報を取得しMAP上に描画
		sqladdMarkers:function(obj_map,area) {

			var msec = (new Date()).getTime();
			var areacode = areatype();
			
			obj_map.clearOverlays();
			httpObj = GXmlHttp.create();
			
			
			httpObj.open("GET","./xml/shop_data_" + areacode + ".xml?cache="+msec);
			httpObj.onreadystatechange = function() { 
				if (httpObj.readyState == 4) {
					var xmlData = httpObj.responseXML;
					var pointData = xmlData.getElementsByTagName("point");
					var areaData = xmlData.getElementsByTagName("area");
					var bounds = new GLatLngBounds();
					obj_markers=[];
					obj_htmls=[];
					obj_lat=[];
					obj_lng=[];

					var linkhtml_a="";
					var linkhtml_b="";

					var area_mx			= areaData[0].getAttribute("area_mx");
					var area_my			= areaData[0].getAttribute("area_my");
					var areaname		= areaData[0].getAttribute("areaname");
					var areapoint=new GLatLng(area_mx,area_my);
					obj_map.setCenter(areapoint,9);

					for(var i=0;i<pointData.length;i++){

						var markerNo	= i;
						var autonum		= pointData[i].getAttribute("autonum");
						var m_id		= pointData[i].getAttribute("m_id");
						var mx			= pointData[i].getAttribute("mx");
						var my			= pointData[i].getAttribute("my");
						var name		= pointData[i].getAttribute("name");

						var add_1		= pointData[i].getAttribute("add_1");
						var add_2		= pointData[i].getAttribute("add_2");
						var add_3		= pointData[i].getAttribute("add_3");
						var add_4		= pointData[i].getAttribute("add_4");
						var add_5		= pointData[i].getAttribute("add_5");

						var jmx			= pointData[i].getAttribute("jmx");
						var jmy			= pointData[i].getAttribute("jmy");
						var area		= pointData[i].getAttribute("area");
						var tel			= pointData[i].getAttribute("tel");
						var postnum		= pointData[i].getAttribute("postnum");

						var point 		= new GLatLng(mx,my);
						bounds.extend(point);

						obj_marker = new GMarker(point,{name:name,title:name});


						//markerに値を保持
						obj_marker.autonum		=autonum;
						obj_marker.name			=name;
						obj_marker.area			=area;
						obj_marker.add_1		=add_1;
						obj_marker.add_2		=add_2;
						obj_marker.add_3		=add_3;
						obj_marker.add_4		=add_4;
						obj_marker.add_5		=add_5;
						obj_marker.jmx			=jmx;
						obj_marker.jmy			=jmy;
						obj_marker.area			=area;
						obj_marker.tel			=tel;
						obj_marker.postnum		=postnum;
						obj_marker.m_id			=m_id;

						obj_markerNo[i] = i;
						obj_markers[i]=obj_marker;
						obj_htmls[i]=name;
						obj_lat[i]=mx;
						obj_lng[i]=my;

						obj_map.addOverlay(obj_marker);

						if(i % 2){
							linkhtml_b += '<table><tr><td><img src="http://up-tight.com/modules/anymaps/images/25.jpg"></td>'+'<td>'+'</td><td><a href="#mtop" onclick="this.blur();javascript:myclick(' + i +');">';
							linkhtml_b += name;
							linkhtml_b += '</a><br />'+add_2+'</td></tr></table>';
						}else{
							linkhtml_a += '<table><tr><td><img src="http://up-tight.com/modules/anymaps/images/25.jpg"></td>'+'<td>'+'</td><td><a href="#mtop" onclick="this.blur();javascript:myclick(' + i +');">';
							linkhtml_a += name;
							linkhtml_a += '</a><br />'+add_2+'</td></tr></table>';
						}
					}
					$j("#shoplink_a").html(linkhtml_a);
					$j("#shoplink_b").html(linkhtml_b);
					
				}else{
				}
			}
			httpObj.send('');
			window.onunload = GUnload;
		},
		
		myclick:function(i) {
			obj_markers2[i].openInfoWindowHtml(obj_htmls[i]);
		},

		search:function(obj_map){
			obj_geo = new GClientGeocoder();
			var address = $('geoName').value;
			obj_geo.getLatLng(address,
				function(point){
					obj_map.setCenter(point,14);
					obj_marker = new GMarker(point,{draggable:true});

					obj_marker.searchword=address;
					obj_marker.searchflg="1";
					obj_map.addOverlay(obj_marker);

				}
			);
		}


		//追加はこれ以降で

	}

	var areanumber=13;
	function areatype(){
		return areanumber;
	}

	//Geckoブラウザの判定クラス
	var obj_gecko = {
		IsGecko:function(){
			if(navigator){
				if(navigator.userAgent){
					if(navigator.userAgent.indexOf("Gecko/") != -1){
						return true;
					}
				}
			}
			return false;
		},
		IsGeckoOne:function (){
			if(IsGecko()){
				if(navigator.userAgent.indexOf("rv:1.") != -1){
					return true;
				}
			}
			return false;
		},
		IsGeckoTrunk:function(){
			if(IsGecko()){
				if(navigator.userAgent.indexOf("rv:1.") != -1 
						&& navigator.userAgent.indexOf("rv:1.0") == -1){
						return true;
				}
			}
			return false;
		}
	}

//]]>
