
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();
var lock = false;
var container = false;

function check_save_name(frm)
{
	if (lock)
	{
		return false;
	}
	else
	{
//		debugger;
		lock = true;
		frm.elements["save_button"].disabled = true;
		frm.elements["save_name"].disabled = true;
		
		var item_type = frm.elements["save_type"].value;
		var item_name = frm.elements["save_name"].value;
		var profile_id = frm.elements["profile_id"].value;
		
		http.open('get', 'rpc.aspx?action=check_save_name&item_type='+item_type+'&item_name='+item_name+'&profile_id='+profile_id);
		http.onreadystatechange = checkSaveResults;
		http.send(null);
	}
}

function checkSaveResults()
{
	if(http.readyState == 4){
		var frm = document.getElementById("save_form");
		
		var response = http.responseText;
		var proceed = false;
		
		if (save_item_type == "template")
		{
			switch (response)
			{
				case "3":	// system template
					alert("Sorry, you cannot overwrite system templates.  Please choose a new name.")
					break;
					
				case "2":	// name exists
					proceed = confirm("Comparison Template alredy exists.  Would you like to overwrite?");
					break;
					
				default:
					proceed = true;
					break;
			}
		}
		else
		{
			if (response == "1")
			{
				proceed = confirm("Saved Item alredy exists.  Would you like to overwrite?");
			}
			else
			{
				proceed = true;
			}
		}
		
        if (proceed)
        {
			can_leave = true;
			frm.elements["save_button"].disabled = false;
			frm.elements["save_name"].disabled = false;
			frm.submit();
		}
		else
		{
			frm.elements["save_button"].disabled = false;
			frm.elements["save_name"].disabled = false;
			lock = false;
        }
    }
}

function check_report_name()
{
	if (lock)
	{
		return false;
	}
	else
	{
		lock = true;
		var frm = document.getElementById("new_report_form");
		
		var item_name = frm.elements["report_name"].value;
		var profile_id = frm.elements["profile_id"].value;
		
		http.open('get', 'rpc.aspx?action=check_report_name&item_name='+item_name+'&profile_id='+profile_id);
		http.onreadystatechange = checkSaveReportResults;
		http.send(null);
	}
}

function checkSaveReportResults()
{
	if(http.readyState == 4){
		var frm = document.getElementById("new_report_form");
		
		var response = http.responseText;
		var proceed = false;
		
		if (response == "1")
		{
			alert("A Report with that name already exists.  Please choose another.");
			lock = false;
		}
		else
		{
			lock = false;
			frm.submit();
		}
		
	}
}

function load_model_list(manufacturer)
{
	if (lock)
	{
		return false;
	}
	else
	{
		var make = document.getElementById("make_select");
		var model = document.getElementById("model_select");
		if (make && model)
		{
			lock = true;
			make.disabled = true;
			model.disabled = true;
			
			http.open('get', 'rpc.aspx?action=load_model_list&manufacturer='+manufacturer);
			http.onreadystatechange = checkModelResults;
			http.send(null);
		}
	}
}

function checkModelResults()
{
	if(http.readyState == 4)
	{
		var make = document.getElementById("make_select");
		var model = document.getElementById("model_select");
		var response = http.responseText;
		
		if (make && model)
		{
			while (model.options.length > 0)
			{
				model.options[0] = null;
			}
		
			var models = response.split('|');
			for (var i = 0; i < models.length; i++)
			{
				var aircraft_data = models[i].split('~');
				var id = aircraft_data[0];
				var title = aircraft_data[1];
				model.options[model.options.length] = new Option(title, id);
			}
			
			make.disabled = false;
			model.disabled = false;
			lock = false;
		}
	}
}

function load_saved_search_options(profile_id)
{
	var load_select = document.getElementById("load_select");
	if (load_select && !lock)
	{
		lock = true;
		load_select.disabled = true;
		
		http.open('get', 'rpc.aspx?action=load_saved_searches&profile_id='+profile_id);
		http.onreadystatechange = checkSavedSearchResults;
		http.send(null);
	}
}

function load_saved_report_options(profile_id)
{
	var load_select = document.getElementById("load_select");
	if (load_select && !lock)
	{
		lock = true;
		load_select.disabled = true;
		
		http.open('get', 'rpc.aspx?action=load_saved_reports&profile_id='+profile_id);
		http.onreadystatechange = checkSavedReportResults;
		http.send(null);
	}
}

function load_saved_comparison_options(profile_id)
{
	var load_select = document.getElementById("load_select");
	if (load_select && !lock)
	{
		lock = true;
		load_select.disabled = true;
		
		http.open('get', 'rpc.aspx?action=load_saved_comps&profile_id='+profile_id);
		http.onreadystatechange = checkSavedComparisonResults;
		http.send(null);
	}
}

