var map;
var mapPolygons = [];
var mapKml;

function switchCommitteesToPosition($position)
{
	var $toDisplay = $(".committee_grid:eq(" + $position + ")");

	$(".committeeScrollHeader").text( $toDisplay.children("span").text() );

	$(".committee_grid").each(function() {
		$(this).hide("fast");
		$(this).attr("style", "display: none;");
	});
	
	$toDisplay.show("fast");
	
	if($position > 0)
	{
		$(".right_control").show("normal");
		$(".right_control").attr("to", (parseInt($position) - 1));
	} else {
		$(".right_control").hide("normal");
	}

	$older = $(".committee_grid:eq(" + (parseInt($position) + 1) + ")");

	if($older.length > 0)
	{
		$(".left_control").show("normal");
		$(".left_control").attr("to" , (parseInt($position) + 1));
	} else {
		$(".left_control").hide("normal");
	}
}

function hideList()
{
	$(".committee_list").each(function() {
		$(this).hide("normal");
	});
}

function hideGrid()
{
	$(".controls").parent().hide("normal");

	$(".committee_grid").each(function() {
		$(this).hide("normal");
	});
}

function showList()
{
	$(".committee_list").show("normal");
}

function showGrid()
{
	$(".controls").parent().show("normal");

	switchCommitteesToPosition(0);
}

$(function() {
	$(".select span").unbind('click').click(function() {
		$(this).siblings('div').slideToggle();
	});

	$(".select ul li a").unbind('click').click(function () {
		var span = $(this).parent().parent().parent().siblings('span');

		$(span).text($(this).text());
		
		$(this).parent().parent().parent().slideUp();
		
		if(parseInt($(this).attr("rel")) == 1)
		{
			hideList();
			showGrid();
		} else {
			hideGrid();
			showList();
		}

		return false;
	});
	
	$('.trickLightbox a.lightbox').fancybox({
		'transitionsIn': 'elastic',
		'transitionsOut': 'elastic',
		'type': 'image'
	});
	
	$("a[rel='trickLightbox']").click(function() {
		$(".trickLightbox a").click();
		return false;
	});
});


$(document).ready(function() {
	switchCommitteesToPosition(0);

	$(".left_control").click(function() {
		switchCommitteesToPosition($(this).attr("to"));
		return false;
	});

	$(".right_control").click(function() {

		switchCommitteesToPosition($(this).attr("to"));
		return false;
	});

	$(".list_control").click(function() {
		hideGrid();
		showList()
	});

	$(".grid_control").click(function() {
		hideList();
		showGrid();
	});

	$(".abyDoExpand").click(function() {
		var $par = $(this);
		$(".abyExpand").each(function() {
			if($(this).attr("style") == "")
			{
				$(this).attr("style", "display: none;");
				$par.text("Show All Years");
			} else {
				$(this).attr("style", "");
				$par.text("Show Recent Years Only");
			}
		});
		return false;
	});

	$(".spDoExpand").click(function() {
		var $par = $(this);
		$(".spExpand").each(function() {
			if($(this).attr("style") == "")
			{
				$(this).attr("style", "display: none;");
				$par.text("Show All Congresses");
			} else {
				$(this).attr("style", "");
				$par.text("Show Recent Congresses Only");
			}
		});
		return false;
	});

	$("#who .grid-view").click(function() {
		$("#who .list").hide("normal");
		$("#who .grid").show("normal");
		return false;
	});

	$("#who .list-view").click(function() {
		$("#who .grid").each(function() {
			$(this).attr("style", "display: none;");
		});
		$("#who .list").show("normal");
		return false;
	});
	
	$("#who_related .grid-view").click(function() {
		$("#who_related .list").hide("normal");
		$("#who_related .grid").show("normal");
		return false;
	});

	$("#who_related .list-view").click(function() {
		$("#who_related .grid").each(function() {
			$(this).attr("style", "display: none;");
		});
		$("#who_related .list").show("normal");
		return false;
	});


	$(".show_mentions").click(function() {
		$(this).parent().siblings(".mention").slideToggle("slow");

		return false;
	});

	/* DROPDOWN FILTERS */
	$(".select span").unbind('click').click(function(){
		if($(this).siblings('div:visible').length > 0)
			$(this).siblings('div:visible').slideUp();
		else
		{
			$(".select > div:visible").css('z-index', 11).slideUp();
			$(this).siblings('div').css('z-index', 12).slideDown();
		}
	});
	

});

