var $j = jQuery.noConflict();
var extras = {};
// on load:
$j(document).ready(function(){
	
	// help
	$j("*[id='showHelp']").bind("click",function(){
		return showHelp();
	});
	$j("*[id='closeHelp']").bind("click",function(){
		return closeHelp();
	});
	
	// fulltext search facets:
	$j("#facetBook").bind("change",function(){
		jQuery("#bookfacet_submit").trigger("click");
	});
	$j("#facetAuthor").bind("change",function(){
		jQuery("#authorfacet_submit").trigger("click");
	});
	$j("#facetVolume").bind("change",function(){
		jQuery("#volumefacet_submit").trigger("click");
	});
	$j("#facetFromTo").bind("change",function(){
		jQuery("#datefacet_submit").trigger("click");
	});
	
	// search must work with javascript disabled: #searchText used server-side
	// different text fields necessary for different auto-complete calls
	$j("#searchText").addClass("displayNone");
	if ($j("#titleSearch").attr("checked")==true){	
		$j("#titleSearchText").val($j("#searchText").val());
		$j("#titleSearchText").removeClass("displayNone");
		$j("#titleSearchText").select();
	} else if ($j("#authorSearch").attr("checked")==true){
		$j("#authorSearchText").val($j("#searchText").val());
		$j("#authorSearchText").removeClass("displayNone");
		$j("#authorSearchText").select();
	} else if ($j("#keywordSearch").attr("checked")==true){
		$j("#keywordSearchText").val($j("#searchText").val());
		$j("#keywordSearchText").removeClass("displayNone");
		$j("#keywordSearchText").select();
	} else if ($j("#fulltextSearch").attr("checked")==true){
		$j("#fulltextSearchText").val($j("#searchText").val());
		$j("#fulltextSearchText").removeClass("displayNone");
		$j("#fulltextSearchText").select();
	}

	extras.what = $j("#titleSearch").attr("checked")==true ? "TITLE":"AUTHOR";
	extras.what = $j("#keywordSearch").attr("checked")==true ? "KEYWORD":extras.what;
	
	// radio buttons
	activeField = $j("#titleSearch").attr("checked")==true ? "#titleSearchText":"#authorSearchText";
	activeField = $j("#keywordSearch").attr("checked")==true ? "#keywordSearchText":activeField;
	activeField = $j("#fulltextSearch").attr("checked")==true ? "#fulltextSearchText":activeField;
	
	$j("#titleSearch").bind("click",function(){
		extras.what = "TITLE";
		$j("#titleSearchText").val($j(activeField).val());
		$j("#titleSearchText").removeClass("displayNone");
		$j("#authorSearchText").addClass("displayNone");
		$j("#keywordSearchText").addClass("displayNone");
		$j("#fulltextSearchText").addClass("displayNone");
		$j("#showHelp").addClass("displayNone");
		$j("#help").slideUp("normal");
		$j("#beygingText").addClass("displayNone");
		$j("#fulltext_search_constraints").addClass("displayNone");
		$j("#fulltext_search_facets").addClass("displayNone");
		
		activeField = "#titleSearchText";
		$j("#titleSearchText").select();
	});
	$j("#authorSearch").bind("click",function(){
		extras.what = "AUTHOR";
		$j("#authorSearchText").val($j(activeField).val());
		$j("#titleSearchText").addClass("displayNone");
		$j("#authorSearchText").removeClass("displayNone");
		$j("#keywordSearchText").addClass("displayNone");
		$j("#fulltextSearchText").addClass("displayNone");
		$j("#showHelp").addClass("displayNone");
		$j("#help").slideUp("normal");
		$j("#beygingText").addClass("displayNone");
		$j("#fulltext_search_constraints").addClass("displayNone");
		$j("#fulltext_search_facets").addClass("displayNone");
		
		activeField = "#authorSearchText";
		$j("#authorSearchText").select();
	});
	$j("#keywordSearch").bind("click",function(){
		extras.what = "KEYWORD";
		$j("#keywordSearchText").val($j(activeField).val());
		$j("#titleSearchText").addClass("displayNone");
		$j("#authorSearchText").addClass("displayNone");
		$j("#keywordSearchText").removeClass("displayNone");
		$j("#fulltextSearchText").addClass("displayNone");
		$j("#showHelp").addClass("displayNone");
		$j("#help").slideUp("normal");
		$j("#beygingText").addClass("displayNone");
		$j("#fulltext_search_constraints").addClass("displayNone");
		$j("#fulltext_search_facets").addClass("displayNone");
		
		activeField = "#keywordSearchText";
		$j("#keywordSearchText").select();
	});
	$j("#fulltextSearch").bind("click",function(){
		$j("#fulltextSearchText").val($j(activeField).val());
		$j("#titleSearchText").addClass("displayNone");
		$j("#authorSearchText").addClass("displayNone");
		$j("#keywordSearchText").addClass("displayNone");
		$j("#fulltextSearchText").removeClass("displayNone");
		$j("#showHelp").removeClass("displayNone");
		$j("#help").removeClass("displayNone");
		$j("#beygingText").removeClass("displayNone");
		$j("#fulltext_search_constraints").removeClass("displayNone");
		$j("#fulltext_search_facets").removeClass("displayNone");
		
		activeField = "#fulltextSearchText";
		$j("#fulltextSearchText").select();
	});
	
	// always using #searchText on the server side (with or without javascript enabled)
	$j("#submit").bind("click",function(){
		$j("#searchText").val($j(activeField).val());
	});
	
	// auto-complete
	$j("#titleSearchText").autocomplete({
			source: function( request, response ) {
				$j.ajax({
					url: baseURL+"/suggest",
					dataType: "json",
					data: {
						maxRows: 20,
						term: request.term,
						what: extras.what
					},
					success: function( data ) {
						response( $j.map( data, function( item ) {
							return {
								label: item.label.replace(/&#34;/g,'"'),
								desc: item.desc.replace(/&#34;/g,'"')
							}
						}));
						
					},
					error: function(jqXHR, textStatus, errorThrown){
						alert(textStatus+" "+errorThrown);
					}
					
				});
			},
			delay:300,
			minLength:3,
			focus: function( event, ui ) {
					$j( "#titleSearchText" ).val( ui.item.label );
					return false;
			},
			select: function( event, ui ) {
				$j( "#titleSearchText" ).val( ui.item.desc );
				$j("#submit").click();
				return false;
			}
	})
	.data( "autocomplete" )._renderItem = function( ul, item ) {
		return $j( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( "<a>" + item.label + "</a>" )
			.appendTo( ul );
	};;
	
	
	$j("#authorSearchText").autocomplete({
			source: function( request, response ) {
				$j.ajax({
					url: baseURL+"/suggest",
					dataType: "json",
					data: {
						maxRows: 20,
						term: request.term,
						what: extras.what
					},
					success: function( data ) {
						response( $j.map( data, function( item ) {
							return {
								label: item.label.replace(/&#34;/g,'"'),
								desc: item.desc.replace(/&#34;/g,'"')
							}
						}));
						
					},
					error: function(jqXHR, textStatus, errorThrown){
						alert(textStatus+" "+errorThrown);
					}
					
				});
			},
			delay:300,
			minLength:3,
			focus: function( event, ui ) {
					$j( "#authorSearchText" ).val( ui.item.label );
					return false;
			},
			select: function( event, ui ) {
				$j( "#authorSearchText" ).val( ui.item.desc );
				$j("#submit").click();
				return false;
			}
	})
	.data( "autocomplete" )._renderItem = function( ul, item ) {
		return $j( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( "<a>" + item.label + "</a>" )
			.appendTo( ul );
	};;
	
	
	$j("#keywordSearchText").autocomplete({
			source: function( request, response ) {
				$j.ajax({
					url: baseURL+"/suggest",
					dataType: "json",
					data: {
						maxRows: 20,
						term: request.term,
						what: extras.what
					},
					success: function( data ) {
						response( $j.map( data, function( item ) {
							return {
								label: item.label.replace(/&#34;/g,'"'),
								desc: item.desc.replace(/&#34;/g,'"')
							}
						}));
						
					},
					error: function(jqXHR, textStatus, errorThrown){
						alert(textStatus+" "+errorThrown);
					}
					
				});
			},
			delay:300,
			minLength:3,
			focus: function( event, ui ) {
					$j( "#keywordSearchText" ).val( ui.item.label );
					return false;
			},
			select: function( event, ui ) {
				$j( "#keywordSearchText" ).val( ui.item.label );
				$j("#submit").click();
				return false;
			}
	})
	.data( "autocomplete" )._renderItem = function( ul, item ) {
		return $j( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( "<a>" + item.label + "</a>" )
			.appendTo( ul );
	};;
	
});


/*****************************************************************
 help
*****************************************************************/

function showHelp(){
	$j("#help").slideDown("normal");
	$j("*[id='showHelp']").addClass("displayNone");
	return false;
}

function closeHelp(){
	$j("#help").slideUp("normal");
	if ($j("#fulltextSearch").attr("checked")==true){
		$j("#showHelp").removeClass("displayNone");
	}
	return false;
}




