$(document).ready(function() {
	
	//------------------------------ Form Class Names
	$('form.search_app :text, form.search_app :password').addClass('text_input');
	
	//------------------------------ Form checkboxes - Single select
	$('form.search_app :checkbox').click(function() {
		//if(window.console) console.log('Value: ' + $(this).val() + '\n' + 'Name: ' + $(this).attr('name'));
		$('form :checkbox[name="' + $(this).attr('name') + '"][value!="' + $(this).val() + '"]').attr('checked', false);
	});
	
	//------------------------------ Search Results
	$('.benefit_type').each(function() {
		$(this).append('<div class="toggle_display"></div>');
		$(this).append('<div class="clear"></div>');
		$('.benefit_type').find('.toggle_display').html('Show Benefit');
	});
	$('.benefit_type').click(function() {
		if($(this).hasClass('active') == true) {
			$(this).next('.benefit_table').slideUp('slow');
			$(this).find('.toggle_display').html('Show Benefit');
			$(this).removeClass('active');
		}
		else {
			$(this).next('.benefit_table').slideDown('slow');
			$(this).find('.toggle_display').html('Hide Benefit');
			$(this).addClass('active');
		}
	});
	$('.benefit_table').eq(0).show();
	$('.benefit_type').eq(0).addClass('active').find('.toggle_display').html('Hide Benefit');
	
	//------------------------------ Toggle Display
	var show_all = '<span id="show_all_plan_details">Show all plan details</span>';
	var hide_all = '<span id="hide_all_plan_details">Hide all plan details</span>'
	
	$('#toggle_search_result_display').append(show_all + hide_all);
	$('#show_all_plan_details').click(function() {
		$('#search_result').find('.benefit_table').slideDown('slow').end().find('.toggle_display').html('Hide Benefit').end().find('.benefit_type').addClass('active');
	});
	$('#hide_all_plan_details').click(function() {
		$('#search_result').find('.benefit_table').slideUp('slow').end().find('.toggle_display').html('Show Benefit').end().find('.benefit_type').removeClass('active')
	});
	
	$('#toggle_search_result_display span').hover(function() {
		$(this).addClass('hover');
	},function() {
		$(this).removeClass('hover');
	});
	
	//------------------------------ Tooltip
	$('abbr').mouseover(function(e) {
		var tip = $(this).attr('title');
		$(this).attr('title', '');
		$(this).append('<div id="tooltip"><div class="tipHeader"></div><div class="tipBody">' + tip + '</div><div class="tipFooter"></div></div>');		
		$('#tooltip').fadeIn('500');
		//$('#tooltip').fadeTo('1',0.9);
	}).mousemove(function(e) {
		var pos = $(this).position();
		$('#tooltip').css('top', pos.top - 0);
		$('#tooltip').css('left', pos.left + 40);
	}).mouseout(function() {
		$(this).attr('title',$('.tipBody').html());
		$(this).children('div#tooltip').remove();
	});

	//------------------------------ Add "first" class to first table row in each table
	$('div.benefit_table table').each(function() {
		$(this).find('tr:first').addClass('hilite');
	});

	//------------------------------ Print button
	$('#print a').click(function() {
		window.print();
		return false;						 
	});
	
	//------------------------------ Toggle Search From Display (Not Used)
	var show_search_form = '<span id="show_search_form">Show search form</span>';
	var hide_search_form = '<span id="hide_search_form">Hide search form</span>';
	
	$('#toggle_search_form').html(show_search_form);
	
	$('#show_search_form').live("click", function() {
		$('#search_form_hidden').slideDown('slow'); //Int here
		$('#toggle_search_form').empty().html(hide_search_form);
	});
	$('#hide_search_form').live("click", function() {
		$('#search_form_hidden').slideUp('slow');
		$('#toggle_search_form').html(show_search_form);
		
	});
	
	//------------------------------ Search Form When Comparing Against Another Plan
	//----- Insurer and Plan List dropdowns
	$('#search_form').relatedSelects({
		onChangeLoad: '/ci/search_app/get_plan_list_from_insurer',
		selects: ['insurer_list', 'plan_list'],
		onLoadingStart: function() {
			
		},
		onLoadingEnd: function() {
			$('#plan_list').val( $(this).attr('title') );
		}
	});
	
	//----- Submit form when #plan_list changes (Not Used, JSON Rocks)
	/*
	$('#plan_list').change(function()
	{
		var option_selected = $(this).val();
		var form_id = $(this).parents('form').attr('id');
		if(option_selected != '')
		{
			$('#' + form_id).submit();	
		}
	});
	*/
	
	//----- Get JSON Plan Data via #plan_list and reset checkboxes
	$('#plan_list').change(function()
	{
		var option_selected = $(this).val();
		var form_id = $(this).parents('form').attr('id');
		if(option_selected != '')
		{
			$.getJSON('/ci/search_app/get_plan_details', {plan_id: option_selected}, function(data) {
				$('input[name="price"]').val(data.adult);
				
				//Clear Form
				$('#' + form_id + ' :checkbox').attr('checked', false);
				$('#accomodation_question').slideUp(300);

				//Populate the fields
				$('select[name="accommodation"]').val(data.accommodation);
				$('#status').html('The form has been updated with the price and accomodation information from the <b>' + data.plan_name + '</b> plan from <b>'+ data.insurer + '</b>.').fadeIn(500);
			});
		}
	});
	
	//------------------------------ Accomodation Question
	if ( $('input[name="show_accommodation"]').is(':checked') )
	{
		$('#accomodation_question').show();
	}
	
	$('input[name="show_accommodation"]').click(function()
	{
		if($(this).attr('checked') == true) $('#accomodation_question').slideDown(300);
		else $('#accomodation_question').slideUp(300);
	});
	
	if( $('input[name="show_accommodation"]').length )
	{
		$('select[name="accommodation"]').change(function()
		{
			$('input[name="price"]').val('');
		});
	}
	
	//------------------------------ Compared Against Form
	if ( $('input[name="compared_against"]').length )
	{
		var compared_against = $('input[name="compared_against"]').val();
		$('table.compare_three_plans input:checkbox[value = "' + compared_against + '"]').attr('checked', true).parents('tr').css('font-weight', 'normal');
	}
	
	//------------------------------ Send to a Friend
	$('#send_to_a_friend_form :text').addClass('text_input');
	
	$('a.send_to_a_friend').fancybox({
		'type'			:	'iframe',
		'width'			: 	490,
		'height'		:	370,
		'speedIn'		:	400, 
		'speedOut'		:	200, 
		'overlayShow'	:	true
	});
	//------------------------------ Search Form Questions
	 
	$('span.standard_plans_search').click(function()
	{
		$('#standard_plans_search').slideDown('slow', function()
		{
			$.scrollTo( $('#search_type'), 800);
		});
		$('#cash_plans_search').slideUp('slow');
	});
	
	$('span.cash_plans_search').click(function()
	{
		$('#standard_plans_search').slideUp('slow');
		$('#cash_plans_search').slideDown('slow', function()
		{
			$.scrollTo( $('#search_type'), 800);
		});
	});
	
	$('p.insurer_list').toggle(function() {
		$('#insurer_list_form').slideDown('slow');
		$(this).addClass('on');
		//return false;
	},function() {
		$('#insurer_list_form').slideUp('slow');
		$(this).removeClass('on');
		//return false;
	});
	
	//---------------------------------------- Search App Plans List
	reset_form('insurer_list')
	
	$('#insurer_list').relatedSelects({
		onChangeLoad: '/ci/search_app/get_plan_list_from_insurer',
		selects: ['insurer_one', 'plan_one']
	});
	$('#insurer_list').relatedSelects({
		onChangeLoad: '/ci/search_app/get_plan_list_from_insurer',
		selects: ['insurer_two', 'plan_two']
	});
	$('#insurer_list').relatedSelects({
		onChangeLoad: '/ci/search_app/get_plan_list_from_insurer',
		selects: ['insurer_three', 'plan_three']
	});
	
	$('#insurer_list').find(':submit[name="reset"]').click(function()
	{
		reset_form('insurer_list')
		return false;
	});
	
	$('#insurer_list').submit(function()
	{
		var plans = '';

		$('#insurer_list select.plan option:selected').each(function()
		{
			if ($(this).val() != 0)
			{
				plans += $(this).val() + "-";
			}
		});
		
		if(plans.length == 0)
		{
			$(this).find('.error').html('Please select at least 1 plan.').show();
		}
		else
		{
			var redirect_url = '/ci/health-insurance-comparison/search-result/' + plans;
			redirect_url = redirect_url.slice(0, -1);
			window.location = redirect_url;
		}
		
		return false;
	});
	
	//---------------------------------------- Search App Cash Plans List
	reset_cash_plans_form(true);
	
	$('#cash_plans_insurer_one').change(function()
	{
		reset_cash_plans_form();
	});
	
	$('#cash_plans_plan_one').change(function()
	{
		($(this).val() != 0) ? $('#cash_plans_insurer_two, #cash_plans_insurer_three').removeAttr('disabled') : $('#cash_plans_insurer_two, #cash_plans_insurer_three').attr('disabled', 'disabled');
	});
	
	//----- Parent
	if($('select[name="cash_plans_insurer_one"]').length > 0)
	{
		var select_parent = 'select[name="cash_plans_insurer_one"]';
		var select_children = 'select[name="cash_plans_insurer_two"], select[name="cash_plans_insurer_three"]';
		
		var select_children_default_value = $(select_children).find('option:first').val();
		var select_children_default_text = $(select_children).find('option:first').html();	
	
		$(select_parent).change(function()
		{
			if($(this).val() == '') return false;
			var insurer_group = ($(this).val() != 4) ? 'main' : 'hsf';
			
			$.getJSON('/ci/health-insurance-comparison/get_cash_plan_providers/' + insurer_group, {}, function(json_data)
			{
				var options = '<option value="' + select_children_default_value + '">' + select_children_default_text + '</option>';
				for(var i=0; i<json_data.length; i++)
				{
					options += '<option value="' + json_data[i].insurer_id + '">' + json_data[i].insurer + '</option>';
					//if(window.console) console.log(json_data[i].insurer_id + ':' + json_data[i].insurer);
				}
				$(select_children).html(options);
				$(select_children).removeAttr('disabled');
			});
		});
	}
	
	$('#cash_plans_form').find(':submit[name="cash_plans_reset"]').click(function()
	{
		reset_cash_plans_form();
		return false;
	});
	
	function reset_cash_plans_form(complete)
	{
		$('#cash_plans_form select').not('#cash_plans_insurer_one').each(function()
		{
			$(this).val('');
			$(this).attr('disabled', 'disabled');
		});
		
		if(complete) $('#cash_plans_insurer_one').val('');
		
		$('#cash_plans_form select.plan').each(function()
		{
			$(this).html('<option value="">Please choose a plan</option>').attr('disabled', 'disabled');
		});
	}
	
	//----- Dependant selects
	$('#cash_plans_form').relatedSelects({
		onChangeLoad: '/ci/search_app/get_plan_list_from_insurer/2/',
		selects: ['cash_plans_insurer_one', 'cash_plans_plan_one']
	});
	$('#cash_plans_form').relatedSelects({
		onChangeLoad: '/ci/search_app/get_plan_list_from_insurer/2/',
		selects: ['cash_plans_insurer_two', 'cash_plans_plan_two']
	});
	$('#cash_plans_form').relatedSelects({
		onChangeLoad: '/ci/search_app/get_plan_list_from_insurer/2/',
		selects: ['cash_plans_insurer_three', 'cash_plans_plan_three']
	});
	
	//----- Submit event: query string generation and redirect to results page
	$('#cash_plans_form').submit(function()
	{
		var plans = '';

		$('#cash_plans_form select.plan option:selected').each(function()
		{
			if ($(this).val() != 0)
			{
				plans += $(this).val() + "-";
			}
		});
		
		if(plans.length == 0)
		{
			$(this).find('.error').html('Please select at least 1 plan.').show();
		}
		else
		{
			var target_page = ($('#cash_plans_insurer_one').val() == 4) ? 'view-hsf-plans' : 'search-result';
			var redirect_url = '/ci/health-insurance-comparison/' + target_page + '/' + plans;
			redirect_url = redirect_url.slice(0, -1);
			window.location = redirect_url;
		}
		
		return false;
	});
	
	//----- Reset the form selects
	function reset_form(form_name)
	{
		$('#' + form_name + ' select').each(function()
		{
			$(this).val('');
		});
		$('#' + form_name + ' select.plan').each(function()
		{
			$(this).html('<option value="">Please choose a plan</option>').attr('disabled', 'disabled');
		});
	}
	
	//------------------------------ Show/Hide Profiler
	$('#toggle_profiler').toggle(function()
	{
		$('#codeigniter_profiler').show();
		$.cookie('show_profiler', 'true');
	},function() {
	  	$('#codeigniter_profiler').hide();	
		$.cookie('show_profiler', null);
	});
	
	if($.cookie('show_profiler'))
	{
		$('#codeigniter_profiler').show();
	}
	
});