$(document).ready(function() {

	$("#appearances .tab-middle").css("width", $("#appearances .selected a").width().toString() + 'px');
	$("#appearances h2 a").unbind('click').click(function(){
		if($(this).parent().hasClass("selected") || $("#appearancesContent table").eq(0).hasClass('table-init') )
			return false;
		var rel = $(this).attr("rel");
		var personid = $("#appearancesContent table").attr("rel");
		
		$("#appearances .selected").removeClass("selected");
		$(this).parent().addClass("selected");
		$("#appearances .tab-middle").css("width", $("#appearances .selected a").width().toString() + 'px');
		$("#selectedTab").attr("rel", rel);
		$("#selectedTab").animate({left: $(this).position().left}, 400);
		Cufon.refresh('.swap-cufon');
		
		$("#appearancesContent table").eq(0).addClass('table-init').fadeOut('fast', function(){
			$(this).children().remove();
			$(this).append("<tr class='loading'><td>Loading...</td></tr>");
			$(this).fadeIn('fast', function(){
				$(this).removeClass('table-init')
			});
			
			if(rel != 'apps')
			{
				$("#lifeapp_filter").fadeOut('fast');
				$("#lifeapp_filter .select span").attr("rel", rel);
				$("#lifeapp_search").fadeOut('fast');
			}
			else
			{
				$("#lifeapp_filter").fadeIn('fast');
				rel = 'all';
				$("#lifeapp_filter .select span").text("All Appearances").attr("rel", 'all');
				$("#lifeapp_search").fadeIn('fast');
			}
			
			if(rel != 'finances')
				$("#opensecrets_cite").fadeOut('fast');
			else
				$("#opensecrets_cite").fadeIn('fast');
			
			$.ajax({
				type: "GET",
				url: "/videoLibrary/ajax/bio-career.php?personid=" + personid + "&filter=" + $("#lifeapp_filter .select span").attr("rel"),
				success: function ( json ) {
					if ( json.length > 0 && rel == $("#lifeapp_filter .select span").attr("rel") )
					{
						var data = JSON.parse( json );
						if( !data )
						{
							$( "#appearancesContent table" ).html("<tr><td>No Data Found</td></tr>");
							return;
						}

						var location = $( "#appearancesContent table" );
						// Show the header
						if( $("#appearances").css( "display" ) != "block" )
							$( "#appearances" ).fadeIn( "fast" );
						if( $("#appearances .loading").length )
							$("#appearances .loading").remove();
						buildAndInsertTable( data, location );
					}
					else if(json.length <= 0)
						$( "#appearancesContent table" ).html("<tr><td>No Data Found</td></tr>");
				}
			});
		});
		
		return false;
	});
	$("#appearancesContent .select ul li a").unbind('click').click(function(){
	
		var span = $(this).parent().parent().parent().siblings('span');
		
		var rel = $(this).attr("rel");
		
		$(span).text($(this).text());
		
		$(span).attr( "rel", rel);

		$(this).parent().parent().parent().slideUp();

		$( "#appearancesContent table" ).eq(0).fadeOut ( "slow", function () {
			$( this ).children().remove();
			$( this ).append( "<tr class='loading'><td>Loading...</td></tr>" );
			$( this ).fadeIn ( "fast" );

			$.ajax({
				type: "GET",
				url: "/videoLibrary/ajax/bio-career.php?personid=" + $("#appearancesContent table").attr("rel") + "&filter=" + $("#lifeapp_filter .select span").attr("rel"),
				success: function ( json ) {
					if ( json.length > 0 && rel == $("#lifeapp_filter .select span").attr("rel") )
					{
						var data = JSON.parse( json );
						if( !data )
						{
							$( "#appearancesContent table" ).html("<tr><td>No Data Found</td></tr>");
							return;
						}
						
						var location = $( "#appearancesContent table" );

						// Show the header
						if( $("#appearances").css( "display" ) != "block" )
							$( "#appearances" ).fadeIn( "fast" );

						if( $("#appearances .loading").length )
							$("#appearances .loading").remove();

						buildAndInsertTable( data, location );

						$( "#appearancesContent" ).fadeIn( "fast" );
					}
					else if(json.length <= 0)
						$( "#appearancesContent table" ).html("<tr><td>No Data Found</td></tr>");
				}
			});
		});

		return false;
	});
	
	activateMultirowHover();

	var defaultRel = $( "#lifeapp_filter .select span" ).attr( "rel" );

	$( "#lifeapp_filter .select div li a" ).each( function () {
			if( $( this ).attr( "rel" ) == defaultRel )
			{
				$( this ).click();
			}
	});

	url = "/videoLibrary/ajax/bio-appearswith.php?" + "personid=" + $( "#appearswith" ).attr( "rel" );
	$.ajax({
		type: "GET",
		url: url,
		success: function( html ){
			$( "#appearswith" ).replaceWith( html );
			$( "#who .grid" ).show( "normal" );
		}
	});
	
	if($("#districtMap").length > 0)
		$("body").append("<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false&callback=initializegmaps'></script>");
});

