// Utilizing MooTools Library http://www.mootools.net

// Custom event handler to prevent conflict between libraries using window.addEvent 
var AC = {
	addEvent: function (el, type, fn) {
		if (el.attachEvent) {
			el['e'+type+fn] = fn;
			el[type+fn] = function(){el['e'+type+fn](window.event);}
			el.attachEvent('on'+type,el[type+fn]);
		} else {
			el.addEventListener(type,fn,false);
		}
	},
	removeEvent: function (el, type, fn) {
		if (el.detachEvent) {
			el.detachEvent('on'+type,el[type+fn]);
			el[type+fn] = null;
		} else {
			el.removeEventListener(type,fn,false);
		}
	}
};


AC.addEvent(window, 'load', setup);

function setup(){

	if($chk($('AC-PhotoList'))){ var PhotoThumb = new ACThumbnailer('AC-PhotoList','AC-PhotoThumbs','AC-PhotoImage','AC-DetailBody'); }
	
	if($chk($$('#AC-TodoList A')[0])){ var TodoList = new ACTodoList(); }

	var accordion = new Accordion('div.toggleHead', 'div.toggleBody', {opacity: false,show: -1,alwaysHide: true}, $('AC-Accordion'));

	if($$('.AC-Jump').length > 0){ new SelectBoxMenu({menus: $$('.AC-Jump')}); };
	
}

// TodoList Class
var ACTodoList = new Class({
	initialize: function(){
		this.header = $$('.AC-TodoHeader')[0];
		this.footer = $$('.AC-TodoFooter')[0];
		this.content = $$('.AC-TodoContent')[0];
		this.todoOpen = false;
		this.heightChange = new Fx.Tween(this.content,{property: 'height', duration:700}, Fx.Transitions.Sine.easeInOut);
		this.header.getElements('a')[0].removeProperty('href');
		this.header.addEvent('click', function() { this.todoToggle() }.bind(this) );
		this.footer.addEvent('click', function() { this.todoToggle() }.bind(this) );
	},
	todoToggle: function() {
		if(this.todoOpen == false) {
			this.heightChange.cancel();
			this.header.addClass('AC-TodoOpen');
			this.heightChange.start(this.content.getScrollSize().y);
			this.todoOpen = true;
		} else {
			var main = this;
			this.heightChange.cancel();
			this.heightChange.start(0).chain(function(){
				if(main.content.getStyle('height').toInt() == 0) {
					main.header.removeClass('AC-TodoOpen');
				}
			});
			this.todoOpen = false;
		}
	}		
});

//Quicklinks Class
var SelectBoxMenu = new Class({
		options: {
			menus: []
		}, 
		initialize: function(options){
			this.setOptions(options)
			this.menus = [];
			this.addMenus(this.options.menus);
		},
		addMenus: function(menus) {
			$$(menus).each(function(menu){
				this.menus.include($(menu));
				menu.addEvent('change', function(){
					location.href=menu.get('value');
				});
			}, this);
		} 
		
	});
SelectBoxMenu.implement(new Options, new Events);

//For dynamic video spotlights ;
//Remove if not using video spotlight rotations
function updateSpotlightFields(spotlightData) {
	var spotData = spotlightData.split("|");
	$$('.AC-SpotName')[0].innerHTML = spotData[0];
	$$('.AC-SpotExt')[0].innerHTML = spotData[1];
}


// Form field defaults
var ACFormFieldDefault = new Class({

	Implements: [ Options ],

	options: {
		classname: 'showingDefault',
		defaultAttribute: 'title',
		hideEvent: 'focus',
		selector: 'input[type="text"][title]',
		showEvent: 'blur'
	},
	
	initialize: function(options) {
		this.setOptions(options);
		this.setupEvents();
	},
	
	setupEvents: function() {
		$$(this.options.selector).each( function(el) {
			this.showDefault(el, true);
			el.addEvent( this.options.hideEvent, this.hideDefault.pass(el, this) );
			el.addEvent( this.options.showEvent, this.showDefault.pass(el, this) );
		}.bind(this) );
	},
	
	hideDefault: function(el, force) { 
		if ( el.get('value') == el.get(this.options.defaultAttribute) || force === true ) {
			el.set('value', '');
			el.removeClass(this.options.classname);
		}
	},
	
	showDefault: function(el, force) {
		if ( el.get('value') == '' || force === true ) {
			el.set( 'value', el.get(this.options.defaultAttribute) );
			el.addClass(this.options.classname);
		}
	}
	
});

window.addEvent('domready', function() {
	new ACFormFieldDefault();
});