$(function(){

	// speeds
	var speed_fade = "fast";
	var speed_scroll = "slow";

	// location prefix name
	var loc_name = "location-";
	
	// details text
	var details_text = "Click Here for Page";
	
	// current
	var locator_current = -1;

	// make the map relativly positioned (this makes the dots happy)
	$("#locator-map").css("position", "relative");
	// build map points and bind points to member list 
	$.each(members, function(i, val){
		// temporary reference tor the member
		var member = this;
		
		var style = {
			position: "absolute", 
			"z-index": 1,  
			top: member["posy"],
			left: member["posx"]
		};

		var style_dot = {
			position: "absolute"
		};

		var style_info = {
			position: "absolute", 
			display: "none"
		};

		// info window container
		var plot = $("<div />").attr("id", loc_name + i).css(style);
			// info window
			var info = $("<div />").addClass("information locator-corners").css(style_info);
				// member name
				var info_name = $("<div />").addClass("name").text(member["name"]);
					$(info).append(info_name);
				// link on member name
				if( member["nameurl"] )
				{
					var info_nameurl = $("<a />").attr('href', member["nameurl"]).attr( 'title', member["name"] );
						info_name.wrapInner( info_nameurl );
				}
				// close
				var info_close = $("<div />").addClass("close");
					$(info).append(info_close);
				// bind actions for close button
				$(info_close).bind("click", function(){
					openLocationWindow(-1, true);
				});
				// hover
				$(info_close).hover(
					function(){
						$(this).addClass("hover");
					}, 
					function(){
						$(this).removeClass("hover");
					}
				);
				// mailing address
				var info_address = $("<div />").addClass("address").html(member["address"] + "<br />" + member["city"] + ", " + member["state"] + " " + member["zip"]);
					$(info).append(info_address);
				// phone
				if( member["phone"] )
				{
					var info_phone = $("<div />").addClass("phone").text("Phone: " + member["phone"]);
						$(info).append(info_phone);
				}
				// fax
				if( member["fax"] )
				{
					var info_fax = $("<div />").addClass("fax").text("Fax: " + member["fax"]);
						$(info).append(info_fax);
				}
				// extenal url
				if( member["url"] )
				{
					var info_url = $("<div />").addClass("url");
						var info_url_link = $("<a />").attr({ href: member["url"], target: "_blank", title: member["name"] }).text(member["url"]);
							$(info_url).append(info_url_link);
						$(info).append(info_url);
				}
				// store image
				if( member["image"] )
				{
					var info_image = $("<div />").addClass("image");
						var info_image_img = $("<img />").attr("src", member["image"]);
							$(info_image).append(info_image_img);
						$(info).append(info_image);
				}
				// link on member name
				if( member["nameurl"] )
				{
					var info_details_link = $("<a />").attr('href', member["nameurl"]).attr( 'title', member["name"] ).text(details_text);
						info.append( info_details_link );
				}
				$(plot).append(info);
			// dot
			var point = $("<div />").addClass("dot").css(style_dot);
				$(plot).append(point);
			// data for plot
			var plot_data = {
				index: i, 
				plot: plot, 
				dot: point, 
				info: info
			};
			// plot data
			$(plot).data("index", i);
			$(plot).data("plot", plot);
			$(plot).data("dot", point);
			$(plot).data("info", info);
			// plot hover
			$(plot).hover(
				function(){
					openLocationWindow(i, true);
				},
				function(){
					// nothing to see here
				}
			);
			// add to map
			$("#locator-map").append(plot);
	});

	// bind member list item rollovers
	$("#locator-list li").each(function(i){
		// hovers
		$(this).hover(
			function(){
				$(this).addClass("hover");
			},
			function(){
				if( i != locator_current )
				{
					$(this).removeClass("hover");
				}
			}
		);
		// clicks
		$(this).bind('click', function(){
			openLocationWindow(i, true);
		});
	});

	// open location tooltip window
	function openLocationWindow(index, selected){
		selected = selected || false;
		$.each(members, function(i, val){
			// name
			var name = "#" + loc_name + i;
			// get info window
			//var data = $(name).data();
			// current item
			if( i == index )
			{
				// scroll list to item
				locationScroll(i);
				// z-index
				$($(name).data("plot")).css("z-index", 99999);
				// add hover
				$("#locator-list li").eq(i).addClass("selected");
				$($(name).data("dot")).addClass("open");
				// fade in info window
				//$($(name).data("info")).stop().fadeIn(speed_fade);
				$($(name).data("info")).show();
				// make this the current one is clicked
				if( selected )
				{
					locator_current = i;
				}
			}
			// un-current item (yes, un-current is a word now)
			else
			{
				// z-index
				$($(name).data("plot")).css("z-index", 1);
				// remove hover
				$("#locator-list li").eq(i).removeClass("selected");
				// change dot
				$($(name).data("dot")).removeClass("open");
				// fade in info window
				//$($(name).data("info")).fadeOut(speed_fade);
				$($(name).data("info")).hide();
			}
			// remove hover
			$("#locator-list li").eq(i).removeClass("hover");
		});
	}

	// close location tooltip window
	function locationScroll(index){
		var pos = $("#locator-list li").eq(index).offset().top - $("#locator-list .locator-list").offset().top;
		$("#locator-list .locator-list").stop().animate({ scrollTop: '+=' + pos + 'px' }, speed_scroll);
	}
	
});