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','/include/images/splash/bg.jpg');
	document.getElementById('main').insertBefore(mapImg, document.getElementById('main').firstChild);
}

proporcionalMouseMove = {
	defaultScreen: window.outerWidth != undefined ? window.outerWidth : $(window).width(),
	speedMove: 10,
	intervalDelay: 10,
	dopusk: /*150*/15,
	Xdopusk: 470,
	dxAccuracy: 1.7,
	dyAccuracy: 1.0,
	pause: false,
	dXlink: 0,
	dYlink: 0,
	Xlink: 0,
	Ylink: 0,
	sX: 0,
	sY: 0,
	imageWidth: 0,
	startX: 0,
	screenSizeX: undefined,
	screenSizeY: undefined,
	canvasSizeX: undefined,
	canvasSizeY: undefined,
	canvasPosX: undefined,
	canvasPosY: undefined,
	mousePosX: undefined,
	mousePosY: undefined,
	intervalTimer: undefined,
	mainElement: undefined,
	screenElement: undefined,
	initElement: function (element, wrapElement) {
		proporcionalMouseMove.mainElement = element;
		proporcionalMouseMove.screenElement = wrapElement;
		proporcionalMouseMove.screenSizeX = proporcionalMouseMove.screenElement.offsetWidth;
		proporcionalMouseMove.screenSizeY = proporcionalMouseMove.screenElement.offsetHeight;
		proporcionalMouseMove.canvasSizeX = proporcionalMouseMove.mainElement.offsetWidth;
		proporcionalMouseMove.canvasSizeY = proporcionalMouseMove.mainElement.offsetHeight;
		proporcionalMouseMove.canvasPosX = proporcionalMouseMove.mainElement.offsetLeft;
		proporcionalMouseMove.canvasPosY = proporcionalMouseMove.mainElement.offsetTop;
		//1749
		proporcionalMouseMove.imageWidth = 1749; 
	
		proporcionalMouseMove.mousePosX = Math.round ( proporcionalMouseMove.screenSizeX / 2 );
		proporcionalMouseMove.mousePosY = Math.round ( proporcionalMouseMove.screenSizeY / 2 );
		//alert(document.documentElement.offsetWidth);
		
		$('a').each ( function() {
			addEventSimple(this,'mouseover',proporcionalMouseMove.pauseMove);
			addEventSimple(this,'mouseout',proporcionalMouseMove.startMove);
		});
		
		addEventSimple(proporcionalMouseMove.screenElement,'resize',proporcionalMouseMove.reinitScreenSize);
		addEventSimple(proporcionalMouseMove.screenElement,'mousemove',proporcionalMouseMove.reinitÑursorPos);
		
		//addEventSimple(proporcionalMouseMove.screenElement,'mouseover',proporcionalMouseMove.startOverMove);
		proporcionalMouseMove.startOverMove();
		//addEventSimple(proporcionalMouseMove.screenElement,'mouseout',proporcionalMouseMove.stopOverMove);

		proporcionalMouseMove.startX = (proporcionalMouseMove.imageWidth - proporcionalMouseMove.screenSizeX) / 2;
		proporcionalMouseMove.setPosition( -proporcionalMouseMove.startX, 0 );
	},
	pauseMove: function () {
		//proporcionalMouseMove.pause = true;
		if ( this ) {
			proporcionalMouseMove.hiligth ( this );
			/*
			var left = $(this).offset().left + $(this).width()/2;
			var top = $(this).offset().top + $(this).height()/2;
			proporcionalMouseMove.Xlink = left;
			proporcionalMouseMove.Ylink = top;
			proporcionalMouseMove.dXlink = proporcionalMouseMove.mousePosX - left;
			proporcionalMouseMove.dYlink = proporcionalMouseMove.mousePosY - top;
			proporcionalMouseMove.sX = 0;
			proporcionalMouseMove.sY = 0;
			*/
		}
	},
	startMove: function() {
		//proporcionalMouseMove.pause = false;
		if ( this )
			proporcionalMouseMove.unhiligth ( this );
	},
	hiligth: function(o) {
		$(o).addClass('opacity05').show("slow");
	},
	unhiligth: function(o) {
		$(o).removeClass('opacity05').show("slow");
	},
	startOverMove: function (){
		if ( proporcionalMouseMove.screenElement.offsetWidth != proporcionalMouseMove.screenSizeX ||
			 proporcionalMouseMove.screenElement.offsetHeight != proporcionalMouseMove.screenSizeY )
			 proporcionalMouseMove.reinitScreenSize();
		proporcionalMouseMove.intervalTimer = window.setInterval ( "proporcionalMouseMove.redrawCanvas()", proporcionalMouseMove.intervalDelay );
	},
	stopOverMove: function (){
		window.clearInterval ( proporcionalMouseMove.intervalTimer );
	},
	reinitScreenSize: function (){
		proporcionalMouseMove.Log('resize');
		proporcionalMouseMove.screenSizeX = proporcionalMouseMove.screenElement.offsetWidth;
		proporcionalMouseMove.screenSizeY = proporcionalMouseMove.screenElement.offsetHeight;
		proporcionalMouseMove.setPosition( 0, 0 );
	},
	reinitÑursorPos: function (e){
		var evt = e || window.event;
		proporcionalMouseMove.mousePosX = evt.clientX;
		proporcionalMouseMove.mousePosY = evt.clientY;
	},
	redrawCanvas: function (){
		if ( proporcionalMouseMove.pause ) {
			dX = ( proporcionalMouseMove.mousePosX / ( proporcionalMouseMove.screenSizeX / 100 ) - 50 ) * proporcionalMouseMove.speedMove;
			dY = ( proporcionalMouseMove.mousePosY / ( proporcionalMouseMove.screenSizeY / 100 ) - 50 ) * proporcionalMouseMove.speedMove;
			//if ( proporcionalMouseMove.mousePosY
			proporcionalMouseMove.sX += Math.abs(dX);
			proporcionalMouseMove.sY += Math.abs(dY);
			if ( proporcionalMouseMove.sX >= Math.abs(proporcionalMouseMove.dXlink) ) dX = 0;
			if ( proporcionalMouseMove.sY >= Math.abs(proporcionalMouseMove.dXlink) ) dY = 0;
		} else {
			var wwwidrh = window.outerWidth != undefined ? window.outerWidth : $(window).width();
			var speedMove = (wwwidrh / proporcionalMouseMove.defaultScreen) * proporcionalMouseMove.speedMove;
			//proporcionalMouseMove.Log(proporcionalMouseMove.mousePosX + ' = ' + proporcionalMouseMove.screenSizeX);
			if ( proporcionalMouseMove.mousePosX <= proporcionalMouseMove.dopusk ) {
				// go to the left
				proporcionalMouseMove.Log('Left');
				dX = -speedMove;
				dY = 0;
			} else if ( proporcionalMouseMove.screenSizeX - proporcionalMouseMove.mousePosX <= proporcionalMouseMove.dopusk ) {
				// go to the right
				proporcionalMouseMove.Log('Right');
				dX = speedMove;
				dY = 0;
			} else {
				// go to the center
				dX = 0;
				proporcionalMouseMove.Log('Center');
				var ddx = Math.abs(proporcionalMouseMove.canvasPosX) - proporcionalMouseMove.startX;
				if ( ddx > 0 && Math.abs(ddx) > 10 ) {
					dX = -speedMove;
				}
				if ( ddx < 0 && Math.abs(ddx) > 10 ) {
					dX = speedMove;
				}
				
				dY = 0;
				//proporcionalMouseMove.setPosition ( -300, -300 );
				proporcionalMouseMove.Log('ddx = '+ddx);
			}
			//proporcionalMouseMove.Log(Math.random());
			proporcionalMouseMove.Log(speedMove);
			
		}
		if ( Math.abs ( dX ) < proporcionalMouseMove.dxAccuracy ) dX = 0;
		if ( Math.abs ( dY ) < proporcionalMouseMove.dxAccuracy ) dY = 0;
		proporcionalMouseMove.setPosition( -dX, -dY );
		
		/*dX = ( proporcionalMouseMove.mousePosX / ( proporcionalMouseMove.screenSizeX / 100 ) - 50 ) * proporcionalMouseMove.speedMove;
		dY = ( proporcionalMouseMove.mousePosY / ( proporcionalMouseMove.screenSizeY / 100 ) - 50 ) * proporcionalMouseMove.speedMove;
		proporcionalMouseMove.setPosition( -dX, -dY );*/
// 		if (( document.documentElement.offsetWidth != proporcionalMouseMove.screenSizeX ) || ( document.documentElement.offsetHeight != proporcionalMouseMove.screenSizeY )){proporcionalMouseMove.reinitScreenSize();}
// 		var coefX = proporcionalMouseMove.mousePosX / proporcionalMouseMove.screenSizeX;
// 		var futurePosX = ( ( proporcionalMouseMove.mousePosX - proporcionalMouseMove.Xdopusk ) * coefX ) - ( proporcionalMouseMove.canvasSizeX * coefX ) + proporcionalMouseMove.dopusk;
// 		var nowPosX = proporcionalMouseMove.canvasPosX;
// 		var dX = Math.round( proporcionalMouseMove.mainElement.offsetLeft - ( ( proporcionalMouseMove.mainElement.offsetLeft - futurePosX ) / 50 ) );
// 		var coefY = proporcionalMouseMove.mousePosY / proporcionalMouseMove.screenSizeY;
// 		var futurePosY = ( ( proporcionalMouseMove.mousePosY - proporcionalMouseMove.Xdopusk ) * coefY ) - ( proporcionalMouseMove.canvasSizeY * coefY ) + proporcionalMouseMove.dopusk;
// 		var nowPosY = proporcionalMouseMove.canvasPosY;
// 		var dY = Math.round( proporcionalMouseMove.mainElement.offsetTop - ( ( proporcionalMouseMove.mainElement.offsetTop - futurePosY ) / 50 ) );
// 		if ( dX < proporcionalMouseMove.screenSizeX - proporcionalMouseMove.canvasSizeX ) { dX = proporcionalMouseMove.screenSizeX - proporcionalMouseMove.canvasSizeX };
// 		if ( dX > 0 ){ dX = 0; }
// 		if ( dY < proporcionalMouseMove.screenSizeY - proporcionalMouseMove.canvasSizeY ) { dY = proporcionalMouseMove.screenSizeY - proporcionalMouseMove.canvasSizeY };
// 		if ( dY > 0 ){ dY = 0; }
// 		if ( (proporcionalMouseMove.mousePosX < 90) || (proporcionalMouseMove.mousePosX > proporcionalMouseMove.screenSizeX - 90))
// 		{
// 			proporcionalMouseMove.mainElement.style.left = dX + "px";
// 		}
// 		else{
// 			proporcionalMouseMove.mainElement.style.left = "-280px"
// 			proporcionalMouseMove.mainElement.style.top = "0px"
// 		}
// 		if ( (proporcionalMouseMove.mousePosY < 90) || (proporcionalMouseMove.mousePosY > proporcionalMouseMove.screenSizeY - 90))
// 		{
// 			proporcionalMouseMove.mainElement.style.top = dY + "px";
// 		}
	},
	setPosition: function ( dX, dY ){
		if ( proporcionalMouseMove.canvasPosX + dX < 0 ) {
			if ( proporcionalMouseMove.canvasPosX + dX > proporcionalMouseMove.screenSizeX - proporcionalMouseMove.canvasSizeX ) {
				proporcionalMouseMove.mainElement.style.left = Math.round( proporcionalMouseMove.canvasPosX + dX ) + "px";
				proporcionalMouseMove.canvasPosX = proporcionalMouseMove.canvasPosX + dX;
			}else{
				proporcionalMouseMove.mainElement.style.left = Math.round( proporcionalMouseMove.screenSizeX - proporcionalMouseMove.canvasSizeX ) + "px";
				proporcionalMouseMove.canvasPosX = proporcionalMouseMove.screenSizeX - proporcionalMouseMove.canvasSizeX;
			}
		}else{
			proporcionalMouseMove.mainElement.style.left = "0px";
			proporcionalMouseMove.canvasPosX = 0;
		}
		if ( proporcionalMouseMove.canvasPosY + dY < 0 ) {
			if ( proporcionalMouseMove.canvasPosY + dY > proporcionalMouseMove.screenSizeY - proporcionalMouseMove.canvasSizeY ) {
				proporcionalMouseMove.mainElement.style.top = Math.round( proporcionalMouseMove.canvasPosY + dY ) + "px";
				proporcionalMouseMove.canvasPosY = proporcionalMouseMove.canvasPosY + dY;
			}else{
				proporcionalMouseMove.mainElement.style.top = Math.round( proporcionalMouseMove.screenSizeY - proporcionalMouseMove.canvasSizeY ) + "px";
				proporcionalMouseMove.canvasPosY = proporcionalMouseMove.screenSizeY - proporcionalMouseMove.canvasSizeY;
			}
		}else{
			proporcionalMouseMove.mainElement.style.top = "0px";
			proporcionalMouseMove.canvasPosY = 0;
		}
	},
	Log: function (str) {
		//var logHtml = $('#log').html(); 
		//logHtml += '<br>' + str;
		if ( $('#log') )
			$('#log').html(str);
	}
}


/*+++++++++++++++++++*/

$(document).ready(function(){
	createElement();
	proporcionalMouseMove.initElement(document.getElementById('main'), document.documentElement);
});

//dragDrop.initElement(document.getElementById('main'));
//proporcionalMouseMove.initElement(document.getElementById('main'), document.documentElement);
//document.getElementById('mapImg').src = "images/mappro.jpg";
