modules.loadActions.prototype.search = function(){
  
  search = this.search
  search.form = $$('form.'+SiteVars.modules.Search.formClass);
  search.memberSearch = $$('form.'+SiteVars.modules.Search.memberClass);
  search.escapeXSL = new RegExp('(\&)(.*)(\;)','gi');
  
  //{{{ search.loadSearch = function()
  search.loadSearch = function(){
    
    search.form.each(function(sForm){
      
      sForm.selects = $A(sForm.getElementsByTagName('select')).map(Element.extend);
      sForm.sfInput = Element.select(sForm, 'input[name="searchText"]')[0];
      sForm.paging = Element.select(Element.ancestors(sForm)[0], '.paging')[0];
      sForm.PageNumber = Element.select(sForm, 'input[class="pageNum"]')[0];
      
      sForm.sfInput.value = sForm.sfInput.value.replace(search.escapeXSL, '$1');
      SiteVars.modules.Search.defaultValue = SiteVars.modules.Search.defaultValue.replace(search.escapeXSL, '$1');
      
      if(sForm.sfInput.type=='text'){
        Event.observe(sForm.sfInput, 'focus', function(){
            if(sForm.sfInput.value==SiteVars.modules.Search.defaultValue){
              sForm.sfInput.value = '';
            }
        });
        
        Event.observe(sForm.sfInput, 'blur', function(){
            if(sForm.sfInput.value==''){
              sForm.sfInput.value = SiteVars.modules.Search.defaultValue;
            }
        });
      }
      
      if(sForm.selects[0]){
        sForm.selects.each(function(select){
            Event.observe(select, 'change', function(){
                sForm.submit();
            });
            
        });
      }
      
      if(sForm.paging){
        
        sForm.paging.links = Element.select(sForm.paging, 'a[rel]');
        
        sForm.paging.links.each(function(link){
            Event.observe(link, 'click', function(e){
                sForm.PageNumber.value = link.rel;
                sForm.submit();
                Event.stop(e);
            });
        });
        
      }
      
      Event.observe(sForm, 'submit', function(e){
          return search.returnAction(sForm, SiteVars.modules.Search.mode);
      });
      
    });
    
    search.memberSearch.each(function(mForm){
        
        mForm.selects = $A(mForm.getElementsByTagName('select')).map(Element.extend);
        
        mForm.switcher = Element.select(mForm, '.switcher');
        mForm.switchables = Element.select(mForm, '.switchable');
        mForm.allElem = Form.getElements(mForm);
        
        mForm.switchables.each(function(swable){
            swable.key = swable.className.substring(swable.className.indexOf('key-')+4);
            swable.baseOptions = Element.select(swable, 'option');
            swable.allOptions =  Element.select(swable, 'option');
            swable.count = 0;
            swable.allOptions.each(function(opt){
                if(swable.count > 0){
                  opt.remove();
                }
                swable.count++;
            });
        });
        
        mForm.switcher.each(function(sw){
           
            Event.observe(sw, 'change', function(){
                var match = $F(sw);
                var cleanMatch = match.replace(/\s|\&/g,'').toLowerCase();
                
                mForm.switchables.each(function(swable){
                      if(swable.key == sw.name){
                        
                        swable.baseOptions.each(function(opt){
                            Element.insert(swable, opt);
                            opt.className = opt.className.replace(/\s|\&/g,'').toLowerCase();
                        });
                        
                        swable.allOptions =  Element.select(swable, 'option');
                        swable.optionMatches = Element.select(swable, '.'+cleanMatch);
                        
                        swable.allOptions.each(function(opt){
                            opt.remove();
                        });
                        swable.optionMatches.each(function(opt){
                            Element.insert(swable, opt);
                            opt.style.display = 'block';
                        });
                        
                        swable.selectedIndex = 0;
                      }
                });
            });
        });
        
        
        Event.observe(mForm, 'submit', function(e){
            var sTerm = ''
            mForm.allElem.each(function(elem){
                if(!Element.hasClassName(elem, 'noterm') && $F(elem)!=''){
                  sTerm += ' AND ' + elem.name + ':' + $F(elem) + ' ';
                }
            });
            
            mForm.searchTerm.value = sTerm;
        });
        
    });
    
  } //}}}
  
  //{{{ search.returnAction = function(tf,jsSearchType)
  search.returnAction = function(tf,jsSearchType) { 
    try{
      if (jsSearchType != 'newsarticle' && tf.searchLoc && tf.searchLoc[1].checked) {
        if (tf.searchText.value != '') {
          window.open('http://www.google.ca/search?q=' + tf.searchText.value,'googlesearch');
        }
        return false;
      }
    }
    catch(e){}
    var searchTerm = "";
    if (tf.searchText.value != '') { 
      var terms = tf.searchText.value.split(' ');
      for (var i=0; i< terms.length; i++) {
        var prevTerm = "";
        if (i>0) prevTerm = terms[i-1];
        searchTerm += addSearchTerm(terms[i],false,false,true,prevTerm);
      }
    }
    tf.keywords.value = tf.searchText.value;      
    if (jsSearchType != 'simple') {
      if (tf.andWords && tf.andWords.value != '') {
        //alert("andwords"+tf.andWords.value);
        searchTerm += ' AND '; 
        if (tf.keywords.value != '') { tf.keywords.value += ' AND '; }
        searchTerm += '(';
        var terms = tf.andWords.value.split(' ');
        for (var i=0; i< terms.length; i++) {
          searchTerm += addSearchTerm(terms[i],false,false);
          tf.keywords.value += terms[i];
          if (i < terms.length-1) {
            searchTerm += ' AND ';
            tf.keywords.value += ' AND ';
          }
         // alert("searchTerm"+searchTerm);
        }
        searchTerm += ')';
      }
      if (tf.exactWords && tf.exactWords.value != '') {
        searchTerm += ' AND ';
        if (tf.keywords.value != '') { tf.keywords.value += ' AND '; }
        searchTerm += addSearchTerm(tf.exactWords.value, true,false);
        var terms = tf.exactWords.value.split(' ');
        for (var i=0; i< terms.length; i++) {
          tf.keywords.value += terms[i];
          if (i < terms.length-1) {
            tf.keywords.value += ' AND ';
          }
        }
      }
       if (tf.orWords && tf.orWords.value != '') {
        searchTerm += ' AND ';
        if (tf.keywords.value != '') { tf.keywords.value += ' AND '; }
        searchTerm += '(';
        var terms = tf.orWords.value.split(' ');
        for (var i=0; i< terms.length; i++) {
          searchTerm += addSearchTerm(terms[i],false,false);
          tf.keywords.value += terms[i];
          if (i < terms.length-1) {
            searchTerm += ' OR ';
            tf.keywords.value += ' OR ';
          }
        }
        searchTerm += ')';
       }
       if (tf.notWords && tf.notWords.value != '') {
        var terms = tf.notWords.value.split(' ');
        for (var i=0; i< terms.length; i++) {
          searchTerm += addSearchTerm(terms[i],false,true);
          tf.keywords.value += 'NOT ' + terms[i];
        }
        }
      }
      if (jsSearchType == 'advanced') {
        //alert("Getting Advanced Options");
        
        searchTerm += getAdvancedOptions(tf);
      }
      if (jsSearchType == 'newsarticle') {
        searchTerm += getNewsArticleAdvancedSearchTerm(tf);
      }
      if (jsSearchType == 'task') {
        searchTerm += getTaskAdvancedSearchTerm(tf);
      }
      if (jsSearchType != 'simple') {
       if (tf.useDate && tf.useDate.checked) {
        searchTerm += '@between('
          + tf.dateType[tf.dateType.selectedIndex].value
          + ',' + getDate('after')
          + ',' + getDate('before') + ')';
       }
      }
      
      if(SiteVars.siteId == 'hvcb' && SiteVars.islandId != 'statewide' ){
        searchTerm += ' AND islandId:'+SiteVars.islandId;
        alert(searchTerm);
      }
      
      
      
      tf.searchTerm.value = searchTerm;
      return true;
      //return confirm(searchTerm);
    
    
      function addSearchTerm(term,addQuot,isNot,useAnd,prevTerm) {
        regexp1 = new RegExp('"','gi');
        regexp2 = new RegExp("'",'gi');
        regexp3 = new RegExp("&", 'gi');
        regexp4 = new RegExp("<", 'gi');
        regexp5 = new RegExp(">", 'gi');
        result = term.replace(regexp1,'');
        result = result.replace(regexp2,'');
        result = result.replace(regexp3,'');
        result = result.replace(regexp4,'');
        result = result.replace(regexp5,'');
        if (result == '' || result == ' ') {
          return '';
        }
        else if (result.indexOf(':') != -1) {
          return result + ' ';
        }
        else if (result == 'AND' || result == 'OR' || result == 'NOT') {
          return result + ' ';
        }
        else {
          if (addQuot) { xtra = '"'; } else { xtra = '';}
          if (isNot) {
            return  'NOT ' + xtra + result + xtra
                + ' NOT Description:' + xtra + result + xtra
                + ' NOT Use:' + xtra + result + xtra
                + ' NOT Title:' + xtra + result + xtra
                + ' ';
          }
          else {
            var joiner = "";
            if (useAnd && (prevTerm != 'AND'
                                   && prevTerm != 'OR'
                                   && prevTerm != 'NOT')) joiner = " AND ";
            return  joiner + '(' + xtra + result + xtra
                + ' OR Description:' + xtra + result + xtra
                + ' OR Use:' + xtra + result + xtra
                + ' OR Title:' + xtra + result + xtra
                + ' OR _DocumentID:' + xtra + result + xtra              
                + ') ';
          }
        }
      }
      function updateDR(sel) {
        if (sel.selectedIndex == 0) {
          dateRestriction.style.visibility = 'hidden';
          dateRestriction.style.display = 'none';
        }
        else {
          dateRestriction.style.visibility = 'visible';
          dateRestriction.style.display = '';
        }
      }
      function getDate(pref) {
        var yrF = document.getElementById(pref+'Year');
        var mnF = document.getElementById(pref+'Month');
        var dyF = document.getElementById(pref+'Day');
        return yrF[yrF.selectedIndex].value +
               mnF[mnF.selectedIndex].value +
               dyF[dyF.selectedIndex].value;
      }
      function toggleSearchOptions() {
        sopts = document.getElementById('searchOptions');
        stog = document.getElementById('sotog');
        sdiv = document.getElementById('soDiv');
        if (sdiv.style.visibility == 'hidden') {
          stog.innerText = "hide";
          sdiv.style.display = '';
          sdiv.style.visibility = 'visible';
        }
        else {
          stog.innerText = "display";
          sdiv.style.display = 'none';
          sdiv.style.visibility = 'hidden';
        }
      }
      var prevGoogle = '';
      function toggleSearchLocation(val) {
        sdiv = document.getElementById('soDiv');
        if (val == 'google') {
          prevGoogle = sdiv.style.visibility;
          sdiv.style.display = 'none';
          sdiv.style.visibility = 'hidden';
        }
        else if (prevGoogle == 'hidden') {
          sdiv.style.display = 'none';
          sdiv.style.visibility = 'hidden';
        }
        else if (prevGoogle == 'visible' || prevGoogle == '') {
          sdiv.style.display = '';
          sdiv.style.visibility = 'visible';
        }
      }
      function toggleCBField(fn,cb,dpyMode) {
        box = document.getElementById(fn);
        if (dpyMode == 'side') {
          if (cb.checked) {
            box.style.display = '';
            box.style.visibility = 'visible';
          }
          else {
            box.style.display = 'none';
            box.style.visibility = 'hidden';
          }
        }
      }
      var radioBoxes = new Array();
      function registerRadioBox(name) {
        radioBoxes[radioBoxes.length] = name;
      }
      function toggleRadioBox(name, dpyMode, sf) {
        var box;
        var sfid = document.getElementById(sf);
        if (name == '') {
          box = null;
          sfid.useType[0].checked = true;
        } else {
          box = document.getElementById(name + 'Box');
          for (i=1; i<= radioBoxes.length; i++) {
            if (sfid.useType[i].value == name) {
              sfid.useType[i].checked = true;
            }
          }
        }
        if (dpyMode == 'side') {
          for (i=0; i < radioBoxes.length; i++) {
            tmpbox = document.getElementById(radioBoxes[i] + 'Box');
            if (tmpbox != box) {
              tmpbox.style.display = 'none';
              tmpbox.style.visibility = 'hidden';
            }
          }
          if (box != null) {
            box.style.display = '';
            box.style.visibility = 'visible';
          }
        }
      }
      function addList(name, field) {
        var selectedCount = 0;
        var len = field.options.length;
        var returnValue="";
    
        for (i = 0; i < len; i++)
          if (field.options[i].selected &&
              field.options[i].value != '')
            selectedCount++;
    
        if (selectedCount > 0) {
          var returnValue = ' AND (';
          selectedCount = 0;
          for (i = 0; i < len; i++) {
            if(field.options[i].selected) {
              if( selectedCount != 0 ) returnValue += ' OR ';
              returnValue += name + ':"'+ field.options[i].value + '" ';
              selectedCount++;
            }
          }
          returnValue += ')';
        }
        return returnValue;
      }
      function addCheckBox(name, frm, pfx){
      var selectedCount = 0;
      var len = frm.elements.length;
      var returnValue="";
  
      for (i = 0; i < len; i++){
        var isGroup = (pfx) ? frm.elements[i].name.indexOf(pfx):0;
        if (isGroup != -1 && frm.elements[i].checked){
          selectedCount++;
        }
      }
  
      if (selectedCount > 0) {
        var returnValue = ' AND (';
        selectedCount = 0;
        for (i = 0; i < len; i++) {
          if(frm.elements[i].checked) {
            if( selectedCount != 0 ) returnValue += ' OR ';
            returnValue += name + ':"'+ frm.elements[i].value + '" ';
            selectedCount++;
          }
        }
        returnValue += ')';
      }
      
      
      
      return returnValue;
    }
  } //}}}
  
  if(search.form[0] || search.memberSearch[0]){
    search.loadSearch();
  }
  
}
