/** 
* @projectDescription	Misc javascript
*
* @id	misc.js
*/

function PartnersDropdown(container) {
	var select = container.down('select');
	new ScrollDropdown(select);
	container.select('a.back').each(function (el) {
		el.observe('click', function (ev) {
			new Effect.ScrollTo(this.hash.substr(1));
			Event.stop(ev);
		}.bindAsEventListener(el));	
	});
} 

/*--------------------------------------------------------------------------*/

function TrackOrder (container) {
	new LoggerInner(container);
	container.select('.field').each(function(el) {
		new PromptLabel(el);
	});
}

/*--------------------------------------------------------------------------*/

var FreeGuide = Class.create({
	initialize: function(container) {
		this.container = $(container);
		this.selections = this.container.select('#guide_selection .field');
		this.dropdown = this.container.down('select.methods');
		this.setup();
	},
	setup: function () {
		this.selections.each(function (el) {
			var options = el.select('input[type="hidden"]')
			el.down('input.checkbox').observe('click', function () {
				this.updateDropdown(options);
			}.bind(this));
		}.bind(this));
	},
	updateDropdown: function (values) {
		var opts = [];
		this.dropdown.update();
		values.each(function (el) {
			this.dropdown.insert(new Element('option', { 'value' : el.name }).update(el.value));
		}.bind(this));
	}
});

/*--------------------------------------------------------------------------*/

var PhotoPopup = Class.create(PopUp, {
	initialize: function ($super, trigger, pop, aplay) {
		this.trigger = trigger;
		this.pop = pop;
		
		this.options = {
			onOpen:  this._open.bind(this),
			onClose: this._close.bind(this),
			modal: true,
			centered: true,
			headerSelector: "div.photo_header",
			photoSelector:  "#photo_container"
		};
		this.aplay = aplay; // autoplay = true or false
		
		$super(this.trigger, this.pop, this.options);
	},
	_open: function () {
		if (this.trigger.title && this.options.headerSelector) {
			this.header = this.pop.down(this.options.headerSelector);

			if (this.header) {
				this.header.innerHTML = this.trigger.title;
			}
		}
		var url = this.trigger.href;
		var image = new Element("img", {src: url});
		this.pop.down(this.options.photoSelector).insert(image);
		if (this.options.modal) {
			$('modal_overlay').show();
		}
	},
	_close: function () {
		if (this.options.modal) {
			$('modal_overlay').hide();
		}
		this.pop.down('#photo_container').update('');
	}
});

/*--------------------------------------------------------------------------*/
 
document.observe('dom:loaded', function () {
	/* state_fees_tabs */
	var feesTabs = $('fees_tabs');
	if (feesTabs) {
		new Tabs(feesTabs, feesTabs.select('.tabs li'), feesTabs.select('.tab'), 0);
		new AjaxStateFees(feesTabs);
	}
	
	/* our partners dropdown */
	var bizPartners = $('partners');
	if (bizPartners) {
		PartnersDropdown(bizPartners);
	}
	
	/* state name check */
	if ($('state_name_check')) {
		new ToolTip('namecheck_type_tooltip_trigger', 'namecheck_type_tooltip');
		new ToolTip('namecheck_state_tooltip_trigger', 'namecheck_state_tooltip');
		new ToolTip('namecheck_primaryn_tooltip_trigger', 'namecheck_primaryn_tooltip');
		new ToolTip('namecheck_secondaryn_tooltip_trigger', 'namecheck_secondaryn_tooltip');
	}
	
	/* incorporate package start */
	if ($('incorporate_inpage')) {
		new ToolTip('select_state_tooltip_trigger', 'select_state_tooltip');
		new ToolTip('select_business_tooltip_trigger', 'select_business_tooltip');
	}
	
	/* learning center tabs */
	var landingHeader = $('landing_header');
	if ($('content').hasClassName('learning')) {
		new Tabs(landingHeader, landingHeader.select('.tabs li'), landingHeader.select('.tab'), 0);
	}
	
	/* photo gallery pops */
	if ($('tout_gallery')) {
		$$('#tout_gallery a').each(function (el) {
			new PhotoPopup(el, $('photo_popup'));
		});
	}
		
	/* free guide */
	var freeGuide = $('free_guide');
	if (freeGuide) {
		new FreeGuide(freeGuide);
		new ToolTip('guide1_tooltip_trigger', 'guide1_tooltip');
		new ToolTip('guide2_tooltip_trigger', 'guide2_tooltip');
		new ToolTip('guide3_tooltip_trigger', 'guide3_tooltip');
	}
	
	/* track order */
	var trackOrder = $('track_order');
	if (trackOrder) {
		TrackOrder(trackOrder);
	}
	
	/* tooltips */
	new GlobalToolTip($('main').down('.col_content'));
});
	