cdm.gvars.fullTextSearchPrompt = "";
cdm.gvars.fullTextTotalInstancesFound = "";
cdm.gvars.fullTextOneInstanceFound = "";
cdm.gvars.fullTextNoInstancesFound = "";

cdm.api.Search = cdm.api.Search ? cdm.api.Search : {};
cdm.api.Search.browseView = "search";
cdm.api.Search.newSearch = true;
cdm.api.Search.alertIconHTML = '<span class="icon_10 ui-icon-alert"></span>';

//these should get overwritten later.
cdm.api.Search.noSearchTermAlert="You have not entered a search term.";
cdm.api.Search.noneSearchAlert="An additional search operator must be used in conjunction with 'None of these words.'\nPlease refine your search.";

cdm.api.Search.originalValue = "";
cdm.api.Search.suggestedTermsCount = 0;
cdm.api.Search.suggestedSearchVisible = false;
cdm.api.Search.suggestedSearchFocus = false;
cdm.api.Search.suggestedChildFocus = false;
cdm.api.Search.regexAlphaNum = /^[0-9A-Za-z]+$/;
cdm.api.Search.regexNonWord =  /^\W+$/;
cdm.api.Search.suggestedSearchDelay = 200;
cdm.api.Search.advancedSearchRowCount = 0;
cdm.api.Search.advancedSearchRowId = 0;
cdm.api.Search.advancedSearchAll = "";
cdm.api.Search.advancedSearchAny = "";
cdm.api.Search.advancedSearchExact = "";
cdm.api.Search.advancedSearchNone = "";
cdm.api.Search.advancedSearchOr = "";
cdm.api.Search.advancedSearchAnd = "";
cdm.api.Search.beforeDateDefault = "00000000";
cdm.api.Search.afterDateDefault = "99999999";
cdm.api.Search.dateSearchOriginal=false;
cdm.api.Search.maxCollectionsMode = "";
cdm.api.Search.maxCollectionsAdvancedMode = "advanced_";
cdm.api.Search.img_view_search_box_open = false;
cdm.api.Search.search_box_width = 0;
cdm.api.Search.fullTextHighlightClass = "cdm_full_text_highlight";
cdm.api.Search.fullTextHighlightClassCurrent = "cdm_full_text_highlight_current";
cdm.api.Search.fullTextHighlightClassFalse = "cdm_full_text_highlight_false";
cdm.api.Search.fullTextPDFHeight = 464;
cdm.api.Search.fullTextMatchTotal = 0;
cdm.api.Search.fullTextPageTotal = 0;
cdm.api.Search.advSearchAddFieldLinkBound = false;
cdm.api.Search.fullTextMatchesCount = 0;
cdm.api.Search.searchTermSetter = "searchbox";
cdm.api.Search.dateFieldNickname = "date";
cdm.api.Search.facetTerm = "";
cdm.api.Search.facetAlias = "";
cdm.api.Search.advancedFieldsNone = false;
cdm.api.Search.navigateToNextPageHit = false;
cdm.api.Search.fullTextFromCompObj = false;

//return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
//replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');

cdm.api.Search.alphaNumericCheck = function(t){
  //var regex=/^[0-9A-Za-z]+$/; //^[a-zA-z]+$/
  if(cdm.api.Search.regexAlphaNum.test(t)){
    return true;
  }else {
    return false;
  }
}
cdm.api.Search.submitSimpleSearch = function(){
  //var st = escape($("#search_content_box").val());
  //var st = encodeURI($("#search_content_box").val());
  var st = encodeURIComponent($("#search_content_box").val());
  if( $("#cdm_slashencode").val() == "on") {
    st = st.replace(/%2F/,"%252F");
  }
  if(st.length == 0){
    alert($("#cdm_language_error_enterAWordOrPhrase").val());
    return false;
  } else {
    var sc = $("#cdm_searchCollections").val();
    if(sc.length > 0 && sc != "all"){
      sc = "/collection/" + $("#cdm_searchCollections").val();
    } else {
      sc = "";
    }
    window.location.href=$("#collectionHomeUrl").val() + cdm.api.Search.browseView + sc + "/searchterm/"+st+"/order/"+cdm.api.Search.defaultOrder;
  }
}
cdm.api.Search.submitSearchResults = function(){
  var st = "";
  var simpleSearchField = cdm.api.Search.defaultField;
  if(cdm.api.Search.searchTermSetter == "facet"){
    st = cdm.api.Search.facetTerm;
    simpleSearchField = cdm.api.Search.facetAlias;
  } else {
    st = $("#search_content_box").val();
  }
  if(st.length == 0 && cdm.api.Search.newSearch){
    cdm.api.Search.noSearchTermAlert=$("#cdm_language_error_enterAWordOrPhrase").val(); //shouldn't be necessary
    alert(cdm.api.Search.noSearchTermAlert);
    return false;
  }
  itemTC = "";
  cdm.api.Search.additionalSearchParam = "";
  if(!cdm.api.Search.newSearch && cdm.api.Search.newAttribute.length > 0) {
    if(cdm.api.Search.newAttribute == "page"){
      cdm.api.Search.additionalSearchParam = "/" + cdm.api.Search.newAttribute + "/" + $("#cdm_results_page").val();
    } else {
      itemTC = $(cdm.api.Search.newAttributeItem).attr("tc"); //???
      if(itemTC == undefined){
        itemTC = "";
      }
      cdm.api.Search.additionalSearchParam = "/" + $(cdm.api.Search.newAttributeItem).attr(cdm.api.Search.newAttribute);
    }
  }
  //why orderby????
  //if(cdm.api.Search.additionalSearchParam.indexOf("orderby") > -1){
  if(cdm.api.Search.additionalSearchParam.indexOf("/order/") > -1){
    sortorder = "";
  } else {
    sortorder = "";
    ob = $("#cdm_results_orderby").val();
    ad = $("#cdm_results_ascdesc").val();
    if(ob.length > 0){
      sortorder = "/order/"+ob;
    } else {
      sortorder = "/order/"+cdm.api.Search.defaultOrder;
    }
    if(ad.length > 0){
      sortorder =  sortorder + "/ad/"+ ad;
    }
  }


  //cdm.util.ConsoleLogger("sortorder: " + sortorder + " ... asp:" + cdm.api.Search.additionalSearchParam);
  //return false;
  var prevQueryTotal = $("#cdm_query_total").val();
  var prev_st = $("#searchterm").val();
  var updatedQuery = "";
  var updatedField = "";
  var updatedMode = "";
  var updatedConnector
  if ((prev_st.length > 0) && (prev_st.substring(0,5) != "list:")) {
    for(s=0;s<prevQueryTotal;s++){
      termId = "searchquery_"+s;
      thisQ = $("#"+termId).val().split("^");
      //var pq = prev_query.split("^");
      //searchterm/frozen!radiohead/field/all!all/mode/all!all/conn/or!or
      if(thisQ[0] == "CISOSEARCHALL"){
        thisQ[0] = "all";
      }
      if(thisQ[1].length > 0){
        if(updatedQuery.length == 0){
          updatedQuery = thisQ[1];
          updatedField = thisQ[0];
          updatedMode = thisQ[2];
          updatedConnector = thisQ[3];
        } else {
          updatedQuery = updatedQuery + "!" + thisQ[1];
          updatedField = updatedField + "!" + thisQ[0];
          updatedMode = updatedMode + "!" + thisQ[2];
          updatedConnector = updatedConnector + "!" + thisQ[3];
        }
      }
    }
    if(st.length > 0){
      updatedQuery = encodeURIComponent(updatedQuery + "!" + st);
      updatedField = updatedField + "!" + simpleSearchField;
      updatedMode = updatedMode + "!" + cdm.api.Search.defaultMode;
      updatedConnector = updatedConnector + "!" + cdm.api.Search.defaultConnector;
    }
  } else {
    updatedQuery = encodeURIComponent(st);
    updatedField = simpleSearchField;
    updatedMode = cdm.api.Search.defaultMode;
    updatedConnector = cdm.api.Search.defaultConnector;
  }

  updatedQuery = updatedQuery.replace(/\+/g, '%20');
  if( $("#cdm_slashencode").val() == "on") {
    updatedQuery = updatedQuery.replace(/%2F/g, '%252F');
  }
  //sc.length > 0  &&
  var sc = "";
  if(cdm.gvars.collectionsOn == 1){
    if( cdm.gvars.activeCollection == $("#cdm_collection").val() ){
      sc = "collection/" + $("#cdm_collection").val()+ "/";
    }else if(cdm.gvars.activeCollection.length > 0  && cdm.gvars.activeCollection != $("#cdm_collection").val()){
      sc = "collection/" + cdm.gvars.activeCollection + "/";
    }
    if(cdm.api.Search.newAttribute == "coll"){
      cdm.api.Search.additionalSearchParam = "";
    }
    //other case for one?!
  } else if(cdm.gvars.collectionsOn > 1){
    if(itemTC.length == 0 && $("#cdm_searchCollections").val() != "all"){
      sc = "collection/" + cdm.api.Search.searchCollections + "/";
    } else {
      if(cdm.api.Search.searchCollections != "all"){
        sc = "collection/" + cdm.api.Search.searchCollections + "/";
      }
    }
  }
  if(cdm.gvars.collectionsOn == 0 && cdm.api.Search.newAttribute == "coll"){
    cdm.api.Search.additionalSearchParam = "";
  }
  cdm.api.Search.newSearch = true;
  if (prev_st.substring(0,5) == "list:") {
	cdm.util.ConsoleLogger("List view detected. Redirecting to favorites. ");
	window.location.href="/cdm/favorites/";
  } else {
	//cdm.util.ConsoleLogger(cdm.gvars.collectionsOn + " and " + cdm.api.Search.additionalSearchParam);
	window.location.href=$("#collectionHomeUrl").val() + "search/"+  sc + "searchterm/" + updatedQuery
		+ "/field/"+ updatedField +"/mode/"+ updatedMode +"/conn/" + updatedConnector + cdm.api.Search.additionalSearchParam + sortorder;
	//window.location.href=$("#collectionHomeUrl").val() + cdm.api.Search.browseView + sc + "/searchterm/"+newQ;
  }
}

