$jq(document).ready(function(){
  init();
});

var option=true;
var searchDefaultText = 'How would Nature...';
function controlSearchBox(){
  if(option){

    $jq('#searchHelpBox').slideUp('fast',function(){
      $jq("#upArrowShow").show()
    });
  }
}

function init(){
  var isSearchTypeBoxOpen = 0;

  var isSearchTypeButtonClick = 0;

  $jq("#search_result_more").click(function() {
    $jq("#search-form").submit();
  });

  $jq("#searchTypeButton").click(function(){
    isSearchTypeButtonClick = 1;
    if(isSearchTypeBoxOpen == 0){
      $jq("#searchTypeBox").slideDown("slow");
      $jq("#upArrowShow").show();
      $jq("#searchHelpBox").hide();
      $jq("#keyWords").hide();

      isSearchTypeBoxOpen = 1;
    }else{
      $jq("#searchTypeBox").slideUp("fast");
      isSearchTypeBoxOpen = 0
    }

  });

  $jq("body").click(function(){
    if(isSearchTypeButtonClick == 1){
      isSearchTypeButtonClick = 0;
    }else{
      $jq("#searchTypeBox").slideUp("fast");
    }

    $jq.each($jq("#keyWords li"), function(i){
      $jq(this).mouseover(function(){
        if(move) return;
        $jq.each($jq("#keyWords li"), function(){
          $jq(this).css("background-color","#628025");
        });
        $jq(this).css("background-color","#5c7923");
        selectKey=i+1
      })

      $jq(this).mouseout(function(){
        if(move) return;
        $jq.each($jq("#keyWords li"), function(){
          $jq(this).css("background-color","#628025");
        });
        $jq(this).css("background-color","#628025");
        selectKey=0
      })


      $jq(this).mousemove( function() {
        move=false;
      })
    });

  }); 

  var selectKey=-1;
  var move=false;
  $jq("#searchBox").keydown(function(e) {
    if(e.keyCode==40) {
      // down arrow pressed, select a presearch entry
      var words = $jq('.keyWordsList:visible');
      selectKey++;
      if (selectKey >= words.length) return;
      var word = $jq(words[selectKey]);
      move=true;

      words.css("background-color","#628025");
      word.css("background-color","#5c7923");
      $jq(this).val(word.attr('name'));

    }
    if(e.keyCode==38)
    {
      // up arrow pressed, select a presearch entry
      if (selectKey==0) return;
      var words = $jq('.keyWordsList:visible');
      selectKey--;
      var word = $jq(words[selectKey]);
      move=true;

      words.css("background-color","#628025");
      word.css("background-color","#5c7923");
      $jq(this).val(word.text());
    }
  })

  $jq("#upArrowShow").click(function(){
    $jq("#upArrowShow").hide();
    $jq("#searchHelpBox").slideDown('fast');
    $jq("#searchTypeBox").hide();
  });

  $jq("#upArrowHide").click(function(){
    $jq('#searchHelpBox').slideUp('fast',function(){
      $jq("#upArrowShow").show()
    });
  });

  $jq("#upArrowHideKeyWords").click(function(){
    $jq("#keyWords").slideUp("fast",function(){
      $jq("#upArrowShow").show()
    });
  });

  var typeContent="";
  var focusedValues=[]; //'Search Products','Search Organisms','Search Functions','Search Strategies','Search People','Search Area of Focus']
  $jq('.searchTypeLink').each(function() {
    var text = $jq(this).text();
    if (text == 'Search All') {
      focusedValues.push($jq(this).text());
    } else {
      focusedValues.push('Search '+$jq(this).text());
    }
  });

  $jq(".searchTypeList").click(function(){
    typeContent=$jq(this).find("a").text();	
    queryString = $jq("#searchBox").val();
    hasQuery = ($jq.inArray(queryString,focusedValues)==-1);

    if(typeContent=="Search All") {
      typeContent="";
      $jq("#search-category").val('');
      return;
    }
      
    if(!hasQuery || queryString == "" || queryString == searchDefaultText){
      $jq('#searchBox').val('');
      $jq('#searchBox').attr('title', 'Search '+typeContent);
      $jq('#search-form').inputAutoTitles();
    }
    $jq("#search-category").val($jq(this).find("a").attr('value'));
  })

  $jq("#searchBox").blur(function(){	
    if($jq.inArray($jq("#searchBox").val(),focusedValues)!=-1){
      $jq("#searchBox").val("Search "+typeContent);
    } else {
      if( $jq("#searchBox").val()=="" || $jq("#searchBox").val()== searchDefaultText){
        if(typeContent!="") $jq("#searchBox").val("Search "+typeContent);
      }
    }
  });

  $jq("#searchBox").keypress( function(e) { 

    if(e.keyCode==13){
      if(selectKey>0)
      {
        var words = $jq('.keyWordsList:visible');
        var word = $jq(words[selectKey]);
        $jq(this).val($jq(word).text());
        $jq("#keyWords").slideUp("slow");
      }else
      {
        if($jq(this).val()=="") return;
      }
      $jq("#search-form").submit();
    }
  });

  $jq("#searchBox").keydown(function(e){
    if(e.keyCode==40)
    {

    }
  })

  var search_timeout = undefined;

  $jq("#searchBox").keyup(function(e){
    if(e.keyCode==40|| e.keyCode==38) return;

    if (search_timeout != undefined) {
      clearTimeout(search_timeout);
    }
    var $this = this;

    search_timeout = setTimeout(function() {
      option=false;

      var queryString = $jq("#searchBox").val();
      if (!queryString) return;
      $jq.ajax({
        url: $jq.path+'index.php/search/pre/'+queryString,
        type: 'GET',
        dataType: 'html',
        timeout: 2500,
        error: function(err) {
        },
        success: function(data) {
          $jq("#searchTypeBox").hide();
          $jq("#upArrowShow").hide();
          $jq("#searchHelpBox").hide();
          $jq('#search_results').html(data);
          selectKey=-1;
          loadPresearch();
        }
      });
    }, 400);

  });

  $jq("#searchBox").focus(function(){
    $jq("#searchTypeBox").hide();
    option=false;
    //$jq("#upArrowShow").hide();
    $jq("#searchHelpBox").hide();

    loadPresearch();
    if ($jq('#keyWords').css('display') != 'block') {
      $jq("#upArrowShow").click();
    }
  });

}