function activateMultirowHover()
{
	$("#appearancesContent tr.drop").hover(function(){
		if(($(this).hasClass("even") && $(this).next().hasClass("even")) || ($(this).hasClass("odd") && $(this).next().hasClass("odd")))
			$(this).next().addClass("drop-hover");
	}, function(){
		if($(this).next().hasClass("drop-hover"))
			$(this).next().removeClass("drop-hover");
	});
	
	$("#appearancesContent tr.drop").each(function(){
		if(($(this).hasClass("even") && $(this).next().hasClass("even")) || ($(this).hasClass("odd") && $(this).next().hasClass("odd")))
		{
			$(this).next().hover(function(){
				$(this).addClass("drop-hover");
				$(this).prev().addClass("drop-hover");
			}, function(){
				$(this).removeClass("drop-hover");
				$(this).prev().removeClass("drop-hover");
			});
			$(this).next().click(function(){
				$(this).prev().trigger("click");
			});
		}
	});
}

function buildAndInsertTable( data, insertLocation )
{
	var personid = $( "#appearancesContent table ").attr( "rel" );
	var insertHTML = $( "<table rel='" + personid + "'>" );
	var action = new Object();

	if($("#appearances #selectedTab").attr("rel") == 'apps')
		$("#appearancesContent #lifeapp_filter").fadeIn();
	if( $("#appearancesContent #lifeapp_filter div.select span").attr( "rel" ) == "all" )
		$("#appearancesContent #lifeapp_search").fadeIn();
	else
		$("#appearancesContent #lifeapp_search").fadeOut();

	for( var i in data.rows )
	{
		var row = $( "<tr></tr>" );

		var parent = $( insertHTML ).find( "tr:last" );

		if( !parent.length )
		{
			$( row ).addClass( "even" );
		}
		else if( data.rows[i].same_color_as_parent )
		{
			if( $( parent ).hasClass( "even" ) )
				$( row ).addClass( "even" );
			else
				$( row ).addClass( "odd" );
		} 
		else if( parent.hasClass( "even" ) ) 
		{
			$( row ).addClass( "odd" );
		} 
		else
		{
			$( row ).addClass( "even" );	
		}
			
		for( var j in data.rows[i].cols )
		{
			var col = $( "<td></td>" );

			if( data.rows[i].cols[j].html_class )
				$( col ).addClass( data.rows[i].cols[j].html_class["#text"] );
			
			if( data.rows[i].cols[j].html_title )
				$( col ).attr( "title", data.rows[i].cols[j].html_title["#text"] );

			if( data.rows[i].cols[j].row_span )
				$( col ).attr( "rowSpan", data.rows[i].cols[j].row_span["#text"] );

			if( data.rows[i].cols[j].full_colspan || data.rows[i].cols[j].type["#text"] == "sub_table" )
			{
				var colspan = $( insertHTML ).find( "th" ).length;

				$( col ).attr( "colSpan", colspan );
			}

			if( data.rows[i].cols[j].colspan )
				$( col ).attr( "colSpan", data.rows[i].cols[j].colspan["#text"] );

			switch( data.rows[i].cols[j].type["#text"] )
			{
				case 'header':
					col = $( "<th></th>" );
					if( data.rows[i].cols[j].colspan )
						$( col ).attr( "colSpan", data.rows[i].cols[j].colspan["#text"] );
					buildAndInsertTable_addData( col, data.rows[i].cols[j].data );
				break;

				case 'drop':
					$( row ).addClass( "drop" );
					buildAndInsertTable_addDrop( col, data.rows[i].cols[j].href["#text"], data.rows[i].cols[j].data );
					action.activate_drop = true;
				break;
				
				case 'sort':
					col = $("<th></th>");
					$(col).attr("title", "Sort by ");
					buildAndInsertTable_addSort(col, data.rows[i].cols[j].href["#text"], data.rows[i].cols[j].data);
					action.activate_sort = true;
				break;
				
				case 'group':
					col = $("<th></th>");
					$(col).attr("title", "Group by ");
					buildAndInsertTable_addSort(col, data.rows[i].cols[j].href["#text"], data.rows[i].cols[j].data);
					$(col).addClass("group");
					action.activate_sort = true;
				break;
				
				case 'page':
					$( row ).addClass("page");
					buildAndInsertTable_addPage(col, data.rows[i].cols[j].href["#text"], data.rows[i].cols[j].data);
					$(col).addClass("group");
					action.activate_page = true;
				break;
				
				case 'sort-active':
					col = $( "<th></th>" );
					buildAndInsertTable_addData( col, data.rows[i].cols[j].data );
					$(col).addClass("sort-active");
				break;

				case 'image':
					buildAndInsertTable_addImage( col, data.rows[i].cols[j].data );
				break;

				case 'data':
					buildAndInsertTable_addData( col, data.rows[i].cols[j].data );
				break;
				
				case 'image_sheet':
					buildAndInsertTable_addSheetImage( col, data.rows[i].cols[j].picture_src["#text"], data.rows[i].cols[j].picture_height["#text"], data.rows[i].cols[j].picture_width["#text"], data.rows[i].cols[j].pictures );
					action.activate_lightbox = true;
				break;

				case 'sub_table':
					$( row ).addClass( "sub_table" );

					$( col ).append("<table>" +  $( buildAndInsertTable( data.rows[i].cols[j].data, false ) ).html() + "</table>" );
				break;				

				case 'rowspan':
					// Do Nothing...
					col = false;
				break;
			}

			// Attach are new column to the row
			$( row ).append( col );
		}
	 
		// Attach are new row to bit which will be injected into the table
		$( insertHTML ).append( row );

	}

	if($(insertLocation).hasClass("page"))
	{
		var newHTML = $(insertHTML).find("tr");
		insertHTML = newHTML;
	}
	// Make new table if not at head...
	else if( $( insertLocation ).is( "tr" ) )
	{
		var colspan = $( insertLocation ).parent().find( "tr:first th" ).length;

		var newHTML = $( "<tr class='dropped'><td colSpan='" + colspan + "'></td></tr>" );
		$( newHTML ).find( "td" ).append( insertHTML );

		insertHTML = newHTML;
	}

	if ( insertLocation )
		$( insertLocation ).replaceWith( insertHTML );
	else
		return insertHTML;

	if( action.activate_lightbox )
	{
		$('#appearancesContent a.lightbox').fancybox({
			'transitionsIn': 'elastic',
			'transitionsOut': 'elastic',
			'type': 'image',
			'titleFormat': function(title, currentArray, currentIndex, currentOpts){
				return "<a href='/program/" + currentArray[currentIndex].rel + "'>" + title + "</a>";
			}
		});
	}

	if( action.activate_drop )
		buildAndInsertTable_activateDrop();
	
	if(action.activate_sort)
		buildAndInsertTable_activateSort();
	
	if(action.activate_page)
		buildAndInsertTable_activatePage();
	
	activateMultirowHover();
}