function load_saved_map_options(profile_id)
{
	var load_select = document.getElementById("load_select");
	if (load_select && !lock)
	{
		lock = true;
		load_select.disabled = true;
		
		http.open('get', 'rpc.aspx?action=load_saved_maps&profile_id='+profile_id);
		http.onreadystatechange = checkSavedMapResults;
		http.send(null);
	}
}

function checkSavedSearchResults()
{
	if(http.readyState == 4)
	{
		var load_select = document.getElementById("load_select");
		var response = http.responseText;
		
		if (load_select)
		{
			while (load_select.options.length > 0)
			{
				load_select.options[0] = null;
			}
		
			var searches = response.split('|');
			load_select.options[load_select.options.length] = new Option("Select Search", 0);
			for (var i = 0; i < searches.length; i++)
			{
				var curr_search = searches[i].split('~');
				var id = curr_search[0];
				var title = curr_search[1];
				load_select.options[load_select.options.length] = new Option(title, id);
			}
			
			load_select.disabled = false;
			lock = false;
		}
	}
}

function checkSavedReportResults()
{
	if(http.readyState == 4)
	{
		var load_select = document.getElementById("load_select");
		var response = http.responseText;
		
		if (load_select)
		{
			while (load_select.options.length > 0)
			{
				load_select.options[0] = null;
			}
		
			var searches = response.split('|');
			load_select.options[load_select.options.length] = new Option("Select Report", 0);
			for (var i = 0; i < searches.length; i++)
			{
				var curr_search = searches[i].split('~');
				var id = curr_search[0];
				var title = curr_search[1];
				load_select.options[load_select.options.length] = new Option(title, id);
			}
			
			load_select.disabled = false;
			lock = false;
		}
	}
}

function checkSavedComparisonResults()
{
	if(http.readyState == 4)
	{
		var load_select = document.getElementById("load_select");
		var response = http.responseText;
		
		if (load_select)
		{
			while (load_select.options.length > 0)
			{
				load_select.options[0] = null;
			}
		
			var searches = response.split('|');
			load_select.options[load_select.options.length] = new Option("Select Comparison", 0);
			for (var i = 0; i < searches.length; i++)
			{
				var curr_search = searches[i].split('~');
				var id = curr_search[0];
				var title = curr_search[1];
				load_select.options[load_select.options.length] = new Option(title, id);
			}
			
			load_select.disabled = false;
			lock = false;
		}
	}
}

function checkSavedMapResults()
{
	if(http.readyState == 4)
	{
		var load_select = document.getElementById("load_select");
		var response = http.responseText;
		
		if (load_select)
		{
			while (load_select.options.length > 0)
			{
				load_select.options[0] = null;
			}
		
			var searches = response.split('|');
			load_select.options[load_select.options.length] = new Option("Select Distance Map", 0);
			for (var i = 0; i < searches.length; i++)
			{
				var curr_search = searches[i].split('~');
				var id = curr_search[0];
				var title = curr_search[1];
				load_select.options[load_select.options.length] = new Option(title, id);
			}
			
			load_select.disabled = false;
			lock = false;
		}
	}
}

function check_airport_code(code)
{
	if (code.length == 3)
	{
		code = code.toUpperCase();
		if (!current_airport_code || (current_airport_code != code))
		{
			var code_input = document.getElementById("airport_code");
			var code_button = document.getElementById("airport_button");
			
			if (code_input && code_button && !lock)
			{
				lock = true;
				code_input.disabled = true;
				code_button.disabled = true;
				
				http.open('get', 'rpc.aspx?action=check_airport_code&code='+code);
				http.onreadystatechange = checkAirportCodeResults;
				http.send(null);
			}
		}
	}
}

function checkAirportCodeResults()
{
	if(http.readyState == 4)
	{
		var code_input = document.getElementById("airport_code");
		var code_button = document.getElementById("airport_button");
		var response = http.responseText;
		
		if (code_input && code_button)
		{
			if (response == "0")
			{
				alert("Airport " + code_input.value.toUpperCase() + " not found.");
				code_input.disabled = false;
				code_button.disabled = false;
				lock = false;
			}
			else
			{
				switch_airport(response);
			}
		}
	}
}

function get_report_aircraft_preview(aircraft_id)
{
	if (aircraft_id && !lock)
	{
		lock = true;
		
		http.open('get', 'rpc.aspx?action=report_aircraft_preview&aircraft_id='+aircraft_id);
		http.onreadystatechange = reportAircraftPreview;
		http.send(null);
	}
}

