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$)/;

/* 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).nextAll('fieldset').eq(0).slideToggle();
		
		$(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(){
						initPeople();
					});
				else
					$("#peopleResults").slideUp('normal', function(){
						$("#peopleResults .toggle-box").hide();
						$("#peopleResults > a").removeClass('reveal-on').addClass('reveal-none');
						$("#peopleResults > h2").text("SEARCHING PEOPLE...");
						Cufon.refresh('#peopleResults > h2');
					});
				break;
			case 'Programs':
				if(resultChecked)
					$("#program-results").slideDown('normal', function(){
						initPrograms();
					});
					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('#program-results > h2');
					});
				break;
			case 'Appearances':
				if(resultChecked)
					$("#appearance-results").slideDown('normal', function(){
						initAppearances();
					});
					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('#appearance-results > h2');
					});
				break;
			case 'Committees':
				if(resultChecked)
					$("#committee-results").slideDown('normal', function(){
						initCommittees();
					});
					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('#committee-results > h2');
					});
				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(1979,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("initPeople(); initCommittees(); initPrograms(); initAppearances();", 1000);
		else
			searchTimer = setTimeout("initPrograms(); initAppearances();", 1000);
		
		return false;
	});

	$(".clear-all").click(function(){
		$(this).parent().next().find('input').attr("checked", "");
		
		clearTimeout(searchTimer);
		if($(this).parents("#modSearch").length > 0)
			searchTimer = setTimeout("initPeople(); initCommittees(); initPrograms(); initAppearances();", 1000);
		else
			searchTimer = setTimeout("initPrograms(); initAppearances();", 1000);
		
		return false;
	});
	
	/* CLIPBOARD FUNCTIONS */
	/* hide clipboard for now
		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").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
		{
			$("#advancedSearch .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();
		
		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();
		
		$(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');
				}
			});
		});
		
		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();
		
		$(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');
				}
			});
		});
		
		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();
		
		$(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();
				}
			});
		});
		
		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(){
		if($("#modSearch input:checkbox:checked").length == 0)
			return false;
		
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initAppearances(); initPrograms(); initPeople(); initCommittees();", 1000);
		
		return true;
	});
	
	$("#modPolicy fieldset > ul li input").unbind('click').click(function(){
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initPrograms(); initAppearances();", 1000);
		
		return true;
	});
	
	$("#modCategory fieldset > ul li input").unbind('click').click(function(){
		clearTimeout(searchTimer);
		searchTimer = setTimeout("initPrograms(); initAppearances();", 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();
		
		if($("#addSearchFields .add-search-type").val() == 'input')
			$("#modSearch fieldset > ul").append("<li><input type='checkbox' checked='checked' value='" + 
				$("#addSearchFields .add-search-input").val().replace(/\x26/, "%26") + "' /><span><em>" + 
				$("#addSearchFields .add-search-input").val() + "</em></span></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 type='checkbox' checked='checked' value='" + 
					termstr.replace(/\x26/, "%26") + "' /><span><em>" + 
					termstr + "</em></span></li>");
			}
		}
		
		buildSearchSelect();
		
		initAppearances();
		initPrograms();
		initPeople();
		initCommittees();
		
		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('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").empty();
	$(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 initAppearances()
{
	if($("#resultsType #checkAppearances").attr('checked'))
	{
		var appurl = $("#appearance-results > a").attr("href") + "&page=1&sort=" + $("#appearance-results .input-sort").val();
		appurl += "&query=" + buildQueryFromMods("appearance-results");
	
		$("#appearance-results > a").removeClass('reveal-on').addClass('reveal-none');
		$("#appearance-results > h2").text("SEARCHING TRANSCRIPTS...");
		Cufon.refresh('#appearance-results > h2');
		
		$("#appearance-results .input-lasturl").val(appurl);
		$("#appearance-results .toggle-box").fadeOut('slow', function(){
			$.ajax({
				type: "GET",
				url: appurl,
				success: function(html){
					if($("#appearance-results .input-lasturl").val() == appurl)
					{
						$("#appearance-results .toggle-box").html(html);
						
						$("#appearance-results > h2").text(addCommas($("#appearance-results #input-clipcount").val()) + " TRANSCRIPT RESULT");
						if($("#appearance-results #input-clipcount").val() != '1')
							$("#appearance-results > h2").text($("#appearance-results > h2").text() + "S");
						Cufon.refresh('#appearance-results > h2');
						
						$("#appearance-results > a").removeClass('reveal-none').addClass('reveal-on');
						
						if($("#appearance-results a.reveal-on").hasClass('reveal-off'))
							$("#appearance-results .toggle-box").hide();
						else	
							$("#appearance-results .toggle-box").fadeIn('slow');
						
						buildSearchSelect();
						$("#appearance-results .input-lasturl").val('');
					}
				}
			});
		});
	}
}

function initPrograms(){
	if($("#resultsType #checkPrograms").attr('checked'))
	{
		var progurl = $("#program-results > a").attr("href") + "&page=1&sort=" + $("#program-results .input-sort").val();
		progurl += "&query=" + buildQueryFromMods("program-results");
		
		$("#program-results > a").removeClass('reveal-on').addClass('reveal-none');
		$("#program-results > h2").text("SEARCHING PROGRAMS...");
		Cufon.refresh('#program-results > h2');
		
		$("#program-results .input-lasturl").val(progurl);
		$("#program-results .toggle-box").fadeOut('slow', function(){
			$.ajax({
				type: "GET",
				url: progurl,
				success: function(html){
					if($("#program-results .input-lasturl").val() == progurl)
					{
						$("#program-results .toggle-box").html(html);
						
						$("#program-results > h2").text(addCommas($("#program-results #input-progcount").val()) + " PROGRAM RESULT");
						if($("#program-results #input-progcount").val() != '1')
							$("#program-results > h2").text($("#program-results > h2").text() + "S");
						Cufon.refresh('#program-results > h2');
						
						$("#program-results > a").removeClass('reveal-none').addClass('reveal-on');
						
						if($("#program-results a.reveal-on").hasClass('reveal-off'))
							$("#program-results .toggle-box").hide();
						else	
							$("#program-results .toggle-box").fadeIn('slow');
						
						buildSearchSelect();
						$("#program-results .input-lasturl").val('');
					}
				}
			});
		});
	}
}

function initPeople(){
	if($("#resultsType #checkPeople").attr('checked'))
	{
		var psnurl = $("#peopleResults > a").attr("href") + "&page=1&sort=" + $("#peopleResults .input-sort").val();
		psnurl += "&query=" + buildQueryFromMods("peopleResults");
		
		$("#peopleResults > a").removeClass('reveal-on').addClass('reveal-none');
		$("#peopleResults > h2").text("SEARCHING PEOPLE...");
		Cufon.refresh('#peopleResults > h2');
		
		$("#peopleResults .input-lasturl").val(psnurl);
		$("#peopleResults .toggle-box").fadeOut('slow', function(){
			$.ajax({
				type: "GET",
				url: psnurl,
				success: function(html){
					if($("#peopleResults .input-lasturl").val() == psnurl)
					{
						$("#peopleResults .toggle-box").html(html);
						
						$("#peopleResults > h2").text(addCommas($("#peopleResults #input-count").val()) + " PERSON RESULT");
						if($("#peopleResults #input-count").val() != '1')
							$("#peopleResults > h2").text($("#peopleResults > h2").text() + "S");
						Cufon.refresh('#peopleResults > h2');
						
						$("#peopleResults > a").removeClass('reveal-none').addClass('reveal-on');
						
						if($("#peopleResults a.reveal-on").hasClass('reveal-off'))
							$("#peopleResults .toggle-box").hide();
						else
							$("#peopleResults .toggle-box").fadeIn('slow');
						
						buildSearchSelect();
						$("#peopleResults .input-lasturl").val('');
					}
				}
			});
		});
	}
}

function initCommittees(){
	if($("#resultsType #checkCommittees").attr('checked'))
	{
		var cmteurl = $("#committee-results > a").attr("href") + "&page=1&sort=" + $("#committee-results .input-sort").val();
		cmteurl += "&query=" + buildQueryFromMods("committee-results");
		
		$("#committee-results > a").removeClass('reveal-on').addClass('reveal-none');
		$("#committee-results > h2").text("SEARCHING COMMITTEES...");
		Cufon.refresh('#committee-results > h2');
		
		$("#committee-results .input-lasturl").val(cmteurl);
		$("#committee-results .toggle-box").fadeOut('slow', function(){
			$.ajax({
				type: "GET",
				url: cmteurl,
				success: function(html){
					if($("#committee-results .input-lasturl").val() == cmteurl)
					{
						$("#committee-results .toggle-box").html(html);
						
						$("#committee-results > h2").text(addCommas($("#committee-results #input-cmtecount").val()) + " COMMITTEE RESULT");
						if($("#committee-results #input-cmtecount").val() != '1')
							$("#committee-results > h2").text($("#committee-results > h2").text() + "S");
						Cufon.refresh('#committee-results > h2');
						
						$("#committee-results > a").removeClass('reveal-none').addClass('reveal-on');
						
						if($("#committee-results a.reveal-on").hasClass('reveal-off'))
							$("#committee-results .toggle-box").hide();
						else
							$("#committee-results .toggle-box").fadeIn('slow');
						
						buildSearchSelect();
						$("#committee-results .input-lasturl").val('');
					}
				}
			});
		});
	}
}

function buildQueryFromMods(type){
	var url = "";
	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(articlematch = articleregex.exec($(this).val()))
			url = url + " " + articlematch[1];
		else if(tagmatch = tagregex.exec($(this).val()))
			url = url + " ( topic:" + tagmatch[1] + " or family:" + tagmatch[1] + " or keyword:" + tagmatch[1] + " )";
		else if(type == "peopleResults" && (orgmatch = orgregex.exec($(this).val())))
			url = url + " affiliation:" + orgmatch[1];
		else
			url = url + " " + $(this).val();
	});
	
	if(type == "program-results" || type == "appearance-results")
	{
		var policy_str = "";
		var category_str = "";
		
		switch($("#modPolicy ul li input:checkbox:checked").length)
		{
			case 0:
				$("#modPolicy ul li input:checkbox").each(function(){
					policy_str = policy_str + ' -topic:"' + $(this).val() + '"';
				});
				url = url + policy_str;
				break;
			case 1:
				url = url + ' topic:"' + $("#modPolicy ul li input:checkbox:checked").val() + '"';
				break;
			case $("#modPolicy ul li input:checkbox").length:
				break;
			default:
				$("#modPolicy ul li input:checkbox:checked").each(function(){
					policy_str = policy_str + ' or topic:"' + $(this).val() + '"';
				});
				url = url + " ( " + policy_str.substr(4) + " ) ";
				break;
		}
		
		switch($("#modCategory ul li input:checkbox:checked").length)
		{
			case 0:
				$("#modCategory ul li input:checkbox").each(function(){
					category_str = category_str + ' -category:"' + $(this).val() + '"';
				});
				url = url + category_str;
				break;
			case 1:
				url = url + ' category:"' + $("#modCategory ul li input:checkbox:checked").val() + '"';
				break;
			case $("#modCategory ul li input:checkbox").length:
				break;
			default:
				$("#modCategory ul li input:checkbox:checked").each(function(){
					category_str = category_str + ' or category:"' + $(this).val() + '"';
				});
				url = url + " ( " + category_str.substr(4) + " ) ";
				break;
		}
		
		// Hide single-day search for now
//		if($("#modDate #oneDay:checked").length > 0)
//			url = url + ' -category:"C-SPAN Promotion" date:' + $("#modDate #dateStart").val() + '-' + $("#modDate #dateStart").val();
//		else
//			url = url + ' -category:"C-SPAN Promotion" date:' + $("#modDate #dateStart").val() + '-' + $("#modDate #dateEnd").val();
		url = url + ' -category:"C-SPAN Promotion" date:' + $("#modDate #dateStart").val() + '-' + $("#modDate #dateEnd").val();
	}
	
	return url;
}

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'))
			initAppearances();
		else
			$("#appearance-results").hide();
	}
	
	if($("#program-results").length > 0)
	{
		if($("#resultsType #checkPrograms").attr('checked'))
			initPrograms();
		else
			$("#program-results").hide();
	}
	
	if($("#peopleResults").length > 0)
	{
		if($("#resultsType #checkPeople").attr('checked'))
			initPeople();
		else
			$("#peopleResults").hide();
	}
	
	if($("#committee-results").length > 0)
	{
		if($("#resultsType #checkCommittees").attr('checked'))
			initCommittees();
		else
			$("#committee-results").hide();
	}
	
	/* DATE SLIDER FUNCTION */
	if($("#modDate").length > 0)
	{
		$(function() {
			var firstdate = $.datepicker.parseDate('yy-mm-dd', '1979-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', '1979-01-01');
					var begdate = $.datepicker.parseDate('yy-mm-dd', '1979-01-01');
					begdate.setDate(firstdate.getDate()+ui.values[0]);
					var enddate = $.datepicker.parseDate('yy-mm-dd', '1979-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', '1979-01-01');
					var begdate = $.datepicker.parseDate('yy-mm-dd', '1979-01-01');
					begdate.setDate(firstdate.getDate()+ui.values[0]);
					var enddate = $.datepicker.parseDate('yy-mm-dd', '1979-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));
					searchTimer = setTimeout("initAppearances(); initPrograms();", 1000);
				}
			});
			
			$("#datepickerStart").datepicker({
				gotoCurrent: true,
				changeMonth: true,
				changeYear: true,
				dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
				minDate: firstdate,
				maxDate: enddate,
				yearRange: '1979:' + lastdate.getFullYear(),
				altField: '#dateStart',
				altFormat: 'yymmdd',
				onSelect: function(dateText, inst){
					var firstdate = $.datepicker.parseDate('yy-mm-dd', '1979-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: '1979:' + (parseInt($("#dateEnd").val().substr(0,4), 10) + 1).toString(),
				altField: '#dateEnd',
				altFormat: 'yymmdd',
				onSelect: function(dateText, inst){
					var firstdate = $.datepicker.parseDate('yy-mm-dd', '1979-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));
			
			// For now, make date fields in search modifiers readonly
//			$("#modDate #datepickerStart").unbind('blur').blur(function(){
//				if(!$(this).val().match(dateregex))
//					return false;
//				
//				var firstdate = $.datepicker.parseDate('yy-mm-dd', '1979-01-01');
//				var newdate = $.datepicker.parseDate('mm/dd/yy', $(this).val());
//				var enddate = $.datepicker.parseDate('yymmdd', $("#modDate #dateEnd").val());
//				
//				if($.datepicker.formatDate('yymmdd', newdate) == $("#modDate #dateStart").val() || newdate > enddate)
//					return false;
//				
//				clearTimeout(searchTimer);
//				$("#slider-range").slider('values', 0, Math.ceil((newdate-firstdate)/(1000*60*60*24)));
//			});
//			
//			$("#modDate #datepickerEnd").unbind('blur').blur(function(){
//				if(!$(this).val().match(dateregex))
//					return false;
//				
//				var firstdate = $.datepicker.parseDate('yy-mm-dd', '1979-01-01');
//				var newdate = $.datepicker.parseDate('mm/dd/yy', $(this).val());
//				var begdate = $.datepicker.parseDate('yymmdd', $("#modDate #dateStart").val());
//				
//				if($.datepicker.formatDate('yymmdd', newdate) == $("#modDate #dateEnd").val() || newdate < begdate)
//					return false;
//				
//				clearTimeout(searchTimer);
//				$("#slider-range").slider('values', 1, Math.ceil((newdate-firstdate)/(1000*60*60*24)));
//			});

			//Comment out single-day search functionality for now			
//			$("#modDate #oneDay").unbind('click').click(function(){
//				var firstdate = $.datepicker.parseDate('yy-mm-dd', '1979-01-01');
//				var today = new Date();
//				var lastdate = $.datepicker.parseDate('yy-mm-dd', $.datepicker.formatDate('yy-mm-dd', today));
//				
//				if($("#modDate #oneDay:checked").length > 0)
//				{
//					$("#modDate #dateEnd").parent().hide();
//					$("#modDate #dateStart").siblings("label").text('Date:');
//					$("#slider-range").slider('disable');
//					$("#slider-range").slider('option', 'range', 'min');
//					$("#slider-range").slider('enable');
//				}
//				else
//				{
//					$("#modDate #dateEnd").parent().show();
//					$("#modDate #dateStart").siblings("label").text('Start:');
//					$("#slider-range").slider('disable');
//					$("#slider-range").slider('option', 'range', true);
//					$("#slider-range").slider('enable');
//					$("#slider-range").slider('values', 1, Math.ceil((lastdate-firstdate)/(1000*60*60*24)));
//				}
//			});
		});
	}
});