function loadPresearch() {
  option=false;
  var flag = 0
  var queryString = $jq("#searchBox").val();
  for(var i=1;i<=9;i++){
    var keyText = $jq("#key_"+i).attr('name');
    if (keyText == undefined) continue;
    var keyDisplay = $jq("#key_"+i).text();

    if( 0 == keyText.toLowerCase().indexOf(queryString.toLowerCase()) && '' != queryString){
      flag = 1;
      $jq("#keyWords").slideDown('fast');
      $jq("#key_"+i).show('fast');

      var str_a = '';
      if (queryString.length > keyDisplay.length) {
        str_a = "<span style='color:#c9dc9a'>" +  keyDisplay + "</span>";
      } else {
        str_a = "<span style='color:#c9dc9a'>" +  queryString + "</span>";
      }

      var str_b_temp = queryString;

      var str_b = keyDisplay.substr(str_b_temp.length,keyText.length-1);

      var str_c = keyText.replace(/"/g, '&quot;');

      var	str_result ='<a href="javascript:void(0)" class="keyWordsLink" name="'+str_c+'" onclick="selectPresearch(this.name);">' + str_a + str_b + '</a>';
      $jq("#key_"+i).html(str_result);
      if(i==1) $jq("#key_"+i).css("background-color","#5c7923");

    } else{

      $jq("#key_"+i).hide('fast');

    }

  }
  if(flag == 0){
    $jq("#keyWords").slideUp("fast",function(){
      $jq("#upArrowShow").show()
    });
  }
}

function selectPresearch(term) {
  $jq('#searchBox').val(term);
  $jq('#keyWords').slideUp('fast');
  $jq('#search-form').submit();
}
