$(document).ready(function() {

	/*
	Autocomplete MUST return results in the following json format
	{"Category":["value1","value2","value3","etc.."]}
	*/
	
	$('#lsas-search-input').autocomplete({
		source: function( request, response ) {
			var searchTerm, defaultTerm, htmlString = '', i, categoryHtml = '';
			searchTerm = jQuery.trim($('#lsas-search-box #lsas-search-input').val());
			data = 'searchTerm='+searchTerm;
			var typeAhead = $('#typeAhead').val();
			if( searchTerm != defaultTerm && searchTerm != '' && (typeAhead == 'true' || typeAhead == '')){
				$.ajax({
					url: 'lsasTAResults',
					type: 'GET',
					data: data,
					dataType: 'json',
					success: function(result){

						//Sort results into alpha order
						var typeAheadKeys = [];
						var sortedArray = [];
						for(var key in result)
					    {
					        typeAheadKeys.push(key);
					    }
					    typeAheadKeys.sort();
					    for (var key in typeAheadKeys){
					    	sortedArray[typeAheadKeys[key]] = result[typeAheadKeys[key]];
					    }

					    //Display results
						for (var key in sortedArray){
							categoryHtml = '<span class="autocomplete-category"><ul><li class="autocomplete-category-title">'+ key +'</li>';
							for (i=0; i<5; i++){
								if(sortedArray[key][i] != undefined){
									categoryHtml += '<li class="autocomplete-item"><a href="">' + sortedArray[key][i] + '</a></li>';
								}
							}
							categoryHtml += '</ul></span>';
							htmlString += categoryHtml;
						}
						$('#lsas-search-box #lsas-autocomplete').html(htmlString);
						if(htmlString.length > 0){
							$('#lsas-search-box #lsas-autocomplete').show();
						} else {
							$('#lsas-search-box #lsas-autocomplete').hide();
						}
					}
				});
			} else {
				$('#lsas-search-box #lsas-autocomplete').hide();
			}
		},
		minLength: 3,
		delay: 500
	});

	$('#lsas-search-input').keyup(function(){
		if(this.value.length < 3){
			$('#lsas-search-box #lsas-autocomplete').hide();
		}
	});

	//HIDE AUTOCOMPLETE WHEN USER PRESSES ESCAPE
	$(document).keypress(function(e) {
		var code = (e.keyCode ? e.keyCode : e.which);
		if(code == 27) {
			$('div#lsas-autocomplete').hide();
		}
	});

	//PUT AUTOCOMPLETE VALUE IN BOX WHEN CLICKED
	$('li.autocomplete-item a').live('mousedown',function(e){
		$("input#lsas-search-input").attr('value',$(this).text());
		$('div#lsas-autocomplete').hide();
		e.preventDefault();
		setTimeout(function() { document.getElementById('lsas-search-input').focus(); }, 10);
	});

	//HIDE AUTOCOMPLETE WHEN USER CLICKS OFF OF IT
	$('#lsas-search-input').blur(function(event){
		$('div#lsas-autocomplete').hide();
	});

	//THINGS TO DO ON SEARCH SUBMIT
	$('form#lsas-search-form').submit(function(){
		
		//IF HELP TEXT IS STILL IN BOX, REMOVE
		if($('input#lsas-search-input').val() == defaultTerm){
			$('input#lsas-search-input').attr('value', '');
			$('input#lsas-search-input').removeClass('grey-text');
		}
		
		//SEND DATA TO SITE CATALYST
		s.linkTrackVars='prop31,s.prop32,s.prop33,s.prop34,s.prop35,s.prop36,s.prop37,s.prop38';
	    s.linkTrackEvents='None';
	    s.prop31 = $('#type-selections').text();
	    s.prop32 = $('#classification-selections').text();
	    s.prop33 = $('#reactivity-selections').text();
	    s.prop34 = $('#host-selections').text();
	    s.prop35 = $('#application-selections').text();
	    s.prop36 = $('#format-selections').text();
	    s.prop37 = $('#label-selections').text();
	    s.prop38 = $('#research-discipline-selections').text();
		if (top === self){ //if not in an iframe
			s.tl(this,'o','LSAS Search Submit');
		}
		
	});

	//ON TEXT AREA FOCUS, CHANGE INITIAL VALUE TO BLANK
	$('input#lsas-search-input').bind('focus',function(){
		if($(this).val() == defaultTerm){
			$(this).attr('value', '');
			$(this).removeClass('grey-text');
		}
	});

	//IF TEXT INPUT IS BLANK ON BLUR, ENTER THE HELPER TEXT, HIDE AUTOCOMPLETE
	$('input#lsas-search-input').blur(function(){
		if(jQuery.trim($(this).val()) == ''){
			$(this).attr('value', defaultTerm);
			$(this).addClass('grey-text');
			$('#lsas-search-box #lsas-autocomplete').hide();
		}
	});

	//LISTEN FOR FORM RESET, RESET CRITERIA DIV
	$('#lsas-search-criteria .reset').click(function(){
		$('#lsas-search-criteria .lsas-selected-criteria span').each(function(){
			if ($(this).attr('id') != 'lsas-selected-none'){
				$(this).text('');
			}
		});
		$('#lsas-search-criteria li').removeClass('bold');
		$('span.lsas-checkbox-dropdown').show();
		$('#lsas-search-criteria :input').each(function(){
			if($(this).attr('name') != 'lsas-type' && $(this).attr('name') != 'lsas-classification'){
				$(this).attr('checked', false);
				$(this).attr('disabled', false);
			} else  {
				$(this).attr('checked', true);
				$('#lsas-selected-type').html('');
				$('#lsas-selected-classification').html('');
				$('#lsas-type').val("");
				$('#lsas-classification').val("");
			}
		});
		$('#lsas-selected-none').show();
	});

	//SHOW SEARCH TIPS WHEN MOUSED OVER
	$('span#lsas-search-tips-button').hover(function(){$('p#lsas-search-tips').show();},function(){$('p#lsas-search-tips').hide();});

	//SHOW THE DROPDOWN WHEN THE LABEL IS CLICKED, HIDE WHEN CLICKED OFF
	$('.lsas-dropdown-label').click(function(){
		var childDropdown = $(this).next('ul.lsas-dropdown-choices');
		if ( childDropdown.is(':visible') ){
			childDropdown.hide();
			$('ul.lsas-dropdown-choices').hide();
		} else {
			$('ul.lsas-dropdown-choices').hide();
			childDropdown.show();
			childDropdown.scrollTop(0);
		}
	});
	$('span.lsas-checkbox-dropdown').click(function(e) { e.stopPropagation(); });
	$(document).click(function() { $('ul.lsas-dropdown-choices').hide(); });

	//CHECK FOR EMPTY CRITERIA SELECTIONS
	function checkForEmptyCriteria(){
		$('#lsas-search-criteria .lsas-selected-criteria span').each(function(){
			if ($(this).attr('id') != 'lsas-selected-none' && $(this).text() != ''){
				$('#lsas-selected-none').hide();
				return false; //break out of each loop if even one instance is found
			} else {
				$('#lsas-selected-none').show();
			}
		});
	}

	//SHOW CRITERIA SELECTION FOR TYPE

	$('#lsas-type-radio-inputs input:checkbox').click(function(){
		var type = "";
		var lsasType = "";
		if($('#qa_lsas_antibodytype_primary').attr('checked') === true){
			if($('#qa_lsas_antibodytype_secondary').attr('checked') === true){
				type = $.trim($('#qa_lsas_antibodytype_primary').parent('span').text()) + ', ' + $.trim($('#qa_lsas_antibodytype_secondary').parent('span').text());
				lsasType = $('#qa_lsas_antibodytype_primary').val()+'+'+ $('#qa_lsas_antibodytype_secondary').val();
			} else {
				type = $.trim($('#qa_lsas_antibodytype_primary').parent('span').text())
				lsasType = $('#qa_lsas_antibodytype_primary').val();
			}
			$('span.lsas-checkbox-dropdown').show();
		} else {
			if($('#qa_lsas_antibodytype_secondary').attr('checked') === true){
				type = $.trim($('#qa_lsas_antibodytype_secondary').parent('span').text());
				lsasType = $('#qa_lsas_antibodytype_secondary').val();
				$('span#lsas-host').hide();
				$('#lsas-search-criteria span#lsas-host li').removeClass('bold');
				$('#lsas-search-criteria span#lsas-host :input').each(function(){ this.checked = false; });
				$('#lsas-search-criteria span#lsas-host :input').each(function(){ this.disabled = false });
				$('#lsas-selected-host').html('');
				$('span#lsas-research-discipline').hide();
				$('#lsas-search-criteria span#lsas-research-discipline li').removeClass('bold');
				$('#lsas-search-criteria span#lsas-research-discipline :input').each(function(){ this.checked = false });
				$('#lsas-search-criteria span#lsas-research-discipline :input').each(function(){ this.disabled = false });
				$('#lsas-selected-research-discipline').html('');
				$('span#lsas-format').hide();
				$('#lsas-search-criteria span#lsas-format li').removeClass('bold');
				$('#lsas-search-criteria span#lsas-format :input').each(function(){ this.checked = false });
				$('#lsas-search-criteria span#lsas-format :input').each(function(){ this.disabled = false });
				$('#lsas-selected-format').html('');
			} else {
				$('span.lsas-checkbox-dropdown').show();
			}
		}
		if(type != ''){
			$('#lsas-selected-type').html('<strong>'+typeLabel+'</strong>: <span id="type-selections">' + type + '</span>; ');
		} else {
			$('#lsas-selected-type').html('');
		}
		$('#lsas-type').val(lsasType);

		//WHEN USER CLICKS A RADIO, SEND DATA TO WEBTRENDS BASED ON CATEGORY AND VALUE OF RADIO
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				/* Send new content group - clear duplicates as to not inflate data */
                dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Antibody Type:  ' + jQuery.trim($(this).parent('span').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty criteria selections

	});

	//SHOW CRITERIA SELECTION FOR CLASSIFICATION
	$('#lsas-classification-radio-inputs input:checkbox').click(function(){
		var classTxt = "";
		var lsasClass = "";
		if($('#qa_lsas-classification-mono').attr('checked') === true){
			if($('#qa_lsas-classification-poly').attr('checked') === true){
				classTxt = $.trim($('#qa_lsas-classification-mono').parent('span').text()) +', '+ $.trim($('#qa_lsas-classification-poly').parent('span').text());
				lsasClass = $('#qa_lsas-classification-mono').val()+'+'+ $('#qa_lsas-classification-poly').val();
			} else {
				classTxt = $.trim($('#qa_lsas-classification-mono').parent('span').text());
				lsasClass = $('#qa_lsas-classification-mono').val();
			}
		} else {
			if($('#qa_lsas-classification-poly').attr('checked') === true){
				classTxt = $.trim($('#qa_lsas-classification-poly').parent('span').text());
				lsasClass = $('#qa_lsas-classification-poly').val();
			}
		}
		if( classTxt != '' ){
			$('#lsas-selected-classification').html('<strong>'+classificationLabel+'</strong>: <span id="classification-selections">' + classTxt + '</span>; ');
		} else {
			$('#lsas-selected-classification').html('');
		}

		$('#lsas-classification').val(lsasClass);
		//WHEN USER CLICKS A RADIO, SEND DATA TO WEBTRENDS BASED ON CATEGORY AND VALUE OF RADIO
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Classification:  ' + jQuery.trim($(this).parent('span').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty crteria selections

	});

	//SHOW CRITERIA SELECTION FOR REACTIVITY
	$('#lsas-reactivity input:checkbox').click(function(){
		$(this).parent('li').toggleClass('bold');

		//DISABLE / ENABLE DUPLICATE INPUT
		duplicateInput($(this),$(this).val());

		//GET STRING OF CHECKED ITEMS
		var checkedItemString = getCheckedItems($(this));

		if (checkedItemString == ''){
			$('#lsas-selected-reactivity').text('');
		} else {
			$('#lsas-selected-reactivity').html('<strong>'+reactivityLabel+'</strong>: <span id="reactivity-selections">' + checkedItemString + '</span>; ');
		}

		//WHEN USER CLICKS A CHECKBOX (**AND CHECKS IT**), SEND DATA TO WEBTRENDS BASED ON CATEGORY (REACTIVITY, ETC) AND VALUE OF CHECKBOX
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Reactivity: ' + jQuery.trim($(this).parent('li').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty crteria selections

	});

	//SHOW CRITERIA SELECTION FOR HOST
	$('#lsas-host input:checkbox').click(function(){
		$(this).parent('li').toggleClass('bold');

		//DISABLE / ENABLE DUPLICATE INPUT
		duplicateInput($(this),$(this).val());

		//GET STRING OF CHECKED ITEMS
		var checkedItemString = getCheckedItems($(this));

		if (checkedItemString == ''){
			$('#lsas-selected-host').text('');
		} else {
			$('#lsas-selected-host').html('<strong>'+hostLabel+'</strong>: <span id="host-selections">' + checkedItemString + '</span>; ');
		}

		//WHEN USER CLICKS A CHECKBOX (**AND CHECKS IT**), SEND DATA TO WEBTRENDS BASED ON CATEGORY (HOST, ETC) AND VALUE OF CHECKBOX
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Host: ' + jQuery.trim($(this).parent('li').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty crteria selections

	});

	//SHOW CRITERIA SELECTION FOR APPLICATION
	$('#lsas-application input:checkbox').click(function(){
		$(this).parent('li').toggleClass('bold');

		//DISABLE / ENABLE DUPLICATE INPUT
		duplicateInput($(this),$(this).val());

		//GET STRING OF CHECKED ITEMS
		var checkedItemString = getCheckedItems($(this));

		if (checkedItemString == ''){
			$('#lsas-selected-application').text('');
		} else {
			$('#lsas-selected-application').html('<strong>'+applicationLabel+'</strong>: <span id="application-selections">' + checkedItemString + '</span>; ');
		}

		//WHEN USER CLICKS A CHECKBOX (**AND CHECKS IT**), SEND DATA TO WEBTRENDS BASED ON CATEGORY (APPLICATION, ETC) AND VALUE OF CHECKBOX
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Applications: ' + jQuery.trim($(this).parent('li').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty crteria selections

	});

	//SHOW CRITERIA SELECTION FOR FORMAT
	$('#lsas-format input:checkbox').click(function(){
		$(this).parent('li').toggleClass('bold');

		//DISABLE / ENABLE DUPLICATE INPUT
		duplicateInput($(this),$(this).val());

		//GET STRING OF CHECKED ITEMS
		var checkedItemString = getCheckedItems($(this));

		if (checkedItemString == ''){
			$('#lsas-selected-format').text('');
		} else {
			$('#lsas-selected-format').html('<strong>'+formatLabel+'</strong>: <span id="format-selections">' + checkedItemString + '</span>; ');
		}
		//WHEN USER CLICKS A CHECKBOX (**AND CHECKS IT**), SEND DATA TO WEBTRENDS BASED ON CATEGORY (FORMAT, ETC) AND VALUE OF CHECKBOX
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Format: ' + jQuery.trim($(this).parent('li').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty crteria selections

	});

	//SHOW CRITERIA SELECTION FOR LABEL
	$('#lsas-label input:checkbox').click(function(){
		$(this).parent('li').toggleClass('bold');

		//DISABLE / ENABLE DUPLICATE INPUT
		duplicateInput($(this),$(this).val());

		//GET STRING OF CHECKED ITEMS
		var checkedItemString = getCheckedItems($(this));

		if (checkedItemString == ''){
			$('#lsas-selected-label').text('');
		} else {
			$('#lsas-selected-label').html('<strong>'+labelLabel+'</strong>: <span id="label-selections">' + checkedItemString + '</span>; ');
		}

		//WHEN USER CLICKS A CHECKBOX (**AND CHECKS IT**), SEND DATA TO WEBTRENDS BASED ON CATEGORY (LABEL, ETC) AND VALUE OF CHECKBOX
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Label: ' + jQuery.trim($(this).parent('li').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty crteria selections

	});

	//SHOW CRITERIA SELECTION FOR RESEARCH DISCIPLINE
	$('#lsas-research-discipline input:checkbox').click(function(){
		$(this).parent('li').toggleClass('bold');

		//DISABLE / ENABLE DUPLICATE INPUT
		duplicateInput($(this),$(this).val());

		//GET STRING OF CHECKED ITEMS
		var checkedItemString = getCheckedItems($(this));

		if (checkedItemString == ''){
			$('#lsas-selected-research-discipline').text('');
		} else {
			$('#lsas-selected-research-discipline').html('<strong>'+researchDisciplineLabel+'</strong>: <span id="research-discipline-selections">' + checkedItemString + '</span>; ');
		}

		//WHEN USER CLICKS A CHECKBOX (**AND CHECKS IT**), SEND DATA TO WEBTRENDS BASED ON CATEGORY (RESEARCH DISCIPLINE, ETC) AND VALUE OF CHECKBOX
		if($(this).attr('checked') === true){
			if(typeof dcsMultiTrack == 'function')
			{
				dcsMultiTrack('DCSext.oss_lsas','','DCSext.oss_lsas_r','','WT.cg_n','LSAS Optional Search Criteria','WT.cg_s', 'Research Discipline: ' + jQuery.trim($(this).parent('li').text()));
			}
		}

		checkForEmptyCriteria(); //check for empty crteria selections

	});

	//RUN THIS FUNCTION ON PAGE LOAD TO GET THE CORRECT CRITERIA POPULATED BELOW
	savedStateCheckboxes();

});

