//var childcarer_options_visible = true;
//var job_filter_options_visible = true;
//var requirements_options_visible = false;
//var experience_options_visible = false;
//var languages_options_visible = false;
var options_visible = new Array();
options_visible['childcarer'] = true;
options_visible['job_filter'] = true;
options_visible['requirements'] = true;
options_visible['experience'] = true;
options_visible['languages'] = true;
var should_expand = new Array();
should_expand['childcarer'] = true;
should_expand['job_filter'] = true;
should_expand['requirements'] = true;
should_expand['experience'] = true;
should_expand['languages'] = true;

var have_more_results = true;
var results_start_from = 0;
var current_search_id = '';
var current_tab = 'list';

document.observe("dom:loaded", check_scroll);

function toggle_options(source) {
	if (options_visible[source]) {
		if (!should_expand[source]) {
			should_expand[source] = true;
			return;
		}
		Effect.SlideUp(source+'_options', {duration: 0.25});
		$(source+'_heading').removeClassName('expanded');
	} else {
		Effect.SlideDown(source+'_options', {duration: 0.25});
		$(source+'_heading').addClassName('expanded');
	}
	options_visible[source] = !options_visible[source];
}

function show_search_tab() {
	if ($('cc_search')) {
		show_cc_filters();
	} else {
		show_pa_filters();
	}
}

function show_cc_filters() {
	$('results_tab').src = '/i/results_search_tab_on.png';
	$('recent_tab').src = '/i/results_recent_tab.png';
	$('favourites_tab').src = '/i/results_favourites_tab.png';
	new Ajax.Updater('sidebar','/search/ajax_cc_filters', {evalScripts: true, onComplete: enable_location_field});
}

function show_pa_filters() {
	$('results_tab').src = '/i/results_search_tab_on.png';
	$('recent_tab').src = '/i/results_recent_tab.png';
	$('favourites_tab').src = '/i/results_favourites_tab.png';
	new Ajax.Updater('sidebar','/search/ajax_pa_filters', {evalScripts: true, onComplete: enable_location_field});
}

function logged_in(function_name) {
	//are we logged in
	new Ajax.Request('/login/am-i-logged-in', {
	method: 'get',
	onSuccess: function(message) {
		if (message.responseText == ":)") {
			eval(function_name);
		} else {
			show_login_overlay();			
		}
	}	
	});
}

function show_recent_searches() {
	$('results_tab').src = '/i/results_search_tab.png';
	$('recent_tab').src = '/i/results_recent_tab_on.png';
	$('favourites_tab').src = '/i/results_favourites_tab.png';
	new Ajax.Updater('sidebar','/search/ajax_recent_searches');
}

function show_favourites() {
	$('results_tab').src = '/i/results_search_tab.png';
	$('recent_tab').src = '/i/results_recent_tab.png';
	$('favourites_tab').src = '/i/results_favourites_tab_on.png';
	new Ajax.Updater('sidebar', '/search/ajax_favourites');
}

function add_to_favourites(profile_id, job_id) {
	new Ajax.Request('/search/ajax_add_to_favourites', {
	method: 'post',
	parameters: {'profile_id':profile_id, 'job_id':job_id},
	onSuccess: function(message) {
		if (message.responseText == ":)") {
			$('add_to_favourites').onclick = function() { logged_in('remove_from_favourites('+profile_id+', '+job_id+')')};
			$('add_to_favourites').src = "/i/button_add_to_favourites_on.png";
			var flash_message = $('flash_message_inner');
			flash_message.innerHTML = '<div class="wrapper"><div class="top-left"></div><div class="top-right"></div><div class="inside"><p class="notopgap nobottomgap"><img src="/i/info.png" alt="info">Added to favourites!</p></div><div class="bottom-left"></div><div class="bottom-right"></div></div>';
			Effect.Appear('flash_message_inner', {duration: 1});
			Effect.Fade('flash_message_inner', {duration: 2.0, delay: 5.0});
			
			if ($('favourites_tab').src == '/i/favourites_tab_on.png') {
				new Ajax.Updater('sidebar', '/search/ajax_favourites');
			}
		}
	}
	});
}

function remove_from_favourites(profile_id, job_id) {
	new Ajax.Request('/search/ajax_remove_from_favourites', {
	method: 'post',
	parameters: {'profile_id':profile_id, 'job_id':job_id},
	onSuccess: function(message) {
		if (message.responseText == ":)") {
			
			var flash_message = $('flash_message_inner');
			flash_message.innerHTML = '<div class="wrapper"><div class="top-left"></div><div class="top-right"></div><div class="inside"><p class="notopgap nobottomgap"><img src="/i/info.png" alt="info">Removed from favourites!</p></div><div class="bottom-left"></div><div class="bottom-right"></div></div>';
			Effect.Appear('flash_message_inner', {duration: 1});
			Effect.Fade('flash_message_inner', {duration: 2.0, delay: 5.0});
			
			if ($('favourites_tab').src == '/i/favourites_tab_on.png') {
				new Ajax.Updater('sidebar', '/search/ajax_favourites');
			} else {
				$('add_to_favourites').onclick = function() { logged_in('add_to_favourites('+profile_id+', '+job_id+')')};
				$('add_to_favourites').src = "/i/button_add_to_favourites.png";		
			}
		}
	}
	});
}

