var user_search = function() {
	return {
        jvi_tree : {}
	    ,init : function() {

		//set up solr autocomplete
		$('[name="q_terms"]').autocomplete('http://www.landesbioscience.com:8983/solr/autocomplete/',{
                    max: 10,
		    highlight: false,
                    formatItem: function(row, i, n) {
                        return row;
                    },
                    parse: parse_autocomplete
		}); 
		$('[name="q_title"]').autocomplete('http://www.landesbioscience.com:8983/solr/autocomplete/',{
		    extraParams: {
			qf: function() { return 'title_auto';}
		    },
                    max: 10,
		    highlight: false,
                    formatItem: function(row, i, n) {
                        return row;
                    },
                    parse: parse_autocomplete
		}); 
		$('[name="q_author"]').autocomplete('http://www.landesbioscience.com:8983/solr/autocomplete/',{
		    extraParams: {
			qf: function() { return 'contrib_auto';}
		    },
                    max: 10,
		    highlight: false,
                    formatItem: function(row, i, n) {
                        return row;
                    },
                    parse: parse_autocomplete
		}); 

	
		
		Array.prototype.getUnique = function () {
		    var o = new Object();
		    var i, e;
		    for (i = 0; e = this[i]; i++) {o[e] = 1};
		    var a = new Array();
		    for (e in o) {a.push (e)};
		    return a;
		}

		
            $.getJSON('get_jvi_tree/', function(a,b,c) {
                    user_search.jvi_tree = a;
//                    user_search.populate_jvi_menus(); 
                });


            $('[name=show_abstracts]').change(function(a,b,c) {
                    if($(this).attr('checked')) { $('.abstract').show(); }
                    else { $('.abstract').hide(); }
                });

            $('[name=show_authors]').change(function(a,b,c) {
                    if($(this).attr('checked')) { $('.authors').show(); }
                    else { $('.authors').hide(); }
                });

            $('[name=advanced_search_button]').click(function() {
                    $('#landes_advanced_search_ui_box').toggle();
                });


            user_search.show_result_type_ui();
            $('[name=q_result_type]').click(function(a,b,c) {
                    user_search.show_result_type_ui();
                });

            $('[name=q_journal]').change(user_search.populate_jvi_menus);
            $('[name=q_volume]').change(user_search.populate_issue_menu);

            $('[name=q_series]').change(function() {
                    if($(this).val() == 'iu') {
                        $('#sub_series_box').show();
                    }
                    else {
                        $('#sub_series_box').hide();
                    }
                });

            $('[name=advanced_search_button]').click(function() {
                    if($('[name=q_advanced]').val() == 1) {
                        $('[name=advanced_search_button]').html('Advanced search');
                        $('[name=q_advanced]').val(0);
                    }
                    else {
                        $('[name=advanced_search_button]').html('Hide advanced search');
                        $('[name=q_advanced]').val(1);
                    }
                });
        }
        ,populate_jvi_menus : function() {
            j = $('[name=q_journal]').val();
            v = $('[name=q_volume]').selectedValues();
                        console.log(v);
            $('[name=q_volume]').removeOption(/[0-9*]/);
            if(j) {
                $.each(user_search.jvi_tree[j], function(a,b) {
                        $('[name=q_volume]').addOption(a, "Volume "+a, false);
                        $('[name=q_volume]').selectOptions(v);
                    });
                user_search.populate_issue_menu();
            }

            $('[name=q_issue]').sortOptions();
        }
        ,populate_issue_menu : function() {
            j = $('[name=q_journal]').val();
            v = $('[name=q_volume]').val();
            $('[name=q_issue]').removeOption(/[0-9*]/);
            if(j && v) {
                $('#issue_menu_box').show('fast');
                $.each(user_search.jvi_tree[j][v].issues, function(a,b) {
                        $('[name=q_issue]').addOption(a, "Issue: "+a, false);
                    });
            }
            else {
                $('#issue_menu_box').hide('fast');
            }
        }
        ,show_result_type_ui : function() {
            rt = $('[name=q_result_type]:checked').val();
            if(rt == '') {
                $('#journal_search_ui, #chapter_search_ui, #books_search_ui').hide();
            }
            else if(rt == 'article') {
                $('#chapter_search_ui, #books_search_ui').hide();
                $('#journal_search_ui').show();
            }
            else if(rt == 'chapter') {
                $('#journal_search_ui, #books_search_ui').hide();
                $('#chapter_search_ui').show();
            }
            else if(rt == 'book') {
                $('#journal_search_ui, #chapter_search_ui').hide();
                $('#books_search_ui').show();
            }

        }
    }
}();
$(user_search.init); 

function parse_autocomplete(data){
    var search_term = (''+data.responseHeader.params.q).replace(/\sAND.+/g, '').replace(/\s/g, '\s');
    var pattern = new RegExp(search_term, 'gi');
    data = data.highlighting;
    var result_arr = [];
    for(var i in data){
	for(var j in data[i]){
	    if(!data[i]){continue;}
	    var stripped = ''+data[i][j];
	    if(j == 'contrib_auto'){ //filter out a single author
		var name_arr = stripped.split(/,|\sand\s/ig);
		var distance = 10000;
		var index = 0;
		for(var i in name_arr){
		    if(i != 'getUnique'){
			var name = ''+name_arr[i];
			if(name.match(pattern)){
			    stripped = $.trim(name).replace(/(<([^>]+)>)/ig,"");
			    stripped = $('<div />').html(stripped).text();
			    if(result_arr.indexOf(stripped) < 0){
				result_arr.push(stripped);
			    }
			}
		    }
		}
	    }else{
		stripped = $.trim(stripped).replace(/(<([^>]+)>)/ig,"");
		stripped = $('<div />').html(stripped).text();
		if(result_arr.indexOf(stripped) < 0){
		    result_arr.push(stripped);
		}
	    }
	}
    }
    var result_arr2 = [];
    for(var i in result_arr){
	var stripped = result_arr[i];
	var temp = {
            data: stripped,
            value: stripped,
            result: stripped
	};
	result_arr2.push(temp);
    }
    return result_arr2;
}


 

