function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}
function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}
function createElement(){
	var mapImg = document.createElement('IMG');
	mapImg.setAttribute('id','mapImg');
	mapImg.setAttribute('src','skins/greenlife/images/mappro2.jpg');
	document.getElementById('main').insertBefore(mapImg, document.getElementById('main').firstChild);
}
function blockEvent(event)
{
    if (!event)
    {
        event = window.event;
    }
    if (event.stopPropagation) 
    {
        event.stopPropagation();
    }
    else 
    {
        event.cancelBubble = true;
    }
    if (event.preventDefault) 
    {
        event.preventDefault();
    }
    event.returnValue = false;
}
function wheel(event)
{
    // Переменная, в которой будем хранить сдвиг
    var wheelDelta = 0;
    
    // Шаг меню при прокрутке
    var step = 300;
    if (!event) 
    {
        event = window.event;
    }
    if (event.wheelDelta) 
    {
        // В IE и Safari значения delta всегда строго 120, вне зависимости от настроек пользователя.
        wheelDelta = event.wheelDelta/120;
        
        // В Opera 9, значение delta домножается на 40 и совпадает по знаку со значениями в IE
        if (window.opera)
        {
            wheelDelta = event.wheelDelta/40;
        }
    } 
    else if (event.detail) 
    {
        wheelDelta = -event.detail;
    }
    if (wheelDelta)
    {
        var i = (wheelDelta < 0) ? 1 : -1;
		dragDrop.dXKeys = dragDrop.draggedObject.offsetLeft;
		dragDrop.dYKeys = dragDrop.draggedObject.offsetTop;
		dragDrop.startX = dragDrop.startY = 0;
        dragDrop.dYKeys = dragDrop.dYKeys - ( dragDrop.keySpeed * 2 ) * i;
		dragDrop.setPosition(dragDrop.dXKeys,dragDrop.dYKeys);
    }
    
    blockEvent(event);
}