cdm.api.Search.bindSearchForm = function(){
  $("#simple_search_button").click(function(){
    if(cdm.api.Search.searchResultsButtonMode == "results"){
      cdm.api.Search.submitSearchResults();
    } else {
      cdm.api.Search.submitSimpleSearch();
    }
  });

  $("#search_content_box").keypress(function(event) {
    if(event.keyCode == '13') {
      if(cdm.api.Search.searchResultsButtonMode == "results"){
        cdm.api.Search.submitSearchResults();
      } else {
        cdm.api.Search.submitSimpleSearch();
      }
    }
  });
  $("#search_content_box").keydown(function(event) {
    if(cdm.api.Search.suggestiveSearchEnabled == "on"){
      if(event.keyCode == '38' || event.keyCode == '40') {
        switch (event.keyCode) {
          case 38:
          case 40:
            if(cdm.api.Search.suggestedSearchVisible){
              cdm.api.Search.suggestedSearchFocus = true;
              var kids = $("#suggested_search_terms").first('ul').find('li');
              var childCount = 0;
              if(event.keyCode == '38'){
                childCount = cdm.api.Search.suggestedTermsCount;
              }
              var setChildFocus = false;
              $(kids).each(function(){
                if(event.keyCode == '38'){
                  childCount--;
                } else {
                  childCount++;
                }
                unfocusChildren=false;
                stID = parseInt($(this).attr("id").substring($(this).attr("id").length - 1));
                if($(this).children().first().hasClass("suggested_word_selected") && !setChildFocus){
                  //cdm.util.ConsoleLogger("focus should change -- " + stID);
                  $(this).children().first().removeClass("suggested_word_selected");
                  if(event.keyCode == '38'){
                    $(this).prev().children().first().addClass("suggested_word_selected");
                    $("#search_content_box").val($(this).prev().children().first().text());
                  } else {
                    $(this).next().children().first().addClass("suggested_word_selected");
                    $("#search_content_box").val($(this).next().children().first().text());
                  }
                  cdm.api.Search.suggestedChildFocus = true;
                  setChildFocus = true;
                  return false;
                }
              });
              if(cdm.api.Search.suggestedChildFocus && childCount == cdm.api.Search.suggestedTermsCount && event.keyCode == '40'){
                unfocusChildren=true;
              }
              if(cdm.api.Search.suggestedChildFocus && childCount == cdm.api.Search.suggestedTermsCount - 1 && event.keyCode == '38'){
                unfocusChildren=true;
              }

              if(!cdm.api.Search.suggestedChildFocus){
                if(event.keyCode == '38'){
                  $(kids).last().children().first().addClass("suggested_word_selected");
                  $("#search_content_box").val($(kids).last().children().first().text());
                } else {
                  $(kids).first().children().first().addClass("suggested_word_selected");
                  $("#search_content_box").val($(kids).first().children().first().text());
                }

                cdm.api.Search.suggestedChildFocus = true;
              }
              if(unfocusChildren){
                cdm.api.Search.suggestedChildFocus = false;
                $("#search_content_box").val(cdm.api.Search.originalValue);
                cdm.api.Search.suggestedSearchFocus = false;
              }

            }
            break;
        }
      }
      if(event.keyCode == '9') {
        cdm.api.Search.suggestedSearchHide();
      }
    }
  });
  if(cdm.api.Search.suggestiveSearchEnabled == "on"){
    $("#search_content_box").keyup(function(event) {
      if(event.keyCode == '37' || event.keyCode == '38' || event.keyCode == '39' || event.keyCode == '40') {
        return false;
      }
      cdm.api.Search.suggestedSearchInterval = setTimeout("cdm.api.Search.suggestedSearchTimer()",cdm.api.Search.suggestedSearchDelay);
      }).blur(function() {
        if(!cdm.api.Search.suggestedSearchFocus) {
          cdm.api.Search.suggestedSearchHide();
        }
      });
  }
}
cdm.api.Search.suggestedSearchTimer = function (){
  var suggestTerm = $("#search_content_box").val();
  if(suggestTerm.length > 0 ){
    cdm.api.Search.getSuggestedWords(suggestTerm);
  } else {
    cdm.api.Search.suggestedSearchHide();
  }
}
cdm.api.Search.suggestedSearchHide = function(){
  $("#suggested_search_terms").hide();
  cdm.api.Search.suggestedSearchVisible = false;
  cdm.api.Search.suggestedChildFocus = false;
}

cdm.api.Search.getSuggestedWords = function (st){
  var sc = $("#cdm_collection").val();
  if(sc.length == 0){
    return false
  }
  //if(!cdm.api.Search.alphaNumericCheck(st)){
  //  cdm.util.ConsoleLogger("check was false");
  //  return false;
  //}
  //data: "searchterm="+st,
  $("a.suggested_word").unbind("click");
  $("#suggested_search_terms").unbind("mouseover");
  $("body").unbind("click");
  $.ajax({
    type: "GET",
    url:  "/utils/getsuggestedwords/collection/"+$("#cdm_collection").val()+"/searchterm/"+st,
    dataType: "html",

    success: function (msg) {
      if(msg == "failure"){
        cdm.util.ConsoleLogger("it failed");
      } else {
        //cdm.util.ConsoleLogger("success");
        $("#suggested_search_terms").html(msg).show();
        cdm.api.Search.suggestedSearchTermCallback();
      }
    },
    error: function (a, b, c) {
      cdm.util.ConsoleLogger("there was an error ... " + a);
      cdm.util.ConsoleLogger("there was an error ... " + b);
      cdm.util.ConsoleLogger("there was an error ... " + c);
    }
  });
}
cdm.api.Search.suggestedSearchTermCallback = function(){
  cdm.api.Search.suggestedSearchVisible = true;
  cdm.api.Search.suggestedTermsCount = $("#suggested_search_terms").first('ul').find('li').length;
  cdm.api.Search.suggestedChildFocus = false;
  cdm.api.Search.originalValue = $("#search_content_box").val();
  $("#suggested_search_terms").mouseover(function(){
    cdm.api.Search.suggestedSearchFocus=true;
  }).mouseout(function(){
    cdm.api.Search.suggestedSearchFocus=false;
  });



  $("a.suggested_word").click(function(){
    $("#search_content_box").val($(this).text());
    if(cdm.api.Search.searchResultsButtonMode == "results"){
      cdm.api.Search.submitSearchResults();
    } else {
      cdm.api.Search.submitSimpleSearch();
    }
  });
  $("body").click(function(){
    cdm.api.Search.suggestedSearchHide();
  });
}

cdm.api.Search.bindSearchResults = function(){
  $("#search_results_button").click(function(){
    cdm.api.Search.submitSearchResults();
  });
  $("#search_results_button_arrow").click(function(){
    cdm.api.Search.submitSearchResults();
  });
  $("#search_content_box").keypress(function(event) {
    if(event.keyCode == '13') {
      cdm.api.Search.submitSearchResults();
     }
  });

}

cdm.api.Search.simpleSearchUnbinder = function(){
  $("#simple_search_button").unbind("click");
  $("#search_content_box").unbind("keypress");
  $("a.dd_option_searchresults").unbind("click");
  $("#search_results_dd_link").unbind("click");
}
cdm.api.Search.init = function (){
  cdm.api.Search.searchResultsButtonMode = $("#search_results_button_mode").val();
  cdm.api.Search.suggestiveSearchEnabled = $("#cdm_suggestiveSearchEnabled").val();
  cdm.api.Search.defaultMode = $("#cdm_searchDefaultMode").val();
  cdm.api.Search.defaultConnector = $("#cdm_searchDefaultConnector").val();
  cdm.api.Search.defaultField = $("#cdm_searchDefaultField").val();
  cdm.api.Search.defaultOrder = $("#cdm_searchDefaultOrder").val();
  cdm.api.Search.searchCollections = $("#cdm_searchCollections").val();
  cdm.gvars.searchCollectionsList = cdm.api.Search.searchCollections;

  if($("#search_results_dd_link").exists() ){
    $("a.dd_option_searchresults").click(function(){
      cdm.api.Search.searchResultsButtonMode = $(this).attr("sbm");
      $("#search_results_button_mode").val(cdm.api.Search.searchResultsButtonMode);
      $("#search_results_dd_link").html($("#search_results_button_text_"+cdm.api.Search.searchResultsButtonMode).val()+'<span id="search_results_button_arrow" class="icon_10 icon_nav_top_left ui-icon-triangle-1-s"></span>');
      $("#search_results_dd_link").focus();
    });
  }
  cdm.api.Search.bindSearchForm();
  if($("#search_results_dd_link").exists()){
    create_dd("search_results");
  }
  var searchBoxOffset = $("#search_content_box").offset();
  $("#suggested_search_terms").css("left",searchBoxOffset.left).css("top",searchBoxOffset.top + 20);
  //var sc = $("#cdm_collection").val();
  //if($("#cdm_collection").val().length > 0){
  //  cdm.gvars.collectionsOn = 1;
  //}
  cdm.gvars.collectionsOn = parseInt($("#cdm_collectionsOn").val());
  cdm.gvars.activeCollection = $("#cdm_collection").val();
  cdm.api.Search.noSearchTermAlert = $("#cdm_language_error_enterAWordOrPhrase").val();
  cdm.gvars.fullTextSearchPrompt = $("#cdm_language_searchthisitem").val();
  cdm.gvars.fullTextTotalInstancesFound = $("#cdm_language_totalinstancesfound").val();
  cdm.gvars.fullTextOneInstanceFound = $("#cdm_language_oneinstancefound").val();
  cdm.gvars.fullTextNoInstancesFound = $("#cdm_language_noinstancesfound").val();
}


//#  Adv Search functionality ---------->
cdm.api.Search.toggleDateSearchForm = function(){
  $("#adv_search_by_date_container").slideToggle("normal");
  if(cdm.api.Search.dateSearch) {
    cdm.api.Search.dateSearch = false;
    $("#icon_adv_search_datearrow").removeClass("ui-icon-triangle-1-s");
    $("#icon_adv_search_datearrow").addClass("ui-icon-triangle-1-e");
  } else {
    cdm.api.Search.dateSearch = true;
    $("#icon_adv_search_datearrow").removeClass("ui-icon-triangle-1-e");
    $("#icon_adv_search_datearrow").addClass("ui-icon-triangle-1-s");
  }
}

cdm.api.Search.clearAdvancedSearch = function(){
  if(cdm.api.Search.advancedSearchRowCount > 0){
    for(a=0;a<=cdm.api.Search.advancedSearchRowId;a++){
      $("#rid" + a + "_term").val("");
      //if(a > 0){
      //  $("#rid"+a).remove();
      //  if(!cdm.api.Search.advSearchAddFieldLinkBound){
      //    cdm.api.Search.bindAdvSearchAddFieldLink();
      //  }
      //}
    }
  }
  if(cdm.api.Search.dateSearch){
    $("#datepicker1").val("");
    $("#datepicker2").val("");
    //cdm.api.Search.toggleDateSearchForm();
  }
}

	cdm.api.Search.makeAdvancedSearchRow = function() {
    if(cdm.api.Search.advancedSearchRowCount < cdm.api.Search.maxFields){
      var advSearchBGColor = "";
      var advSearchRemoveText = "";
      if(cdm.api.Search.advancedSearchRowId > 0){
        advSearchBGColor = "adv_search_row_bgcolor";
        advSearchRemoveText = $("#cdm_language_remove").val();
      }
      var row_str = "<li id='rid" + cdm.api.Search.advancedSearchRowId + "' class='adv_search_row "+advSearchBGColor+"'><ul class='adv_search_ul_row'>";
      row_str = row_str + "<li class='float_left'><select onmousedown=\"if($.browser.msie){this.style.position='relative';this.style.width='auto'}\" onchange=\"this.style.position='';this.style.width=''\" onblur=\"this.style.position='';this.style.width=''\" id='rid" + cdm.api.Search.advancedSearchRowId + "_mode' class='adv_search_type_dd'><option value='all' " + cdm.api.Search.advancedSearchAll + ">"+$("#cdm_language_allofthewords").val()+"</option><option value='any' " + cdm.api.Search.advancedSearchAny + ">"+$("#cdm_language_anyofthewords").val()+"</option><option value='exact' " + cdm.api.Search.advancedSearchExact + ">"+$("#cdm_language_theexactphrase").val()+"</option><option value='none' " + cdm.api.Search.advancedSearchNone + ">"+$("#cdm_language_noneofthewords").val()+"</option></select></li>";
      row_str = row_str + "<li class='float_left spaceMar5L'><input id='rid" + cdm.api.Search.advancedSearchRowId + "_term' class='adv_search_str' type='text' value=''/></li>";
      row_str = row_str + "<li class='float_left spaceMar5L spacePad5'>"+$("#cdm_language_in").val()+"</li>";
      row_str = row_str + "<li class='float_left spaceMar5L'><select onmousedown=\"if($.browser.msie){this.style.position='relative';this.style.width='auto'}\" onchange=\"this.style.position='';this.style.width=''\" onblur=\"this.style.position='';this.style.width=''\" id='rid" + cdm.api.Search.advancedSearchRowId + "_field' class='adv_search_domain_dd'>"
      if(cdm.api.Search.advancedFieldsNone){
        cdm.api.Search.advancedFieldsNone = false;
        cdm.api.Search.advancedFields = new Array();
        af=0;
        for(var index in cdm.gvars.collectionFieldsInfo) {
          cdm.api.Search.advancedFields[af] = index;
          af++;
        }
      }
      for(f=0;f<cdm.api.Search.advancedFields.length;f++){
        searchfieldselected = "";
        if(cdm.gvars.collectionFieldsInfo[cdm.api.Search.advancedFields[f]] != undefined){
          if( $("#cdm_searchDefaultField").val() == cdm.api.Search.advancedFields[f]){
            searchfieldselected = "selected='selected'";
          }
          row_str = row_str + "<option value='" + cdm.api.Search.advancedFields[f] + "' "+ searchfieldselected +">" + cdm.gvars.collectionFieldsInfo[cdm.api.Search.advancedFields[f]] + "</option>";
        }
      }

      row_str = row_str + "</select></li>";
      row_str = row_str + "<li class='float_left spaceMar5L'><select id='rid" + cdm.api.Search.advancedSearchRowId + "_connector' class='adv_search_and_or_dd'><option value='and' " + cdm.api.Search.advancedSearchAnd + ">"+$("#cdm_language_and").val()+"</option><option value='or' " + cdm.api.Search.advancedSearchOr + ">"+$("#cdm_language_or").val()+"</option></select></li>";
      row_str = row_str + "<li class='adv_search_option_remove_link_box float_left spaceMar10L spacePad5'><a class='remove_adv_search_row_link action_link_10' rid='rid" + cdm.api.Search.advancedSearchRowId + "' href='javascript://'>"+advSearchRemoveText+"</a></li></ul><span class='clear'></span></li>";

      cdm.api.Search.advancedCurrentRowId = "rid" + cdm.api.Search.advancedSearchRowId;
      cdm.api.Search.advancedSearchRowCount++;
      cdm.api.Search.advancedSearchRowId++;
      if(cdm.api.Search.advancedSearchRowCount == cdm.api.Search.maxFields){
        cdm.api.Search.unbindAdvSearchAddFieldLink();
      }
      return row_str;
    }
	}