function enable_location_field() {
	if ($('location').value == "") {
		$('location').addClassName('default');
		$('location').value = $('location').title;
	}
	$('location').observe('blur', de_activate);
	$('location').observe('focus', activate);
}

function email_alert(search_id) {
	close_save_search_box();
	if (!$('email_alert_box')) {
		var email_alert_div = new Element("div");
		email_alert_div.id = "email_alert_box";
		email_alert_div.addClassName('results_overlay');
		email_alert_div.style.display = "none";
		email_alert_div.innerHTML = '<h2><span><span>Email Alerts</span><span class="close" onclick="close_email_alerts_box();">x</span></span></h2><div><p>Receive email alerts when new results to this search appear.<br />Tick the box below to receive email alerts for this search</p><p>Untick the box below to no longer receive email alerts.</p><label for="email_alerts_toggle">Receive email alerts for this search<input type="checkbox" id="email_alerts_toggle" onclick="email_alert_toggle('+search_id+');" /></label></div>';
		$('tabs').appendChild(email_alert_div);
	}
	Effect.Appear('email_alert_box', {duration: 0.2});
}

function close_email_alerts_box() {
	if ($('email_alert_box')) {
		Effect.Fade('email_alert_box', {duration: 0.2});
	}	
}

function email_alert_toggle(search_id) {
	if ($('email_alert_box')) {
		close_email_alerts_box();
		new Ajax.Request('/search/ajax_email_alert', {
		method:'post',
		parameters: {'search_id': search_id, 'receive': $('email_alerts_toggle').checked},
		onSuccess: function(message) {
			if (message.responseText == ":))") {
				//then we've saved for later as well
				$('save_for_later_img').src = "/i/save_for_later_tab_on.png";
				$('email_tab').src = "/i/email_alerts_tab_on.png";				
			} else if (message.responseText == ":)") {
				//else we're already a save and just switching on the email
				$('email_tab').src = "/i/email_alerts_tab_on.png";
			} else if (message.responseText == ":(") {
				//we've removed our email alerts
				$('email_tab').src = "/i/email_alerts_tab.png";
			}
		}
		});
	}
}

function delete_email_alert(search_id) {
	new Ajax.Request('/search/ajax_remove_email_alert', {
		method:'post',
		parameters: {'search_id': search_id},
		onSuccess: function(message) {
			if (message.responseText == ":)") {
				$('add_email_alert_butt_'+search_id).style.display = "inline";
				$('del_email_alert_butt_'+search_id).style.display = "none";
			}
		}
	});
}

function add_email_alert(search_id) {
	new Ajax.Request('/search/ajax_add_email_alert', {
		method:'post',
		parameters: {'search_id': search_id},
		onSuccess: function(message) {
			if (message.responseText == ":)") {
				$('add_email_alert_butt_'+search_id).style.display = "none";
				$('del_email_alert_butt_'+search_id).style.display = "inline";
			}
		}
	});

}

function close_save_search_box() {
	if ($('save_search_box')) {
		Effect.Fade('save_search_box', {duration: 0.2});
	}	
}

function save_search(search_id) {
	close_email_alerts_box();
	if (!$('save_search_box')) {
		var save_search_div = document.createElement("div");
		save_search_div.id = "save_search_box";
		save_search_div.style.display = "none";
		save_search_div.addClassName('results_overlay');
		save_search_div.innerHTML = '<h2><span><span>Save This Search</span><span class="close" onclick="close_save_search_box();">x</span></span></h2><div><p>To save this search for later, just tick the box below.</p><p> To no longer save this search, untick the box below.</p><input type="checkbox" id="save_search_toggle" onclick="toggle_save_search('+search_id+');" /><label for="save_search_toggle">Save this search</label></div>';
		$('tabs').appendChild(save_search_div);	
	}
	Effect.Appear('save_search_box', {duration: 0.2});
}

function toggle_save_search(search_id) {
	if ($('save_search_box')) {
		var save = $('save_search_toggle').checked;
		close_save_search_box();
		new Ajax.Request('/search/ajax_save_search', {
		method:'post',
		parameters: {'search_id': search_id, 'save': save},
		onSuccess: function(message) {
			if (message.responseText == ":)") {
				$('save_for_later_img').src = "/i/save_for_later_tab_on.png";
			} else {
				$('save_for_later_img').src = "/i/save_for_later_tab.png";
			}
		}
		});
	}
}

