function getAttractions(iCityId) {
  if (!iCityId) return false;
  
  var jAttractions;
  
  $.ajax({
    async:    false,
    type:     'get',
    url:      getAttractionsListURI + iCityId,
    dataType: 'json',
    success: function (json) {
      if (json.none) {
        jAttractions  = null;
      } else {
        jAttractions  = json;
      }
    },
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			// do nothing
		}
  });

  return jAttractions;
}

function setAttractionsAutocomplete(options) {
  if (!options.oInput || !options.oSelector) return false;
  
  var jAttractions    = {};
  
  if (!options.jAttractions) {
    jAttractions  = getAttractions(options.iCityId);
  } else {
    jAttractions  = options.jAttractions;
  }
  
  if (!jAttractions) {
    if (options.fHide) options.fHide();
    return false;
  } else {
    if (options.fShow) options.fShow();
  }
  
  jAttractions.push({ name: options.sCity + " " + sCenter, id: 0 });
  jAttractions.push({ name: sCenter, id: 0 });
  jAttractions.push({ name: sCityCenter, id: 0 });
  
  var aAttractionsNames = [];
  
  for (var i = 0; i < jAttractions.length; i++) aAttractionsNames[i] = jAttractions[i].name;
  
  var oDataSource   = new YAHOO.widget.DS_JSArray(aAttractionsNames);
  var oAutoComp     = new YAHOO.widget.AutoComplete(options.oInput, options.oSelector, oDataSource);
  
  oAutoComp.queryDelay                = 0;
  oAutoComp.minQueryLength            = 1;
  oAutoComp.autoHighlight             = false; 
  oAutoComp.maxResultsDisplayed       = 100;
  oAutoComp.allowBrowserAutocomplete  = false;
  
  if (options.isIE) oAutoComp.useIFrame = true;
  
  oAutoComp.itemSelectEvent.subscribe(function(oSelf, elItem, oData) {
    var sAttrName = elItem[2];
    var iAttrId   = null;
    var form      = document.forms.avail;
    
    if (!form || !sAttrName) return false;
    
    for (var i = 0; i < jAttractions.length; i++) if (jAttractions[i].name == sAttrName) iAttrId = jAttractions[i].id;
    
    selectedAutoAttr      = sAttrName;
    form.filter_an.value  = iAttrId;
    
    return false;
  });
  
  return false;
}

function setAttractionsSelect(options) {
  if (!options.jqSelect) return false;
  
  var jqSelect        = options.jqSelect;
  var jqSelectOption  = jqSelect.find("option").eq(0);
  var iSelected       = parseInt(options.iSelected);
  var jAttractions    = {};
  
  jqSelect.attr("disabled", "disabled");
  
  if (options.jAttractions) {
    jAttractions  = options.jAttractions;
  } else if (options.iCityId) {
    jAttractions  = getAttractions(options.iCityId);
  } else {
    return false;
  }
  
  if (!jAttractions) {
    if (options.fHide) options.fHide();
    return false;
  } else {
    if (options.fShow) options.fShow();
  }
  
  jAttractions.unshift({ name: options.sCity + " " + sCenter, id: 0 });
  
  var sSeparator  = "<optgroup label='" + new Array(jAttractions[0].name.length + 4).join("-") + "'></optgroup>";
  
  jqSelect.empty();
  
  jqSelect.append(jqSelectOption);
  
  for (var i = 0; i < jAttractions.length; i++) {
    if (jAttractions[i]) {
      var jqOption  = jqSelectOption.clone();
      var iId       = jAttractions[i].id;
      var sName     = jAttractions[i].name;
      
      jqOption.val(iId);
      jqOption.text(sName);
      
      if (iId == iSelected) {
        jqOption.attr("selected", "selected");        
      } else {
        jqOption.attr("selected", "");
      }
      
      jqSelect.append(jqOption);
      
      if (iId == 0) jqSelect.append(sSeparator);
    }
  }
  
  jqSelect.removeAttr("disabled");
  
  return false;
}