cdm.api.Search.advancedSearchDelimiter = function(qData){
  return qData+"!";
}

cdm.api.Search.populateDateField = function(field,datevalue){
  if(datevalue.length == 8){
    $("#"+field).val(datevalue.substr(4, 2)+"/"+datevalue.substr(6, 2)+"/"+datevalue.substr(0, 4));
  } else if(datevalue.length == 6){
    $("#"+field).val(datevalue.substr(4, 2)+"/"+datevalue.substr(0, 4));
  } else {
    $("#"+field).val(datevalue);
  }
}

cdm.api.Search.populateAdvancedSearchForm = function(){
  var queryCount = 0;
  for(a=0;a<cdm.api.Search.queryTotal;a++){
    queryId = "searchquery_"+a;
    if($("#"+queryId).exists()){
      thisQ = $("#"+queryId).val().split("^");

      isDateSearch = false;
      if(thisQ[0] == cdm.api.Search.dateFieldNickname) {
        if (!isNaN(thisQ[1])) {
          isDateSearch = true;
        } else {
          dates = thisQ[1].split("-");
          if (dates.length == 2) {
            isDateSearch =  (!isNaN(dates[0]) && !isNaN(dates[1]) && (dates[0].length >=4) && (dates[1].length  >=4));
          }
        }
      }
      if(isDateSearch){
        //adv_search_date_range -- datepicker1 -- datepicker2
        dates = thisQ[1].split("-");
        if(dates.length == 1){
          $("#adv_search_date_range").val("on");
          //$("#datepicker1").val(dates[0].substr(4, 2)+"/"+dates[0].substr(6, 2)+"/"+dates[0].substr(0, 4));
          cdm.api.Search.populateDateField("datepicker1",dates[0]);
          $("#datepicker2").hide();
          $("#datepickerTo").hide();
        } else {
          if(dates[0] == cdm.api.Search.beforeDateDefault){
              $("#adv_search_date_range").val("before");
              //$("#datepicker1").val(dates[1].substr(4, 2)+"/"+dates[1].substr(6, 2)+"/"+dates[1].substr(0, 4));
              cdm.api.Search.populateDateField("datepicker1",cdm.api.Search.getOffsetDate(dates[1], "1"));
              $("#datepicker2").hide();
              $("#datepickerTo").hide();
          } else if(dates[1] == cdm.api.Search.afterDateDefault){
              $("#adv_search_date_range").val("after");
              //$("#datepicker1").val(dates[0].substr(4, 2)+"/"+dates[0].substr(6, 2)+"/"+dates[0].substr(0, 4));
              cdm.api.Search.populateDateField("datepicker1",cdm.api.Search.getOffsetDate(dates[0], "-1"));
              $("#datepicker2").hide();
              $("#datepickerTo").hide();
              break;
          } else {
              $("#adv_search_date_range").val("from");
              cdm.api.Search.populateDateField("datepicker1",dates[0]);
              cdm.api.Search.populateDateField("datepicker2",dates[1]);
          }
        }
        cdm.api.Search.dateSearchOriginal=true;
      } else {
        $("#adv_search_query_builder_list").append(cdm.api.Search.makeAdvancedSearchRow());
        if(thisQ[0] == "CISOSEARCHALL"){
          thisQ[0] = "all";
        }
        $("#"+cdm.api.Search.advancedCurrentRowId+"_mode").val(thisQ[2]);
        if( $("#cdm_slashencode").val() == "on") {
          $("#"+cdm.api.Search.advancedCurrentRowId+"_term").val(thisQ[1].replace(/%20/gi," ").replace(/\+/gi," ").replace(/%252F/,"/"));
        } else {
          $("#"+cdm.api.Search.advancedCurrentRowId+"_term").val(thisQ[1].replace(/%20/gi," ").replace(/\+/gi," ").replace(/%2F/,"/"));
        }
        $("#"+cdm.api.Search.advancedCurrentRowId+"_field").val(thisQ[0]);
        $("#"+cdm.api.Search.advancedCurrentRowId+"_connector").val(thisQ[3]);
        queryCount++;
      }
    }
  }
  if(queryCount == 0){
    $("#adv_search_query_builder_list").append(cdm.api.Search.makeAdvancedSearchRow());
  }
}

// Extend string to numberOfDigits by adding leading zeros
function addLeadingZeros(originalString,numberOfDigits)
{
    var formattedString = originalString;
    for (i=originalString.length; i < numberOfDigits; i++)
    {
        formattedString = "0" + formattedString;
    }
    return formattedString;
}

// Take a string and try to format it as an iso date
// yyyymmdd.  If unable to format it return original string
// 06/22/2011   Joe Tavares
function tryParseDate(dateString)
{
    var parsedDateString;
    if (0 == dateString.length)
        return false;
    if (cdm.api.Search.dateFormat == dateString)
        return false;

    // Largest possible date is mm/dd/yyyy (10 characters)
    if (10 < dateString.length)
        return dateString;

    // figure out delimiter two possible '/' and '-'
    var delimiter;
    if (-1 != dateString.indexOf("/"))
        delimiter = "/";
    else
        delimiter = "-";
    dateParts = dateString.split(delimiter);

    //Possible dateParts
    // dateParts[0] = mm, dateParts[1] = dd, dateParts[2] = yyyy
    // dateParts[0] = yyyy dateParts[1]= mm, dateParts[2] = dd
    // dateParts[0] = mm, dateParts[1] = yyyy
    // dateParts[0] = yyyy
    if(3 == dateParts.length)
    {
        // okay it is either yyyy-mm-dd or mm-dd-yyyy
        if (4 == dateParts[0].length)
        {
            parsedDateString = dateParts[0]+
                addLeadingZeros(dateParts[1],2) +
                addLeadingZeros(dateParts[2],2);
        }
        else
        {
            parsedDateString = addLeadingZeros(dateParts[2],4) +
                addLeadingZeros(dateParts[0],2)+
                addLeadingZeros(dateParts[1],2);
        }
    }
    else if(2 == dateParts.length)
    {
        if (4 == dateParts[0].length)
        {
           parsedDateString = dateParts[0] + addLeadingZeros(dateParts[1],2);
        }
        else
        {
           parsedDateString = addLeadingZeros(dateParts[1],4) + addLeadingZeros(dateParts[0],2);
        }
    }
    else
    {
          //assumes it just a year and/or correct format
          parsedDateString = dateString;
    }
    return parsedDateString;
}

// Get date offset by 1 day.  Assumes date is already parsed into iso date yyyymmdd format.
cdm.api.Search.getOffsetDate = function(formattedDateString, offset) {
  var dateInt = parseInt(formattedDateString, 10);
  return (dateInt + parseInt(offset)) + "";
}


cdm.api.Search.bindAdvancedSearch = function(){
  if($(".adv_search_row").length > 0)
  {

    if(cdm.api.Search.dateSearch)
    {
      dateRange = $("#adv_search_date_range").val();
      d1 = $("#datepicker1").val();
      dateRange1 = tryParseDate(d1);
      if (!dateRange1)
      {
        $("#adv_search_error").html(cdm.api.Search.alertIconHTML + " " + $("#cdm_language_error_enterADate").val());
        $("#adv_search_error").show();
        $("#datepicker1").addClass("ui-datepicker-error-border");
        return false;
       }
    dateRange2="";

    switch(dateRange){
        case "from":
          d2 = $("#datepicker2").val();
          dateRange2 = tryParseDate(d2);
          if (!dateRange2)
          {
            $("#adv_search_error").html(cdm.api.Search.alertIconHTML + " " + $("#cdm_language_error_enterAnEndDate").val());
            $("#adv_search_error").show();
            $("#datepicker2").addClass("ui-datepicker-error-border");
            return false;
          }
          if(dateRange2 < dateRange1) {
            $("#adv_search_error").html(cdm.api.Search.alertIconHTML + " " + $("#cdm_language_error_theseconddatecannotbeearlierthanthefirstdate").val());
            $("#adv_search_error").show();
            $("#datepicker2").addClass("ui-datepicker-error-border");
            return false;
          }
          dateRange2 = "-" + dateRange2;
          break;
        case "before":
          dateRange2 = "-"+cdm.api.Search.getOffsetDate(dateRange1, "-1");
          dateRange1 = cdm.api.Search.beforeDateDefault;
          break;
        case "after":
          dateRange1 = cdm.api.Search.getOffsetDate(dateRange1, "1");
          dateRange2 = "-"+cdm.api.Search.afterDateDefault;
          break;
        case "on":
          dateRange2 = "";
          break;
      }


   }

//add check empty text fields
    var searchError = false;
    asRowCounter = 0;
    var theFields = "";
    var theTerms = "";
    var theModes = "";
    var theConnectors = "";
    var theQuery = "";
    var noneCount = 0;
    var lastConnector="";
    var dateFieldDelimiter = "!";
    $(".adv_search_row").each(function(){
      asRowCounter++;
      var myId = $(this).attr("id");

      t = encodeURIComponent($.trim($("#"+myId+"_term").val()).replace(/!/g, ''));
      t = t.replace(/\+/g, '%20');
      if( $("#cdm_slashencode").val() == "on") {
        t = t.replace(/%2F/g, '%252F');
      }
      if(t.length > 0){
        theTerms = theTerms + t;
      } else {
        if(!cdm.api.Search.dateSearch && theTerms.length == 0 && asRowCounter == $(".adv_search_row").length){
          searchError=true;
          $("#adv_search_error").html(cdm.api.Search.alertIconHTML + " " + $("#cdm_language_error_enterAWordOrPhrase").val());
          $("#adv_search_error").show();
          $("#"+myId+"_term").addClass("ui-datepicker-error-border");
          $("#"+myId+"_term").focus(function(){
            $(this).removeClass("ui-datepicker-error-border");
          });
          return false;
        } else {
          return true;
        }
      }

      theFields = theFields + $("#"+myId+"_field").val();
      theModes = theModes + $("#"+myId+"_mode").val();
      theConnectors = theConnectors + $("#"+myId+"_connector").val();
      lastConnector=$("#"+myId+"_connector").val();
      if($("#"+myId+"_mode").val() == "none"){
        noneCount++;
      }

      if(asRowCounter < $(".adv_search_row").length){

        theFields = cdm.api.Search.advancedSearchDelimiter(theFields);
        theTerms = cdm.api.Search.advancedSearchDelimiter(theTerms);
        theModes = cdm.api.Search.advancedSearchDelimiter(theModes);
        theConnectors = cdm.api.Search.advancedSearchDelimiter(theConnectors);
      }
    });
    //theTerms = theTerms.replace("+","%20");
    if(cdm.api.Search.dateSearch){
      //"!date^"+dateRange1+dateRange2+ "^exact^and"
      if(theTerms.length == 0 || theTerms.substring(theTerms.length - 1) == "!"){
        dateFieldDelimiter = "";
      }

      theFields = theFields + dateFieldDelimiter + cdm.api.Search.dateFieldNickname;
      theTerms = theTerms + dateFieldDelimiter +dateRange1+dateRange2;
      theModes = theModes+ dateFieldDelimiter + "exact";
      //why do this
      //if(lastConnector == "or") {
      //  cdm.util.ConsoleLogger("here");
      //  theConnectors = theConnectors.substring(0,theConnectors.length - 2) + "and" + dateFieldDelimiter + "and";
      //} else {
      //  cdm.util.ConsoleLogger("no ... here");
        theConnectors = theConnectors + dateFieldDelimiter + "and";
      //}
    }
    cdm.util.ConsoleLogger("were we there?");
    if(noneCount == $(".adv_search_row").length){
	  cdm.api.Search.noneSearchAlert=$("#cdm_language_error_noneoperatormissing").val(); //should not be necessary
      alert(cdm.api.Search.noneSearchAlert);
      return false;
    }

    theQuery = "/searchterm/" + theTerms + "/field/" + theFields + "/mode/" + theModes + "/conn/" + theConnectors + "/order/"+cdm.api.Search.defaultOrder;
    var sc = $("#cdm_searchCollections").val();
    if(sc.length > 0 && sc != "all"){
      sc = "/collection/" + $("#cdm_searchCollections").val();
    } else {
      sc = "";
    }
    //cdm.util.ConsoleLogger("adv sc: " + sc);
    if(!searchError){
      window.location.href=$("#collectionHomeUrl").val() + cdm.api.Search.browseView + sc + theQuery;
    }
  } else {
    //alert("something amiss here");
  }
}

