// JavaScript Document

/*	==========================================================

	Class: 		Callout
	Use:		Performs operations on the callouts boxes
	Version:	v1
	By:			Dave Calvert

========================================================	*/

var Callout = Class.create();
Callout.prototype = {
    
    initialize: function () {
		if($$('.callouts-panel') !='' ) {
			$$('.callouts-panel div').each(this.setupcallouts.bind(this));
		} else {
			return false;
		}
    },
	
	setupcallouts: function (k,v){
		
		Event.observe($(k),'mouseover',this.open.bindAsEventListener(this));
		Event.observe($(k),'mouseout',this.close.bindAsEventListener(this));
		
	},
	
	open: function (el) {	

		// Get element
		elt = this.getElementFromEvent(el);
		element = $(elt).next(1);
		
		// Set queue name
		queueName = this.setQueueName(element.id);
		
		// Empty queue
		this.emptyQueue(queueName);
		
		
		if(element.getStyle('top').replace('px','') == 120 ) {
			new Effect.Move(element.id , { 
								x: 0, y: 55, mode: 'absolute', duration:0.75,
								transition: Effect.Transitions.spring,
								queue: { scope: queueName }
			});
		}
		
	},
	
	close: function (el) {
	
		// Get element
		elt = this.getElementFromEvent(el);
		element = $(elt).next(1);
		
		// Set queue name
		queueName = this.setQueueName(element.id);
		
		// Empty queue
		this.emptyQueue(queueName);
	
		new Effect.Move(element.id, {
								x: 0, y: 120, mode: 'absolute', duration:0.3,
								queue: { scope: queueName }
		});
		
	},
	
	emptyQueue: function (queueName) {
	
		Effect.Queues.get(queueName).invoke('cancel');
	
	},
	
	getElementFromEvent: function (evt) {
		
		return Event.element(evt);
		
	},
	
	setQueueName: function (str) {
	
		return str.toString();
	
	}
	
};
