// Функция для определения координат указателя мыши
function defPosition(event) {
	var x = y = 0;
	if (document.attachEvent != null) { // Internet Explorer & Opera
		x = window.event.clientX
				+ (document.documentElement.scrollLeft ? document.documentElement.scrollLeft
						: document.body.scrollLeft);
		y = window.event.clientY
				+ (document.documentElement.scrollTop ? document.documentElement.scrollTop
						: document.body.scrollTop);
	} else if (!document.attachEvent && document.addEventListener) { // Gecko
		x = event.clientX + window.scrollX;
		y = event.clientY + window.scrollY;
	} else {
		// Do nothing
	}
	return {
		x : x,
		y : y
	};
}

function findPosX(obj) {
	var curleft = 0;
	if (document.getElementById || document.all) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	} else if (document.layers)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (document.getElementById || document.all) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (document.layers)
		curtop += obj.y;
	return curtop;
}

// additional properties for jQuery object
$(document).ready(
		function() {

			// align element in the middle of the screen
			$.fn.mousePosition = function(rt) {

				var mX = findPosX(rt);
				var mY = findPosY(rt);
				//alert(mX + "das");
				// get margin left
				
				var width_current_pop=$(this).width();
				var height_current_pop=$(this).height();
				
				var maps_width=$("#maps_view").width();
				var maps_height=$("#maps_view").height();
				
				//gorizontal
				lw=width_current_pop+mX;
				if(lw>maps_width){
					mX=680-width_current_pop;
					//alert(maps+'|'+lt);
				}
				
				//vertical
				lh=height_current_pop+mY;
				if(lh>maps_height){
					mY=400-height_current_pop;
					//alert(maps+'|'+lt);
				}
				
				
				
				
				var marginLeft = mX + 'px';
				// get margin top
				var marginTop = mY + 'px';
				// return updated element
				
				return $(this).css( {
					'margin-left' : marginLeft,
					'margin-top' : marginTop
				});
			};

			$.fn.togglePopup = function(lm) {
				// alert("ds");
				// detect whether popup is visible or not
				if ($('#popup').hasClass('hidden')) {
					// hidden - then display
					// when IE - fade immediately
					if ($.browser.msie) {
						$('#opaco').height($("#maps_view").height())
								.toggleClass('hidden').click(function() {
									$(this).togglePopup();
								});
					} else
					// in all the rest browsers - fade slowly
					{
						$('#opaco').height($("#maps_view").height())
								.toggleClass('hidden').fadeTo('slow', 0.7)
								.click(function() {
									$(this).togglePopup();
								});
					}

					$('#popup').html($(this).html()).mousePosition(lm)
							.toggleClass('hidden');
				} else {
					// visible - then hide
					$('#opaco').toggleClass('hidden').removeAttr('style')
							.unbind('click');
					$('#popup').toggleClass('hidden');
				}
			};
		});
