// JavaScript Document



var Map = {

	isMapNodesAnimating: false,


	delayTime: 400,

	queArray: new Array,

	load: function() {

		$$('.selector').addEvent('mouseenter', Map.onCityNodeOver);

		$$('.selector').addEvent('mouseleave', Map.onCityNodeOut);

		

			//$(Map.animateOut.delay(Map.delayTime, this, e));

		

	},

	onCityNodeOver: function(e) {

		if (Map.isMapNodesAnimating == false ) {

		$(Map.animateIn.delay(Map.delayTime, this, e));

		} else if (Map.queArray.length < 4 ) {

			Map.queArray.push(e);

		} else { 

			//console.log(Map.queArray.length)

			Map.queArray = [] ;

				

		}

	},

	

	

	onCityNodeOut: function(e) {

		if (Map.isMapNodesAnimating == false) {

		$(Map.animateOut.delay(Map.delayTime, this, e));

		} else if (Map.queArray.length < 4 ) {

			Map.queArray.push(e);

		} else { 

			Map.queArray = [] ;



		}

	},

	



	animateIn: function(e) {

			Map.isMapNodesAnimating = true;


			var resizeDiv = ($(e.target).getProperty('resizeTo')== null ) ? $(e.target).getParent() : $(e.target);		

			if ($(resizeDiv).getProperty('id')!== null) {

				var cityDiv = $(resizeDiv).getProperty('id').split("-")[0]

				var newDimensions = ($(resizeDiv).getProperty('resizeTo')== null ) ? $(resizeDiv).getParent().getProperty('resizeTo').split(',') : $(resizeDiv).getProperty('resizeTo').split(',');

				$(cityDiv).set('morph', {duration: 400 });

				
				$(cityDiv).morph({width: newDimensions[0], height: newDimensions[1]}).get('morph').chain(Map.animationFinish('open'));

																									
				

			

				};

		

		

	},

	

	animateOut: function(e) {

			Map.isMapNodesAnimating = true ;

			

			var resizeDiv = ($(e.target).getProperty('resizeTo')== null ) ? $(e.target).getParent() : $(e.target);

			if ($(resizeDiv).getProperty('id')!== null) {

				var cityDiv = $(resizeDiv).getProperty('id').split("-")[0];

				$(cityDiv).set('morph', {duration: 300});

				$(cityDiv).morph({height: 9, width: 9 }).get('morph').chain(Map.animationFinish('closed'));




			};





	},

	

		animationFinish: function(isClosed) {

		//console.log('chain?!?!?!')

		if (isClosed == 'closed') {

			//console.log(Map.mapNodesOpen.shift.length)

		} else {

			//console.log('yes yes')

			}

			 

			if (Map.queArray.length > 0) {

			var animateType = Map.queArray.shift()

				if (animateType.event.type == 'mouseout') {

				$(Map.animateOut.delay(Map.delayTime, this, animateType));

				} else {

				$(Map.animateIn.delay(Map.delayTime, this, animateType));

				};

			} else {

			Map.isMapNodesAnimating = false


			};

			



		

		}



};

window.addEvent('domready', Map.load);



// note to myself:  the problem right now is i need to make it one que.  this que needs to know whether the action in or out.