function delete_saved_search(search_id) {
	new Ajax.Request('/search/ajax_remove_search', {
	method: 'post',
	parameters: {'search_id': search_id},
	onSuccess: function(message) {
		if (message.responseText == ":))") {
			new Ajax.Updater('sidebar','/search/ajax_recent_searches');
		}
	}
	});	
}

function show_login_overlay() {
	close_email_alerts_box();
	close_save_search_box();
	if (!$('login_overlay')) {
		var login_overlay_div = document.createElement("div");
		login_overlay_div.id = "login_overlay";
		login_overlay_div.style.display = "none";
		login_overlay_div.addClassName('results_overlay');
		login_overlay_div.innerHTML = '<h2><span><span>Login Required</span><span class="close" onclick="close_login_overlay();">x</span></span></h2><div><p>You must be logged in to use this feature. Please use the fields provided above, or <a href="javascript:register();">Register for an account</a>.</p></div>';
		$('tabs').appendChild(login_overlay_div);	
	}
	Effect.Appear('login_overlay', {duration: 0.2});
}

function close_login_overlay() {
	if ($('login_overlay')) {
		Effect.Fade('login_overlay', {duration: 0.2});
	}	
}

function fetch_more_results() {
	results_start_from = results_start_from+25;
	if ($('location').hasClassName('default')) {
		$('location').removeClassName('default');
		$('location').value = '';
	}
	new Ajax.Updater('result_content',$('search_form').action+'?ajax&start_from='+results_start_from,{ evalScripts: true, method: 'post', parameters: $('search_form').serialize(true), insertion: Insertion.Bottom });
	if ($('location').value == "") {
		$('location').addClassName('default');
		$('location').value = $('location').title;
	}
}

function update_search_results() {
	if (current_tab == 'map') {
		show_map();
		return;
	}
	results_start_from = 0;
	if ($('location').hasClassName('default')) {
		$('location').removeClassName('default');
		$('location').value = '';
	}
	show_fetch_in_progress();
	new Ajax.Updater('result_content',$('search_form').action+'?ajax&start_from='+results_start_from,{ evalScripts: true, method: 'post', onComplete: hide_fetch_in_progress,  parameters: $('search_form').serialize(true) });
	if ($('location').value == "") {
		$('location').addClassName('default');
		$('location').value = $('location').title;
	}
	
}

function show_fetch_in_progress() {
	$('ajax_loader').style.visibility = 'visible';
	$('results').style.opacity = "0.5";	
}

function hide_fetch_in_progress() {
	$('ajax_loader').style.visibility = 'hidden';
	$('results').style.opacity = "1.0";			
}

function update_search_tabs() {
	$('save_for_later_img').onclick = function() { logged_in('save_search('+current_search_id+')')};
	$('save_for_later_img').src = "/i/save_for_later_tab.png";
	$('email_tab').onclick = function() { logged_in('email_alert('+current_search_id+')')};
	$('email_tab').src = "/i/email_alerts_tab.png";
}

function check_scroll() {
	if (!have_more_results || !$('result_content')) {
		return;
	}
	if ($('result_content').offsetHeight-$('results').scrollTop < 1200) {
		fetch_more_results();
	}
	setTimeout('check_scroll()',1000);
}

function search() {
	$('search_form').submit();
}

function show_search_results() {
	current_tab = 'list';
	$('list_view_tab').src = '/i/list_view_tab_on.png';
	$('map_view_tab').src = '/i/map_view_tab.png';
	update_search_results();
}

function show_map() {
	current_tab = 'map';
	have_more_results = false;
	$('list_view_tab').src = '/i/list_view_tab.png';
	$('map_view_tab').src = '/i/map_view_tab_on.png';
	var url = '/search/ajax_cc_map';
	if ($('job_search')) {
		url = '/search/ajax_job_map';
	}
	new Ajax.Updater('result_content',url, { evalScripts: true,  parameters: $('search_form').serialize(true) });

}

function select_all_types() {
	var checkboxes = $$('#cc_types input');
	for (var i=0; i <checkboxes.length; i++) {
		checkboxes[i].checked = true;
	}
	should_expand = false;
	update_search_results();
}

function adjust_results_column(){
	var resultsDivHeight;
	var sidebarDivHeight;
	var resultsDiv = document.getElementById('results');
	var sidebarDiv = document.getElementById('sidebar');

	if(resultsDiv.offsetHeight){
		resultsDivHeight = resultsDiv.offsetHeight;
	}
	else if(resultsDiv.style.pixelHeight){
		resultsDivHeight = resultsDiv.style.pixelHeight;
	}
	if(sidebarDiv.offsetHeight){
		sidebarDivHeight = sidebarDiv.offsetHeight-50;
	}
	else if(sidebarDiv.style.pixelHeight){
		sidebarDivHeight = sidebarDiv.style.pixelHeight-50;
	}
	if(sidebarDivHeight>resultsDivHeight){
		resultsDiv.style.height = sidebarDivHeight+'px';
	}
}