function reportAircraftPreview()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		lock = false;
		return_switch_aircraft(response);
	}
}

function get_report_field_preview(field_id, aircraft_id)
{
	if (field_id && !lock)
	{
		lock = true;
		
		http.open('get', 'rpc.aspx?action=report_field_preview&field_id='+field_id+'&aircraft_id='+aircraft_id);
		http.onreadystatechange = reportFieldPreview;
		http.send(null);
	}
}

function reportFieldPreview()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		lock = false;
		return_report_field_preview(response);
	}
}

function load_aircraft_preview(aircraft_id, container_id)
{
	container = document.getElementById(container_id);
	if (aircraft_id > 0 && container && !lock)
	{
		lock = true;
		
		http.open('get', 'rpc.aspx?action=aircraft_preview&aircraft_id='+aircraft_id);
		http.onreadystatechange = checkPreviewResults;
		http.send(null);
	}
}

function load_graph_preview(graph_id, container_id)
{
	container = document.getElementById(container_id);
	if (graph_id > 0 && container && !lock)
	{
		lock = true;
		
		http.open('get', 'rpc.aspx?action=graph_preview&graph_id='+graph_id);
		http.onreadystatechange = checkPreviewResults;
		http.send(null);
	}
}

function load_search_preview(search_id, container_id)
{
	container = document.getElementById(container_id);
	if (search_id > 0 && container && !lock)
	{
		lock = true;
		
		http.open('get', 'rpc.aspx?action=search_preview&search_id='+search_id);
		http.onreadystatechange = checkPreviewResults;
		http.send(null);
	}
}

function load_comparison_preview(comparison_id, container_id)
{
	container = document.getElementById(container_id);
	if (comparison_id > 0 && container && !lock)
	{
		lock = true;
		
		http.open('get', 'rpc.aspx?action=comparison_preview&comparison_id='+comparison_id);
		http.onreadystatechange = checkPreviewResults;
		http.send(null);
	}
}

function load_template_preview(template_id, container_id)
{
	container = document.getElementById(container_id);
	if (template_id > 0 && container && !lock)
	{
		template_id = (template_id * 1) + 10000;
		lock = true;
		
		http.open('get', 'rpc.aspx?action=template_preview&template_id='+template_id);
		http.onreadystatechange = checkPreviewResults;
		http.send(null);
	}
}

function load_map_preview(map_id, container_id)
{
	container = document.getElementById(container_id);
	if (map_id > 0 && container && !lock)
	{
		lock = true;
		
		http.open('get', 'rpc.aspx?action=map_preview&map_id='+map_id);
		http.onreadystatechange = checkPreviewResults;
		http.send(null);
	}
}

function load_report_preview(report_id, container_id)
{
	container = document.getElementById(container_id);
	if (report_id > 0 && container && !lock)
	{
		lock = true;
		http.open('get', 'rpc.aspx?action=report_preview&report_id='+report_id+'&profile_id='+profile_id);
		http.onreadystatechange = checkPreviewResults;
		http.send(null);
	}
}

function remove_favorite_aircraft()
{
	var aircraft_select = document.getElementById("favorite_aircraft");
	if (aircraft_select && !lock)
	{
		var aircraft_id = aircraft_select.options[aircraft_select.selectedIndex].value;
		if (aircraft_id > 0)
		{
			lock = true;
			aircraft_select.disabled = true;

			http.open('get', 'rpc.aspx?action=remove_aircraft&aircraft_id='+aircraft_id+'&profile_id='+profile_id);
			http.onreadystatechange = checkAircraftRemovalResults;
			http.send(null);
		}
	}
}

function checkAircraftRemovalResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var aircraft_select = document.getElementById("favorite_aircraft");
		var aircraft_details = document.getElementById("aircraft_details");
		
		if (aircraft_select && aircraft_details)
		{
			if (response == "1")
			{
				aircraft_select.options[aircraft_select.selectedIndex] = null;
				aircraft_details.innerHTML = "";
			}
			aircraft_select.disabled = false;
			lock = false;
		}
	}
}

function remove_saved_graph()
{
	var graph_select = document.getElementById("saved_graphs");
	if (graph_select && !lock)
	{
		var graph_id = graph_select.options[graph_select.selectedIndex].value;
		if (graph_id > 0)
		{
			lock = true;
			graph_select.disabled = true;

			http.open('get', 'rpc.aspx?action=remove_graph&graph_id='+graph_id+'&profile_id='+profile_id);
			http.onreadystatechange = checkGraphRemovalResults;
			http.send(null);
		}
	}
}

function checkGraphRemovalResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var graph_select = document.getElementById("saved_graphs");
		var graph_details = document.getElementById("graph_details");
		
		if (graph_select && graph_details)
		{
			if (response == "1")
			{
				graph_select.options[graph_select.selectedIndex] = null;
				graph_details.innerHTML = "";
			}
			graph_select.disabled = false;
			lock = false;
		}
	}
}

function remove_saved_search()
{
	var search_select = document.getElementById("saved_searches");
	if (search_select && !lock)
	{
		var search_id = search_select.options[search_select.selectedIndex].value;
		if (search_id > 0)
		{
			lock = true;
			search_select.disabled = true;

			http.open('get', 'rpc.aspx?action=remove_search&search_id='+search_id+'&profile_id='+profile_id);
			http.onreadystatechange = checkSearchRemovalResults;
			http.send(null);
		}
	}
}

function checkSearchRemovalResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var search_select = document.getElementById("saved_searches");
		var search_details = document.getElementById("search_details");
		
		if (search_select && search_details)
		{
			if (response == "1")
			{
				search_select.options[search_select.selectedIndex] = null;
				search_details.innerHTML = "";
			}
			search_select.disabled = false;
			lock = false;
		}
	}
}

function remove_saved_comparison()
{
	var comp_select = document.getElementById("saved_comparisons");
	if (comp_select && !lock)
	{
		var comparison_id = comp_select.options[comp_select.selectedIndex].value;
		if (comparison_id > 0)
		{
			lock = true;
			comp_select.disabled = true;

			http.open('get', 'rpc.aspx?action=remove_comparison&comparison_id='+comparison_id+'&profile_id='+profile_id);
			http.onreadystatechange = checkComparisonRemovalResults;
			http.send(null);
		}
	}
}

function checkComparisonRemovalResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var comp_select = document.getElementById("saved_comparisons");
		var comparison_details = document.getElementById("comparison_details");
		
		if (comp_select && comparison_details)
		{
			if (response == "1")
			{
				comp_select.options[comp_select.selectedIndex] = null;
				comparison_details.innerHTML = "";
			}
			comp_select.disabled = false;
			lock = false;
		}
	}
}

function remove_saved_template()
{
	var template_select = document.getElementById("saved_templates");
	if (template_select && !lock)
	{
		var template_id = template_select.options[template_select.selectedIndex].value;
		if (template_id > 0)
		{
			lock = true;
			template_select.disabled = true;

			http.open('get', 'rpc.aspx?action=remove_template&template_id='+template_id+'&profile_id='+profile_id);
			http.onreadystatechange = checkTemplateRemovalResults;
			http.send(null);
		}
	}
}

function checkTemplateRemovalResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var template_select = document.getElementById("saved_templates");
		var template_details = document.getElementById("template_details");
		
		if (template_select && template_details)
		{
			if (response == "1")
			{
				template_select.options[template_select.selectedIndex] = null;
				template_details.innerHTML = "";
			}
			template_select.disabled = false;
			lock = false;
		}
	}
}

function remove_saved_map()
{
	var map_select = document.getElementById("saved_maps");
	if (map_select && !lock)
	{
		var map_id = map_select.options[map_select.selectedIndex].value;
		if (map_id > 0)
		{
			lock = true;
			map_select.disabled = true;

			http.open('get', 'rpc.aspx?action=remove_map&map_id='+map_id+'&profile_id='+profile_id);
			http.onreadystatechange = checkMapRemovalResults;
			http.send(null);
		}
	}
}

function checkMapRemovalResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var map_select = document.getElementById("saved_maps");
		var map_details = document.getElementById("map_details");
		
		if (map_select && map_details)
		{
			if (response == "1")
			{
				map_select.options[map_select.selectedIndex] = null;
				map_details.innerHTML = "";
			}
			map_select.disabled = false;
			lock = false;
		}
	}
}

function remove_saved_report()
{
	var report_select = document.getElementById("saved_reports");
	if (report_select && !lock)
	{
		var report_id = report_select.options[report_select.selectedIndex].value;
		if (report_id > 0)
		{
			lock = true;
			report_select.disabled = true;

			http.open('get', 'rpc.aspx?action=remove_report&report_id='+report_id+'&profile_id='+profile_id);
			http.onreadystatechange = checkReportRemovalResults;
			http.send(null);
		}
	}
}

function checkReportRemovalResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var report_select = document.getElementById("saved_reports");
		var report_details = document.getElementById("report_details");
		
		if (report_select && report_details)
		{
			if (response == "1")
			{
				report_select.options[report_select.selectedIndex] = null;
				report_details.innerHTML = "";
			}
			report_select.disabled = false;
			lock = false;
		}
	}
}

function checkPreviewResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		
		if (container)
		{
			container.innerHTML = response;
			lock = false;
		}
	}
}

function change_group(group_id)
{
	if (lock)
	{
		return false;
	}
	else
	{
		var group = document.getElementById("group_select");
		var field = document.getElementById("field_select");
		if (group && field)
		{
			lock = true;
			group.disabled = true;
			field.disabled = true;
			
			http.open('get', 'rpc.aspx?action=get_field_list&group_id='+group_id);
			http.onreadystatechange = checkGroupResults;
			http.send(null);
		}
	}
}

function checkGroupResults()
{
	if(http.readyState == 4)
	{
		var group = document.getElementById("group_select");
		var field = document.getElementById("field_select");
		var response = http.responseText;
		
		if (group && field)
		{
			while (field.options.length > 0)
			{
				field.options[0] = null;
			}
		
			var fields = response.split('|');
			for (var i = 0; i < fields.length; i++)
			{
				var field_data = fields[i].split('~');
				var id = field_data[0];
				var title = field_data[1];
				field.options[field.options.length] = new Option(title, id);
			}
			
			group.disabled = false;
			field.disabled = false;
			lock = false;
		}
	}
}

function country_change(country_code)
{
	var countries = document.getElementById("country_dropdown");
	var states = document.getElementById("state_dropdown");
	var airports = document.getElementById("airport_select");
	
	if (countries && states && airports && !lock)
	{
		lock = true;
		countries.disabled = true;
		states.disabled = true;
		airports.disabled = true;
		
		while (airports.options.length > 0)
		{
			airports.options[0] = null;
		}
		
		switch (country_code)
		{
			case "US":
				load_states(country_code);
				break;
				
			default:
				load_states();
				load_airports(country_code);
				break;
				
		}
	}
}

function load_states(country_code)
{
	var states = document.getElementById("state_dropdown");
	if (states)
	{
		while (states.options.length > 0)
		{
			states.options[0] = null;
		}
		
		if (country_code)
		{
			http.open('get', 'rpc.aspx?action=get_states&country_code='+country_code);
			http.onreadystatechange = checkStateResults;
			http.send(null);
		}
	}
}

function checkStateResults()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var states = document.getElementById("state_dropdown");
		
		if (states)
		{
			var fields = response.split('|');
			
			if (fields.length > 0)
			{
				states.options[states.options.length] = new Option("Select a State", 0);
				states.options[states.options.length] = new Option("--------------", 0);
			}
			
			for (var i = 0; i < fields.length; i++)
			{
				states.options[states.options.length] = new Option(fields[i], fields[i]);
			}
			
			airport_load_complete();
		}
	}
}

function state_change(state)
{
	var countries = document.getElementById("country_dropdown");
	var states = document.getElementById("state_dropdown");
	var airports = document.getElementById("airport_select");
	
	if (countries && states && airports && !lock)
	{
		lock = true;
		countries.disabled = true;
		states.disabled = true;
		airports.disabled = true;
		
		while (airports.options.length > 0)
		{
			airports.options[0] = null;
		}
		
		load_airports(false, state);
	}
}

function load_airports(country_code, state_code)
{
	if (state_code)
	{
		http.open('get', 'rpc.aspx?action=get_airports&type=state&state='+state_code);
	}
	else
	{
		http.open('get', 'rpc.aspx?action=get_airports&type=country&country='+country_code);
	}
	http.onreadystatechange = checkAirportResults;
	http.send(null);
}

function checkAirportResults()
{
	if(http.readyState == 4)
	{
		var airports = document.getElementById("airport_select");
		var response = http.responseText;
		
		if (airports)
		{
			var ports = response.split('|');
			for (var i = 0; i < ports.length; i++)
			{
				var port_data = ports[i].split('~');
				var id = port_data[0];
				var value = port_data[1];
				airports.options[airports.options.length] = new Option(value, id);
			}
			
			airport_load_complete();
		}
	}
}

function airport_load_complete()
{
	var countries = document.getElementById("country_dropdown");
	var states = document.getElementById("state_dropdown");
	var airports = document.getElementById("airport_select");
	
	if (countries && states && airports)
	{
		countries.disabled = false;
		states.disabled = false;
		airports.disabled = false;
		lock = false;
	}
}

function handleResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
        var update = new Array();

        if(response.indexOf('|' != -1)) {
            update = response.split('|');
            document.getElementById(update[0]).innerHTML = update[1];
        }
        lock = false;
    }
}