function buildAndInsertTable_addData( col, data )
{
	if ( typeof data["#text"] == "string" )
	{

		data = data["#text"];

		$( col ).html( data );

	} else {

		for ( var i in data )
		{
			switch ( data[i].type["#text"] )
			{
				case "data":
					$( col ).append( data[i].data["#text"] );
				break;

				case "span":
					$( col ).append( "<span>" + data[i].data["#text"] + "</span>" );
				break;
				
				case "p":
					$( col ).append( "<p>" + data[i].data["#text"] + "</p>" );
				break;

				case "h3":
					$( col ).append( "<h3>" + data[i].data["#text"] + "</h3>");
				break;

				case "h4":
					$( col ).append( "<h4>" + data[i].data["#text"] + "</h4>");
				break;

				case "h5":
					$( col ).append( "<h5>" + data[i].data["#text"] + "</h5>");
				break;

				case "h3-inline":
					$( col ).append( "<h3 style='display: inline;'>" + data[i].data["#text"] + "</h3>");
				break;

				case "div":
					$( col ).append( "<div>" + data[i].data["#text"] + "</div>");
				break;

				case "left":
					$( col ).append( "<span class='left'>" + data[i].data["#text"] + "</span>" );
				break;

				case "right":
					$( col ).append( "<span class='right'>" + data[i].data["#text"] + "</span>" );
				break;

				case "div-a":
					$( col ).append( "<div><a href='" + data[i].href["#text"] + "'>" + data[i].data["#text"] + "</a></div>" );
				break;

				case "a":
					$( col ).append( "<a href='" + data[i].href["#text"] + "'>" + data[i].data["#text"] + "</a>" );
				break;

				case "a-h3":
					$( col ).append( "<a href='" + data[i].href["#text"] + "'><h3>" + data[i].data["#text"] + "</h3></a>" );
				break;

				case "a-h3-inline":
					$( col ).append( "<a href='" + data[i].href["#text"] + "'><h3 style='display: inline;'>" + data[i].data["#text"] + "</h3></a>" );
				break;
			}
		}

	}
}

