var searchTimer;
var dateregex = /(?:^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})))$)|(?:^mm\/dd\/yyyy$)/;
var dateChart;

/* DOM READY FUNCTIONS */
$(function(){	
	buildSearchSelect();
	
	$(".extend a").each(function(intIndex){
		
		$('ul[id="'+$(this).attr("rel")+'"] li.toggle').hide();

		$(this).unbind('click').click(function(){
			$('ul[id="'+$(this).attr("rel")+'"] li.toggle').slideToggle();

			var msg = ($(this).children('span').text() == 'Show') ? 'Hide' : 'Show';

			$(this).children('span').text(msg);

			return false;
		});

	});
	
	$("#addSearchTerm").click(function(){
		var template_select = $("#templates .select:first");
		var template_input  = $("#templates .input");
//		while($("#advancedSearch ."+$(template_input).attr('class')).length > 0)
//		{
//			template_select = $(template_select).next();
//			template_input = $(template_input).next();
//		}
		var typeselect		=	$(template_select).clone();
		var searchfield		=	$(template_input).clone();
		
		var fieldset		=	document.createElement('fieldset');
		
		$(fieldset).hide();
		
		$(fieldset).append(typeselect);
		$(fieldset).append(searchfield);
		
		$("#advancedSearch > div:last-child").before(fieldset);
		
		$(fieldset).fadeIn();
		
		$("#advancedSearch .remove").show();
		
//		if($(searchfield).attr('class') == 'dates')
//		{
//			$(".select li a[rel="+$(searchfield).attr('class')+"]").parent().hide();
//			$(typeselect).find("li a[rel="+$(searchfield).attr('class')+"]").parent().show();
//		}
		
		buildSearchSelect();
		
		buildInput();
		
		if($("#advancedSearch fieldset").length == 10)
		{
			$("#addSearchTerm").hide();
		}
		
		return false;
		
	});
	
	/* ADVANCED SEARCH FORM DATE VALIDATION */
	$("#advancedSearch").submit(function(){
		$("#advancedSearch .dates input").css('border', '3px solid #E8E9EC');
		$("#advancedSearch .actions #invalid-date").hide();
		if($("#advancedSearch .dates").length == 0)
			return true;
		
		var datepassed = true;
		
		if(!$("#advancedSearch .dates input:eq(0)").val().match(dateregex))
		{
			$("#advancedSearch .dates input:eq(0)").css('border', '3px solid #FF0000');
			$("#advancedSearch .actions #invalid-date").show();
			datepassed = false;
		}
		
		if(!$("#advancedSearch .dates input:eq(1)").val().match(dateregex))
		{
			$("#advancedSearch .dates input:eq(1)").css('border', '3px solid #FF0000');
			$("#advancedSearch .actions #invalid-date").show();
			datepassed = false;
		}
		
		if(!datepassed)
			return false;
		
		if($("#advancedSearch .dates input:eq(0)").val() != $("#advancedSearch .dates input:eq(0)").attr('title') &&
			$("#advancedSearch .dates input:eq(1)").val() != $("#advancedSearch .dates input:eq(1)").attr('title'))
		{	
			var begmatch = /(\d{1,2})\/(\d{1,2})\/(\d{4})/.exec($("#advancedSearch .dates input:eq(0)").val());
			var endmatch = /(\d{1,2})\/(\d{1,2})\/(\d{4})/.exec($("#advancedSearch .dates input:eq(1)").val());
			if(parseInt(begmatch[3]) > parseInt(endmatch[3]) ||
				(parseInt(begmatch[3]) == parseInt(endmatch[3]) && parseInt(begmatch[1]) > parseInt(endmatch[1])) || 
				(parseInt(begmatch[3]) == parseInt(endmatch[3]) && parseInt(begmatch[1]) == parseInt(endmatch[1]) && parseInt(begmatch[2]) > parseInt(endmatch[2])))
			{
				$("#advancedSearch .dates input:eq(0)").css('border', '3px solid #FF0000');
				$("#advancedSearch .dates input:eq(1)").css('border', '3px solid #FF0000');
				$("#advancedSearch .actions #invalid-date").show();
				return false;
			}
		}
		else
		{
			if($("#advancedSearch .dates input:eq(0)").val() == $("#advancedSearch .dates input:eq(0)").attr('title'))
				$("#advancedSearch .dates input:eq(0)").val('');
			if($("#advancedSearch .dates input:eq(1)").val() == $("#advancedSearch .dates input:eq(1)").attr('title'))
				$("#advancedSearch .dates input:eq(1)").val('');
		}
		
		return true;
	});
	
	$("#subContent a.reveal-on").click(function(){
		$(this).parent().nextAll('fieldset').eq(0).slideToggle('normal');
		
		$(this).toggleClass('reveal-off');

		return false;
	});

	$("#mainContent a.reveal-on").click(function(){
		$(this).nextAll('div').eq(0).slideToggle();
		
		$(this).toggleClass('reveal-off');

		return false;
	});
	
	$("#resultsType input").click(function(){
		var resultChecked = $(this).attr('checked');
		switch($(this).val())
		{
			case 'People':
				if(resultChecked)
					$("#peopleResults").slideDown('normal', function(){
						initSearch('person', false);
					});
				else
					$("#peopleResults").slideUp('normal', function(){
						$("#peopleResults .toggle-box").hide();
						$("#peopleResults > a").removeClass('reveal-on').addClass('reveal-none');
						$("#peopleResults > h2").text("SEARCHING PEOPLE...");
						Cufon.refresh('.swap-cufon');
					});
					updateSession();
					updateShareURL();
				break;
			case 'Programs':
				if(resultChecked)
					$("#program-results").slideDown('normal', function(){
						initSearch('program', false);
					});
				else
					$("#program-results").slideUp('normal', function(){
						$("#program-results .toggle-box").hide();
						$("#program-results > a").removeClass('reveal-on').addClass('reveal-none');
						$("#program-results > h2").text("SEARCHING PROGRAMS...");
						Cufon.refresh('.swap-cufon');
					});
					updateSession();
					updateShareURL();
					$("#modPolicy li .progcount").hide();
					if($("#issueFilterList .selected").length == 0)
						$("#issueFilterList li").show();
					if($("#issueSubfilterList .selected").length == 0)
						$("#issueSubfilterList li").show();
					if($("#issueSubSubList .selected").length == 0)
						$("#issueSubSubList li").show();
					$("#modCategory li .progcount").hide();
					if($("#eventFilterList .selected").length == 0)
						$("#eventFilterList li").show();
				break;
			case 'Appearances':
				if(resultChecked)
					$("#appearance-results").slideDown('normal', function(){
						initSearch('appearance', false);
					});
				else
					$("#appearance-results").slideUp('normal', function(){
						$("#appearance-results .toggle-box").hide();
						$("#appearance-results > a").removeClass('reveal-on').addClass('reveal-none');
						$("#appearance-results > h2").text("SEARCHING TRANSCRIPTS...");
						Cufon.refresh('.swap-cufon');
					});
					updateSession();
					updateShareURL();
				break;
			case 'Committees':
				if(resultChecked)
					$("#committee-results").slideDown('normal', function(){
						initSearch('committee', false);
					});
				else
					$("#committee-results").slideUp('normal', function(){
						$("#committee-results .toggle-box").hide();
						$("#committee-results > a").removeClass('reveal-on').addClass('reveal-none');
						$("#committee-results > h2").text("SEARCHING COMMITTEES...");
						Cufon.refresh('.swap-cufon');
					});
					updateSession();
					updateShareURL();
				break;
			case 'Bills':
				if(resultChecked)
				{
					$("#bill-results").slideDown('normal', function(){
						initSearch('bill', false);
					});
					$("#modBill").slideDown('normal');
				}
				else
				{
					$("#bill-results").slideUp('normal', function(){
						$("#bill-results .toggle-box").hide();
						$("#bill-results > a").removeClass('reveal-on').addClass('reveal-none');
						$("#bill-results > h2").text("SEARCHING BILLS...");
						Cufon.refresh('.swap-cufon');
					});
					$("#modBill").slideUp('normal');
				}
				updateSession();
				updateShareURL();
				break;
		}
	});
	
	$("#addSearchLink").click(function(){
		$(this).hide();
		$("#addSearchFields").show();

		$("#addSearchFields input.add-search-input").val('');
		
		buildAddSearchField();
			
		return false;
	});
	
	$("#sliderHeader > a").click(function(){
		var today = new Date();
		var firstdate = new Date();
		firstdate.setFullYear(1900,0,1);
//		var newfirst = new Date();
//		newfirst.setFullYear(1950,0,1);
		
//		var newmin = Math.ceil((newfirst-firstdate)/(1000*60*60*24));
		var enddays = Math.ceil((today-firstdate)/(1000*60*60*24));
//		$("#slider-range").slider('option', 'min', newmin);
		$("#slider-range").slider('values', 0, 0);
		clearTimeout(searchTimer);
		$("#slider-range").slider('values', 1, enddays);
		
		return false;
	});
	
	$(".select-all").click(function(){
		$(this).parent().next().find('input').attr("checked", "checked");
		
		clearTimeout(searchTimer);
		if($(this).parents("#modSearch").length > 0)
			searchTimer = setTimeout("initSearch('person', false); initSearch('committee', false); initSearch('program', false); initSearch('appearance', false); initSearch('bill', false); updateSession(); updateShareURL();", 1000);
		else if($(this).parents("#modBill").length > 0)
			searchTimer = setTimeout("initSearch('bill', false); updateSession(); updateShareURL();", 1000);
		else
			searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});

	$(".clear-all").click(function(){
		$(this).parent().next().find('input').removeAttr("checked");
		
		clearTimeout(searchTimer);
		if($(this).parents("#modSearch").length > 0)
			searchTimer = setTimeout("initSearch('person', false); initSearch('committee', false); initSearch('program', false); initSearch('appearance', false); initSearch('bill', false); updateSession(); updateShareURL();", 1000);
		else if($(this).parents("#modBill").length > 0)
			searchTimer = setTimeout("initSearch('bill', false); updateSession(); updateShareURL();", 1000);
		else
			searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	
	/* CLIPBOARD FUNCTIONS */
		ZeroClipboard.setMoviePath( '/videoLibrary/assets/js/ZeroClipboard.swf' );
		
		var clipU = new ZeroClipboard.Client();
	
		clipU.setText( '' );
	
		clipU.setHandCursor( true );
	
		clipU.setCSSEffects( true );
	
		clipU.addEventListener( 'mouseDown', function(client) {
			clipU.setText($("#copyURLValue").val());
		});
		
		clipU.addEventListener( 'complete', function(client, text) {
			$("#copyURLValue").parent().addClass("copied");
		});
		
		clipU.glue("copyURL");

	/* CLIPBOARD FUNCTIONS */
	/* hide clipboard for now
		ZeroClipboard.setMoviePath( '/videoLibrary/assets/js/ZeroClipboard.swf' );
		
		var clipL = new ZeroClipboard.Client();
	
		clipL.setText( '' );
	
		clipL.setHandCursor( true );
	
		clipL.setCSSEffects( true );
	
		clipL.addEventListener( 'mouseDown', function(client) {
			clipL.setText($("#copyLinkValue").val());
		});
		
		clipL.addEventListener( 'complete', function(client, text) {
			$("#copyLinkValue").addClass("copied");
		});
		
		clipL.glue("copyLink");
	*/

});

function buildSearchSelect(){

	/* 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();
		}
	});
	
	$("#advancedSearch .select ul li a").unbind('click').click(function(){
	
		var span = $(this).parent().parent().parent().siblings('span');
		
		var rel = $(this).attr("rel");
		
		var template = $("#templates ."+rel).clone();
		
		$(span).text($(this).text());
		
		$(this).parent().parent().parent().slideUp();
		
		if($(this).parent().parent().parent().parent().siblings('div').attr('class') == 'dates')
			$(".select li a[rel="+$(this).parent().parent().parent().parent().siblings('div').attr('class')+"]").parent().show();
			
		if($(this).attr('rel') == 'dates')
		{
			$(".select li a[rel="+$(this).attr('rel')+"]").parent().hide();
			$(this).parent().show();
		}
		
		$(this).parents("div.select").next().replaceWith(template);
		if($("#advancedSearch fieldset").length > 1)
			$(template).children('.remove').show();
		else
			$(template).children('.remove').hide();
		
		buildInput();

		return false;
	});
	
	$(".search .pager > a").unbind('click').click(function(){
		var pager = $(this).parent();
		var container = $(pager).siblings("ul");
		
		if($(this).attr("class") == 'prev')
			var page = (parseInt($(pager).children("#input-page").val()) - 1).toString();
		if($(this).attr("class") == 'next')
			var page = (parseInt($(pager).children("#input-page").val()) + 1).toString();
		
		var url = $(this).attr("href") + "&page=" + page + "&query=";
		
		url += buildQueryFromMods($(this).parent().parent().parent().attr('id'));
		
		if($(this).parents(".result-container").children(".input-sort").length > 0)
			url = url + "&sort=" + $(this).parents(".result-container").children(".input-sort").val();
		url = url + "&ajaxCode=" + $("#ajaxCode").attr("value");
		
		$(container).fadeOut("slow", function(){
			$.ajax({
				type: "GET",
				url: url,
				success: function(html){
					$(container).html(html);

					$(container).fadeIn("slow");
					
					$(pager).children("#input-page").val(page);
					
					if(page == '1')
						$(pager).children(".prev").hide();
					else
						$(pager).children(".prev").show();
					
					if(page == $(pager).children("#input-numpages").val())
						$(pager).children(".next").hide();
					else
						$(pager).children(".next").show();
					
					if(($(pager).children(".pages").children("a[rel="+(parseInt(page)+1).toString()+"]").length == 0 && 
							parseInt(page)+1 < parseInt($(pager).children("#input-numpages").val())) || 
						($(pager).children(".pages").children("a[rel="+(parseInt(page)-1).toString()+"]").length == 0 && 
							parseInt(page)-1 > 1))
						rebuildPageList(pager);
					$(pager).children(".pages").children("a").removeClass('active');
					$(pager).children(".pages").children("a[rel="+page+"]").addClass('active');
					
					$("#program-results .viewAllCC").unbind('click').click(function(){
						$(this).parent().hide().siblings(".descAll").show();
						return false;
					});
				}
			});
		});
		
		return false;
	});

	$(".search .pages a").unbind('click').click(function(){
		if($(this).hasClass('active'))
			return false;
		
		var pager = $(this).parent().parent();
		var container = $(pager).siblings("ul");
		
		var page = $(this).attr("rel");
		
		var url = $(this).attr("href") + "&page=" + page + "&query=";
		
		url += buildQueryFromMods($(this).parent().parent().parent().parent().attr('id'));
		
		if($(this).parents(".result-container").children(".input-sort").length > 0)
			url = url + "&sort=" + $(this).parents(".result-container").children(".input-sort").val();
		url = url + "&ajaxCode=" + $("#ajaxCode").attr("value");
	
		$(container).fadeOut("slow", function(){
			$.ajax({
				type: "GET",
				url: url,
				success: function(html){
					$(container).html(html);

					$(container).fadeIn("slow");
					
					$(pager).children("#input-page").val(page);
					
					if(page == '1')
						$(pager).children(".prev").hide();
					else
						$(pager).children(".prev").show();
					
					if(page == $(pager).children("#input-numpages").val())
						$(pager).children(".next").hide();
					else
						$(pager).children(".next").show();
					
					if(($(pager).children(".pages").children("a[rel="+(parseInt(page)+1).toString()+"]").length == 0 && 
							parseInt(page)+1 < parseInt($(pager).children("#input-numpages").val())) || 
						($(pager).children(".pages").children("a[rel="+(parseInt(page)-1).toString()+"]").length == 0 && 
							parseInt(page)-1 > 1))
						rebuildPageList(pager);
					$(pager).children(".pages").children("a").removeClass('active');
					$(pager).children(".pages").children("a[rel="+page+"]").addClass('active');
					
					$("#program-results .viewAllCC").unbind('click').click(function(){
						$(this).parent().hide().siblings(".descAll").show();
						return false;
					});
				}
			});
		});
		
		return false;
	});
	
	$(".search .sort .select ul li a").unbind('click').click(function(){
		var span = $(this).parent().parent().parent().siblings('span');
		
		var container = $(span).parent().parent().siblings("ul");
		
		$(span).text($(this).text());
		
		$(this).parent().parent().parent().slideUp();
		
		$(this).parents(".result-container").children(".input-sort").val($(this).attr("rel"));
		
		var url = $(this).attr("href") + "&page=1&query=";
		
		url += buildQueryFromMods($(this).parents(".sort").parent().parent().attr('id'));
		
		if($(this).parents(".result-container").children(".input-sort").length > 0)
			url = url + "&sort=" + $(this).parents(".result-container").children(".input-sort").val();
		
		url = url + "&ajaxCode=" + $("#ajaxCode").attr("value");

		$(container).fadeOut("slow", function(){
			$.ajax({
				type: "GET",
				url: url,
				success: function(html){
					$(container).html(html);

					$(container).fadeIn("slow");
					
					$(container).parents(".toggle-box").contents().find("input#input-page").val('1');
					
					rebuildPageList($(container).parents(".toggle-box").children(".pager"));
					$(container).parents(".toggle-box").children(".pager").children(".pages").children("a[rel=1]").addClass('active');
					
					$(container).parents(".toggle-box").contents().find(".pager .prev").hide();
					$(container).parents(".toggle-box").contents().find(".pager .next").show();
					
					$("#program-results .viewAllCC").unbind('click').click(function(){
						$(this).parent().hide().siblings(".descAll").show();
						return false;
					});
				}
			});
		});
		
		return false;
	});
	
	$("#mainContent a.reveal-on").unbind('click').click(function(){
		$(this).nextAll('div').eq(0).slideToggle();
		
		$(this).toggleClass('reveal-off');

		return false;
	});
	
	$("#modSearch fieldset > ul li input").unbind('click').click(function(){
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('appearance', false); initSearch('program', false); initSearch('person', false); initSearch('committee', false); initSearch('bill', false); updateSession(); updateShareURL();", 1000);
		
		return true;
	});
	
	$("#issueFilterList li .select").unbind('click').click(function(){
		if($(this).parent().hasClass('selected'))
		{
			$(this).parent().removeClass('selected');
			$(this).siblings(".exclude").show();
			$("#issueFilterList li").each(function(){
				if($(this).find(".progcount").html() != '0')
					$(this).show();
			});
			$("#issueSubfilterList").empty();
			$("#issueSubSubList").empty();
			if($("#issueFilterList .selected").length == 0 && !$("#resultsType #checkPrograms").attr('checked'))
				$("#issueFilterList li").show();
		}
		else if($(this).parent().hasClass('excluded'))
			return false;
		else
		{
			$(this).parent().addClass('selected');
			$(this).siblings(".exclude").hide();
			$("#issueFilterList li").each(function(){
				if(!$(this).hasClass('selected'))
					$(this).hide();
			});
		}
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	$("#issueFilterList li .exclude").unbind('click').click(function(){
		if(!$(this).parent().hasClass('excluded'))
		{
			$(this).parent().addClass('excluded');
			$(this).siblings(".progcount").hide();
			$(this).html('+');
		}
		else
		{
			$(this).parent().removeClass('excluded');
			$(this).html('x');
		}
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	$("#modPolicy .select-all").unbind('click').click(function(){
		$("#issueFilterList li").find(".exclude").html('x').show();
		$("#issueFilterList li.selected").removeClass('selected');
		$("#issueFilterList li.excluded").removeClass('excluded');
		$("#issueFilterList li").show();
		$("#issueSubfilterList").empty();
		$("#issueSubSubList").empty();
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	$("#modPolicy .clear-all").unbind('click').click(function(){
		$("#issueFilterList li").find(".exclude").html('+').show();
		$("#issueFilterList li").find(".progcount").hide();
		$("#issueFilterList li.selected").removeClass('selected');
		$("#issueFilterList li").addClass('excluded');
		$("#issueFilterList li").show();
		$("#issueSubfilterList").empty();
		$("#issueSubSubList").empty();
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	
	$("#eventFilterList li .select").unbind('click').click(function(){
		if($(this).parent().hasClass('selected'))
		{
			$(this).parent().removeClass('selected');
			$(this).siblings(".exclude").show();
			$("#eventFilterList li").each(function(){
				if($(this).find(".progcount").html() != '0')
					$(this).show();
			});
			if($("#eventFilterList .selected").length == 0 && !$("#resultsType #checkPrograms").attr('checked'))
				$("#eventFilterList li").show();
		}
		else if($(this).parent().hasClass('excluded'))
			return false;
		else
		{
			$(this).parent().addClass('selected');
			$(this).siblings(".exclude").hide();
			$("#eventFilterList li").each(function(){
				if(!$(this).hasClass('selected'))
					$(this).hide();
			});
		}
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	$("#eventFilterList li .exclude").unbind('click').click(function(){
		if(!$(this).parent().hasClass('excluded'))
		{
			$(this).parent().addClass('excluded');
			$(this).siblings(".progcount").hide();
			$(this).html('+');
		}
		else
		{
			$(this).parent().removeClass('excluded');
			$(this).html('x');
		}
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	$("#modCategory .select-all").unbind('click').click(function(){
		$("#eventFilterList li").find(".exclude").html('x').show();
		$("#eventFilterList li.selected").removeClass('selected');
		$("#eventFilterList li.excluded").removeClass('excluded');
		$("#eventFilterList li").show();
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	$("#modCategory .clear-all").unbind('click').click(function(){
		$("#eventFilterList li").find(".exclude").html('+').show();
		$("#eventFilterList li").find(".progcount").hide();
		$("#eventFilterList li.selected").removeClass('selected');
		$("#eventFilterList li").addClass('excluded');
		$("#eventFilterList li").show();
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	
	$("#modBill fieldset > ul li input").unbind('click').click(function(){
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('bill', false); updateSession(); updateShareURL();", 1000);
		
		return true;
	});
}

function buildAddSearchField(){
	$("#addSearchFields .select a").unbind('click').click(function(){
		var span = $(this).parent().parent().parent().siblings('span');
		
		var rel = $(this).attr("rel");
		
		$(span).text($(this).text());
		
		$(this).parent().parent().parent().siblings('input.add-search-type').val(rel);
		
		$(this).parent().parent().parent().slideUp();
		
		return false;
	});
	
	$("#addSearchForm").unbind('submit').submit(function(){
		if($("#addSearchFields .add-search-input").val() == '')
			return false;
		
		$("#addSearchLink").show();
		
		$("#addSearchFields").hide();
		
		var modCnt = $("#modSearch fieldset > ul li").length;
		if($("#addSearchFields .add-search-type").val() == 'input')
			$("#modSearch fieldset > ul").append("<li><input id='smod" + modCnt + "' type='checkbox' checked='checked' value='" + 
				$("#addSearchFields .add-search-input").val().replace(/\x26/, "%26") + "' /> <label for='smod" + modCnt + "'>" + 
				$("#addSearchFields .add-search-input").val() + "</label></li>");
		else
		{
			var regex = new RegExp(/[^"\s]+|"[^"]+"/g);
			var termMatch = null;
			while(termMatch = regex.exec($("#addSearchFields .add-search-input").val()))
			{
				var termstr = $("#addSearchFields .add-search-type").val() + ":" + termMatch[0];
				$("#modSearch fieldset > ul").append("<li><input id='smod" + modCnt + "' type='checkbox' checked='checked' value='" + 
					termstr.replace(/\x26/, "%26") + "' /> <label for='smod" + modCnt + "'>" + 
					termstr + "</label></li>");
				modCnt++;
			}
		}
		
		buildSearchSelect();
		
		initSearch('appearance', false);
		initSearch('program', false);
		initSearch('person', false);
		initSearch('committee', false);
		initSearch('bill', false);
		updateSession();
		updateShareURL();
	
		return false;
	});
}

function buildInput(){
	$("#advancedSearch .remove").unbind('click').click(function(){
		if($("#advancedSearch fieldset").length == 2)
			$("#advancedSearch .remove").hide();
			
			if($(this).parent().attr('class') == 'dates')
				$(".select li a[rel="+$(this).parent().attr('class')+"]").parent().show();
			
		$(this).parents('fieldset').fadeOut(function(){
			$(this).remove();
			
			if($("#advancedSearch fieldset").length == 9)
				$("#addSearchTerm").show();
			return true;
		});
		
		return false;
	});
	
	$("#advancedSearch .dates input").unbind('focus').focus(function(){
		$(this).removeClass('hint');
		if($(this).val() == $(this).attr('title'))
			$(this).val('');
		return true;
	});
	
	$("#advancedSearch .dates input").unbind('blur').blur(function(){
		if($(this).val() == '')
			$(this).addClass('hint').val($(this).attr('title'));
		return true;
	});
	
	$("#advancedSearch .suggest a.togglelist").unbind('click').click(function(){
		if($(this).siblings('.suggestlist:visible').length > 0)
			$(this).siblings('.suggestlist:visible').slideUp();
		else
		{
			$("#advancedSearch .suggestlist:visible").css('z-index', 11).slideUp();
			$(this).siblings('.suggestlist').css('z-index', 12).slideDown();
		}
		
		$(this).siblings('input').focus();
		return false;
	});
	
	$("#advancedSearch .suggest .suggestlist ul li a").unbind('click').click(function(){
		$(this).parents('.suggestlist').siblings('.inputWrapper').find('input').val($(this).attr('rel'));
		$(this).parents('.suggestlist').slideUp();
		
		return false;
	});
}

function rebuildPageList(div){
	var page = parseInt($(div).children("#input-page").val());
	var numpages = parseInt($(div).children("#input-numpages").val());
	var href = $(div).children(".pages").children("a").attr('href');
	
	$(div).children(".pages").find("span").remove();
	$(div).children(".pages").find("a").remove();
	$(div).children(".pages").append("<span>Page</span>");
	
	if(numpages < 5)
	{
		for(var i = 1; i <= numpages; i++)
			$(div).children(".pages").append("<a class='' rel='" + i.toString() + "' href='" + href + "'>" + i.toString() + "</a>");
	}
	else if(page + 3 >= numpages)
	{
		$(div).children(".pages").append("<span>...</span>");
		for(var i = numpages - 4; i <= numpages; i++)
			$(div).children(".pages").append("<a class='' rel='" + i.toString() + "' href='" + href + "'>" + i.toString() + "</a>");
	}
	else if(page - 3 <= 1)
	{
		for(var i = 1; i <= 5; i++)
			$(div).children(".pages").append("<a class='' rel='" + i.toString() + "' href='" + href + "'>" + i.toString() + "</a>");
		$(div).children(".pages").append("<span>...</span>");
	}
	else
	{
		$(div).children(".pages").append("<span>...</span>");
		for(var i = page - 2; i <= page + 2; i++)
			$(div).children(".pages").append("<a class='' rel='" + i.toString() + "' href='" + href + "'>" + i.toString() + "</a>");
		$(div).children(".pages").append("<span>...</span>");
	}
	
	buildSearchSelect();
}

function initSearch(type, freshLoad)
{
	var resultContainer;
	var resultChecked;
	var searchingStr;
	var resultStr;
	var queryStr;
	
	switch(type)
	{
		case 'appearance':
			resultContainer = $("#appearance-results");
			resultChecked = $("#resultsType #checkAppearances").attr('checked');
			resultStr = " TRANSCRIPT RESULT";
			searchingStr = "SEARCHING TRANSCRIPTS...";
			queryStr = buildQueryFromMods("appearance-results");
		break;
		case 'bill':
			resultContainer = $("#bill-results");
			resultChecked = $("#resultsType #checkBills").attr('checked');
			resultStr = " BILL RESULT";
			searchingStr = "SEARCHING BILLS...";
			queryStr = buildQueryFromMods("bill-results");
		break;
		case 'committee':
			resultContainer = $("#committee-results");
			resultChecked = $("#resultsType #checkCommittees").attr('checked');
			resultStr = " COMMITTEE RESULT";
			searchingStr = "SEARCHING COMMITTEES...";
			queryStr = buildQueryFromMods("committee-results");
		break;
		case 'person':
			resultContainer = $("#peopleResults");
			resultChecked = $("#resultsType #checkPeople").attr('checked');
			resultStr = " PERSON RESULT";
			searchingStr = "SEARCHING PEOPLE...";
			queryStr = buildQueryFromMods("peopleResults");
		break;
		case 'program':
			resultContainer = $("#program-results");
			resultChecked = $("#resultsType #checkPrograms").attr('checked');
			resultStr = " PROGRAM RESULT";
			searchingStr = "SEARCHING PROGRAMS...";
			queryStr = buildQueryFromMods("program-results");
		break;
	}
	
	if(resultChecked)
	{
		var searchurl = resultContainer.children("a").attr("href") + "&page=1&sort=" + resultContainer.find(".input-sort").val();
		if(freshLoad)
		{
			searchurl = searchurl + "&fresh_load=1";
		}

		searchurl += "&query=" + queryStr + "&ajaxCode=" + $("#ajaxCode").attr("value");
	
		resultContainer.children("a").removeClass('reveal-on').addClass('reveal-none');
		resultContainer.children("h2").text(searchingStr);
		Cufon.refresh('.swap-cufon');
		
		resultContainer.find(".input-lasturl").val(searchurl);
		resultContainer.find(".toggle-box").fadeOut('slow', function(){
			$.ajax({
				type: "GET",
				url: searchurl,
				success: function(html){
					if(resultContainer.find(".input-lasturl").val() == searchurl)
					{
						resultContainer.find(".toggle-box").html(html);
						
						var resCnt = parseInt(resultContainer.find(".input-count").val(), 10);
						
						resultContainer.children("h2").text(addCommas(resCnt) + resultStr);
						if(resCnt != 1)
							resultContainer.children("h2").text(resultContainer.children("h2").text() + "S");
						Cufon.refresh('.swap-cufon');
						
						if(resCnt > 0)
							resultContainer.children("a").removeClass('reveal-none').addClass('reveal-on');
						
						if(resultContainer.find("a.reveal-on").hasClass('reveal-off'))
							resultContainer.find(".toggle-box").hide();
						else	
							resultContainer.find(".toggle-box").fadeIn('slow');
						
						buildSearchSelect();
						resultContainer.find(".input-lasturl").val('');
						
						$("#program-results .viewAllCC").unbind('click').click(function(){
							$(this).parent().hide().siblings(".descAll").show();
							return false;
						});
					}
				}
			});
		});
	}
		
}

function updateSession()
{
	var data = new Object();
	var i = 0;

	data["sessionUpdate"] = 1;
	data["ajaxCode"] = $("#ajaxCode").attr("value");

	data["keywords[]"] = new Array();
	data["keywords_checked[]"] = new Array();
	data["use_nickname[]"] = new Array();
	data["use_nickname_checked[]"] = new Array();

	$("#addSearchForm fieldset >  ul li").each(function() {
		if($(this).hasClass("nickname"))
		{
			var word = data["keywords[]"].pop();
			var checked = data["keywords_checked[]"].pop();
			
			data["keywords[]"].push(word);
			data["keywords_checked[]"].push(checked);
			data["use_nickname[]"].push(word);
			
			if($(this).find("input").is(":checked"))
			{
				data["use_nickname_checked[]"].push(word);
			}
		} else {

			data["keywords[]"].push($(this).find("label").text());

			if($(this).find("input").is(":checked"))
			{
				data["keywords_checked[]"].push("y");
			} else {
				data["keywords_checked[]"].push("n");
			}
		}
	});

	t = new String();
	$("#billFilterList li input:checked").each(function() {
		t = t + $(this).attr("rel") + ",";
	});
	data["bill"] = t.substr(0, t.length-1);

	data["dateStart"] = $("#dateStart").attr("value");
	data["dateEnd"] = $("#dateEnd").attr("value");

	if($("#issueFilterList li.selected").length > 0)
	{
		data["topic"] = $("#issueFilterList li.selected").index();
	}
	else if($("#issueFilterList li.excluded").length > 0)
	{
		t = new String();
		$("#issueFilterList li.excluded").each(function(){
			t = t + $(this).index() + ",";
		});
		data["topicEx"] = t.substr(0, t.length-1);
	}
	if($("#issueSubfilterList li.selected").length > 0)
		data["topicChild1"] = $("#issueSubfilterList li.selected").index();
	else if($("#issueSubfilterList li.excluded").length > 0)
	{
		t = new String();
		$("#issueSubfilterList li.excluded").each(function(){
			t = t + $(this).index() + ",";
		});
		data["topicExChild1"] = t.substr(0, t.length-1);
	}
	if($("#issueSubSubList li.selected").length > 0)
		data["topicChild2"] = $("#issueSubSubList li.selected").index();
	else if($("#issueSubSubList li.excluded").length > 0)
	{
		t = new String();
		$("#issueSubSubList li.excluded").each(function(){
			t = t + $(this).index() + ",";
		});
		data["topicExChild2"] = t.substr(0, t.length-1);
	}
	
	if($("#eventFilterList li.selected").length > 0)
		data["category"] = $("#eventFilterList li.selected").index();
	else if($("#eventFilterList li.excluded").length > 0)
	{
		t = new String();
		$("#eventFilterList li.excluded").each(function(){
			t = t + $(this).index() + ",";
		});
		data["categoryEx"] = t.substr(0, t.length-1);
	}
	
	t = new String();
	$("#resultsType li input:checked").each(function() {
		t = t + $(this).attr("rel") + ",";
	});
	data["options"] = t.substr(0, t.length-1);

	// Do a SESSION update
	$.ajax({
		type: "GET",
		data: data	
	});
}

function updateShareURL()
{
	var searchurl = "http://www.c-spanvideo.org/videoLibrary/search-results.php?";
	var i = 0;

	var t = "";
	$("#modSearch ul li input:checkbox:checked").each(function(){
		t += "&key[]=" + $(this).val();
	});

	if($("#checkBills").is(":checked"))
	{
		$("#billFilterList li input:checked").each(function() {
			t += "&bill[]=" + $(this).siblings("label").html();
		});
	}

	t += "&date-from=" + $("#datepickerStart").val();
	t += "&date-to=" + $("#datepickerEnd").val();

	if($("#modPolicy li input:checked").length < $("#modPolicy li input:checkbox").length)
	{
		$("#modPolicy li input:checked").each(function() {
			t += "&tag[]=\"" + $(this).val() + "\"";
		});
	}

	if($("#modCategory li input:checked").length < $("#modCategory li input:checkbox").length)
	{
		$("#modCategory li input:checked").each(function() {
			t += "&category[]=" + $(this).val();
		});
	}

	searchurl += t.substr(1, t.length);
	$("#copyURLValue").val(searchurl);
	$("#copyURLValue").parent().removeClass("copied");
}

function updateDateChart(datenames, datedata, chartgap)
{
	if(dateChart != undefined)
	{
		dateChart.destroy();
		dateChart = null;
	}
	if(datedata && datedata.length > 1)
	{
		var chartdata = [];
		var tickinterval = Math.floor(datedata.length / 2) - 1;
		var chartheight = 150;
		if(chartgap == 'Day')
			chartheight = 165;
		if(tickinterval <= 1)
			tickinterval = datedata.length - 1;
		for(var i in datenames)
			chartdata[i] = {name: datenames[i], y: datedata[i]};
		dateChart = new Highcharts.Chart({
			chart: {renderTo: 'dateChartWrapper', defaultSeriesType: 'area', backgroundColor: false, height: chartheight},
			title: {text: "Programs by " + chartgap},
			xAxis: {categories: datenames, tickmarkPlacement: 'on', tickInterval: tickinterval, showLastLabel: true},
			yAxis: {title: {text: null}, allowDecimals: false, labels: {y: 3}},
			legend: {enabled:false},
			tooltip: {formatter: function(){
					return this.x + "<br/>" + addCommas(this.y) + " Programs";
				}},
			plotOptions: {area: {animation: false, cursor: 'pointer', dataLabels: {enabled:false}, marker: {enabled: false, symbol: 'circle', radius: 2, states: {hover:{enabled:true}}}, point: {events: {click: function(){
					var firstdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					var newbegdate;
					var newenddate;
					if(chartgap == 'Year')
					{
						newbegdate = $.datepicker.parseDate('mm/dd/yy', "01/01/" + this.name.substr(0,4));
						newenddate = $.datepicker.parseDate('mm/dd/yy', "12/31/" + this.name.substr(this.name.length - 4, 4));
					}
					else if(chartgap == 'Month')
					{
						newbegdate = $.datepicker.parseDate('dd M yy', "01 " + this.name);
						newenddate = $.datepicker.parseDate('dd M yy', "01 " + this.name);
						newenddate.setMonth(newenddate.getMonth() + 1);
						newenddate.setDate(0);
					}
					else if(chartgap == 'Day')
					{
						newbegdate = $.datepicker.parseDate('M dd, yy', this.name);
						newenddate = $.datepicker.parseDate('M dd, yy', this.name);
					}
					$("#slider-range").slider('values', 0, Math.ceil((newbegdate-firstdate)/(1000*60*60*24)));
					$("#slider-range").slider('values', 1, Math.ceil((newenddate-firstdate)/(1000*60*60*24)));
				}}}}},
			series: [{name: 'programs', data: chartdata}]
		});
	}
}

function updateTopicList(topicnames, progcounts)
{
	for(var i in topicnames)
	{
		var currenttopic = $("#issueFilterList li[rel='" + topicnames[i] + "']");
		if($("#issueFilterList .selected").length > 0)
		{
			if($(currenttopic).hasClass('selected'))
				$(currenttopic).find(".progcount").html(progcounts[i]).show();
		}
		else if(!$(currenttopic).hasClass('excluded'))
		{
			if(progcounts[i] == '0')
				$(currenttopic).hide();
			else
				$(currenttopic).show();
			$(currenttopic).find(".progcount").html(progcounts[i]).show();
		}
	}
}

function updateTopicChildrenList(childlist, childnames, dispnames, childcounts)
{
	for(var i in childnames)
	{
		var currentchild = $(childlist).find("li[rel='" + childnames[i] + "']");
		if($(currentchild).length == 0)
		{
			if(childcounts[i] == '0')
				$(childlist).append("<li rel=\"" + childnames[i] + "\" style=\"display:none;\"><a href=\"\" class='select'>" + dispnames[i] + "</a><a href='' class='exclude'>x</a><span class='progcount' style='display:block;'>" + childcounts[i] + "</span></li>")
			else
				$(childlist).append("<li rel=\"" + childnames[i] + "\"><a href=\"\" class='select'>" + dispnames[i] + "</a><a href='' class='exclude'>x</a><span class='progcount' style='display:block;'>" + childcounts[i] + "</span></li>")
		}
		if($(childlist).find(".selected").length > 0)
		{
			if($(currentchild).hasClass('selected'))
				$(currentchild).find(".progcount").html(childcounts[i]).show();
		}
		else if(!$(currentchild).hasClass('excluded'))
		{
			if(childcounts[i] == '0')
				$(currentchild).hide();
			else
				$(currentchild).show();
			$(currentchild).find(".progcount").html(childcounts[i]).show();
		}
	}
	
	$(childlist).find("li .select").unbind('click').click(function(){
		if($(this).parent().hasClass('selected'))
		{
			$(this).parent().removeClass('selected');
			$(this).siblings(".exclude").show();
			$(childlist).find("li").each(function(){
				if($(this).find(".progcount").html() != '0')
					$(this).show();
			});
			if($(childlist).attr('id') == 'issueSubfilterList')
				$("#issueSubSubList").empty();
			if(!$("#resultsType #checkPrograms").attr('checked'))
			{
				if($("#issueFilterList .selected").length == 0)
					$("#issueFilterList li").show();
				if($("#issueSubfilterList .selected").length == 0)
					$("#issueSubfilterList li").show();
				if($("#issueSubSubList .selected").length == 0)
					$("#issueSubSubList li").show();
			}
		}
		else if($(this).parent().hasClass('excluded'))
			return false;
		else
		{
			$(this).parent().addClass('selected');
			$(this).siblings(".exclude").hide();
			$(childlist).find("li").each(function(){
				if(!$(this).hasClass('selected'))
					$(this).hide();
			});
		}
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
	$(childlist).find("li .exclude").unbind('click').click(function(){
		if(!$(this).parent().hasClass('excluded'))
		{
			$(this).parent().addClass('excluded');
			$(this).siblings(".progcount").hide();
			$(this).html('+');
		}
		else
		{
			$(this).parent().removeClass('excluded');
			$(this).html('x');
		}
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initSearch('program', false); initSearch('appearance', false); updateSession(); updateShareURL();", 1000);
		
		return false;
	});
}

function updateCategoryList(categorynames, progcounts)
{
	for(var i in categorynames)
	{
		var currentcategory = $("#eventFilterList li[rel='" + categorynames[i] + "']");
		if($("#eventFilterList .selected").length > 0)
		{
			if($(currentcategory).hasClass('selected'))
				$(currentcategory).find(".progcount").html(progcounts[i]).show();
		}
		else if(!$(currentcategory).hasClass('excluded'))
		{
			if(progcounts[i] == '0')
				$(currentcategory).hide();
			else
				$(currentcategory).show();
			$(currentcategory).find(".progcount").html(progcounts[i]).show();
		}
	}
}

function buildNewQueryFromMods(type){
	var nicknameregex = new RegExp(/nickname:([^"\s]+|"[^"]+"):([^"\s]+|"[^"]+")/);
	var nickcontentregex = new RegExp(/nickname(\w+):([^"\s]+|"[^"]+"):([^"\s]+|"[^"]+")/);
	var query = "";
	var queryregex = new RegExp(/(tag|organization|person|persontitle|title|loc|summary|content|bioid):([^"\s]+|"[^"]+")/);
	var articleregex = new RegExp(/\w+:(a|an|the)$/);
	
	$("#modSearch ul li input:checkbox:checked").each(function(){
		if(nicknamematch = nicknameregex.exec($(this).val()))
		{
			var nick = false;
			$("#modSearch ul li input.nickname").each(function () {
				if($(this).attr("rel") == nicknamematch[1] && $(this).is(":checked"))
				{
					nick = nicknamematch[2];
				}
			});
			
			if(nick)
			{
				query += " AND " + nick;
			} else {
				query += " AND " + nicknamematch[1];
			}
		} else if(nicknamematch = nickcontentregex.exec($(this).val()))
		{
			var nick = false;
			$("#modSearch ul li input.nickname").each(function () {
				if($(this).attr("rel") == nicknamematch[2] && $(this).is(":checked"))
				{
					nick = nicknamematch[3];
				}
			});
			
			if(nick)
			{
				query += " AND " + nick;
			} else {
				query += " AND " + nicknamematch[1] + ":" + nicknamematch[2];
			}
		} else if(articlematch = articleregex.exec($(this).val()));
		else if(querymatch = queryregex.exec($(this).val()))
		{
			if(querymatch[1] == 'person')
				query += " AND personname:" + querymatch[2];
//				query += " AND ( personLast:" + querymatch[2] + " OR personFirst:" + querymatch[2] + " )";
			else if(querymatch[1] == 'tag')
				query += " AND tag:" + querymatch[2];
//				query += " AND ( tagHead:" + querymatch[2] + " OR tagChild1:" + querymatch[2] + " OR tagChild2:" + querymatch[2] + " )";
			else if(querymatch[1] == 'organization')
			{
				if(type == 'peopleResults')
					query += " AND affiliation:" + querymatch[2];
				else
					query += " AND sponsor:" + querymatch[2];
			}
			else if(querymatch[1] == 'title')
				query += " AND subject:" + querymatch[2];
			else if(querymatch[1] == 'loc')
				query += " AND location:" + querymatch[2];
			else if(querymatch[1] == 'summary')
				query += " AND abstract:" + querymatch[2];
			else if(querymatch[1] == 'content')
				query += " AND ccText:" + querymatch[2];
			else if(querymatch[1] == 'bioid')
				query += " AND personBioid:" + querymatch[2];
			else if(querymatch[1] == 'persontitle')
				query += " AND personTitle:" + querymatch[2];
		}	
		else if($(this).attr("class") != "nickname") 
			query += " AND " + $(this).val();
	});

	if(type == "program-results" || type == "appearance-results")
	{
		if($("#issueFilterList .selected").length > 0)
			query += ' AND tagHead:"' + $("#issueFilterList .selected").attr('rel') + '"';
		else
		{
			$("#issueFilterList .excluded").each(function(){
				query += ' AND -tagHead:"' + $(this).attr('rel') + '"';
			});
		}
		if($("#issueSubfilterList .selected").length > 0)
			query += ' AND tagChild1:"' + $("#issueSubfilterList .selected").attr('rel') + '"';
		else
		{
			$("#issueSubfilterList .excluded").each(function(){
				query += ' AND -tagChild1:"' + $(this).attr('rel') + '"';
			});
		}
		if($("#issueSubSubList .selected").length > 0)
			query += ' AND tagChild2:"' + $("#issueSubSubList .selected").attr('rel') + '"';
		else
		{
			$("#issueSubSubList .excluded").each(function(){
				query += ' AND -tagChild2:"' + $(this).attr('rel') + '"';
			});
		}

		if($("#eventFilterList .selected").length > 0)
			query += ' AND category:"' + $("#eventFilterList .selected").attr('rel') + '"';
		else if($("#eventFilterList .excluded").length > 0)
		{
			var category_str = '';
			$("#eventFilterList li").each(function(){
				if(!$(this).hasClass('excluded'))
					category_str += ' OR category:"' + $(this).attr('rel') + '"';
			});
			query += " AND ( " + category_str.substr(4) + " )";
		}	
	}
	
	if(type == "program-results" || type == "appearance-results" || type == "bill-results")
		query = query + ' AND -category:"C-SPAN Promotion" AND eventDate:[' + $("#modDate #dateStart").val().substr(0,4)+'-'+$("#modDate #dateStart").val().substr(4,2)+'-'+$("#modDate #dateStart").val().substr(6,2) + 'T03:00:00Z TO ' + $("#modDate #dateEnd").val().substr(0,4)+'-'+$("#modDate #dateEnd").val().substr(4,2)+'-'+$("#modDate #dateEnd").val().substr(6,2) + 'T05:00:00Z]';
	
	return query.substr(5);
}

function buildQueryFromMods(type){
	if(type == "program-results")
		return buildNewQueryFromMods(type);
	var url = "";
	var nicknameregex = new RegExp(/nickname:([^"\s]+|"[^"]+"):([^"\s]+|"[^"]+")/);
	var nickcontentregex = new RegExp(/nickname(\w+):([^"\s]+|"[^"]+"):([^"\s]+|"[^"]+")/);
	var query = "";
	var tagregex = new RegExp(/tag:([^"\s]+|"[^"]+")/);
	var orgregex = new RegExp(/organization:([^"\s]+|"[^"]+")/);
	var articleregex = new RegExp(/\w+:(a|an|the)$/);
	
	$("#modSearch ul li input:checkbox:checked").each(function(){
		if(nicknamematch = nicknameregex.exec($(this).val()))
		{
			var nick = false;
			$("#modSearch ul li input.nickname").each(function () {
				if($(this).attr("rel") == nicknamematch[1] && $(this).is(":checked"))
				{
					nick = nicknamematch[2];
				}
			});
			
			if(nick)
			{
				query = query + " " + nick;
			} else {
				query = query + " " + nicknamematch[1];
			}
		} else if(nicknamematch = nickcontentregex.exec($(this).val()))
		{
			var nick = false;
			$("#modSearch ul li input.nickname").each(function () {
				if($(this).attr("rel") == nicknamematch[2] && $(this).is(":checked"))
				{
					nick = nicknamematch[3];
				}
			});
			
			if(nick)
			{
				query = query + " " + nick;
			} else {
				query = query + " " + nicknamematch[1] + ":" + nicknamematch[2];
			}
		} else if(articlematch = articleregex.exec($(this).val()))
			url = url + " " + articlematch[1];
		else if(tagmatch = tagregex.exec($(this).val()))
			query = query + " ( topic:" + tagmatch[1] + " or family:" + tagmatch[1] + " or keyword:" + tagmatch[1] + " )";
		else if(type == "peopleResults" && (orgmatch = orgregex.exec($(this).val())))
			query = query + " affiliation:" + orgmatch[1];
		else if($(this).attr("class") != "nickname") 
			query = query + " " + $(this).val();
	});

	if(type == "appearance-results")
	{
		if($("#issueFilterList .selected").length > 0)
			query += ' topic:"' + $("#issueFilterList .selected").attr('rel') + '"';
		else
		{
			$("#issueFilterList .excluded").each(function(){
				query += ' -topic:"' + $(this).attr('rel') + '"';
			});
		}
		if($("#issueSubfilterList .selected").length > 0)
			query += ' family:"' + $("#issueSubfilterList .selected").attr('rel') + '"';
		else
		{
			$("#issueSubfilterList .excluded").each(function(){
				query += ' -family:"' + $(this).attr('rel') + '"';
			});
		}
		if($("#issueSubSubList .selected").length > 0)
			query += ' keyword:"' + $("#issueSubSubList .selected").attr('rel') + '"';
		else
		{
			$("#issueSubSubList .excluded").each(function(){
				query += ' -keyword:"' + $(this).attr('rel') + '"';
			});
		}

		if($("#eventFilterList .selected").length > 0)
			query += ' category:"' + $("#eventFilterList .selected").attr('rel') + '"';
		else if($("#eventFilterList .excluded").length > 0)
		{
			var category_str = '';
			$("#eventFilterList li").each(function(){
				if(!$(this).hasClass('excluded'))
					category_str += ' or category:"' + $(this).attr('rel') + '"';
			});
			query += " ( " + category_str.substr(4) + " ) ";
		}
	}
	
	if(type == "bill-results")
	{
		var bill_str = "";
		var billChecked = $("#modBill ul li input:checkbox:checked");
		var num_checked = $(billChecked).length;
		if(!$("#modBill ul li input.include-amdt").is(":checked"))
			query = query + ' ' + $("#modBill ul li input.include-amdt").val();
		else
			num_checked--;
		
		switch(num_checked)
		{
			case 1:
				if($(billChecked).eq(0).val().indexOf("+or+billstatus") >= 0)
					query = query + ' ( ' + $(billChecked).eq(0).val() + ' ) ';
				else if(!$(billChecked).eq(0).hasClass('include-amdt'))
					query = query + ' ' + $(billChecked).eq(0).val();
				break;
			case $("#modBill ul li input:checkbox").length - 1:
			case 0:
				break;
			default:
				$(billChecked).each(function(){
					if(!$(this).hasClass('include-amdt'))
						bill_str = bill_str + ' or ' + $(this).val();
				});
				query = query + " ( " + bill_str.substr(4) + " ) ";
				break;
		}

	}
	
	if(type == "appearance-results" || type == "bill-results")
		query = query + ' -category:"C-SPAN Promotion" date:' + $("#modDate #dateStart").val() + '-' + $("#modDate #dateEnd").val();
	
	return query;
}

function addCommas(num)
{
	var numstr = num.toString();
	var numregex = /(\d+)(\d{3})/;
	while (numregex.test(numstr))
		numstr = numstr.replace(numregex,'$1' + ',' + '$2');
	
	return numstr; 
}

$(document).ready(function(){

	if($("#appearance-results").length > 0)
	{
		if($("#resultsType #checkAppearances").attr('checked'))
			initSearch('appearance', true);
		else
		{
			$("#appearance-results").hide();
			$("#appearance-results > a").removeClass('reveal-on').addClass('reveal-none');
		}
	}
	
	if($("#program-results").length > 0)
	{
		if($("#resultsType #checkPrograms").attr('checked'))
			initSearch('program', true);
		else
		{
			$("#program-results").hide();
			$("#program-results > a").removeClass('reveal-on').addClass('reveal-none');
		}
	}
	
	if($("#peopleResults").length > 0)
	{
		if($("#resultsType #checkPeople").attr('checked'))
			initSearch('person', true);
		else
		{
			$("#peopleResults").hide();
			$("#peopleResults > a").removeClass('reveal-on').addClass('reveal-none');
		}
	}
	
	if($("#committee-results").length > 0)
	{
		if($("#resultsType #checkCommittees").attr('checked'))
		{
			initSearch('committee', true);
		}
		else 
		{
			$("#committee-results").hide();
			$("#committee-results > a").removeClass('reveal-on').addClass('reveal-none');
		}
	}
	
	if($("#bill-results").length > 0)
	{
		if($("#resultsType #checkBills").attr('checked'))
		{
			initSearch('bill', true);
			$("#modBill").slideDown('normal');
		}
		else
		{
			$("#bill-results").hide();
			$("#bill-results > a").removeClass('reveal-on').addClass('reveal-none');
		}
	}
	
	/* DATE SLIDER FUNCTION */
	if($("#modDate").length > 0)
	{
		$(function() {
			var firstdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
			var today = new Date();
			var lastdate = $.datepicker.parseDate('yy-mm-dd', $.datepicker.formatDate('yy-mm-dd', today));
			var begdate = $.datepicker.parseDate('yymmdd', $("#modDate #dateStart").val());
			var enddate = $.datepicker.parseDate('yymmdd', $("#modDate #dateEnd").val());
			var dayrange = Math.ceil((lastdate-firstdate)/(1000*60*60*24));
			var begdays = Math.ceil((begdate-firstdate)/(1000*60*60*24));
			var enddays = Math.ceil((enddate-firstdate)/(1000*60*60*24));
			
			$("#slider-range").slider({
				range: true,
				min: 0,
				max: dayrange,
				values: [begdays, enddays],
				slide: function(event, ui) {
					var firstdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					var begdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					begdate.setDate(firstdate.getDate()+ui.values[0]);
					var enddate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					enddate.setDate(firstdate.getDate()+ui.values[1]);
					$("#modDate #dateStart").val($.datepicker.formatDate('yymmdd', begdate));
					$("#modDate #dateEnd").val($.datepicker.formatDate('yymmdd', enddate));
					$("#modDate #datepickerStart").val($.datepicker.formatDate('mm/dd/yy', begdate));
					$("#modDate #datepickerEnd").val($.datepicker.formatDate('mm/dd/yy', enddate));
					clearTimeout(searchTimer);
				},
				change: function(event, ui) {
					var firstdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					var begdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					begdate.setDate(firstdate.getDate()+ui.values[0]);
					var enddate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					enddate.setDate(firstdate.getDate()+ui.values[1]);
					$("#modDate #dateStart").val($.datepicker.formatDate('yymmdd', begdate));
					$("#modDate #dateEnd").val($.datepicker.formatDate('yymmdd', enddate));
					$("#modDate #datepickerStart").val($.datepicker.formatDate('mm/dd/yy', begdate));
					$("#modDate #datepickerEnd").val($.datepicker.formatDate('mm/dd/yy', enddate));
					$("#datepickerStart").datepicker('option', 'maxDate', enddate);
					$("#datepickerEnd").datepicker('option', 'minDate', begdate);
					clearTimeout(searchTimer);
					searchTimer = setTimeout("initSearch('appearance', false); initSearch('program', false); initSearch('bill', false); updateSession(); updateShareURL();", 1000);
				}
			});
			
			$("#datepickerStart").datepicker({
				gotoCurrent: true,
				changeMonth: true,
				changeYear: true,
				dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
				minDate: firstdate,
				maxDate: enddate,
				yearRange: '1900:' + lastdate.getFullYear(),
				altField: '#dateStart',
				altFormat: 'yymmdd',
				onSelect: function(dateText, inst){
					var firstdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					var newdate = $.datepicker.parseDate('mm/dd/yy', dateText);
					
					$("#slider-range").slider('values', 0, Math.ceil((newdate-firstdate)/(1000*60*60*24)));
					$("#datepickerEnd").datepicker('option', 'minDate', newdate);
				}
			});
			
			$("#datepickerEnd").datepicker({
				gotoCurrent: true,
				changeMonth: true,
				changeYear: true,
				dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
				minDate: begdate,
				maxDate: today,
				yearRange: '1900:' + (parseInt($("#dateEnd").val().substr(0,4), 10) + 1).toString(),
				altField: '#dateEnd',
				altFormat: 'yymmdd',
				onSelect: function(dateText, inst){
					var firstdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
					var newdate = $.datepicker.parseDate('mm/dd/yy', dateText);
					
					$("#slider-range").slider('values', 1, Math.ceil((newdate-firstdate)/(1000*60*60*24)));
					$("#datepickerStart").datepicker('option', 'maxDate', newdate);
				}
			});
			
			$("#modDate #datepickerStart").val($.datepicker.formatDate('mm/dd/yy', begdate));
			$("#modDate #datepickerEnd").val($.datepicker.formatDate('mm/dd/yy', enddate));
			
			$("#modDateCongress .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();
				
				var firstdate = $.datepicker.parseDate('yy-mm-dd', '1900-01-01');
				var congressdates = $(this).attr("rel").split('-');
				congressdates[0] = $.datepicker.parseDate('yymmdd', congressdates[0]);
				congressdates[0] = Math.ceil((congressdates[0]-firstdate)/(1000*60*60*24));
				congressdates[1] = $.datepicker.parseDate('yymmdd', congressdates[1]);
				congressdates[1] = Math.ceil((congressdates[1]-firstdate)/(1000*60*60*24));
				
				if($("#slider-range").slider('values', 1) < congressdates[0])
				{
					$("#slider-range").slider('values', 1, congressdates[1]);
					$("#slider-range").slider('values', 0, congressdates[0]);
				}
				else
				{
					$("#slider-range").slider('values', 0, congressdates[0]);
					$("#slider-range").slider('values', 1, congressdates[1]);
				}
				
				return false;
			});
		});
	}

	updateSession();
	updateShareURL();
});

