/*
*
* JS Motion Render 
*     &
* JS Tools
* author: Paespedro
* stable version @ 04/jul/2011
* 
*/
var tools = {
	props : {
		browser:null,
		browserWidth:0, 
		browserHeight:0, 
		onResizeCallback:null,
		onResizeCallbackParams:null,
		onAccelerometerCallback:null,
		onTouchCallback:null,
		hasAccelerometer:false,
		accelerometer : {
			easing:1,
			x : 0, 
			y : 0,
			vx : 0, 
			vy : 0,
			ax : 0, 
			ay : 0,
			rotz : 0,
			rotx : 0,
			roty : 0,
			friction:0.98
		},
		hasTouch:false,
		touch : {
			status:'inactive',
			preventDefault:true,
			x:0,
			y:0
		}
	},
	getScrollTop : function(){
	    if( typeof pageYOffset!= 'undefined' ) {
	        //most browsers
	        return pageYOffset;
	    } else {
	        var B = document.body; //IE 'quirks'
	        var D = document.documentElement; //IE with doctype
	        D = (D.clientHeight)? D: B;
	        return D.scrollTop;
	    }
	},
	getTotalHeight : function(){
		var d= document.documentElement;
		var b= document.body;
		var who= d.offsetHeight? d: b ;
		return Math.max(who.scrollHeight,who.offsetHeight);
	},
	mathMaxMin : function(__value){
		var n = __value;
		n = n < 0 ? 0 : n > 1 ? 1 : n;
		return n;
	},
	toDegree : function(rad, useCorrection){
		var nro = rad*(180/(Math.PI));
		if(nro < 0 && useCorrection)nro = 360+nro;
		return nro;
	},
    toRad : function(deg){
		var nro = deg*(Math.PI/180);
		return nro;
	},
   	distAB : function(x1, y1, x2, y2){
		var dist = Math.round(Math.sqrt(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))));
		return dist;
	},
	impar : function(nro){
		if(nro % 2 == 0){
			return false;
		}else{
			return true;
		};
	},
	getNumberIn : function(min, max){
		if (max != 0){
			return Math.random()*((max+1)-min)+min
		}else{
			return Math.random()*min
		}
	},
	globalToLocal : function( context, globalX, globalY ){
		 // Get the position of the context element.
		 var position = context.offset();
	  
		 // Return the X/Y in the local context.
		 return({
			 x: Math.floor( globalX - position.left ),
			 y: Math.floor( globalY - position.top )
		 });
	},
	scanObject : function (object, indent){
			if(object == undefined)return;
			
			if (indent == undefined || !indent || indent == '') {
				indent = "";
			}
			var out = "";
			for (var item in object) {
				if (typeof (object[item]) == "object") {
					out += indent+"["+item+"] => Object";
				} else {
					out += indent+"["+item+"] => "+object[item]+"";
				}
				out += tools.scanObject(object[item], indent+"   ");
			}
			return out;
		},
	onResizeHandler : function(event){
	  if( typeof( window.innerWidth ) == 'number' ){

	    //Non-IE

	    tools.props.browserWidth = window.innerWidth;
	    tools.props.browserHeight = window.innerHeight;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {

	    //IE 6+ in 'standards compliant mode'

	    tools.props.browserWidth = document.documentElement.clientWidth;
	    tools.props.browserHeight = document.documentElement.clientHeight;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {

	    //IE 4 compatible

	    tools.props.browserWidth = document.body.clientWidth;
	    tools.props.browserHeight = document.body.clientHeight;
	  }
	  if(tools.onResizeCallback){
		if(tools.onResizeCallbackParams){
			tools.onResizeCallback(tools.onResizeCallbackParams);
		}else{
			tools.onResizeCallback();
		}
	  }
	},
	addAccelerometer : function(){
		var accRenderer = 0;
		
		if (window.DeviceMotionEvent != undefined) {
			tools.props.hasAccelerometer = true;
			tools.props.accelerometer.x = (tools.props.browserWidth*0.5);
			tools.props.accelerometer.y = (tools.props.browserHeight*0.5);
			window.ondevicemotion = function(event) {
				
				tools.props.accelerometer.ax = event.accelerationIncludingGravity.x * 10;
				tools.props.accelerometer.ay = event.accelerationIncludingGravity.y * 10;
				if ( event.rotationRate ) {
					tools.props.accelerometer.rotz = event.rotationRate.alpha;
					tools.props.accelerometer.rotx = event.rotationRate.beta;
					tools.props.accelerometer.roty = event.rotationRate.gamma;
				}
				//document.getElementById('debug').innerHTML = "x: "+event.accelerationIncludingGravity.x+"<br/>y: "+event.accelerationIncludingGravity.y;
			}

			accRenderer = setInterval( function() {
				var landscapeOrientation = tools.props.browserWidth/tools.props.browserHeight > 1;
				if ( landscapeOrientation) {
					tools.props.accelerometer.vx = tools.props.accelerometer.vx + tools.props.accelerometer.ay;
					tools.props.accelerometer.vy = tools.props.accelerometer.vy + tools.props.accelerometer.ax;
				} else {
					tools.props.accelerometer.vy = tools.props.accelerometer.vy - tools.props.accelerometer.ay;
					tools.props.accelerometer.vx = tools.props.accelerometer.vx + tools.props.accelerometer.ax;
				}
				tools.props.accelerometer.vx = tools.props.accelerometer.vx * tools.props.accelerometer.friction;
				tools.props.accelerometer.vy = tools.props.accelerometer.vy * tools.props.accelerometer.friction;
				tools.props.accelerometer.y = parseInt(tools.props.accelerometer.y + tools.props.accelerometer.vy / tools.props.accelerometer.easing);
				tools.props.accelerometer.y = tools.props.accelerometer.y < 0 ? 0 : tools.props.accelerometer.y > tools.props.browserHeight ? tools.props.browserHeight : tools.props.accelerometer.y;
				tools.props.accelerometer.x = parseInt(tools.props.accelerometer.x + tools.props.accelerometer.vx / tools.props.accelerometer.easing);
				tools.props.accelerometer.x = tools.props.accelerometer.x < 0 ? 0 : tools.props.accelerometer.x > tools.props.browserWidth ? tools.props.browserWidth : tools.props.accelerometer.x;
				if(tools.props.onAccelerometerCallback && tools.props.touch.status == "inactive")tools.props.onAccelerometerCallback();
				
			}, 25);
		};
	},
	addTouch : function(){
		
		if (window.TouchEvent != undefined) {
			tools.props.hasTouch = true;
			document.ontouchmove = function(event){
			tools.props.touch.status = event.type;
			  if(tools.props.touch.preventDefault)event.preventDefault();
			  if(event.touches.length == 1){
			    var touch = event.touches[0];
			    tools.props.touch.x = touch.pageX;
			    tools.props.touch.y = touch.pageY;
				if(tools.props.onTouchCallback)tools.props.onTouchCallback(event);
			  }
			};
			document.ontouchstart = function(event){
			  if(tools.props.hasAccelerometer){
				tools.props.accelerometer.vx = tools.props.accelerometer.vy = tools.props.accelerometer.ax = tools.props.accelerometer.ay = 0;
				tools.props.accelerometer.x = (tools.props.browserWidth*0.5);
			  	tools.props.accelerometer.y = (tools.props.browserHeight*0.5);
				
			  }
			  tools.props.touch.status = event.type;
			  if(event.touches.length == 1){ 
			    var touch = event.touches[0];
			    tools.props.touch.x = touch.pageX;
			    tools.props.touch.y = touch.pageY;
		    	if(tools.props.onTouchCallback)tools.props.onTouchCallback(event);
			  }
			};
			document.ontouchcancel = function(event){
			  if(tools.props.hasAccelerometer){
				tools.props.accelerometer.vx = tools.props.accelerometer.vy = tools.props.accelerometer.ax = tools.props.accelerometer.ay = 0;
				tools.props.accelerometer.x = (tools.props.browserWidth*0.5);
			  	tools.props.accelerometer.y = (tools.props.browserHeight*0.5);

			  }
				tools.props.touch.status = "inactive";
			  if(event.touches.length == 1){
			    var touch = event.touches[0];
			    tools.props.touch.x = touch.pageX;
			    tools.props.touch.y = touch.pageY;
				if(tools.props.onTouchCallback)tools.props.onTouchCallback(event);
			  }
			}
			document.ontouchend = function(event){
			  if(tools.props.hasAccelerometer){
				tools.props.accelerometer.vx = tools.props.accelerometer.vy = tools.props.accelerometer.ax = tools.props.accelerometer.ay = 0;
				tools.props.accelerometer.x = (tools.props.browserWidth*0.5);
			  	tools.props.accelerometer.y = (tools.props.browserHeight*0.5);

			  }
				tools.props.touch.status = "inactive";
			  if(event.touches.length == 1){
			    var touch = event.touches[0];
			    tools.props.touch.x = touch.pageX;
			    tools.props.touch.y = touch.pageY;
				if(tools.props.onTouchCallback)tools.props.onTouchCallback(event);
			  }
			}
		}		
	},
	arrayShuffler : function(arr) {
			var tmpArray = arr.slice();
			var shuffledArray = [];
			while (tmpArray.length > 0){
				var ind = Math.floor(Math.random()*tmpArray.length);
				shuffledArray.push(tmpArray[ind]);
				tmpArray.splice(ind, 1);
			}
			return shuffledArray;
	},
		
	getObjectIn : function(arr){
			return array[Math.round((tools.getNumberIn(0, (array.length-1))))];
	},
	
	randomIncrementIn : function(valueToIncrement, min, max){
			valueToIncrement += getNumberIn(min, max);
			return valueToIncrement;
	}
};

///
///
///

var navControl = {
	props:{
		activeItem:null
	},
	init : function(){
		tools.props.browser = $.browser;
		navControl.props.activeItem = $('.activemenuitem');
		var subnav_colecao = $('#subnav_colecao');
		var subnav_faleconosco = $('#subnav_faleconosco');
		if(navControl.props.activeItem && navControl.props.activeItem[0] && navControl.props.activeItem[0].id == 'menu-colecao'){
			subnav_colecao.show();
		}else if(navControl.props.activeItem && navControl.props.activeItem[0] && navControl.props.activeItem[0].id == 'menu-fale-conosco'){
			subnav_faleconosco.show();
		}else{
			$('.menuitem').mouseenter(function(){
				if($(this)[0].id == 'menu-colecao'){
					subnav_colecao.show();
					$('#menu-colecao').addClass('activemenuitem');
					subnav_faleconosco.hide();
					$('#menu-fale-conosco').removeClass('activemenuitem');
				}else if($(this)[0].id == 'menu-fale-conosco'){
					subnav_faleconosco.show();
					$('#menu-fale-conosco').addClass('activemenuitem');
					subnav_colecao.hide();
					$('#menu-colecao').removeClass('activemenuitem');
				}else{
					subnav_colecao.hide();
					subnav_faleconosco.hide();
					$('#menu-colecao').removeClass('activemenuitem');
					$('#menu-fale-conosco').removeClass('activemenuitem');
				}
			});
			subnav_colecao.mouseleave(function(){
				subnav_colecao.hide();
				$('#menu-colecao').removeClass('activemenuitem');
			});	
			subnav_faleconosco.mouseleave(function(){
				subnav_faleconosco.hide();
				$('#menu-fale-conosco').removeClass('activemenuitem');
			});		
		}
	}
};

(function($){
	navControl.init();
})(window.jQuery)