cdm.api.Search.advancedFormModeConnector = function(){
  switch(cdm.api.Search.defaultMode){
    case "any":
      cdm.api.Search.advancedSearchAny = "selected='selected'";
      break;
    case "exact":
      cdm.api.Search.advancedSearchExact = "selected='selected'";
      break;
    case "none":
      cdm.api.Search.advancedSearchNone = "selected='selected'";
      break;
    case "all":
    default:
      cdm.api.Search.advancedSearchAll = "selected='selected'";
      break;
  }
  switch(cdm.api.Search.defaultConnector){
    case "or":
      cdm.api.Search.advancedSearchOr = "selected='selected'";
      break;
    case "and":
    default:
      cdm.api.Search.advancedSearchAnd = "selected='selected'";
      break;
  }
}
cdm.api.Search.updateFormCollectionList = function(colls){
  //bankrobbers~on!bfoot~on!bassgtr~off!carl~on!
  $("#advsearchCollectionList").html("");
  collcount = 0;
  collcounttotal = 0;
  thelist = colls.split("!");
  for(c=0;c<thelist.length;c++){
    collparts = thelist[c].split("~");
    if(collparts[1] == "on" && collcount < cdm.api.Search.collectionsDisplayLimit){
      thename = $("input.advanced_max_collections_checkbox[name="+collparts[0]+"]").attr("collname");
      $("#advsearchCollectionList").append("<li>"+thename+"</li>");
      collcount++;
    }
    if(collparts[1] == "on"){
      collcounttotal++;
    }
  }
  cdm.api.Search.collectionsOn = collcounttotal;
  if(cdm.api.Search.collectionsOn == cdm.api.Search.collectionTotal){
    $("#advsearchCollectionList").html("");
    $("#advsearchAllMoreText").html($("#cdm_language_allCollections").val());
    $("#advanced_max_collections_link").text($("#cdm_language_limitsearchtospecificcollections").val());
  } else {
    if(cdm.api.Search.collectionsOn > cdm.api.Search.collectionsDisplayLimit){
      collNumOver = cdm.api.Search.collectionsOn - cdm.api.Search.collectionsDisplayLimit
      thelinktext = $("#cdm_language_plus").val() + " " + collNumOver + " " + $("#cdm_language_more").val();
    } else {
      thelinktext ="";
    }

    $("#advsearchAllMoreText").html(thelinktext);
    $("#advanced_max_collections_link").text( $("#cdm_language_addorremovecollections").val() );
  }
  //advanced_max_collections_link ... cdm.api.Search.collectionTotal
  //
}
cdm.api.Search.setCollectionList = function(item,mode){
  var tcChecked="";
  oneCollection="";
  cdm.api.Search.searchCollections = "";
  tempCollCount = 0;
  cdm.gvars.collectionsOn = 0;
  $("."+mode+"max_collections_checkbox").each(function(){
    tempCollCount++;
     tc = $(this).attr("coll");
     if( $(this).is(':checked')){
       ckd = "on";
       cdm.gvars.collectionsOn++;
       oneCollection = tc;
       cdm.api.Search.searchCollections = cdm.api.Search.searchCollections + tc+"!";
     } else {
       ckd = "off";
     }
     tcChecked = tcChecked + tc + "~" + ckd + "!";
  });
  if(tempCollCount == cdm.gvars.collectionsOn){
    cdm.api.Search.searchCollections = "all";
  }
  if(cdm.gvars.collectionsOn == 1){
    cdm.gvars.activeCollection = oneCollection;
    $.ajax({
    type: "GET",
    url:  "/utils/getfirstdatenickname/collection/"+oneCollection,
    dataType: "text",

    success: function (msg) {
      if(msg != null){
          cdm.api.Search.dateFieldNickname = msg;
      }
    },
    error: function (a, b, c) {
	  cdm.util.ajaxErrorAlerts("error_therewasanerrorupdatingthecollectionlist",a,"","");
       }
    });
    $("#cdm_collectionDateField").val(cdm.api.Search.dateFieldNickname);
  }
  //if(cdm.api.Search.searchCollections.length > 0 && cdm.api.Search.searchCollections != "all"){
  if(cdm.api.Search.searchCollections.substring(cdm.api.Search.searchCollections.length -1) == "!"  ){
    cdm.api.Search.searchCollections = cdm.api.Search.searchCollections.substring(0,cdm.api.Search.searchCollections.length - 1);
  }
  $("#cdm_searchCollections").val(cdm.api.Search.searchCollections);
  //cdm.util.ConsoleLogger("search colls: "+cdm.api.Search.searchCollections);

  $.ajax({
    type: "POST",
    url:  "/utils/updateresultcollections",
    data: "c="+tcChecked,
    dataType: "text",

    success: function (msg) {
      if(msg == "success"){
        $(item).parents("div.ui-dialog-content").dialog("close");
        if(mode != "advanced_"){
          cdm.api.Search.newSearch = false;
          cdm.api.Search.newAttribute = "";
          cdm.api.Search.submitSearchResults();
        } else {
          cdm.api.Search.updateFormCollectionList(tcChecked);
        }
      }
    },
    error: function (a, b, c) {
      //alert("There was an error updating the collection list;");
	  cdm.util.ajaxErrorAlerts("error_therewasanerrorupdatingthecollectionlist",a,"","");
      //cdm.util.ConsoleLogger("there was an error ... " + a);
    }
  });
}

cdm.api.Search.initAdvanced = function(){
  cdm.api.Search.maxFields = parseInt($("#cdm_advancedSearchMaxFields").val());
  fields = $("#cdm_advancedSearchFields").val();
  cdm.api.Search.dateFormat = $("#cdm_advancedSearchByDateFormat").val();
  cdm.api.Search.datepickerFormat = $("#cdm_advancedSearchDPFormat").val();
  if(cdm.gvars.collectionsOn == 1 && $("#cdm_collectionDateField").val() != "") {
    cdm.api.Search.dateFieldNickname = $("#cdm_collectionDateField").val();
  }
  if(fields == "none"){
    //cdm.api.Search.advancedFields = fields;
    cdm.api.Search.advancedFieldsNone = true;
  } else {
    cdm.api.Search.advancedFields = fields.split("!");
  }
  cdm.api.Search.advancedFormModeConnector();
  cdm.api.Search.dateSearch = false;
  cdm.api.Search.collectionLimit = parseInt($("#cdm_collectionSearchLimit").val());
  cdm.api.Search.collectionTotal = parseInt($("#cdm_collectionTotal").val());
  cdm.api.Search.collectionsOn = parseInt($("#cdm_collectionsOn").val());
  cdm.api.Search.collectionsDisplayLimit = parseInt($("#cdm_collectionsDisplayLimit").val());

	$("#search_content_modal_cover").hide();
	$("#search_content_adv_link, #search_content_close_icon").click(function(){
	  $("#adv_search").slideToggle("normal");
    $("#search_content_adv_link").text(($("#search_content_adv_link").text() == $("#cdm_language_advancedsearch").val() )? $("#cdm_language_closeadvancedsearch").val():$("#cdm_language_advancedsearch").val());
		if( $("#search_content").hasClass("search_content_modal_cover") ){
      cdm.api.Search.init(); //remove init if not needed
      $("#search_content").removeClass("search_content_modal_cover");
    } else {
      cdm.api.Search.simpleSearchUnbinder();
      $("#search_content").addClass("search_content_modal_cover");
      if(cdm.api.Search.dateSearchOriginal){
        cdm.api.Search.dateSearch=true;
        $("#adv_search_by_date_container").slideToggle("normal");
        //cdm.util.ConsoleLogger("hmm: " + cdm.api.Search.dateSearchOriginal);
      }
    }
    $("#search_content_close_icon").toggle();
	});

  if(!$("#cdm_query_total").exists()){
    cdm.api.Search.queryTotal=0;
  } else {
    cdm.api.Search.queryTotal=parseInt($("#cdm_query_total").val());
  }
  if(cdm.api.Search.queryTotal > 0 && $("#searchterm").val().length > 0 ){
    cdm.api.Search.populateAdvancedSearchForm();
  } else {
    $("#adv_search_query_builder_list").append(cdm.api.Search.makeAdvancedSearchRow());
  }


  if(cdm.api.Search.queryTotal < cdm.api.Search.maxFields){
    cdm.api.Search.bindAdvSearchAddFieldLink();
  }


  //if($(".adv_search_row").length == 1){
	//  $(".remove_adv_search_row_link").hide();
  //}

	$(".remove_adv_search_row_link").live("click", function(){
    cdm.api.Search.advancedSearchRowCount--;
		if($(".adv_search_row").length > 1)
			$("#" + $(this).attr("rid")).remove();
		if($(".adv_search_row").length <= 1)
			$("a.remove_adv_search_row_link").hide();
    if(!cdm.api.Search.advSearchAddFieldLinkBound){
      cdm.api.Search.bindAdvSearchAddFieldLink();
    }
	});

	$("#adv_search_by_date_container").hide();
	$("#adv_search_by_date_link").click(function(){
    cdm.api.Search.toggleDateSearchForm();
	});
  $("#adv_search_date_range").change(function(){
    switch($(this).val()){
      case "after":
      case "before":
      case "on":
        $("#datepicker2").hide();
        $("#datepickerTo").hide();
        break;
      case "from":
        $("#datepicker2").show();
        $("#datepickerTo").show();
        break;
    }
  });

  $("#datepicker1").focus(function(){
    if($(this).val() == cdm.api.Search.dateFormat){
      $(this).val("");
    }
    if($(this).hasClass("ui-datepicker-error-border")){
      $(this).removeClass("ui-datepicker-error-border");
    }
  });
  $("#datepicker2").focus(function(){
    if($(this).val() == cdm.api.Search.dateFormat){
      $(this).val("");
    }
    if($(this).hasClass("ui-datepicker-error-border")){
      $(this).removeClass("ui-datepicker-error-border");
    }
  });
  $("#advanced_search_button").click(function(){
    cdm.api.Search.bindAdvancedSearch();
  });
  if($("#advanced_max_collections_link").exists()){
    $("#advanced_max_collections_link").click(function(){
	   dialogOpts.width = 490;
      //cdm.util.ConsoleLogger("clicking reference url");
	   create_new_dialog("advanced_max_collections", dialogOpts);
    });
  }
  $("#advanced_all_collections_ok_button").click(function(){
    cdm.api.Search.setCollectionList(this,"advanced_");
  });

  setTimeout("cdm.api.Search.showMeDateSearch()",2000);

  $("#advanced_search_clearall").click(function(){
    cdm.api.Search.clearAdvancedSearch();
  });
}