function buildAndInsertTable_addImage( col, data )
{
	if(data.href)
		$( col ).append("<a href='" + data.href["#text"] + "'><img src='" + data.src["#text"] + "' /></a>");
	else
		$( col ).append("<img src='" + data.src["#text"] + "' />");
	
	if( data.alt )
		$( col ).find( "img" ).attr( "alt", data.alt["#text"] );
}

function buildAndInsertTable_addSheetImage( col, image_src, height, width, pictures )
{
	$( col ).addClass( "imgsheet" );
	$( col ).append("<ul class='imgsheet'></ul>");

	var picCnt = 0;
	for( var i in pictures )
	{
		picCnt++;
		$( col ).find( "ul" ).append( "<li style=\"background: url('" + image_src + "') no-repeat scroll " + pictures[i].xpos["#text"] + " " + pictures[i].ypos["#text"] + " transparent;\"></li>" );
		$( col ).find( "li:last" ).append( "<a class='lightbox' href='" + image_src + "&sheetIndex=" + pictures[i].index["#text"] + "' title='" + pictures[i].title["#text"] + "' style='height: " + height + "; width: " + width + ";' rel='" + pictures[i].href["#text"] + "'></a>" );
	}
	$(col).css("width", (parseInt(width,10) * picCnt).toString() + "px");
}

function buildAndInsertTable_addSort(col, href, data)
{
	$(col).addClass("sort");
	$( col ).append( "<form style='display: none;' action='" + href + "'></form>" );
	
	var sorttext = '';
	for( var i in data )
	{
		if(i == "sorttext")
			sorttext = data[i]["#text"];
		else
			$( col ).find("form").append( "<input type='hidden' name='" + i + "' value='" + data[i]["#text"] + "' />");
	}
	$(col).append("<span>"+sorttext+"</span>");
	$(col).attr("title", $(col).attr("title")+sorttext);
}

function buildAndInsertTable_addPage(col, href, data)
{
	$( col ).append( "<form style='display: none;' action='" + href + "'></form>" );
	
	var pagetext = '';
	for( var i in data )
	{
		if(i == "pagetext")
			pagetext = data[i]["#text"];
		else if(i != "colspan")
			$( col ).find("form").append( "<input type='hidden' name='" + i + "' value='" + data[i]["#text"] + "' />");
	}
	$(col).append("<span>"+pagetext+"</span>");
}

function buildAndInsertTable_activateSort()
{
	$("th.sort").unbind('click').click(function(){
		if($(this).hasClass('sort-activated'))
			return false;
		$(this).addClass('sort-activated');
		var location = $(this).parent().parents("tr").eq(0);
		var data = $(this).find("form").serialize();
		data += "&filter=" + $( "#lifeapp_filter .select span").attr( "rel" );
		var url = $(this).find("form").attr("action");
		
		var colspan = $(this).parent().parent().find("tr:first th").length;
		$(this).parent().after("<tr class='dropped loading'><td colSpan='" + colspan + "'>Loading...</td></tr>");
		
		$.ajax({
			type: "GET",
			url: url,
			data: data,
			success: function( json ) {
				if ( json.length > 0 )
				{
					var data = JSON.parse( json );
					if( !data )
						return;
					buildAndInsertTable( data, location );
				}
			}
		});
	});
}

