
//
function centerMapOn(x, y, duration) {
	container_dimensions = $('map_container').getDimensions();
	_width = container_dimensions.width;
	_height = container_dimensions.height;
	x -= _width / 2;
	y -= _height / 2;
	new Effect.Move('map', { x:-x, y:-y, mode:'absolute', duration:duration });
}

//
function displayPointer(x, y, content) {
	content = content === undefined ? '' : content;
	new Effect.Move('pointer', { x:x+6, y:y+6, mode:'absolute', duration:0 });
	$('pointer_content').innerHTML = content;	
	$('pointer').show();
}

//
function selectNavLink(nav_link) {
	var sections = $A(document.getElementsByClassName('section'));
	var links = $A($("nav").getElementsByTagName("li"));
	//
	sections.each(
		function(section) {
			$(section).hide();
		}
	);
	//
	links.each(
		function(link) {
			$(link).removeClassName('selected');
		}
	);
	//
	nav_link.parentNode.addClassName('selected');
	//
	id = nav_link.id.replace('_link', '');
	$(id).show();
}

//
function selectLinks(location) {
	var departments = map_data[location]['departments'];
	//
	deselectLinks();
	//
	departments.each(
		function(department) {
			$(department + '_dept_link').addClassName('selected');
		}
	);
	//
	selected_location = location;
	$(location + '_link').addClassName('selected');
}

//
function deselectLinks() {
	// Note: the $() function used below is for Internet Explorer
	var link_lists = $A(document.getElementsByClassName('map_links'))
	link_lists.each( function(list) {
		$A($(list).getElementsByTagName('a')).each( function(link) {
			$(link).removeClassName('selected');
		});
	});
}

//
function selectMapLocation(location, duration) {
	// Default value is 1.5
	duration = duration === undefined ? 1.5 : duration;
	//
	if (location == selected_location) {
		return false;
	}
	//
	selectLinks(location);
	//
	_x = map_data[location]['x'];
	_y = map_data[location]['y'];
	//
	displayPointer(_x, _y, map_data[location]['name']);
	//
	centerMapOn(_x, _y, duration);
}

//
function selectCustomLocation(x, y, pointer_content, duration) {
	//
	duration = duration === undefined ? 1.5 : duration;
	//
	var custom_location = "custom" + x + "_" + y;
	//
	if (custom_location == selected_location) return false;
	else selected_location = custom_location;
	//
	deselectLinks();
	//
	displayPointer(x, y, pointer_content);
	//
	centerMapOn(x, y, duration);
}

function initializeMap() {
	selectNavLink($('campus_buildings_link'));
	//
	map_draggable = new Draggable('map', { revert:false, starteffect:null, endeffect:null });
	//
	selected_location = null;
	//
	params = window.location.search.parseQuery();
	//
	if (params['l']) selectMapLocation(params['l'], 0);
	//
	else if (params['x'] && params['y']) {
		centerMapOn(params['x'], params['y'], 0);
	}
	else centerMapOn(1800, 1750, 0);
}


// ------------------------------------------------------
//  The following functions are for development purposes
// ------------------------------------------------------

function updateCoordinates() {
	coordinates = (map_draggable.offset || []).collect(
		// not sure what the extra 30px is from
		function(coordinate) { return coordinate }
	);
	$('coordinates').update(coordinates.toString());
}
//
function toggleDevMode(event) {
	if (event.keyCode == Event.KEY_ESC) {
		if (document.body.hasClassName('dev_mode')) document.body.removeClassName('dev_mode');
		else document.body.addClassName('dev_mode');						
	}
}