cdm.api.Search.bindAdvSearchAddFieldLink = function(){
  $("#adv_search_add_field_link").removeClass("adv_search_add_field_link_disabled");
  cdm.api.Search.advSearchAddFieldLinkBound = true;
  //cdm.util.ConsoleLogger("binding link");
  $("#adv_search_add_field_link").click(function(){
		$("#adv_search_query_builder_list").append(cdm.api.Search.makeAdvancedSearchRow());
		//$(".remove_adv_search_row_link").show();
	});
}
cdm.api.Search.unbindAdvSearchAddFieldLink = function(){
  $("#adv_search_add_field_link").unbind("click");
  $("#adv_search_add_field_link").addClass("adv_search_add_field_link_disabled");
  cdm.api.Search.advSearchAddFieldLinkBound = false;
  //cdm.util.ConsoleLogger("unbinding link");
}

cdm.api.Search.showMeDateSearch = function(){
  //cdm.util.ConsoleLogger("on is: " + cdm.api.Search.collectionsOn);
  //cdm.util.ConsoleLogger("limit is: " + cdm.api.Search.collectionLimit);
  //cdm.util.ConsoleLogger("total is: " + cdm.api.Search.collectionTotal);
}


cdm.api.Search.selectAllmaxCollections = function(s,mode){
  //cdm.util.ConsoleLogger("mode is: "+ mode);
  if(s){
    $(".results_tn_collection_box_max input").each(function () {
      $(this).attr('checked', true);
      $(this).parents(".results_tn_collection_box_max").addClass("results_tn_collection_box_checked");
    });
    $("#"+mode+"all_collections_ok_button").removeClass("dialog_button_disabled");
    if(!cdm.util.hasEvent($("#"+mode+"all_collections_ok_button"),"click")){
      $("#"+mode+"all_collections_ok_button").click(function(){
        cdm.api.Search.setCollectionList(this,mode);
      });
    }
    if(cdm.api.Search.collectionTotal > cdm.api.Search.collectionLimit){
      $("#"+mode+"collection_limit_information").hide();
    }
  } else {
    $(".results_tn_collection_box_max input").each(function () {
      $(this).attr('checked', false);
      $(this).parents(".results_tn_collection_box_max").removeClass("results_tn_collection_box_checked");
    });
    cdm.api.Search.collectionsOn=0;
    $("#"+mode+"all_collections_ok_button").unbind("click");
    $("#"+mode+"all_collections_ok_button").addClass("dialog_button_disabled");
    if(cdm.api.Search.collectionTotal > cdm.api.Search.collectionLimit){
      $("#"+mode+"cdmCollectionsSelected").text(cdm.api.Search.collectionsOn);
      $("#"+mode+"collection_limit_information").show();
    }
  }
}
cdm.api.Search.collectionLimitCounter = function (item,mode){
  //if(cdm.api.Search.collectionTotal > cdm.api.Search.collectionLimit){
    if($(item).is(':checked')){
      if(cdm.api.Search.collectionsOn < cdm.api.Search.collectionLimit){
        cdm.api.Search.collectionsOn++;
        if(cdm.api.Search.collectionTotal > cdm.api.Search.collectionLimit){
          $("#"+mode+"cdmCollectionsSelected").text(cdm.api.Search.collectionsOn);
        }
        //if(!cdm.util.hasEvent($("#"+mode+"all_collections_ok_button"),"click")){
        //  $("#"+mode+"all_collections_ok_button").removeClass("dialog_button_disabled");
        //  $("#"+mode+"all_collections_ok_button").click(function(){
        //    cdm.api.Search.setCollectionList(this,mode);
        //  });
        //}
      } else {
        $(item).attr('checked', false);
        $(item).parents(".results_tn_collection_box_max").toggleClass("results_tn_collection_box_checked");
      }
    } else {
      cdm.api.Search.collectionsOn--;
      if(cdm.api.Search.collectionTotal > cdm.api.Search.collectionLimit){
        $("#"+mode+"cdmCollectionsSelected").text(cdm.api.Search.collectionsOn);
      }
    }


    if(cdm.api.Search.collectionsOn > 0 && cdm.api.Search.collectionsOn < cdm.api.Search.collectionLimit && $("#"+mode+"all_collections_ok_button").hasClass("dialog_button_disabled") ){
      $("#"+mode+"all_collections_ok_button").removeClass("dialog_button_disabled");
      if(!cdm.util.hasEvent($("#"+mode+"all_collections_ok_button"),"click")){
        $("#"+mode+"all_collections_ok_button").click(function(){
          cdm.api.Search.setCollectionList(this,mode);
        });
      }
    }
    if(cdm.api.Search.collectionsOn == 0){
      $("#"+mode+"all_collections_ok_button").unbind("click");
      $("#"+mode+"all_collections_ok_button").addClass("dialog_button_disabled");
    }
  //}
}

cdm.api.Search.fullTextSearchBinder = function (elem,term){
  alert(cdm.api.Search.fullTextSearch($("pre#"+elem), term.toUpperCase()) );
}

cdm.api.Search.fullTextSearch = function(elem,term){
  var skip = 0;
  //cdm.util.ConsoleLogger("elem node type is:  " + elem.nodeType);
  if (elem.nodeType == 3) {
   var pos = elem.data.toUpperCase().indexOf(term);
   if (pos >= 0) {
     //cdm.util.ConsoleLogger("pos is:  " + pos);
    var spannode = document.createElement('span');
    spannode.className = 'cdm_full_text_highlight';
    var middlebit = elem.splitText(pos);
    var endbit = middlebit.splitText(term.length);
    var middleclone = middlebit.cloneNode(true);
    spannode.appendChild(middleclone);
    middlebit.parentNode.replaceChild(spannode, middlebit);
    skip = 1;
   }
  } else if (elem.nodeType == 1 && elem.childNodes && !/(script|style)/i.test(elem.tagName)) {
   for (var i = 0; i < elem.childNodes.length; ++i) {
    i += cdm.api.Search.fullTextSearch(elem.childNodes[i], term);
   }
  }
  return skip;
}

jQuery.fn.highlight = function(pat) {
 function innerHighlight(node, pat) {
   var skip = 0;
   if (node.nodeType == 3) {
     var pos = node.data.toUpperCase().indexOf(pat);
     if (pos >= 0) {
       var p = "";
       var n = "";
       var nTest = false;
       var pTest = false;
       if(pos > 0){
         p = node.data.substring(pos-1,pos);
       }
       if(pos < node.data.length - pat.length){
         n = node.data.substring(pos+pat.length,pos+pat.length+1);
       }
       n = $.trim(n);
       p = $.trim(p);
       if(cdm.api.Search.regexNonWord.test(n) || n.length == 0){
         nTest = true;
       }
       if(cdm.api.Search.regexNonWord.test(p) || p.length == 0){
         pTest = true;
       }
       if(nTest && pTest){
         var spannode = document.createElement('span');
         spannode.className = cdm.api.Search.fullTextHighlightClass;
         spannode.setAttribute("id","fulltextnav_"+cdm.api.Search.fullTextNavCounter);
         var middlebit = node.splitText(pos);
         var endbit = middlebit.splitText(pat.length);
         var middleclone = middlebit.cloneNode(true);
         spannode.appendChild(middleclone);
         middlebit.parentNode.replaceChild(spannode, middlebit);
         cdm.api.Search.fullTextNavCounter++;
       } else {
         var spannode = document.createElement('span');
         spannode.className = cdm.api.Search.fullTextHighlightClassFalse;
         var middlebit = node.splitText(pos);
         var endbit = middlebit.splitText(pat.length);
         var middleclone = middlebit.cloneNode(true);
         spannode.appendChild(middleclone);
         middlebit.parentNode.replaceChild(spannode, middlebit);
       }
       skip = 1;
     }
   } else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
     for (var i = 0; i < node.childNodes.length; ++i) {
       i += innerHighlight(node.childNodes[i], pat);
     }
  }
  return skip;
 }
 return this.each(function() {
  innerHighlight(this, pat.toUpperCase());
 });
};

jQuery.fn.removeHighlight = function(elem) {
 return this.find("span."+elem).each(function() {
  this.parentNode.firstChild.nodeName;
  with (this.parentNode) {
   replaceChild(this.firstChild, this);
   normalize();
  }
 }).end();
};


cdm.api.Search.calc_search_box_width = function (end_selector) {
  searchBoxOffset = 122;
  if($("#cdm_item_type").val() == "pdf"){
    searchBoxOffset = 107;
  }
	cdm.api.Search.search_box_width = (end_selector.outerWidth() - searchBoxOffset) + "px";
}
cdm.api.Search.openFullTextSearch = function (item){
  if($(this).attr("page_on") == "fullbrowser") cdm.api.Search.search_box_width = 600;
    else cdm.api.Search.calc_search_box_width($("div#tabs"));

  $(item).hide(0, function() {});
  $("#img_view_search_box").animate({width: cdm.api.Search.search_box_width}, 300, function(){
    $("#img_view_search_box_open").fadeIn(100);
  });
  if(fullTextSearchTerm.length == 0){
    $("#cdm_full_text_search_input").attr("value", cdm.gvars.fullTextSearchPrompt);
  }
  cdm.api.Search.img_view_search_box_open = true;
}

