//==========================================================================================================
//PC home Online 網路家庭的文字、圖片、資料、商標、標識、及網頁設計等皆受中華民國相關智慧財產權法令的保護。
//嚴禁任何未經事先同意的非法轉載和使用。若經查知，PC home Online 網路家庭將採取必要之法律行動
//==========================================================================================================

var MapStatus = {
	id: 'PhotoMap',
	Map: '',
	MapPosX: 15,
	MapPosY: 15,
	MapWidth: 800,//695
	MapHeight: 500,
	MapZoom: 9,
	MapEnviSet: [25.048073112708416, 121.51727859255477, 9, 0],
	PhotoMapMainSet: [24.802955282773308, 121.23891801399003, 2],
	MapType: 'U_MAP_TYPE',
	InnerBlock: 5 + 29,
	Marker: '',
	NormalPoint: '',
	DragFlag: false,
	MoveDistX: 0,
	MoveDistY: 0,
	WinPosX: 0,
	WinPosY:0,
	FuncWinDrag: '',
	WinPrint: '',
	MapAction: 'None',
	MapMode: 'Normal',
	UrlVars: '',
	PointFlag: false,
	SearchFlag: false,
	SearchBFlag: false,
	getZoomArray: [],
	Keyword: '',
	IntervalID: '',
	TimerIntervalID: '',
	JumperElementSet: ['JumperLT', 'JumperMT', 'JumperRT', 'JumperLM', 'JumperRM', 'JumperLB', 'JumperMB', 'JumperRB'],
	JumperSet: ['None', false],
	getOMarker: [],
	Browser: identifyBrowser(),
	BrowserPNGfix: 'ie5,ie5mac,ie5.5,ie6',
	Refer: GetRefer(),
	MapInit: function() {
		if (!$('map')) return;
		var ElementPosArray = getPosition($('map'));
		var GetBody = document.getElementsByTagName('body')[0];
		this.Map = new UMap($('map'));
		this.Map.addControl(U_SCALE_CONTROL);
		//this.Map.disableDragging();
		this.Map.centerAndZoom(new ULatLng(this.MapEnviSet[0], this.MapEnviSet[1]), this.MapEnviSet[2]);
		this.Map.addListener('click', function(overlay, LatLng) { if (!overlay) OImgPreviewer.ImgPreviewerPicker.ClearWin(); });
		//this.Map.addListener('moveend', function() { if ($('WinInfoB').isVisible) { $('WinInfoB').style.left = $('WinInfoB').PosX + 'px'; $('WinInfoB').style.top = $('WinInfoB').PosY + 'px'; $('WinInfoB').isVisible = false; Element.show('WinInfoB'); }; });
		this.Map.addListener('moveend', function() { if ($('WinInfoB').isVisible) { $('WinInfoB').style.left = $('WinInfoB').PosX + 'px'; $('WinInfoB').style.top = $('WinInfoB').PosY + 'px'; Element.show('WinInfoB'); }; });
		this.Map.addListener('zoom', function(oldZoom, newZoom) { if (OImgPreviewer.ImgPreviewerPicker) OImgPreviewer.ImgPreviewerPicker.ClearWin(); });
		Event.observe($('map'), "mousedown", function() { if (OImgPreviewer.ImgPreviewerPicker) OImgPreviewer.ImgPreviewerPicker.ClearWin(); }, false);
		Event.observe($('map'), "mouseup", MapStatus.StoreEnviSet, false);
		Event.observe($('map'), "mousewheel", MapStatus.MouseRollAction, false);
		Event.observe($('map'), "DOMMouseScroll", MapStatus.MouseRollAction, false);
		
		//IconSetInit
		this.IconSetInit();
		
		//MapJumper
		for (var i=0; i<this.JumperElementSet.length; i++) {
			var JumperElement = document.createElement('div');
			JumperElement.id = this.JumperElementSet[i];
			JumperElement.className = this.JumperElementSet[i];
			if (this.JumperElementSet[i] == 'JumperLM' || this.JumperElementSet[i] == 'JumperRM') JumperElement.style.height = (this.MapHeight - 40) + 'px';
			if (this.JumperElementSet[i] == 'JumperMT' || this.JumperElementSet[i] == 'JumperMB') JumperElement.style.width = (this.MapWidth - 40) + 'px';
			JumperElement.onmouseover = function() { MapStatus.JumperMouseAction('Over', this.id); };
			JumperElement.onmouseout = function() { MapStatus.JumperMouseAction('Out', this.id); };
			$('map').appendChild(JumperElement);
			
			var JumperOverLay = document.createElement('div');
			JumperOverLay.className = 'JumperOverlay';
			JumperElement.appendChild(JumperOverLay);
			Element.hide(JumperOverLay);
			
			var JumperArrow = document.createElement('div');
			JumperArrow.className = 'JumperArrow';
			JumperArrow.style.backgroundImage = 'url(/img/Map/Jumper/' + this.JumperElementSet[i] + '.gif)';
			JumperElement.appendChild(JumperArrow);
			Element.hide(JumperArrow);
		}//end for
		
		//ZoomSet
		var ZoomSet = document.createElement('div');
		ZoomSet.id = 'ZoomSet';
		ZoomSet.className = 'ZoomSet';
		ZoomSet.style.left = '5px';
		ZoomSet.style.top = '5px';
		$('map').appendChild(ZoomSet);
		//ZoomSet - ZoomIn
		var ZoomIn = document.createElement('div');
		ZoomIn.className = 'ZoomIn';
		if (this.BrowserPNGfix.indexOf(this.Browser) != -1) {
			ZoomIn.style.background = 'url(/img/transparent.gif)';
			ZoomIn.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/Map/Zoom/Zoom+.png, sizingMethod=scale)';
		}
		ZoomIn.onclick = function() { MapStatus.ZoomClickAction('+'); }
		ZoomSet.appendChild(ZoomIn);
		//ZoomSet - ZoomElement
		for (var i=0; i<11; i++) {
			var Mode = (i == this.MapZoom) ? '_Func' : '_Out';
			var ZoomElement = document.createElement('div');
			ZoomElement.id = 'Zoom' + i;
			ZoomElement.className = 'ZoomElement';
			if (this.BrowserPNGfix.indexOf(this.Browser) != -1) {
				ZoomElement.style.background = 'url(/img/transparent.gif)';
				ZoomElement.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/Map/Zoom/Zoom_'+i+Mode+'.png, sizingMethod=scale)';
			} else ZoomElement.style.background = 'url(/img/Map/Zoom/Zoom_'+ i + Mode + '.png)';
			ZoomElement.onmouseover = function() { 
				var FuncID = Number(this.id.replace('Zoom', ''));
				MapStatus.ZoomRollEffect(FuncID, 'Over');
			}
			ZoomElement.onmouseout = function() { 
				var FuncID = Number(this.id.replace('Zoom', ''));
				MapStatus.ZoomRollEffect(FuncID, 'Out');
			}
			ZoomElement.onclick = function() { 
				var FuncID = Number(this.id.replace('Zoom', ''));
				MapStatus.ZoomClickAction(FuncID);
			}
			ZoomSet.appendChild(ZoomElement);
			this.getZoomArray.push(ZoomElement);
		}//end for
		//ZoomSet - ZoomOut
		var ZoomOut = document.createElement('div');

		ZoomOut.className = 'ZoomOut';
		if (this.BrowserPNGfix.indexOf(this.Browser) != -1) {
			ZoomOut.style.background = 'url(/img/transparent.gif)';
			ZoomOut.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/Map/Zoom/Zoom-.png, sizingMethod=scale)';
		}
		ZoomOut.onclick = function() { MapStatus.ZoomClickAction('-'); }
		ZoomSet.appendChild(ZoomOut);
		
		//BackPOI
		var BtnBackPOI = document.createElement('div');
		BtnBackPOI.id = 'BackPOI';
		BtnBackPOI.className = 'BackPOI';
		BtnBackPOI.onmouseover = function() { this.style.backgroundPosition = '-29px 0px'; };
		BtnBackPOI.onmouseout = function() { this.style.backgroundPosition = '0px 0px'; };
		BtnBackPOI.onclick = function() { MapStatus.Back2POI(); };
		$('map').appendChild(BtnBackPOI);
	},
	JumperMouseAction: function(mode, type) {
		clearTimeout(this.TimerIntervalID);
		clearInterval(this.IntervalID);
		var GetJumper = $(type);
		if (mode == 'Over') {
			this.JumperSet[0] = type;
			this.JumperSet[1] = true;
			this.TimerIntervalID = setTimeout('MapStatus.JumperPre()', 1000);
			for (var i=0; i<GetJumper.childNodes.length; i++) {
				if (type == 'JumperLM' || type == 'JumperRM') GetJumper.childNodes[i].style.height = (this.MapHeight - 40) + 'px';
				Element.show(GetJumper.childNodes[i]);
			}//end for
		} else {
			this.JumperSet[0] = 'None';
			this.JumperSet[1] = false;
			for (var i=0; i<GetJumper.childNodes.length; i++) Element.hide(GetJumper.childNodes[i]);
			//this.MapAction = 'None';
			this.StoreEnviSet();
		}//end if
	},
	JumperPre: function() {
		if (!this.JumperSet[1]) { clearTimeout(this.TimerIntervalID); return; }
		OImgPreviewer.ImgPreviewerPicker.ClearWin();
		clearInterval(this.IntervalID);
		this.IntervalID = setInterval("MapStatus.JumperEns('"+this.JumperSet[0]+"')", 15);
	},
	JumperEns: function(type) {
		var CentalX = MapStatus.MapWidth/2;
		var CentalY = MapStatus.MapHeight/2;
		switch (type) {
			case 'JumperLT':
				CentalX -= 100;
				CentalY -= 100;
				break;
			case 'JumperMT':
				CentalY -= 100;
				break;
			case'JumperRT':
				CentalX += 100;
				CentalY -= 100;
				break;
			case 'JumperLM':
				CentalX -= 100;
				break;
			case 'JumperRM':
				CentalX += 100;
				break;
			case 'JumperLB':
				CentalX -= 100;
				CentalY += 100;
				break;
			case 'JumperMB':
				CentalY += 100;
				break;
			case'JumperRB':
				CentalX += 100;
				CentalY += 100;
				break;
		}//end switch		
		var NewCenter = MapStatus.Map.transformContainerCoordinatesToLatLng(new UPoint(CentalX, CentalY));
		MapStatus.Map.centerAndZoom(NewCenter, MapStatus.MapZoom);
	},
	ZoomRollEffect: function(FuncID, Mode) {
		Mode = '_' + Mode;
		if (FuncID == this.MapZoom) return;
		if (this.BrowserPNGfix.indexOf(this.Browser) != -1) {
			this.getZoomArray[FuncID].style.background = 'url(/img/transparent.gif)';
			this.getZoomArray[FuncID].style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/Map/Zoom/Zoom_'+FuncID+Mode+'.png, sizingMethod=scale)';
		} else this.getZoomArray[FuncID].style.background = 'url(/img/Map/Zoom/Zoom_'+ FuncID + Mode + '.png)';
	},
	ZoomClickAction: function(FuncID, LatLng) {
		if (isNaN(FuncID)) {
			FuncID = (FuncID == '+') ? this.MapZoom + 1 : this.MapZoom - 1;
			if (FuncID < 0) FuncID = 0;
			if (FuncID > 10) FuncID = 10;
		}
		if (FuncID == 10 && this.MapType == 'U_HYBRID_TYPE') {
			this.MapType = 'U_MAP_TYPE';
		}//end if
		if (this.BrowserPNGfix.indexOf(this.Browser) != -1) {
			this.getZoomArray[this.MapZoom].style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/Map/Zoom/Zoom_'+this.MapZoom+'_Out.png, sizingMethod=scale)';
			this.getZoomArray[FuncID].style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/Map/Zoom/Zoom_'+FuncID+'_Func.png, sizingMethod=scale)';
		} else {
			this.getZoomArray[this.MapZoom].style.background = 'url(/img/Map/Zoom/Zoom_'+this.MapZoom+'_Out.png)';
			this.getZoomArray[FuncID].style.background = 'url(/img/Map/Zoom/Zoom_'+FuncID+'_Func.png)';
		}
		this.MapZoom = FuncID;
		(LatLng == undefined) ? this.Map.zoomMap(FuncID) : this.Map.centerAndZoom(LatLng, this.MapZoom);
		if (this.MapMode != 'Print') this.StoreEnviSet();
	},
	MouseRollAction: function(e) {
		(Event.wheel(e) > 0) ? MapStatus.ZoomClickAction('-') : MapStatus.ZoomClickAction('+');
	},
	IconSetInit: function() {
		//Normal
		this.NormalPoint = new UIcon();
		//this.NormalPoint.image = (MapType == 'Album') ? '/img/Map/IconViewOut.gif' : '/img/Map/IconViewOut2.gif';
		this.NormalPoint.image = (MapType == 'Photo') ? '/img/Map/IconViewOut2.gif' : '/img/Map/IconViewOut.gif';
		this.NormalPoint.iconWidth = 23;
		this.NormalPoint.iconHeight = 27;
		this.NormalPoint.iconAnchor = new UPoint(11, 27);
		//Func
		this.FuncPoint = new UIcon();
		//this.FuncPoint.image = (MapType == 'Album') ? '/img/Map/IconViewFunc.gif' : '/img/Map/IconViewFunc2.gif';
		this.FuncPoint.image = (MapType == 'Photo') ? '/img/Map/IconViewFunc2.gif' : '/img/Map/IconViewFunc.gif';
		this.FuncPoint.iconWidth = 23;
		this.FuncPoint.iconHeight = 27;
		this.FuncPoint.iconAnchor = new UPoint(11, 27);
	},
	WinInfoBInit: function(Content) {
		$('WinInfoBMid').style.height = '';
		$('WinInfoBMain').style.height = '';
		$('WinInfoBMidShadow').style.height = '';
		$('ImgCounter').innerHTML = '';
		$('ImgTitleSet').innerHTML = '';
		var getHeight = $('WinInfoBMain').getHeight();
		if (getHeight == 0) getHeight = 121;
		$('WinInfoBMid').style.height = getHeight + 'px';
		$('WinInfoBMain').style.height = getHeight + 'px';
		$('WinInfoBMidShadow').style.height = getHeight + 'px';
		if (CurrentStatus.BrowserPNGfix.indexOf(CurrentStatus.Browser) != -1) {
			$('WinInfoBMidShadow').style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/Map/WinInfoB/BackRM.png, sizingMethod=scale)';
		}//end if
		return getHeight+30+14;
	},
	Back2POI: function() {
		OImgPreviewer.ImgPreviewerPicker.ClearWin();
		this.ZoomClickAction(this.ViewOMarker[0], this.ViewOMarker[1]);
	},
	ResizeEvent: function() {
		var PageSize = getPageSize();
		var SetWidth = 0;
		var SetHeight = 0;
		SetWidth = PageSize[2];
		SetHeight = PageSize[3];
		MapStatus.MapWidth = (MapType == 'Main') ? 985 : 940;
		MapStatus.MapHeight = (MapType == 'Main') ? 490 : 480;
		
		var ElementPosArray = getPosition($('map'));
		$('map').style.width = MapStatus.MapWidth + 'px';
		$('map').style.height = MapStatus.MapHeight + 'px';
		MapStatus.MapPosX = ElementPosArray[0];
		MapStatus.MapPosY = ElementPosArray[1];
		
		//Jumper
		$('JumperMT').style.width = (MapStatus.MapWidth - 40) + 'px';
		$('JumperLM').style.height = (MapStatus.MapHeight - 40) + 'px';
		$('JumperRM').style.height = (MapStatus.MapHeight - 40) + 'px';
		$('JumperMB').style.width = (MapStatus.MapWidth - 40) + 'px';

		//BackPOI
		$('BackPOI').style.left = (MapStatus.MapWidth - 29 - 5 ) + 'px';
		$('BackPOI').style.top = '5px';
		
		//PickerSection
		$('PickerSection').style.left = MapStatus.MapPosX + 'px';
		
		//Style
		if (CurrentStatus.NeedFixBack.indexOf(StyleID) != -1 && CurrentStatus.Browser.indexOf('ie') != -1) {
			var GetPageSize = getPageSize();
			var PosX = GetPageSize[2]/2;
			switch (StyleID) {
				case 0:
					PosX = Math.floor(PosX-1023/2);
					break;
			}//end switch
			document.getElementsByTagName('body')[0].style.backgroundPosition = PosX + 'px 0px';
		}//end if
		
		MapStatus.Map.refreshMap();
		MapStatus.StoreEnviSet();
	},
	GetCookie: function(SearchID) {
		if (!document.cookie) return false;
		var Cookies = document.cookie.replace(/ /g, '').split(';');
		if (Cookies.length == 0) return  false;
		for (var i=0; i<Cookies.length; i++) {
			var CookieCrumbs = Cookies[i].split('=');
			if (CookieCrumbs[0] == SearchID) return CookieCrumbs[1];
		}//end for
		return false;
	},
	LoadEnviSet: function(MapEnviSet) {
		if (MapEnviSet.length == 0) return;
		this.MapEnviSet = MapEnviSet.split('^');
		for (var i=0; i<this.MapEnviSet.length; i++) this.MapEnviSet[i] = Number(this.MapEnviSet[i]);
		this.MapZoom = this.MapEnviSet[2];
	},
	StoreEnviSet: function() {
		if (MapStatus.MapMode == 'Print') return;
		//write in cookie
		var Today = new Date();
		var Expiration = new Date(Today.getFullYear(), Today.getMonth(), Today.getDate()+30).toGMTString();
		var EnviSet = [];
		var LatLng = MapStatus.Map.getCenter();
		
		EnviSet.push(LatLng.lat());
		EnviSet.push(LatLng.lng());
		EnviSet.push(MapStatus.Map.getZoomLevel());
		
		document.cookie = 'MapEnviSet=' + EnviSet.toString().replace(/,/g, '^') + ';path=/;expires=' + Expiration;
	},
	CreateMarker: function() {
		this.getOMarker = [];
		this.Map.clearOverlays();
		var LatLngInfo = [];
		for (var Key in CurrentStatus.OLatLng) {
			var LatLng = Key.split('#');
			LatLng = new ULatLng(LatLng[1], LatLng[2]);
			var Marker = new UMarker(LatLng, this.NormalPoint);
			Marker.id = Key;
			Marker.Imgs = CurrentStatus.OLatLng[Key];
			Marker.addListener('click', MapStatus.ShowPreviewer);
			this.Map.addOverlay(Marker);
			LatLngInfo.push(LatLng);
			this.getOMarker.push(Marker);
		}//end for
		
		//Zoom & Center set
		if (MapType != 'Main') {
			var StartLatLng = LatLngInfo.first();
			var EndLatLng = LatLngInfo.last();
			var SouthWast = [Math.min(StartLatLng.lat(), EndLatLng.lat()), Math.max(StartLatLng.lng(), EndLatLng.lng())];
			var NouthEast = [Math.max(StartLatLng.lat(), EndLatLng.lat()), Math.min(StartLatLng.lng(), EndLatLng.lng())];
			var Bounds = new UBounds(new ULatLng(SouthWast[0], SouthWast[1]), new ULatLng(NouthEast[0], NouthEast[1]));
			for (var i=0; i<LatLngInfo.length; Bounds.extend(LatLngInfo[i++]));
			this.ViewOMarker = [this.Map.getBoundsZoomLevel(Bounds), Bounds.getCenter()];
			this.ZoomClickAction(this.ViewOMarker[0], this.ViewOMarker[1]);
		} else {
			this.ViewOMarker = [this.PhotoMapMainSet[2], new ULatLng(this.PhotoMapMainSet[0], this.PhotoMapMainSet[1])];
			this.Map.centerAndZoom(this.ViewOMarker[1], this.ViewOMarker[0]);
		}//end if
	},
	ShowPreviewer: function(Marker) {
		if (OImgPreviewer.ImgPreviewerPicker.BlockAction) return;
		MapStatus.MarkerIconReset();
		MapStatus.ClickSource = 'Map';
		MapStatus.Marker = (Marker != undefined) ? Marker : this;
		//MapStatus.MarkerIconReset();
		if (OImgPreviewer.ImgPreviewerPicker.FuncIcon && MapStatus.Marker.Imgs.indexOf(OImgPreviewer.ImgPreviewerPicker.FuncIcon.OrderID) != -1) { OImgPreviewer.ImgPreviewerPicker.ClearWin(); return; };
		MapStatus.Marker.setIcon(MapStatus.FuncPoint);
		MapStatus.RollingPrintSet();
		
		OImgPreviewer.ImgPreviewerPicker.OutFadeOut = MapStatus.Marker.Imgs.clone();
		OImgPreviewer.ImgPreviewerPicker.IconClickActionPre(OImgPreviewer.ImgPreviewerPicker.getIconArray[MapStatus.Marker.Imgs.first()]);
	},
	MarkerIconReset: function() {
		//for (var i=0; i<this.getOMarker.length; this.getOMarker[i++].setIcon(this.NormalPoint));
		if (MapStatus.Marker) MapStatus.Marker.setIcon(this.NormalPoint);
	},
	RollingPrintSet: function() {
		if (MapStatus.Marker.Imgs.length > 1) { Element.show('BtnRollingL'); Element.show('BtnRollingR'); }
		else { Element.hide('BtnRollingL'); Element.hide('BtnRollingR'); }
		
		var PhotoIconInfo = [];
		for (var i=0; i<MapStatus.Marker.Imgs.length; i++) {
			var DataSet = {};
			DataSet.img = OImgPreviewer.ImgPreviewerPicker.getIconArray[MapStatus.Marker.Imgs[i]].IconPath;
			DataSet.Title = OImgPreviewer.ImgPreviewerPicker.getIconArray[MapStatus.Marker.Imgs[i]].Title;
			DataSet.linkset = OImgPreviewer.ImgPreviewerPicker.getIconArray[MapStatus.Marker.Imgs[i]].Link;
			PhotoIconInfo.push(DataSet);
		}//end for
		var FuncIDSet = (OImgPreviewer.ImgPreviewerPicker.FuncIcon) ? MapStatus.Marker.Imgs.indexOf(OImgPreviewer.ImgPreviewerPicker.FuncIcon.OrderID) : 0; 
		RollingPrintPhotoMap.SwitchContent({IconInfo:PhotoIconInfo, FuncID:FuncIDSet});
	},
	IconClickAction: function(Lat, Lng) {
		MapStatus.MarkerIconReset();
		for (var i=0; i<this.getOMarker.length; i++) {
			if (this.getOMarker[i].id == 'LatLng#'+Lat+'#'+Lng) MapStatus.Marker = this.getOMarker[i];
			//this.getOMarker[i].setIcon(this.NormalPoint)
		}//end for
		MapStatus.Marker.setIcon(MapStatus.FuncPoint);
		this.RollingPrintSet();
		
		//IconSlider
		var FuncIDSet = (OImgPreviewer.ImgPreviewerPicker.FuncIcon) ? OImgPreviewer.ImgPreviewerPicker.FuncIcon.OrderID : MapStatus.Marker.Imgs.first();
		OImgPreviewer.ImgPreviewerPicker.GoSlide(FuncIDSet);
		
		var WinHeight = MapStatus.WinInfoBInit() - 4;
		var PosTrans = MapStatus.Map.transformLatLngToContainerCoordinates(MapStatus.Marker.getPoint());
		var MouseX = PosTrans.x - 10;
		var MouseY = PosTrans.y - 30;
		var CentalX = MapStatus.MapWidth/2;
		var CentalY = MapStatus.MapHeight/2;
		var MenuX, MenuY;
		var FlagX = FlagY = false;
		if (MouseX < (MapStatus.InnerBlock + 96) || MouseX > (MapStatus.MapWidth - MapStatus.InnerBlock - 96)) {
			FlagX = true;
			if (MouseX < (MapStatus.InnerBlock + 96)) {
				MenuX = MapStatus.InnerBlock;
				CentalX -= MapStatus.InnerBlock + 96 - MouseX;
			} else {
				MenuX = MapStatus.MapWidth - MapStatus.InnerBlock - 213;
				CentalX += (MapStatus.InnerBlock + 117) - (MapStatus.MapWidth - MouseX);
			}//end if
		} else MenuX = MouseX - 96;
		MenuX += MapStatus.MapPosX;
		
		if (MouseY < (MapStatus.InnerBlock + WinHeight) || MouseY > (MapStatus.MapHeight - 150)) {
			FlagY = true;
			if (MouseY < (MapStatus.InnerBlock + WinHeight)) {
				MenuY = MapStatus.InnerBlock;
				CentalY -= MapStatus.InnerBlock + WinHeight - MouseY;
			} else {
				MenuY = MapStatus.MapHeight -150 - WinHeight;
				CentalY += MouseY - (MapStatus.MapHeight - 150);
			}//end if
		} else MenuY = MouseY - WinHeight;
		MenuY += MapStatus.MapPosY;
		
		//shift map
		$('WinInfoB').PosX = MenuX;
		$('WinInfoB').PosY = MenuY;
		if (FlagX || FlagY) {
			Element.hide('WinInfoB');
			var NewCenter = MapStatus.Map.transformContainerCoordinatesToLatLng(new UPoint(CentalX, CentalY));
			var GetBounds = MapStatus.Map.getBounds();
			MapStatus.Map.centerAndZoom(NewCenter, MapStatus.MapZoom);
			if (!GetBounds.contains(NewCenter)) {
				$('WinInfoB').style.left = MenuX + 'px';
				$('WinInfoB').style.top = MenuY + 'px';
				//$('WinInfoB').isVisible = false;
				Element.show('WinInfoB');
			}//end if
		} else {
			$('WinInfoB').style.left = MenuX + 'px';
			$('WinInfoB').style.top = MenuY + 'px';
			Element.show('WinInfoB');
		}//end if
		$('WinInfoB').isVisible = true;
		
		//Route
		if (typeof(RouteModuleClass) != 'undefined') RouteModuleClass.ResetRSSEns();
	}
};