function savedStateCheckboxes(){

	//Hide certain criteria if "Secondary" is checked as the antibody type
	if ( $('input#qa_lsas_antibodytype_secondary').is(':checked') && !$('input#qa_lsas_antibodytype_primary').is(':checked')){
		$('span#lsas-host').hide();
		$('span#lsas-research-discipline').hide();
		$('span#lsas-format').hide();
	}

	//Get checked checkbox items
	var selectedType = $('.lsas-type-choice input:checked').parent('span');
	var typeValue = "";
	$.each(selectedType, function(index, value) {
    	 var val = $(value);
    	 if (index === 1) {
     		typeValue= typeValue + ', ' +val.text();
    	}else {
	        typeValue = val.text();
    	}
	});

	if($.trim(typeValue) != ''){
		$('#lsas-selected-type').html('<strong>'+typeLabel+'</strong>: <span id="type-selections">' + $.trim(typeValue) + '; ');
	}

	var selectedClass = $('.lsas-classification-choice input:checked').parent('span');
	var classValue = "";
	$.each(selectedClass, function(index, value) {
    	 var val = $(value);
    	 if (index === 1) {
     		classValue= classValue + ', ' +val.text();
    	}else {
	        classValue = val.text();
    	}
	});

	if($.trim(classValue) != ''){
		$('#lsas-selected-classification').html('<strong>'+classificationLabel+'</strong>: <span id="classification-selections">' + $.trim(classValue) + '</span>; ');
	}

	//Disable duplicate checked items in criteria selection
	$('li.lsas-top-choice input:checked').each(function(){
		duplicateInput($(this),$(this).val());
	});

	//Get criteria selection from checkboxes and insert in proper location
	$('ul.lsas-dropdown-choices').each(function(){

		var lsasCriteria = $(this).parent('span.lsas-checkbox-dropdown').attr('id').split('-');
		lsasCriteria = lsasCriteria[lsasCriteria.length-1];

		var checkedItemString = getCheckedItems($(this).children('li').first());
		if (checkedItemString == ''){
			switch(lsasCriteria){
				case 'discipline':
					$('#lsas-selected-research-'+lsasCriteria).text('');
					break;
				default:
					$('#lsas-selected-'+lsasCriteria).text('');
					break;
			}
		} else {
			switch(lsasCriteria){
				case 'discipline':
					$('#lsas-selected-research-'+lsasCriteria).html('<strong>'+researchDisciplineLabel+'</strong>: <span id="research-discipline-selections">' + checkedItemString + '</span>; ');
					break;
				default:
					$('#lsas-selected-'+lsasCriteria).html('<strong>'+ lsasCriteria +'</strong>: <span id="'+ lsasCriteria +'-selections">' + checkedItemString + '</span>; ');
					break;
			}
		}
	});
	$('#lsas-search-criteria .lsas-selected-criteria span').each(function(){
		if ($(this).attr('id') != 'lsas-selected-none' && $(this).text() != ''){
			$('#lsas-selected-none').hide();
			return false; //break out of each loop if even one instance is found
		}
	});
}