dragDrop = {
	keySpeed: 20, // pixels per keypress event
	initialMouseX: undefined,
	initialMouseY: undefined,
	startX: undefined,
	startY: undefined,
	dXKeys: undefined,
	dYKeys: undefined,
	draggedObject: undefined,
	initElement: function (element) {
		if (typeof element == 'string')
			element = document.getElementById(element);
		dragDrop.draggedObject = element;
		element.onmousedown = dragDrop.startDragMouse;
		dragDrop.startDragKeys();
		
		if (document.getElementById('main').addEventListener)
		{
		  document.getElementById('main').addEventListener('DOMMouseScroll', wheel, false);
		}
		
		document.getElementById('main').onmousewheel = wheel;
	},
	startDragMouse: function (e) {
		dragDrop.startDrag(dragDrop.draggedObject);
		var evt = e || window.event;
		dragDrop.initialMouseX = evt.clientX;
		dragDrop.initialMouseY = evt.clientY;
		addEventSimple(document,'mousemove',dragDrop.dragMouse);
		addEventSimple(document,'mouseup',dragDrop.releaseElement);
		return false;
	},
	startDragKeys: function () {
		dragDrop.startDrag(dragDrop.draggedObject);
		dragDrop.dXKeys = dragDrop.draggedObject.offsetLeft;
		dragDrop.dYKeys = dragDrop.draggedObject.offsetTop;
		addEventSimple(document,'keydown',dragDrop.dragKeys);
		addEventSimple(document,'keypress',dragDrop.dragKeys);
		return false;
	},
	startDrag: function (obj) {
		if (dragDrop.draggedObject)
			dragDrop.releaseElement();
		dragDrop.startX = obj.offsetLeft;
		dragDrop.startY = obj.offsetTop;
		dragDrop.draggedObject = obj;
	},
	dragMouse: function (e) {
		var evt = e || window.event;
		var dX = evt.clientX - dragDrop.initialMouseX;
		var dY = evt.clientY - dragDrop.initialMouseY;
		dragDrop.setPosition(dX,dY);
		return false;
	},
	dragKeys: function(e) {
		var evt = e || window.event;
		var key = evt.keyCode;
		dragDrop.dXKeys = dragDrop.draggedObject.offsetLeft;
		dragDrop.dYKeys = dragDrop.draggedObject.offsetTop;
		dragDrop.startX = dragDrop.startY = 0;
		switch (key) {
			case 37:	// left
			case 63234:
					dragDrop.dXKeys += dragDrop.keySpeed;
				break;
			case 38:	// up
			case 63232:
					dragDrop.dYKeys += dragDrop.keySpeed;
				break;
			case 39:	// right
			case 63235:
					dragDrop.dXKeys -= dragDrop.keySpeed;
				break;
			case 40:	// down
			case 63233:
					dragDrop.dYKeys -= dragDrop.keySpeed;
				break;
			default:
				return true;
		}
		dragDrop.setPosition(dragDrop.dXKeys,dragDrop.dYKeys);
		if (evt.preventDefault)
			evt.preventDefault();
		return false;
	},
	setPosition: function (dx,dy) {
		if (dragDrop.startX + dx > 0){
			dragDrop.startX = 0;
			dx = 0;
		}
		if ( dragDrop.startX + dx < document.documentElement.offsetWidth - dragDrop.draggedObject.offsetWidth ){
			dx = 0;
			dragDrop.startX = document.documentElement.offsetWidth - dragDrop.draggedObject.offsetWidth;
		}
		if (dragDrop.startY + dy > 0){
			dragDrop.startY = 0;
			dy = 0;
		}
		if ( dragDrop.startY + dy < document.documentElement.offsetHeight - dragDrop.draggedObject.offsetHeight ){
			dy = 0;
			dragDrop.startY = document.documentElement.offsetHeight - dragDrop.draggedObject.offsetHeight;
		}
		dragDrop.draggedObject.style.left = dragDrop.startX + dx + 'px';
		dragDrop.draggedObject.style.top = dragDrop.startY + dy + 'px';
	},
	switchKeyEvents: function () {
		// for Opera and Safari 1.3
		removeEventSimple(document,'keydown',dragDrop.dragKeys);
		removeEventSimple(document,'keypress',dragDrop.switchKeyEvents);
		addEventSimple(document,'keypress',dragDrop.dragKeys);
	},
	releaseElement: function() {
		removeEventSimple(document,'mousemove',dragDrop.dragMouse);
		removeEventSimple(document,'mouseup',dragDrop.releaseElement);
	}
}

$(document).ready(function(){
	createElement();
	$("#mainMenu2 div.menuCont a").click(function(){
		var windowWidth = document.documentElement.offsetWidth;
		var windowHeight = document.documentElement.offsetHeight;
		var imageWidth = 2266;
		var imageHeight = 1459;
		var targetName = $(this).attr("rel");
		var xPositionLink = parseInt( $('a#'+targetName).parents('li').css('left') );
		var yPositionLink = parseInt( $('a#'+targetName).parents('li').css('top') );
		var resX = -( xPositionLink - parseInt( windowWidth / 2 ) );
		resX>0?resX=0:resX;
		resX<-(imageWidth-windowWidth)?resX=-(imageWidth-windowWidth):resX;
		var resY = -( yPositionLink - parseInt( windowHeight / 2 ) );
		resY>0?resY=0:resY;
		resY<-(imageHeight-windowHeight)?resY=-(imageHeight-windowHeight):resY;
		$('#main').animate({left: resX, top: resY}, 800);
		
		if ( !$.browser.msie ){
		$('a#'+targetName).parents('li')
			.animate({opacity: 1}, 800)
			.animate({opacity: 0.2}, 200)
			.animate({opacity: 1}, 200)
			.animate({opacity: 0.2}, 200)
			.animate({opacity: 1}, 200)
			.animate({opacity: 0.2}, 200)
			.animate({opacity: 1}, 200);
		}
		return false;
	});
	dragDrop.initElement(document.getElementById('main'));
});