var monitortimer = null;
var map_visible = false;

var map_code = '';
var map_timed;

var flash_region = 0;
var flash_hideOnClick = false;

var flashMaponLoader = function() {
	if (window.init_map) {
		if (flash_region) {
			init_map(flash_region, true);
		}
		else {
			init_map(0, true);
		}
	}
}
registerOnLoad(flashMaponLoader);

function monitor_map(timed)
{
	if (map_visible && window.document.gbmovie) {
		var movie = window.document.gbmovie;
		
		if (typeof(movie.PercentLoaded) != "unknown" && typeof(movie.PercentLoaded) != "undefined" && movie.PercentLoaded && movie.PercentLoaded() == 100) {
			if (timed == false) {
				movie.SetVariable("/:timed", 0);
				monitortimer = null;
				return;
			}
			var code = movie.GetVariable("/:postcode");
			if (code != "" && code != null) {
				movie.SetVariable("/:postcode", "");
				map(code);
			}
		}
		
		monitortimer = self.setTimeout("monitor_map("+timed+")", 100);
	}
	else if (map_visible) {
		monitortimer = self.setTimeout("monitor_map("+timed+")", 100);
	}
}

function init_map(frame, timed)
{
	if (timed) {
		var times = "&timed=true";
	}
	else {
		var times = "&timed=false";
	}
	
	map_code =
		'<object ' +
	'type="application/x-shockwave-flash" ' +
        'data="/gb.swf?frame=' + frame + '" ' +
	'id="gbmovie" ' +
	'name="gbmovie">' +
        '' +
        '' +
	'<param ' +
        'name="movie" ' +
        'value="/gb.swf?frame=' + frame + times + '" /> ' +
'</object>';
	
	map_timed = timed;
	
	var map = new getObj('flash_map');
	if (map.ready) {
		map.style.display = 'block';
		map.style.visibility = 'visible';
		map_visible = true;
	}
	
	var fmap = new getObj('flash_map');
	if (fmap.ready) {
		fmap.obj.innerHTML = map_code;
		monitortimer = self.setTimeout("monitor_map("+map_timed+")", 100);
	}
}



function map(code)
{
	//alert(code);
	var london = false;
	
	if (flash_hideOnClick) {
		hide_map();
	}
	switch (code) {
		case 'N':
		case 'NW':
		case 'W':
		case 'SW':
		case 'SE':
		case 'E':
		case 'WC':
		case 'EC': {
			if (window.enable_london_mode) {
				london = true;
				enable_london_mode(code);
			}
			break;
		}
		default: {
			if (window.disable_london_mode) {
				london = false;
				disable_london_mode(code);
			}
		}
	}
	
	if (!london) {
		var func = map_select_county;
		var atts = '';
		var cmd = "areas.getCountyByPostCodeID";
		var id = code;
		
		myRPC(cmd,id,func,atts);
	}
	else {
		var func = map_select;
		var atts = '';
		var cmd = "areas.getPostCodeID";
		var id = code;
		
		myRPC(cmd,id,func,atts);
	}
}

function map_select(atts, values)
{
	var criteria = new getObj('form_criteria_id');

	for (n = 0; n < values.length; n++) {
		var postcode_id = values[n][0];
		var region_id = values[n][2];
		
		var region = new getObj('filter_region_id');
		var county = new getObj('filter_county_id');
		var postcode = new getObj('filter_postcode_id');
		var town = new getObj('filter_town_id');
		
		for (x = 0; x < region.obj.options.length; x++) {
			if (region.obj.options[x].value == region_id) {
				region.obj.options[x].selected = true;
				rpc_select_area('region', 1);
				self.setTimeout("select_postcode("+postcode_id+")",100);
				break;
			}
		}
	}
}

function map_select_county(atts,values)
{
	var criteria = new getObj('form_criteria_id');

	for (n = 0; n < values.length; n++) {
		var county_id = values[n][0];
		var region_id = values[n][2];
		
		var region = new getObj('filter_region_id');
		var county = new getObj('filter_county_id');
		var postcode = new getObj('filter_postcode_id');
		var town = new getObj('filter_town_id');
		
		for (x = 0; x < region.obj.options.length; x++) {
			if (region.obj.options[x].value == region_id) {
				region.obj.options[x].selected = true;
				rpc_select_area('region', 1);
				self.setTimeout("select_county("+county_id+")",100);
				break;
			}
		}
	}
}

function show_map(locale, hide)
{
	switch (locale) {
		case 'county': {
			init_map(0,true);
			break;
		}
		case 'london': {
			init_map(44,true);
			break;
		}
	}
	if (hide) {
		flash_hideOnClick = true;
		var form = new getObj('quickSearchForm');
		if (form.ready) {
			form.style.display = 'none';
			form.style.visibility = 'hidden';
		}
	}
	else {
		flash_hideOnClick = false;
	}
	
	var map = new getObj('flash_map_container');
	if (map.ready) {
		map.style.display = 'block';
		map.style.visibility = 'visible';
	}
}

function hide_map()
{
	var map = new getObj('flash_map_container');
	if (map.ready) {
		map.style.display = 'none';
		map.style.visibility = 'hidden';
	}
	var form = new getObj('quickSearchForm');
	if (form.ready) {
		form.style.display = 'block';
		form.style.visibility = 'visible';
	}
}