Search = function(root, name, textDirection) {
	this.SubjectTermPickerManager = null;
	this.ContextRoot = root;
	this.Name = name;
	this.TextDirection = textDirection;
	this.MaxTerms;
	this.Translations;
	
}

Search.prototype.Create = function() {

	$('issuanceDateContent').style.display = 'none'; 
		if(document.cookie.indexOf('showAdvancedSearch') != -1){
			var val=document.cookie.substring(document.cookie.indexOf('showAdvancedSearch')+19,document.cookie.indexOf('showAdvancedSearch')+24 );
			if(val=='false'){
				Element.hide($('moreopts_open'));
				Element.show($('moreopts_closed'));
			}else{
				Element.show($('moreopts_open'));
				Element.hide($('moreopts_closed'));	
			}
		}else{
			Element.hide($('moreopts_open'));
			Element.show($('moreopts_closed'));
		}

	Event.observe($('showMoreSearchOptionsLink'), 'click', this.showMoreSearchOptionsClicked.bindAsEventListener(this));
	Event.observe($('hideMoreSearchOptionsLink'), 'click', this.hideMoreSearchOptionsClicked.bindAsEventListener(this));
	
	
	$$('.categoryCheckbox').each(function(checkbox) {
		Event.observe(checkbox, 'click', this.categoryChecked.bindAsEventListener(this));
	}.bind(this));
	
	$$('.fieldCheckbox').each(function(checkbox) {
		Event.observe(checkbox, 'click', this.fieldChecked.bindAsEventListener(this));
	}.bind(this));
	
	$A($('searchDates').getElementsByTagName('li')).each(function(listItem) {
		Event.observe(listItem, 'click', this.panelSelectorClicked.bindAsEventListener(this));
		
		if (listItem.getAttribute('panel') == "publicationDateContent") {
			Element.show($(listItem.getAttribute('panel')));
			listItem.addClassName('panelSelected');
		} else {
			Element.hide($(listItem.getAttribute('panel')));
			listItem.removeClassName('panelSelected');
		}
		
	}.bind(this));
	

	
	this.cleanupCheckboxes();
	this.SubjectTermPickerManager = new SearchTermPicker(this.ContextRoot, this.Name + '.SubjectTermPickerManager', this.TextDirection);
	this.SubjectTermPickerManager.MaxTerms = this.MaxTerms;
	this.SubjectTermPickerManager.Translations = this.Translations;
	this.SubjectTermPickerManager.ajaxFailureHandler = this.processAjaxFailure.bind(this);
	this.SubjectTermPickerManager.ajaxExceptionHandler = this.processAjaxException.bind(this);			
	this.SubjectTermPickerManager.AjaxProcessorURL = "resourceSearchTermValidator.action?validateTerm";
	this.SubjectTermPickerManager.Create();
}

Search.prototype.processAjaxFailure = function(request) {
	this.redirectToErrorPage();
}

Search.prototype.processAjaxException = function(request) {
	if (!this.IsSubmitting) {
		this.redirectToErrorPage();
	}
}

Search.prototype.redirectToErrorPage = function (evt) {
	window.location.href = this.ContextRoot + '/sendExceptionFeedback.action';
}




Search.prototype.panelSelectorClicked = function(evt) {

	var panelSelector = Event.element(evt);
	
	$A($('searchDates').getElementsByTagName('li')).each(function(listItem) {
		Element.hide($(listItem.getAttribute('panel')));
		listItem.removeClassName('panelSelected');
	}.bind(this));
	
	Element.show($(panelSelector.getAttribute('panel')));
	
	panelSelector.addClassName('panelSelected');	
}


Search.prototype.showMoreSearchOptionsClicked = function(evt) {
	Element.hide($('moreopts_closed'));
	Element.show($('moreopts_open'));
	document.cookie="showAdvancedSearch=true";
}

Search.prototype.hideMoreSearchOptionsClicked = function(evt) {
	Element.show($('moreopts_closed'));
	Element.hide($('moreopts_open'));
	document.cookie="showAdvancedSearch=false";
}

