function on_body_load() {
    if(typeof resetInputs == 'function') resetInputs();
    $(window).resize(function(){
		if(typeof on_resize == 'function') on_resize();
    });

    $('#id_filter_form').find(':input').each(function(i){
		id = $(this).attr('id');
		name = $(this).attr('name');
		
		if(id.indexOf('sector')!=-1 || name.indexOf('sector')!=-1){
			create_sector_on_change($(this));
		}else{
			// Pre as a suffix means its a filter that is taken care of 
			// on the graph itself. Don't make it an automatic update
			if(name.search('_pre')==-1)
				$(this).change(function(){update_figure($(this).attr('name'))});
		}
    })
    if(typeof afterLoad == 'function') afterLoad();

	//collapsable filter region
	$("div[id^=filterbox] h2.slide_ctl")
		.prepend("<img src='/media/images/filter_toggle.jpg'/> ")
		.wrap("<a href='#' class='collapse_filter'></a>");
	//$("div#filterbox div#filter_region").hide();
	$("a.collapse_filter").click(toggle_filters);
}

function toggle_filters(e){
	e.preventDefault();
	$("div.filter_region", $(this).parents('div[id^=filterbox]')).slideToggle("fast");
}

function create_sector_on_change(element){
    id = element.attr('id');
    name = element.attr('name');
    if(id.indexOf('id_residential_sector_filter')!=-1)
        $(element).change(function(){residential_selected($(this))});
    else if(id.indexOf('id_non_residential_sector_filter')!=-1)
        $(element).change(function(){non_residential_selected($(this))});
    else if(id.indexOf('id_all_sector_filter')!=-1)
        $(element).change(function(){all_sectors_selected($(this))});
    else if(name.indexOf('non_residential_sector')!=-1)
         $(element).change(function(){non_residential_option_selected($(this))});

}

var changed_filter_id = null

function update_figure(filter_name) {
	if(window.update_url === undefined) {
		console.log("You must define update_url on the page ...");
		return;
	}
	changed_filter_name = filter_name
	var serialized = $('#id_filter_form').serialize();
	var url = update_url + '?' + serialized;
	$.ajax({
		type: 'POST',
        url: url,
        dataType: 'json',
        success: update_success, // NOTE : page must define this function
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.log(XMLHttpRequest, textStatus, errorThrown);
        }
	});
	set_figure_data_link();

	$('div#loading_indicator').show();
}

function set_figure_data_link(){ 
       /* 
		* There was a search button that behaved like the csv button ...
		*
		* var search = $('a#figure_data_html'); 
		* search.attr('href', search.attr('href') + addl_params); 
		*/
       set_csv_link($('a#figure_data_csv'), false);
       set_csv_link($('a#figure_data_csv_s1'), false);
       set_csv_link($('a#figure_data_csv_s2'), true);
} 

function set_csv_link(jq_csv, second_set){
	if(jq_csv.length == 0) return;

	var addl_params = series_serialize(second_set);
    var baseurl = '';
    // using jQuery data to store the original URL in the anchor
    if(jq_csv.data('baseurl') == undefined){
	    baseurl = jq_csv.attr('href');
	    jq_csv.data('baseurl', baseurl);
    }else{
	    baseurl = jq_csv.data('baseurl');
    }
    jq_csv.attr('href', baseurl + addl_params); 
}

function series_serialize(second_set){
	// Serializes the form elements into a query string
	var ar = $('#id_filter_form').serializeArray();
	var result = '&';
	if(second_set){
		// global filters, plus anything ending in "_2"
		for(i in ar){
			var nm = ar[i].name;
			if(nm.substr(nm.length-2) == "_2" || nm == "system_size_source" || nm == "cpi_adjusted"){
				result += nm + "=" + ar[i].value + "&";
			}
		}
	}else{
		// everything that has a name NOT ending in "_2"
		for(i in ar){
			var nm = ar[i].name;
			if(nm.substr(nm.length-2) != "_2"){
				result += nm + "=" + ar[i].value + "&";
			}
		}
	}
	console.log(result);
	return result;
}
 
function export_table_to_excel(){ 
	var serialized = $('#id_filter_form').serialize(); 
	var url = update_url + '?xls_view=1&' + serialized; 
	window.location.href = url; 
}

function get_suffix(element)
{
    id = $(element).attr('name');
	suffix = "";
    if (id.indexOf("_2") != -1)
        suffix = "_2";
    return suffix;
}
function all_sectors_selected(element){
	suffix = get_suffix(element);
    turn_on_non_commercial_sectors(false, suffix);
    update_figure($(element).attr('name'));
}

function residential_selected(element){
	suffix = get_suffix(element);
    turn_on_non_commercial_sectors(false, suffix);
    update_figure($(element).attr('name'));
}
function non_residential_selected(element){
	suffix = get_suffix(element);
    turn_on_non_commercial_sectors(true, suffix);
    update_figure($(element).attr('name'));
}
function non_residential_option_selected(element){
	suffix = get_suffix(element);
    $('#id_non_residential_sector_filter'+suffix).attr('checked', true);
    update_figure($(element).attr('name'));
}
function turn_on_non_commercial_sectors(turn_on, suffix){
    $("input[name='non_residential_sector"+suffix+"']").attr('checked',turn_on);

}
function large_result_confirm(count)
{
    if(count>10000)
        return confirm("The data set you have selected contains a large number of data points, and may be larger than 5MB.  Do you want to continue?")
    else
        return true
}
