function doSearch(formName,url) {
  var searchText = document.forms[formName].q.value;

  var defaultStart = '0';
  //alert('searchText = -' + searchText + '-');
  if (searchText == null || searchText == 'Enter keyword or stock #') {
    searchText = '';
  } else {
    searchText = searchText.replace('&','%26');
    searchText = searchText.replace('~','%7E');
  }

  //removing crumbs & fq params, because we want to start a "fresh" search
  var newParamsString = 'q=' + searchText;
  //alert('in doSearch url = '+ url);
  submitToUrl(newParamsString,null,url);

  return true;
};

function submitToUrl(newParamsString,oldParamsString,url) {
  var newUrl;
//  var oldParamsString = '${queryParams}';

  var oldParams = new Array();
  var newParams = new Array();
  var resultParams = new Array();
  var paramsNotToAdd = new Array();

  var tempArrayOld = new Array();
  var tempArrayNew = new Array();

  newParams = newParamsString.split('&');
  if (oldParamsString != null) {

    oldParams = oldParamsString.split('&');
  
    for ( var i=0; i<=oldParams.length-1; i++ ){
      var foundParamToReplace = false;
      var foundParamToRemove = false;

      tempArrayOld = oldParams[i].split('=');

  //---------------------------------------------------------------
      for ( var j=0; j<=newParams.length-1; j++ ){
        tempArrayNew = newParams[j].split('=');

        //if the old & new param names match
        if (tempArrayNew[0] == tempArrayOld[0]) {
          //if the new param value is blank
          if (tempArrayNew[1] == null || tempArrayNew[1] == '') {
  //                alert('found a param to remove = ' + tempArrayNew[0]);
            foundParamToRemove = true;
          } else {
            //if the new param HAS a value
  //                alert('found a param to replace = ' + tempArrayNew[0] + '=' + tempArrayNew[1]);
            foundParamToReplace = true;
          }

          //add it to the list of params NAMES we found in the oldParams
          paramsNotToAdd.push(tempArrayNew[0]);

          break; //no need to continue the newParams loop
        } else {
          // old & new param did NOT match

        }
      } // end newParams loop
  //---------------------------------------------------------------

      if (foundParamToReplace) {
        resultParams.push(tempArrayNew[0]+'='+tempArrayNew[1]);
      } else if(foundParamToRemove) {
        //do nothing (don't add the new one, and don't put in the old one.
      } else {
        resultParams.push(oldParams[i]);
      }
    }// end oldParams loop
  }
  //add any new params at this point
  var foundOldParam = false;
  for ( var i=0; i<=newParams.length-1; i++ ){

    tempArrayNew = newParams[i].split('=');

    foundOldParam = false;

    for ( var j=0; j<=paramsNotToAdd.length-1; j++ ){
      if (tempArrayNew[0] == paramsNotToAdd[j] ) {
        foundOldParam = true;
      }
    }

    //if we didn't find an old param, then it must be a new one, so add it.
    if (! foundOldParam) {
//            alert('found a param to add = ' + newParams[i])
      resultParams.push(newParams[i]);
    }
  }

//        alert('oldParams = ' + oldParams.toString() + '\n\n' + 'resultParams = ' + resultParams.toString());


  if (url == null) {
    url = '';
  }

  newUrl = url + '?' + resultParams.join('&');

//        alert('newUrl = ' + newUrl);

    location.href = newUrl;

  return true;
}