Search.prototype.categoryChecked = function(evt) {

	var checkBox = Event.element(evt);
	
	if (!checkBox.checked && checkBox.id == 'search_searchAll') {
		$('search_searchAll').checked = true;
	} else if (checkBox.checked && checkBox.id == 'search_searchAll') {
		$('search_searchDetails_searchLaws').checked = false;
		$('search_searchDetails_searchLegalLiterature').checked = false;
		$('search_searchDetails_searchJudicialDecisions').checked = false;
		$('search_searchDetails_searchLegislativeRecord').checked = false;
    } else {
		$('search_searchAll').checked = false;
    }
    
    if (!$('search_searchDetails_searchLaws').checked &&
			!$('search_searchDetails_searchLegalLiterature').checked &&
			!$('search_searchDetails_searchJudicialDecisions').checked &&
			!$('search_searchDetails_searchLegislativeRecord').checked) {
		$('search_searchAll').checked = true;
	}
    
}

Search.prototype.fieldChecked = function(evt) {

	var checkBox = Event.element(evt);
	
	if (!checkBox.checked && checkBox.id == 'check_includeAllFields') {
		$('check_includeAllFields').checked = true;
	} else if (checkBox.checked && checkBox.id == 'check_includeAllFields') {
		$('check_searchDetails_includeTitleFields').checked = false;
		$('check_searchDetails_includeAbstractFields').checked = false;
		$('check_searchDetails_includeNameFields').checked = false;
		$('check_searchDetails_includeNumberFields').checked = false;
    } else {
		$('check_includeAllFields').checked = false;
    }
    
    if (!$('check_searchDetails_includeTitleFields').checked &&
			!$('check_searchDetails_includeAbstractFields').checked &&
			!$('check_searchDetails_includeNameFields').checked &&
			!$('check_searchDetails_includeNumberFields').checked) {
		$('check_includeAllFields').checked = true;
	}
    
}

Search.prototype.cleanupCheckboxes = function() {

	if (($('check_searchDetails_includeTitleFields').checked &&
			$('check_searchDetails_includeAbstractFields').checked &&
			$('check_searchDetails_includeNameFields').checked &&
			$('check_searchDetails_includeNumberFields').checked) ||
			(!$('check_searchDetails_includeTitleFields').checked &&
			!$('check_searchDetails_includeAbstractFields').checked &&
			!$('check_searchDetails_includeNameFields').checked &&
			!$('check_searchDetails_includeNumberFields').checked)) {
			
		$('check_includeAllFields').checked = true;
		$('check_searchDetails_includeTitleFields').checked = false;
		$('check_searchDetails_includeAbstractFields').checked = false;
		$('check_searchDetails_includeNameFields').checked = false;
		$('check_searchDetails_includeNumberFields').checked = false;
        
    }
    
	if (($('search_searchDetails_searchLaws').checked &&
			$('search_searchDetails_searchLegalLiterature').checked &&
			$('search_searchDetails_searchJudicialDecisions').checked &&
			$('search_searchDetails_searchLegislativeRecord').checked) ||
			(!$('search_searchDetails_searchLaws').checked &&
			!$('search_searchDetails_searchLegalLiterature').checked &&
			!$('search_searchDetails_searchJudicialDecisions').checked &&
			!$('search_searchDetails_searchLegislativeRecord').checked)) {
			
		$('search_searchAll').checked = true;
		$('search_searchDetails_searchLaws').checked = false;
		$('search_searchDetails_searchLegalLiterature').checked = false;
		$('search_searchDetails_searchJudicialDecisions').checked = false;
		$('search_searchDetails_searchLegislativeRecord').checked = false;
        
    }
    
}

function showPanel(button, panelName) { 
	var container = button.findParentWithClass('div', 'panelContainer');
    $A(container.getElementsByTagName('div')).each( function(elem) {
        if (elem.id.indexOf("Content") > -1) {
            elem.style.display = 'none'; 
		}
	});

    $A(container.getElementsByTagName('li')).each( function(elem) {
        if (elem.id.indexOf("Button") > -1) { 
        	elem.removeClassName('panelSelected');
		}
	});
	
    $(panelName + 'Content').style.display = 'block'; 
    $(panelName + 'Button').addClassName('panelSelected');
}

SearchResults = function() {

	// References
	this.SearchResultsForm;
}

SearchResults.prototype.Create = function() {

	this.SearchResultsForm = $('searchResultList');
	$A($('searchResultList').select('.documentList')).each(function(field) {
		Event.observe(field, 'click', this.insertSelectedClicked.bindAsEventListener(this));
	}.bind(this));
	
	
}

SearchResults.prototype.insertSelectedClicked = function(evt) {
 var link = Event.element(evt);
 var glinId =link.getAttribute('glinId');
 var fieldName = link.getAttribute('fieldName');
 window.opener.document.getElementsByName(fieldName)[0].value= glinId;
 window.close();
}