function getCheckedItems(element){
	var checkedItemArray = new Array();
	var checkedItemString = '';
	element.closest('ul.lsas-dropdown-choices').children('li').children('input:checked').each(function(){
		$(this).parent('li').addClass('bold');
		if($(this).attr('disabled') === false){
			checkedItemArray.push(jQuery.trim($(this).parent('li').text()));
		}
	});
	for (i=0; i<checkedItemArray.length; i++){
		checkedItemString = checkedItemString + checkedItemArray[i] + ', ';
	}

	checkedItemString = checkedItemString.slice(0, -2);

	return checkedItemString;

}

function duplicateInput(element,elementValue){

	//CHECK AND DISABLE DUPLICATE ENTRY
	if(element.attr('checked') === true){
		element.parent('li').siblings().children('input').each(function(){
			if ($(this).val() == elementValue){
				$(this).parent('li').toggleClass('bold');
				$(this).attr('checked', true);
				$(this).attr('disabled', true);
			}
		});
	}

	//UNCHECK AND ENABLE DUPLICATE ENTRY
	if(element.attr('checked') === false){
		element.parent('li').siblings().children('input').each(function(){
			if ($(this).val() == elementValue){
				$(this).parent('li').toggleClass('bold');
				$(this).attr('checked', false);
				$(this).attr('disabled', false);
			}
		});
	}
}


