
// current interval being run
var curLoad = null;
// current asyncronous request being waited for, used in isLoaded()
var curAsyncRef = null;
// current javascript code to be eval-ed when isLoaded succeeds
var curWaitingCode = null;
var keywordsInit = 'Enter search keywords';
var keywordsTouched = false;
var locTextEntered = false;
var requestInProgress = false;
var slidersActive = false;

var commonSearchJs = {

  init : function( searchObj, defaultSortBy, defaultSortOrder ) {
    var args = getArgsFromHash();
    searchObj.initFormFields(args, defaultSortBy, defaultSortOrder);

    //-- Only sort if specified or no keywords
    if((args.matchKeywords == '') 
	|| (args.matchKeywords == keywordsInit)
	|| (args.sortBy)) {
      $('sortOrder').value = args.sortOrder ? args.sortOrder : defaultSortOrder;
      commonSearchJs.setSortArrow( args.sortBy ? args.sortBy : defaultSortBy );
    }
    commonSearchJs.initKeywords(args.matchKeywords ? args.matchKeywords : '');

    YAHOO.util.Event.addListener(document, "keypress", searchObj.interceptKeypress);
  },

  extendLeftNav : function() {
    var newh = 0;
    var minh = 0;
    if( window.getComputedStyle ) {
      //-- get height
      newh = parseInt( '0' + window.getComputedStyle($('resultscontents'), '').getPropertyValue("height"), 10);
      minh = parseInt( '0' + window.getComputedStyle($('leftnavcontrolsmin'), '').getPropertyValue("height"), 10);
    }
    else {
      //-- get height
      newh = $('resultscontents').offsetHeight;
      minh = $('leftnavcontrolsmin').offsetHeight;
    }
    h = Math.max(newh, minh);
    $('leftnavcontrols').style.height = h + 'px';
  },

  showBusy : function() {
    requestInProgress = true;
    document.body.style.cursor = 'wait';    
    $("progressbar").className = "progressbaron";
    $("progressbartext").innerHTML = "Searching...";
  },

  showNotBusy : function() {
    document.body.style.cursor = 'default';    
    $("progressbar").className = "progressbaroff";
    $("progressbartext").innerHTML = "";
    requestInProgress = false;
  },

  checkResetPage : function( field ) {
    if( field == 'page' ) {
      return false;
    }
    else {
      return true;
    }
  },

  resetForm : function( searchObj ) {
    commonSearchJs.resetPage();
    commonSearchJs.resetSortingArrow();
    $('sortBy').value = '';
    $('sortOrder').value = 1;
    searchObj.resetFilters();
  },

  resetPage : function() {
    $('page').value = 1;
  },

  resetSortingArrow : function() {
    var prevSort = $('sortBy').value;
    if( prevSort ) {
      var sortArrow = $(prevSort + "Arrow");
      sortArrow.className = "sortSpacer";
    }
  },

  /**
   * Set the sort direction (asc or desc) and sortBy field
   */
  setSortArrow : function(sortBy) {
    if( sortBy ) {
      $('sortBy').value = sortBy;
      var sortArrow = $(sortBy + 'Arrow');     
      if( $('sortOrder').value == 1 ) {
        sortArrow.className = 'sortDown';
      }
      else {
        sortArrow.className = 'sortUp';
      }  
    }
  },

  initKeywords : function( defaultKeywords ) {
    if( defaultKeywords == '' ) {
      $('matchKeywords').value = keywordsInit;
      $('matchKeywords').className = 'keywordslight';
    }
    else {
      //-- URL has keywords already, so use those
      $('matchKeywords').className = 'keywordsdark';
      keywordsTouched = true;
    }
  },

  clearKeywords : function() {
    $('matchKeywords').className = 'keywordsdark';
    $('matchKeywords').value = '';
  },

  clearLocFilter : function() {
    $('locEntered').value = '';
    $('locFilter').value = '';
  }
}

var objInFocus = '';

function setObjInFocus( obj ) {
  objInFocus = obj;
  if( obj == 'matchKeywords' ) {
    if( !keywordsTouched ) {
      commonSearchJs.clearKeywords();      
    }   
    keywordsTouched = true;
  } else if (obj == 'locEntered') {
    if(!locTextEntered) {
      commonSearchJs.clearLocFilter();      
    }   
    locTextEntered = true;
  }
}

function removeObjInFocus() {
  objInFocus = '';
}