function buildAndInsertTable_activatePage()
{
	$("tr.page").unbind('click').click(function(){
		if($(this).hasClass('page-activated'))
			return false;
		$(this).addClass('page-activated');
		var location = $(this);
		var data = $(this).find("td form").serialize();
		data += "&filter=" + $( "#lifeapp_filter .select span").attr( "rel" );
		var url = $(this).find("td form").attr("action");
		
		$(this).find("td span").text("Loading...");
		
		$.ajax({
			type: "GET",
			url: url,
			data: data,
			success: function( json ) {
				if ( json.length > 0 )
				{
					var data = JSON.parse( json );
					if( !data )
						return;
					buildAndInsertTable( data, location );
				}
			}
		});
	});
}

function buildAndInsertTable_addDrop( col, href, data )
{
	$( col ).addClass( "drop" );

//	$( col ).append( "<img src='/videoLibrary/assets/images/search/left-reveal-off.gif'>" );
//	$( col ).append( "<img style='display: none;' src='/videoLibrary/assets/images/search/left-reveal-on.gif'>" );

	$( col ).append( "<form style='display: none;' action='" + href + "'></form>" );
	
	var droptext = "";
	for( var i in data )
	{
		if(i == "firstcol")
			$(col).addClass("list-" + data[i]["#text"]);
		if(i == "droptext")
			droptext = data[i]["#text"];
		else
			$( col ).find("form").append( "<input type='hidden' name='" + i + "' value='" + data[i]["#text"] + "' />");
	}
	$(col).append("<span>"+droptext+"</span>");
}

function buildAndInsertTable_activateDrop()
{
	$( "tr.drop" ).unbind( 'click' ).click( function() {
		var next = $(this).next();
		if($(next).hasClass("loading"))
			return false;
		
		var drop = $(this).find("td.drop");
		$(drop).find("span").toggleClass("reveal-on");

		var row_span = $(drop).attr( "rowSpan" );

		if( row_span != undefined )
		{
			row_span = parseInt( row_span ) - 1;

			while( row_span )
			{
				next = $( next ).next();
				row_span = row_span - 1;
			}
		}
		
		if( $( next ).hasClass( "dropped" ) )
		{
			if($(next).hasClass("dropped-hide"))
				$(next).removeClass("dropped-hide").show();
			else
				$(next).addClass("dropped-hide").hide();
		} else {

			var data = new Object();

			$( drop ).find( "form input" ).each ( function () {
				data[ $( this ).attr( "name" ) ] = $( this ).attr( "value" );
			});

			data[ "filter" ] = $( "#lifeapp_filter .select span").attr( "rel" );

			var colspan = $( this ).parent().find( "tr:first th" ).length;

			var row_span = $(drop).attr("rowSpan");

			var location = $(this);

			if( row_span != undefined )
			{
				row_span = parseInt( row_span ) - 1;

				while( row_span )
				{
					location = $( location ).next();
					row_span = row_span -1;
				}
			}

			$( location ).after("<tr class='dropped loading'><td colSpan='" + colspan + "'>Loading...</td></tr>");
			location = $( location ).next();

			$.ajax({
				type: "GET",
				url: $( drop ).find( "form" ).attr( "action" ),
				data: data,
				success: function( json ) {

					if ( json.length > 0 )
					{
						var data = JSON.parse( json );

						if( !data )
						{
							$(location).find('td').text('No Data Found');
							return;
						}

						buildAndInsertTable( data, location );

					}
					else if(json.length <= 0)
						$(location).find('td').text('No Data Found');
				}
			});
		}
	});	
}