cdm.api.Search.reloadImage = function (term){
  if(cdm.api.Search.hasOCR){
    $.fn.imageviewer.options.fullTextSearchTerm = encodeURI(term.replace(' ', '+'));
    $.fn.imageviewer.countComplete();
    //$.fn.imageviewer.loadImage();
    //$.fn.imageviewer.loadThumbnail();
  }
  if(cdm.api.Search.itemType == "pdf" && cdm.api.Search.pdfSearch == "on" && cdm.api.SingleItem.pdfSupport){
    cdm.api.Search.reloadPDF(encodeURI(term.replace(' ', '+')));
  }
}
cdm.api.Search.reloadPDF = function(st){
  // /utils/pdfsearch/collection/sonystuff/id/1/filename/1.pdf/term/CD
  if(st == "cdmfullbrowserload"){
    stview = st;
    st = fullTextSearchTerm
  } else {
    $("#viewer_wrapper_inner").html($("#cdm_language_loading").val());
    stview = "";
  }
  stParam = "/searchterm/" + st
  dpdfparam = "";
  if( $("#cdm_view").val() == "compoundobject" ){
    if($("#cdm_cpdtype").val() == "Document-PDF"){
      ptr = $("#cdm_id").val();
      dpdfparam = "/page/" + $("#cdm_show").val()+"/pageid/" + $("#cdm_pageptr").val();;
      //dpdfparam = "/pageid/" + $("#cdm_pageptr").val();
    }else {
      ptr = $("#cdm_show").val();
    }
  } else if( $("#cdm_view").val() == "fullbrowser" && $("#cdm_returnview").val() == "compoundobject" ){
    if($("#cdm_cpdtype").val() == "Document-PDF"){
      ptr = $("#cdm_id").val();
      dpdfparam = "/page/" + $("#cdm_show").val()+"/pageid/" + $("#cdm_pageptr").val();
      //dpdfparam = "/pageid/" + $("#cdm_pageptr").val();
    } else {
      ptr = $("#cdm_show").val();
    }
  } else {
    ptr = $("#cdm_id").val();
  }

  $.ajax({
    type: "GET",
    url:  "/utils/pdfsearch/collection/"+$("#cdm_collection").val()+"/id/"+ptr+"/filename/"+$("#cdm_filename").val()+stParam+"/h/"+$("#itemViewer").height()+dpdfparam,
    dataType: "html",

    success: function (msg) {
      if(msg == "failure"){
        cdm.util.ajaxErrorAlerts("error_failedtoretrieveitem","","","");
      } else {
        //cdm.util.ConsoleLogger("i am back ... rv: " + $("#cdm_returnview").val());
        $("#viewer_wrapper_inner").html(msg);
        //$("#viewer_wrapper_inner").prepend("<p>loading pdf...large pdf files may take a few moments...</p>");
        if(stview == "cdmfullbrowserload"){
          if( $("#cdm_view").val() == "fullbrowser" && $("#cdm_returnview").val() == "compoundobject" ){
            cdm.util.ConsoleLogger("fullbrowserShowTitles: " + fullbrowserShowTitles);
            if(fullbrowserShowTitles == "on"){
              fboffset = 204;
            } else {
              fboffset = 157;
            }
          } else {
            fboffset = 10;
          }
          wHeight = $(window).height() - $('#viewer_wrapper_outer').offset().top - fboffset;
         $("#itemViewer").css("height",wHeight);
         cdm.api.Search.fullTextPDFHeight = wHeight;
         if( $("#img_view_text_content").exists()){
           if($.browser.msie && $.browser.version < 9){
             $("#img_view_text_content").css("height", wHeight - 100);
           } else {
             $("#img_view_text_content").css("height", wHeight - 80);
           }
         }
         $("#fb_image_viewer_container_cpd").css("visibility","visible");
         setTimeout("cdm.api.FullBrowser.setCarouselPlacement()",4000);
        } else {
          if($("#itemViewer").height() == 0){
            $("#itemViewer").css("height",cdm.api.Search.fullTextPDFHeight);
          }
        }
      }
    },
    error: function (a, b, c) {
      cdm.util.ajaxErrorAlerts("error_failedtoretrieveitem","","","");
    }
  });
}

cdm.api.Search.resetFullTextPageIndex = function(s){
  cdm.util.ConsoleLogger("show is: " + s);
  npFound = false;
  for(p=0;p<cdm.api.Search.fullTextPages.length;p++){
    cdm.util.ConsoleLogger("array " + p + " is: " + cdm.api.Search.fullTextPages[p]);
    if(cdm.api.Search.fullTextPages[p] == s){
      npFound = true;
      cdm.api.Search.fullTextCurrentPageIndex = p;
      break;
    }
  }
  if(!npFound){
    cdm.api.Search.fullTextCurrentPageIndex = -1;
  }

  cdm.util.ConsoleLogger("reset gtp is: " + cdm.api.Search.fullTextCurrentPageIndex);
}

cdm.api.Search.getFTPageIndex = function(nav,show){
  if(cdm.api.Search.fullTextCurrentPageIndex > -1){
    cdm.util.ConsoleLogger("is gte zero");
    if(nav){
      gtp = cdm.api.Search.fullTextCurrentPageIndex + 1;
      if(gtp == cdm.api.Search.fullTextPageTotal){
        gtp = 0;
      }
    } else {
      gtp = cdm.api.Search.fullTextCurrentPageIndex - 1;
      if(gtp < 0){
        gtp = cdm.api.Search.fullTextPageTotal - 1;
      }
    }

  } else {
    cdm.util.ConsoleLogger("find next/prev index");
    gtp = 0;
    gtpFound = false;
    for(p=0;p<cdm.api.Search.fullTextPages.length;p++){
      cdm.util.ConsoleLogger(p + " and " + cdm.api.Search.fullTextPages[p]);
      if(cdm.api.Search.fullTextPages[p] > show){
        cdm.util.ConsoleLogger("FOUND");
        gtpFound = true;
        gtp = p;
        break;
      }
    }
    if(gtpFound){
      if(!nav){
        if(gtp > 0){
          gtp = gtp - 1;
        } else {
          gtp = cdm.api.Search.fullTextPageTotal - 1;
        }
      }
    } else {
      if(!nav && cdm.api.Search.fullTextPageTotal > 1){
        gtp = cdm.api.Search.fullTextPageTotal - 1;
      }
    }
  }

  cdm.api.Search.fullTextCurrentPageIndex = gtp;
  cdm.util.ConsoleLogger("gtp is: " + cdm.api.Search.fullTextCurrentPageIndex);
  return gtp;
}

cdm.api.Search.fullTextNavigate = function(nav){
  gotoNewPage = false;
  cdm.api.Search.navigateToNextPageHit = false;
  if(cdm.api.Search.fullTextCurrentPageIndex < 0){
    gotoNewPage = true;
    gotoPageIndex = cdm.api.Search.getFTPageIndex(nav,$("#cdm_show").val());
    gotoPage = cdm.api.Search.fullTextPages[gotoPageIndex];
  } else {
    $(cdm.api.Search.fullTextMatches).each(function(){
      if(  $(this).hasClass("cdm_full_text_highlight_current") ) {
        $(this).removeClass("cdm_full_text_highlight_current");
        if(nav) {
          if(cdm.api.Search.fullTextMatchesCurrent == cdm.api.Search.fullTextMatchesCount) {
            //GO TO NEXT PAGE or back to first match
            if(cdm.api.Search.fullTextPages.length > 1){
              gotoNewPage = true;
              gotoPageIndex = cdm.api.Search.getFTPageIndex(nav,$("#cdm_show").val());
              gotoPage = cdm.api.Search.fullTextPages[gotoPageIndex];
              cdm.util.ConsoleLogger("index is: " + gotoPageIndex + " and page is: " + gotoPage);
              $(this).addClass("cdm_full_text_highlight_current");
            } else {
              cdm.api.Search.fullTextMatchesCurrent = 1;
              $(cdm.api.Search.fullTextMatches).first().addClass("cdm_full_text_highlight_current");
            }

          } else {
            //$(this).next().addClass("cdm_full_text_highlight_current");
            $(cdm.api.Search.fullTextMatches).eq(cdm.api.Search.fullTextMatchesCurrent).addClass("cdm_full_text_highlight_current");
            cdm.api.Search.fullTextMatchesCurrent++;
          }
        } else {
          //$(this).prev().addClass("cdm_full_text_highlight_current");
          if(cdm.api.Search.fullTextMatchesCurrent == 1) {
            //GO TO PREVIOUS PAGE
            if(cdm.api.Search.fullTextPages.length > 1){
              gotoNewPage = true;
              gotoPageIndex = cdm.api.Search.getFTPageIndex(nav,$("#cdm_show").val());
              gotoPage = cdm.api.Search.fullTextPages[gotoPageIndex];
              $(this).addClass("cdm_full_text_highlight_current");
            } else {
              cdm.api.Search.fullTextMatchesCurrent = cdm.api.Search.fullTextMatchesCount;
              $(cdm.api.Search.fullTextMatches).last().addClass("cdm_full_text_highlight_current");
            }
          } else {
            $(cdm.api.Search.fullTextMatches).eq(cdm.api.Search.fullTextMatchesCurrent-2).addClass("cdm_full_text_highlight_current");
            cdm.api.Search.fullTextMatchesCurrent--;
          }
        }
        return false;
      }

    });
  }
  cdm.util.ConsoleLogger("new current hit: " + cdm.api.Search.fullTextMatchesCurrent);
  if(gotoNewPage) {
    cdm.util.ConsoleLogger("let us navigate AWAY!!");
    cdm.api.Search.navigateToNextPageHit = true;
    if($("#pageTitle-"+gotoPage).exists()){
      $("#pageTitle-"+gotoPage).click();
    } else if($("#contentLink-"+gotoPage).exists()){
      $("#contentLink-"+gotoPage).click();
    }
  } else {
    cdm.util.ConsoleLogger("still navigating here");
    if(cdm.api.Search.fullTextMatchesCurrent > 0){
      cdm.api.Search.fullTextMatches = $(cdm.api.Search.matchesSelector).find('span.cdm_full_text_highlight');
    }
  }
}

cdm.api.Search.setFullTextSearchFocus = function(){
  $("#cdm_full_text_search_input").focus();
}


