$(function(){
	
	// Nav menus
	$('div.nav').children('ul').superfish({
		delay: 400,
		speed: 'fast'
	});
	
	/* UI multiselect */
	$('select.ui-multiselect').multiselect({
		dividerLocation: .5,
		sortable: false
	}).parents('div.input').addClass('ui-multiselect-wrapper');
	
	/* scrollTo for validation errors */
	$.scrollTo($('form div.error-message:first').parent('div'));
	
	/* tooltips */
	$('a.tooltip').tooltip().removeAttr('href');
	
	/* autocomplete substitution */
	$('select.ui-autocomplete').autocomplete();
	
	/* suggest keywords for text inputs */
	$('input[type=text].ui-suggest').suggest();
	
	// AJAX validation
	$('form.ajax-validate').ajaxValidate();
	
	/* Datepicker rocks! */
	// append hidden form fields and button
	$('.input.date, .input.datetime').append('<input type="hidden" class="datepicker"/>')
	// attach datepicker to newly apended fields
	$('.input.date input.datepicker, .input.datetime input.datepicker').datepicker({
		showOn: 'button',
		buttonImage: '/airtight/img/jqueryui/calendar.gif', 
		buttonImageOnly: true,
		changeMonth: true,
		changeYear: true,
		showAnim: 'slide',
		duration: 'slow',
		onClose: function() {
			var cur_date = this.value.split('/');
			// check for valid cur_date
			if (cur_date.length == 3) {
				var container = $(this).parents('.date, .datetime');
				// set select values
				container.find('[name*=month]').val(cur_date[0]);
				container.find('[name*=day]').val(cur_date[1]);
				container.find('[name*=year]').val(cur_date[2]);
			}
		},
		beforeShow: function() {
			// make sure we have the current date
			var container = $(this).parents('.date, .datetime');
			var date = [
				container.find('[name*=month]').val(),
				container.find('[name*=day]').val(),
				container.find('[name*=year]').val()
			];
			this.value = date.join('/')
		}
	});
	
	// search result altrow classes
	$('table.search-results tr:even').addClass('altrow');
	
	// find external/new window links
	$('a').each(function(){
		if ((this.href.indexOf(window.location.host) == -1 && this.href.indexOf('http') != -1) || $(this).hasClass('new_window')) {
			this.target = '_blank';
		}
		// additional confirmation for external links
		if ((this.href.indexOf(window.location.host) == -1 && this.href.indexOf('http') != -1)) {
			$(this).click(function(){
				return confirm('You are leaving Work Ready Connect to visit an external link.  Please confirm you understand the consequences of this action. (This link will also open in a new window or tab)');
			});
		}
	});
	
	// region map modal
	if ($('a.region_dialog').size() > 0){
		var regionImage = $('<img>').attr('src', $('a.region_dialog').attr('href'));
		regionImage.dialog({
			width: 400,
			title: 'Work Ready Region Map',
			modal: true,
			autoOpen: false
		});
		$('a.region_dialog').click(function(){
			regionImage.dialog('open');
			return false;
		});
	}
	
	// occupation dialog stuff
	if ($('a.occupation_dialog').size() > 0) {
		$('body').append($('<div>').attr('id', 'occupation-dialog').hide());
		$('div#occupation-dialog').load('/occupations/by_industry .occupation_list', function(){
			$('div.occupation_list').dialog({
				autoOpen: false,
				width: 900,
				resizable: false,
				modal: true,
				open: function() {
					$('.ui-widget-overlay').bgiframe();
				}
			}).find('ul.accordion li').click(function(){
				window.litest = $(this);
				$(this).siblings('li').children('ul').slideUp();
				$(this).find('ul').slideToggle();
			});
		});
	}
	$('a.occupation_dialog').show().click(function(){
		$('div.occupation_list').dialog('option', 'height', $(window).height() - 50).dialog('open');
		return false;
	});
	
	// IE6 is killing me.
	$(".ie6zindex").bgiframe();
	
	// password meter
	$('#UserPassword').passwordmeter({
		onInit: function(options){
			var indicator = $('<span>')
				.addClass('strength-container')
				.append('Strength: ')
				.append($('<span>').addClass('strength').html('Weak'));
			this.prev('label').append(indicator);
		},
		onKeyup: function(strength, score, color, options){
			this.parent().find('span.strength').html(strength);
		}
	});
	
	// AJAX handling for employer flagging
	if ($('a.flag_employer').size() > 0) {
		$('body').append($('<div>').attr('id', 'flag_dialog').hide());
		$('div#flag_dialog').dialog({
			autoOpen: false,
			width: 600,
			resizable: false,
			modal: true,
			title: 'Report misconduct',
			open: function() {
				$('.ui-widget-overlay').bgiframe();
			}
		});
		$('div#flag_dialog form').live('submit', function(){
			$.post(this.action, $(this).serialize(), function(data){
				if (data.success) {
					$('div#flag_dialog').dialog('close');
					var flashContainer = $('<div>')
						.attr('id', 'ajax_flash')
						.addClass('flash flash-success ui-corner-all')
						.html(data.message);
					$('div.content').prepend(flashContainer);
					setTimeout("$('#ajax_flash').fadeOut('slow')", 1500);
				} else {
					alert('There was a problem with you request.  Please retry.');
				}
			}, 'json');
			return false;
		});
		$('a.flag_employer').click(function(){
			$('div#flag_dialog')
				.html($('<img>')
					.attr('src', '/img/ajax-loader.gif')
					.css({display: 'block', margin: '50px auto'}))
				.load(this.href);
			$('div#flag_dialog').dialog('open');
			return false;
		});
	}
});