function initializegmaps()
{
	var latlong = new google.maps.LatLng(37.0625,-95.677068);
	var mapOpts = {
		zoom: 4,
		center: latlong,
		mapTypeControlOptions: {mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'congmap']},
		streetViewControl: false,
		mapTypeControl: false,
		backgroundColor: "#FFFFFF"
	};
	map = new google.maps.Map(document.getElementById("districtMap"), mapOpts);
	
	var mapstyle = [
		{
			featureType: "poi",
			elementType: "all",
			stylers: [
				{ visibility: "off" }
			]
		},
		{
			featureType: "transit",
			elementType: "all",
			stylers: [
				{ visibility: "off" }
			]
		},
		{
			featureType: "road",
			elementType: "geometry",
			stylers: [
				{ visibility: "simplified" },
				{ hue: "#0000ff" },
				{ saturation: -100 },
				{ lightness: 0 }
			]
		},
		{
			featureType: "road",
			elementType: "labels",
			stylers: [
				{ visibility: "off" }
			]
		},
		{
			featureType: "water",
			elementType: "all",
			stylers: [
				{ visibility: "simplified" },
				{ hue: "#99b3cc" },
				{ saturation: -10 },
				{ lightness: 50 }
			]
		},
		{
			featureType: "landscape",
			elementType: "geometry",
			stylers: [
				{ saturation: -100 },
				{ lightness: 80 }
			]
		},
		{
			featureType: "administrative",
			elementType: "geometry",
			stylers: [
				{ visibility: "off" }
			]
		},
		{
			featureType: "administrative.country",
			elementType: "geometry",
			stylers: [
				{ visibility: "on" }
			]
		},
		{
			featureType: "administrative.province",
			elementType: "geometry",
			stylers: [
				{ visibility: "on" },
				{ lightness: -50 }
			]
		}
	];
	var mapstyleOpts = {name: 'congmap'};
	var congMapType = new google.maps.StyledMapType(mapstyle, mapstyleOpts);
	
	map.mapTypes.set('congstyle', congMapType);
	map.setMapTypeId('congstyle');
	
	loadDistrictPolygon("/videoLibrary/ajax/bio-map.php?personid=" + $("#appearancesContent table").attr("rel"));
	
	$("#mapCongress a").unbind("click").click(function(){
		$(this).hide();
		$(this).siblings("a").hide();
		$(this).siblings(".cong-current").html("Loading...");
		
		deletePolygons();
		loadDistrictPolygon("/videoLibrary/ajax/bio-map.php?personid=" + $("#appearancesContent table").attr("rel") + "&congress=" + $(this).attr('rel'));
		
		return false;
	});
}

function loadDistrictPolygon(ajaxurl)
{
	$.ajax({
		type: "GET",
		url: ajaxurl,
		success: function(json){
			if(json.length > 0)
			{
				var data = JSON.parse(json);
				
				if(!data)
					return;
				
//				mapKml = new google.maps.KmlLayer('https://docs.google.com/uc?id=0B-r4QqiAoy-qYWM5ZDk1M2YtMmY1Yi00MGExLWFhNDUtZWQ5YjMyNzc5NzVh&export=download&authkey=CMi29rEG&hl=en', {preserveViewport: true, suppressInfoWindows: true});
				mapKml = new google.maps.KmlLayer('http://www.c-spanvideo.org/videoLibrary/mapKML.php?congress=' + data.congnum + 
													'&chamber=' + data.chamber + '&state=' + data.state, {preserveViewport: true, suppressInfoWindows: true});
				mapKml.setMap(map);
				var bounds = new google.maps.LatLngBounds();
				for(var i = 0; i < data.polygons.length; i++)
				{
					var polypaths = [];
					for(var j = 0; j < data.polygons[i].points.length; j++)
						polypaths[j] = new google.maps.LatLng(data.polygons[i].points[j].lat, data.polygons[i].points[j].lng);
					var polygon = new google.maps.Polygon({
						paths: polypaths,
						strokeColor: "#444444",
						strokeOpacity: 0.8,
						strokeWeight: 2,
						fillColor: "#FFFF00",
						fillOpacity: 0.40
					});
					
					polygon.setMap(map);
					mapPolygons.push(polygon);
					
					for(var j = 0; j < polypaths.length; j++)
						bounds.extend(polypaths[j]);
				}
				
				map.fitBounds(bounds);
				
				if(data.congprev)
					$("#mapCongress .cong-prev").attr('rel', data.congprev).show();
				else
					$("#mapCongress .cong-prev").hide();
				if(data.congnext)
					$("#mapCongress .cong-next").attr('rel', data.congnext).show();
				else
					$("#mapCongress .cong-next").hide();
				$("#mapCongress .cong-current").html(data.district + '<br/>' + data.congress);
			}
		}
	});
}

function deletePolygons()
{
	if(mapKml != undefined)
		mapKml.setMap(null);
	if(mapPolygons.length > 0)
	{
		for(var i = 0; i < mapPolygons.length; i++)
		{
			mapPolygons[i].setMap(null);
		}
		mapPolygons = [];
	}
}