cdm.api.Search.encodeSpecialChars = function(term){
  //("-", "%2D",urlencode($val)
  cdm.util.ConsoleLogger(term);
  cdm.util.ConsoleLogger(term.replace(/\+/g, 'CDMPLUS'));
  if( $("#cdm_slashencode").val() == "on") {
    term = term.replace(/\//g, '%252F');
  }
return term.replace(/\+/g, 'CDMPLUS');
  //return term.replace(/|/g, '%7C').replace(/-/g, '%2D'); //.replace(/\//g, '%2F');
  //return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
  //replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}

cdm.api.Search.fullTextCompoundObject = function(term,terms){
  //if( $("#cdm_view").val() == "compoundobject" || ($("#cdm_view").val() == "fullbrowser" && $("#cdm_returnview").val() == "compoundobject")    ){
  $("#cdm_ftsearch_next").hide().unbind("click").unbind("keypress");
  $("#cdm_ftsearch_prev").hide().unbind("click").unbind("keypress");

    cdm.api.Search.fullTextPages = new Array();
    cdm.api.Search.fullTextPageTotal = 0;
    cdm.api.Search.fullTextMatchTotal = 0;
    cdm.api.Search.fullTextCurrentPageIndex = -1;
    var delimitedTerm = "";
    for(t=0;t<terms.length;t++){
      terms[t] = cdm.api.Search.encodeSpecialChars(terms[t]);
      delimitedTerm += terms[t];
      if(t < terms.length - 1){
        delimitedTerm += " ";
      }
    }
    var searchselector = "compobj";
    thedatatype = "json";
    if($("#cdm_view").val() == "singleitem"){
      searchselector = "singleitem";
      thedatatype = "text";
    }
    cdm.util.ConsoleLogger("NOW the term is: " + delimitedTerm);
    var docname = "";
    if(cdm.api.Search.searchSelector == "#findingaid_container"){
      searchselector = "findingaid";
      docname = "/doc/" + $("#cdm_cpdfilename").val();
    }
    ftmode = "/mode/" + cdm.api.Search.fullTextMode;

    //jquery automatically encodes the url parameter in the ajax function!!
    $.ajax({
      type: "GET",
      url:  "/utils/cofulltextsearch/collection/"+$("#cdm_collection").val()+"/id/"+$("#cdm_id").val()+"/st/"+delimitedTerm+"/selector/"+searchselector+docname+ftmode,
      dataType: thedatatype,

      success: function (msg) {
        if(msg == "failure"){
		      cdm.util.ajaxErrorAlerts("error_therewasaproblemrefreshingtheimage","","","");
        } else if(searchselector == "singleitem"){
          cdm.util.ConsoleLogger(msg);
        } else {
          if(msg != null){
            $("span.co-content-search").html("");
            $.each(msg.records, function(index, item) {
              if($("#cdm_cpdtype").val().toLowerCase() == "document-pdf" && $("#cdm_view").val() != "fullbrowser"){
                itempage = cdm.api.Search.cpditemcount - (cdm.api.Search.cpdid - parseInt(item[0]) - 1);
                $("div#co-thumbitem-"+itempage+" span").html("*");
                if(itempage != $("#cdm_show").val()){
                  $("#unselectedThumb-"+itempage).addClass("co-thumb-fulltext-match");
                  $("#co-content-listitem-"+itempage+" span").html("<br />"+item[1]+" "+$("#cdm_language_found").val());
                }
              } else {
                itempage = item[0];
                if($("#cdm_view").val() == "fullbrowser"){
                  if(itempage != $("#cdm_show").val()){
                    $("div#co-thumbitem-"+itempage+" span").html("*");
                    $("#unselectedThumb-"+itempage).addClass("co-thumb-fulltext-match");
                  }
                } else {
                  cdm.api.CompoundObject.toggleMonographNodes(itempage);
                  if($("div#co-thumbitem-"+itempage).exists() ){
                    $("div#co-thumbitem-"+itempage+" span").html("*");
                    $("#unselectedThumb-"+itempage).addClass("co-thumb-fulltext-match");
                  }
                  $("#co-content-listitem-"+itempage+" span").html("<br />"+item[1]+" "+$("#cdm_language_found").val());
                }
              }
              cdm.api.Search.fullTextMatchTotal += item[1];
              cdm.api.Search.fullTextPages[cdm.api.Search.fullTextPageTotal] = itempage;
              cdm.util.ConsoleLogger("page is: " + cdm.api.Search.fullTextPages[cdm.api.Search.fullTextPageTotal]);
              if(itempage == $("#cdm_show").val()){
                cdm.api.Search.fullTextCurrentPageIndex = cdm.api.Search.fullTextPageTotal;
              }
              cdm.api.Search.fullTextPageTotal += 1;
            });
            cdm.util.ConsoleLogger("array length is: " + cdm.api.Search.fullTextPages.length + " and " + cdm.api.Search.fullTextPageTotal);
            $("#cdm_full_text_search_results_text").html(cdm.api.Search.fullTextMatchTotal + " " + $("#cdm_language_foundindocument").val());
            if($("#cdm_view").val() == "fullbrowser"){
              $("#fbFtullTextSearchCount").html(cdm.api.Search.fullTextMatchTotal + " " + $("#cdm_language_foundindocument").val());
              $("#fbFtullTextSearchCount").removeClass("cdm_hide");
            } else  {
              //div.co-content-search
              $("#cpd_search_tally_thumb, #cpd_search_tally_content").html(cdm.api.Search.fullTextMatchTotal + " " + $("#cdm_language_foundindocument").val());
              $("#cpd_search_tally_thumb, #cpd_search_tally_content").removeClass("cdm_hide");
            }

            //set term/page arrow nav
            if(cdm.api.Search.fullTextPageTotal > 0){
              cdm.api.Search.bindFTArrows();
            } else {
              $("#cdm_ftsearch_next").hide().unbind("click").unbind("keypress");
              $("#cdm_ftsearch_prev").hide().unbind("click").unbind("keypress");
            }
            //end bind arrows

          }
        }
      },
      error: function (a, b, c) {
        //expecting json data so comes here.
        cdm.util.ajaxErrorAlerts("error_therewasaproblemrefreshingtheimage",a,b,c);
        //cdm.util.ConsoleLogger("there was an error ... " + a);
      }
    });
  //}
}

cdm.api.Search.bindFTArrows = function(){
  cdm.util.ConsoleLogger("binding ft arrows");
  $("#cdm_ftsearch_next").bind("click",function(){
    cdm.api.Search.fullTextNavigate(1);
      if(!cdm.api.Search.navigateToNextPageHit && cdm.api.Search.fullTextCurrentPageIndex >= 0){
        cdm.api.Search.fulltextTarget = $(cdm.api.Search.scrollSelector).find("span."+cdm.api.Search.fullTextHighlightClassCurrent);
        $(cdm.api.Search.scrollSelector).stop().scrollTo( cdm.api.Search.fulltextTarget, 800 );
      }
    }).bind("keypress",function(event){
      if(event.keyCode == '13') {
        cdm.api.Search.fullTextNavigate(1);
        if(!cdm.api.Search.navigateToNextPageHit && cdm.api.Search.fullTextCurrentPageIndex >= 0){
          cdm.api.Search.fulltextTarget = $(cdm.api.Search.scrollSelector).find("span."+cdm.api.Search.fullTextHighlightClassCurrent);
          $(cdm.api.Search.scrollSelector).stop().scrollTo( cdm.api.Search.fulltextTarget, 800 );
        }
      }
    });
    $("#cdm_ftsearch_prev").bind("click",function(){
      cdm.api.Search.fullTextNavigate(0);
      if(!cdm.api.Search.navigateToNextPageHit && cdm.api.Search.fullTextCurrentPageIndex >= 0){
        cdm.api.Search.fulltextTarget = $(cdm.api.Search.scrollSelector).find("span."+cdm.api.Search.fullTextHighlightClassCurrent);
        $(cdm.api.Search.scrollSelector).stop().scrollTo( cdm.api.Search.fulltextTarget, 800 );
      }
    }).bind("keypress",function(event){
      if(event.keyCode == '13') {
        cdm.api.Search.fullTextNavigate(0);
        if(!cdm.api.Search.navigateToNextPageHit && cdm.api.Search.fullTextCurrentPageIndex >= 0){
          cdm.api.Search.fulltextTarget = $(cdm.api.Search.scrollSelector).find("span."+cdm.api.Search.fullTextHighlightClassCurrent);
          $(cdm.api.Search.scrollSelector).stop().scrollTo( cdm.api.Search.fulltextTarget, 800 );
        }
      }
    });
    if(cdm.api.SingleItem.visibleTab == "fulltext" || cdm.api.Search.searchSelector == "#findingaid_container"){
      $("#cdm_ftsearch_next").show();
      $("#cdm_ftsearch_prev").show();
    }
}
cdm.api.Search.getFullTextSearchTerm = function(searchsource){
  if(searchsource == "searchbox"){
    t = $.trim($("#cdm_full_text_search_input").val());
    fullTextSearchTerm = t;
  } else if(searchsource == "init"){
    t= $.trim(fullTextSearchTerm.replace(/!/g," "));
    if( $("#cdm_slashencode").val() == "on") {
      t= t.replace(/\+/g," ").replace(/%252F/g,"/");
    } else {
      t= t.replace(/\+/g," ").replace(/%2F/g,"/");
    }
  } else {
    if($("#cdm_full_text_search_input").val().length > 0 && $("#cdm_full_text_search_input").val() != cdm.gvars.fullTextSearchPrompt){
      t = $.trim($("#cdm_full_text_search_input").val());
      fullTextSearchTerm = t;
    } else {
      t= $.trim(fullTextSearchTerm);
    }
  }
  cdm.util.ConsoleLogger("the term is: " + t + " and encoded " + encodeURI(t) + " and encoded component is " + encodeURI(t));
  //t = cdm.api.Search.encodeSpecialChars(t);
  return t;
}

cdm.api.Search.runFullTextSearch = function(searchsource){

    var term = cdm.api.Search.getFullTextSearchTerm(searchsource);
    cdm.util.ConsoleLogger("now the term is: " + term);
    //cdm.api.Search.fullTextSearchTermPrev = term;
    if(term.length > 0 && term != cdm.gvars.fullTextSearchPrompt){
      $(cdm.api.Search.searchSelector).removeHighlight(cdm.api.Search.fullTextHighlightClass);
      cdm.api.Search.fullTextNavCounter = 1;
      //$("#cdm_ftsearch_next").hide().unbind("click").unbind("keypress");
      //$("#cdm_ftsearch_prev").hide().unbind("click").unbind("keypress");

      //compound object search stuff
      if(!cdm.api.Search.fullTextFromCompObj){
        $("#cpd_search_tally_thumb, #cpd_search_tally_content").html("");
        $("img.co-thumb-fulltext-match").each(function(){
          $(this).removeClass("co-thumb-fulltext-match");
        });
        $("div.co-thumb-fulltext-match").each(function(){
          $(this).removeClass("co-thumb-fulltext-match");
        });
        $("div.co-content-search").html("");
      }

      var terms = term.split(" ");
      cdm.api.Search.fullTextMatchTotal = 0;
      if(!cdm.api.Search.fullTextFromCompObj ){ //&& cdm.api.Search.searchSelector != "#findingaid_container"
        cdm.util.ConsoleLogger("from comp obj");
        cdm.api.Search.fullTextCompoundObject(term,terms);
      } else {
        cdm.util.ConsoleLogger("NOT from comp obj");
      }
      //cdm.util.ConsoleLogger("mode is: " + cdm.api.Search.fullTextMode);
      if(terms.length > 1){
        switch(cdm.api.Search.fullTextMode){
          case "any":
            for(t=0;t<terms.length;t++){
              $(cdm.api.Search.searchSelector).highlight(terms[t]);
            }
            break;
          case "all":
            var allFound = true;
            var tempMatchesTotal = 0;
            for(t=0;t<terms.length;t++){
              $(cdm.api.Search.searchSelector).highlight(terms[t]);
              tempmatches = $(cdm.api.Search.matchesSelector).find('span.'+cdm.api.Search.fullTextHighlightClass);
              tempMatchesCount = tempmatches.length;
              if(tempMatchesCount <= tempMatchesTotal){
                allFound = false;
              }
              tempMatchesTotal = tempMatchesCount;
            }
            if(!allFound){
              $(cdm.api.Search.searchSelector).removeHighlight(cdm.api.Search.fullTextHighlightClass);
            }
            break;
          case "exact":
            $(cdm.api.Search.searchSelector).highlight(term);
            break;
        }

      } else {
        $(cdm.api.Search.searchSelector).highlight(term);
      }
      $(cdm.api.Search.searchSelector).removeHighlight(cdm.api.Search.fullTextHighlightClassFalse);
      cdm.api.Search.fullTextMatches = $(cdm.api.Search.matchesSelector).find('span.'+cdm.api.Search.fullTextHighlightClass);
      cdm.api.Search.fullTextMatchesCount = cdm.api.Search.fullTextMatches.length;
      if(searchsource == "searchbox"){
        cdm.api.Search.reloadImage(term);
      }

      if(cdm.api.Search.fullTextMatchesCount > 0){
        cdm.api.Search.fullTextMatchesCurrent = 1;
        if(cdm.api.Search.fullTextMatchesCount == 1){
          instanceText = $("#cdm_language_foundindocument").val();
        } else {
          instanceText = $("#cdm_language_foundindocument").val();
        }
        //$("#cdm_full_text_search_results_text").html("<span class='bold'>"+cdm.api.Search.fullTextMatchesCount+"</span> " + instanceText);
        $(cdm.api.Search.fullTextMatches).first().addClass(cdm.api.Search.fullTextHighlightClassCurrent);
        cdm.api.Search.fulltextTarget = $(cdm.api.Search.scrollSelector).find("span."+cdm.api.Search.fullTextHighlightClassCurrent);
        $(cdm.api.Search.scrollSelector).stop().scrollTo( cdm.api.Search.fulltextTarget, 800 );

        if(cdm.api.Search.fullTextPageTotal > 0 && !cdm.api.Search.fullTextFromCompObj){
          cdm.api.Search.bindFTArrows();
        }
        //compoundObjectStuff   && cdm.api.Search.searchSelector != "#findingaid_container"
        if( $("#cdm_view").val() == "compoundobject" && !cdm.api.Search.fullTextFromCompObj ){
          $("div#co-thumbitem-"+$("#cdm_show").val()+" span").html("*");
          $("#selectedThumb-"+$("#cdm_show").val()).addClass("co-thumb-fulltext-match");
          $("#co-content-listitem-"+$("#cdm_show").val()+" span[class='co-content-search']").html("<br />"+cdm.api.Search.fullTextMatchesCount + " " + $("#cdm_language_for").val());
        }
        if($("#cdm_view").val() == "fullbrowser" && $("#cdm_returnview").val() == "compoundobject"){
          //$("div#co-thumbitem-"+$("#cdm_show").val()+" span").html("*");
          $("#selectedThumb-"+$("#cdm_show").val()).addClass("co-thumb-fulltext-match");
        }
        cdm.api.Search.fullTextFromCompObj = false;
        if($("#cdm_full_text_search_input").hasClass("cdm_full_text_highlight_none") ){
          $("#cdm_full_text_search_input").removeClass("cdm_full_text_highlight_none");
        }
        if( $("#cdm_view").val() == "singleitem"){
          cdm.api.Search.fullTextPageTotal = 1;
          cdm.api.Search.fullTextPages = new Array();
          cdm.api.Search.fullTextMatchTotal = cdm.api.Search.fullTextMatchesCount;
          $("#cdm_full_text_search_results_text").html(cdm.api.Search.fullTextMatchTotal + " " + $("#cdm_language_foundindocument").val());
          cdm.api.Search.fullTextCurrentPageIndex = 0;
          cdm.api.Search.fullTextPages[cdm.api.Search.fullTextCurrentPageIndex] = $("#cdm_id").val();
          cdm.api.Search.bindFTArrows();
        }
      } else {
        cdm.api.Search.fullTextMatchesCurrent = 0;
        cdm.api.Search.fullTextFromCompObj = false;
        $("#cdm_full_text_search_input").addClass("cdm_full_text_highlight_none");
        $("#cdm_full_text_search_input").focus(function(){
          $("#cdm_full_text_search_input").removeClass("cdm_full_text_highlight_none");
        });
        if( $("#cdm_view").val() == "singleitem"){
          cdm.api.Search.fullTextPageTotal = 0;
          cdm.api.Search.fullTextPages = new Array();
          cdm.api.Search.fullTextMatchTotal = 0;
          $("#cdm_full_text_search_results_text").html(cdm.gvars.fullTextNoInstancesFound);
          cdm.api.Search.fullTextCurrentPageIndex = -1;
          $("#cdm_ftsearch_next").hide().unbind("click").unbind("keypress");
          $("#cdm_ftsearch_prev").hide().unbind("click").unbind("keypress");
        }
      }
      cdm.util.ConsoleLogger("current count: " + cdm.api.Search.fullTextMatchesCount);
      cdm.util.ConsoleLogger("current hit: " + cdm.api.Search.fullTextMatchesCurrent);
    } else {
      cdm.api.Search.noSearchTermAlert=$("#cdm_language_error_enterAWordOrPhrase").val(); //shouldn't be necessary
      alert(cdm.api.Search.noSearchTermAlert);
    }
}

$(document).ready(function(){
 
if($("#simple_search_button").exists() ){
  cdm.api.Search.init();
  cdm.api.Search.initAdvanced();
  $(".results_tn_collection_box_max input").click(function () {
    $(this).parents(".results_tn_collection_box_max").toggleClass("results_tn_collection_box_checked");
    cdm.api.Search.collectionLimitCounter(this,$(this).attr("dialogMode"));
  });
  $(".results_tn_collection_box_inner2").click(function () {
    $(this).parents(".results_tn_collection_box_max").toggleClass("results_tn_collection_box_checked");
    collInput = $(this).attr("coll");
    if($('input[name='+collInput+']').is(':checked') ){
      $('input[name='+collInput+']').attr('checked', false);
    } else {
      $('input[name='+collInput+']').attr('checked', true);
    }
    cdm.api.Search.collectionLimitCounter($('input[name='+collInput+']'),$(this).attr("dialogMode"));
  });
  $(".max_collections_checkbox_select_all").click(function () {
    if($(this).is(':checked') ){
      cdm.api.Search.selectAllmaxCollections(true,$(this).attr("dialogMode"));
    } else {
      cdm.api.Search.selectAllmaxCollections(false,$(this).attr("dialogMode"));
    }
  });
  $(".max_collections_link_select_all").click(function () {
    var dm = $(this).attr("dialogMode");
    if($("#"+dm+"max_collections_checkbox_select_all").is(':checked') ){
      $("#"+dm+"max_collections_checkbox_select_all").attr('checked', false);
      cdm.api.Search.selectAllmaxCollections(false,$(this).attr("dialogMode"));
    } else {
      $("#"+dm+"max_collections_checkbox_select_all").attr('checked', true);
      cdm.api.Search.selectAllmaxCollections(true,$(this).attr("dialogMode"));
    }
  });
}

$(".cdm_facet_link").each(function(){
  $(this).click(function(){
    cdm.api.Search.searchTermSetter = "facet";
    cdm.api.Search.facetTerm = $(this).attr("facetterm");
    cdm.api.Search.facetAlias = $(this).attr("facetalias");
    cdm.api.Search.submitSearchResults();
  });
});



if($("#cdm_full_text_search_button").exists() ){
  cdm.api.Search.ftSearchBoxClosedWidth = $("#img_view_search_box").width();
  cdm.api.Search.fullTextDisplay = parseInt($("#cdm_fullTextSearchDisplay").val());
  cdm.api.Search.fullTextMode = $("#cdm_fullTextSearchMode").val();
  cdm.api.Search.hasOCR = parseInt($("#cdm_item_hasocr").val());
  cdm.api.Search.fullTextMatchesCount = 0;
  cdm.api.Search.itemType = $("#cdm_item_type").val();
  cdm.api.Search.pdfSearch = $("#cdm_pdfsearch").val();
  //cdm.util.ConsoleLogger("item type is " + cdm.api.Search.itemType);
  //
  $("#cdm_full_text_search_button").click(function(){
    cdm.api.Search.fullTextMode = $("#cdm_fullTextSearchModeConfig").val();
    cdm.api.Search.runFullTextSearch("searchbox");
  }).keypress(function(event){
    cdm.api.Search.fullTextMode = $("#cdm_fullTextSearchModeConfig").val();
      if(event.keyCode == '13') {
        cdm.api.Search.runFullTextSearch("searchbox");
      }
  });
  	//# full text search cdm.api.Search.fullTextDisplay  ---------------->
  if($("#img_view_search_box_closed").exists() && cdm.api.Search.fullTextDisplay == 1){
    $("#img_view_search_box_closed").hover(function(){
      $(this).parent().addClass("img_view_search_box_hover");
      $(this).find("span.action_link_10").addClass("img_view_search_box_text_hover");
    },
    function(){
      $(this).parent().removeClass("img_view_search_box_hover");
      $(this).find("span.action_link_10").removeClass("img_view_search_box_text_hover");
    });
    $("#img_view_search_box_closed").click(function(){
      if(!cdm.api.Search.img_view_search_box_open) {
        cdm.api.Search.openFullTextSearch(this);
      }
    });
    $("#img_view_search_box_closed_link").keypress(function(event){
      if(event.keyCode == '13') {
        if(!cdm.api.Search.img_view_search_box_open) {
          cdm.api.Search.openFullTextSearch($("#img_view_search_box_closed"));
          setTimeout("cdm.api.Search.setFullTextSearchFocus()",350);
        }
      }
    });
  }
  if(cdm.api.Search.fullTextDisplay == 2){
    cdm.api.Search.openFullTextSearch($("#img_view_search_box_closed"));
  }
  
  if($("#img_view_search_text_close_button").exists()){
    $("#img_view_search_text_close_button").click(function(){
      if(cdm.api.Search.img_view_search_box_open) {
        $("#img_view_search_box_open").hide();
        $("#img_view_search_box").animate({width: cdm.api.Search.ftSearchBoxClosedWidth}, 300, function(){
          $("#img_view_search_box_closed").fadeIn(100);
        });
        cdm.api.Search.img_view_search_box_open = false;
      }
    }).keypress(function(event){
      if(event.keyCode == '13') {
        if(cdm.api.Search.img_view_search_box_open) {
          $("#img_view_search_box_open").hide();
          $("#img_view_search_box").animate({width: cdm.api.Search.ftSearchBoxClosedWidth}, 300, function(){
            $("#img_view_search_box_closed").fadeIn(100);
          });
          cdm.api.Search.img_view_search_box_open = false;
        }
      }
    }).focus(function(){
      $(this).addClass("dialog_title_bar_close_link_hover");
      $("span.dialog_title_bar_close_link_itemsearch_inner2").addClass("dialog_title_bar_close_link_inner_hover");
    }).blur(function(){
      $(this).removeClass("dialog_title_bar_close_link_hover");
      $("span.dialog_title_bar_close_link_itemsearch_inner2").removeClass("dialog_title_bar_close_link_inner_hover");
    });


    
  }
  
  if($("#cdm_full_text_search_input").exists()){
    $("#cdm_full_text_search_input").focus(function() {
      if($(this).val() == cdm.gvars.fullTextSearchPrompt){
        $(this).attr("value", "");
      }
    }).blur(function() {
      if($(this).val().length == 0){
        $(this).attr("value", cdm.gvars.fullTextSearchPrompt);
      }
    }).keypress(function(event){
      if(event.keyCode == '13') {
        cdm.api.Search.runFullTextSearch("searchbox");
      }
    });
    if($("#cdm_full_text_search_input").val() !=  cdm.gvars.fullTextSearchPrompt ){
      if($("#img_view_search_box_closed").exists()){
        cdm.api.Search.openFullTextSearch($("#img_view_search_box_closed"));
      }
    }
  }
  
  cdm.api.Search.searchSelector = "pre";
  cdm.api.Search.matchesSelector = "pre#full_text_container";
  cdm.api.Search.scrollSelector = "#img_view_text_content";
  if( $("#findingaid_container").exists() ){
    cdm.api.Search.searchSelector = "#findingaid_container";
    cdm.api.Search.matchesSelector = cdm.api.Search.searchSelector;
    cdm.api.Search.scrollSelector = cdm.api.Search.searchSelector;
  }
  //
  if(cdm.api.Search.fullTextDisplay > 0){
    $(window).resize(function() {
      if(cdm.api.Search.img_view_search_box_open){
        cdm.api.Search.calc_search_box_width($("div#tabs"));
        $("#img_view_search_box").width(cdm.api.Search.search_box_width);
      }
    });
  }
  

//BEFORE ME
//alert("hohoho");
  if(fullTextSearchTerm.length > 0){
    cdm.api.Search.runFullTextSearch("init");
  }
  
}
 cdm.api.Search.fullTextSearchTermPrev = fullTextSearchTerm;
 cdm.api.Search.fullTextFromCompObj = false;
 cdm.api.Search.fbCompObj = false;
  //
  if($("#cdm_view").val() == "fullbrowser"){
    if($("#cdm_returnview").val() == "compoundobject"){
      cdm.api.Search.fbCompObj = true;
    }
  }
  if($("#cdm_view").val() == "compoundobject" || cdm.api.Search.fbCompObj){
    cdm.api.Search.cpditemcount = parseInt($("#cdm_cpd_itemcount").val());
    cdm.api.Search.cpdid = parseInt($("#cdm_id").val());
  }
  //
});
