var urlPreselectsAreValid = true;

function invalidateUrlPreselects() {
  urlPreselectsAreValid = false;
}

function addOption(selectbox,text,value ) {
  //workaround as json service for prod years returning integers in some cases (sort func)
  text = text.toString().replace(/&/,"&amp;");
  value = value.toString();
  if ( selectbox.hasChildNodes() && text.startsWith('--') ) {
      while ( selectbox.childNodes.length >= 1 ){
          selectbox.removeChild( selectbox.firstChild );
      }
  }
  var optn = new Element("option", {'value': value} ).update( text );
  selectbox.insert( optn );
}

function preselectedMakeId(selectMakes) {
    var obj = window.location.href.toQueryParams();
    var cookieValue = getCookie('referer');
    if (cookieValue!=null && cookieValue!="") {
      for ( var i = 0; i < selectMakes.options.length; i++ ) {
        if( selectMakes.options[i].text.toLowerCase()==cookieValue.toLowerCase()) {            
          selectMakes.value=selectMakes.options[i].value;
          if( selectMakes.options[i].value != obj.makeid ) urlPreselectsAreValid = false;
          selectMakes.fire("rs:change");
          selectMakes.setAttribute("disabled","disabled");
          break;
        }
      }        
    } else { 
      if( obj.makeid!=undefined && urlPreselectsAreValid) { 
        selectMakes.value = obj.makeid;
        selectMakes.fire("rs:change");
      } 
    }
}


function preselectedModelId(selectModels) {
    var obj = window.location.href.toQueryParams();
    if( obj.modelid!=undefined  && urlPreselectsAreValid) { 
      selectModels.value = obj.modelid;
      selectModels.fire("rs:change");
    }
}

function injectModels( selectModels, selectedMake, containingElement, firstElement ) {
    if( selectedMake.startsWith('--') ) {
      return;
    }
    containingElement.style.display = "none";

    new Ajax.Request('/services/rs-get-models-json.php',
      {
        method:'get',
        parameters: { makeid: selectedMake },
        onSuccess: function(transport){
          var models = transport.responseJSON;
          addOption( selectModels, '--'+firstElement+'--', '--'+firstElement+'--');
          for ( var i in models ) {
            addOption( selectModels, models[i], i);
          }
          preselectedModelId(selectModels);
          new Effect.Appear(containingElement, {duration:0.5, from:0, to:1});
        }
      });
}

function preselectedYear(selectYears) {
    var obj = window.location.href.toQueryParams();
    if( obj.prodyear!=undefined  && urlPreselectsAreValid) { 
      selectYears.value = obj.prodyear;
      selectYears.fire("rs:change");
    }
}

function injectYears( selectYears, selectedModel, containingElement, firstElement ) {
    if( selectedModel.startsWith('--') ) {
      return;
    }
    containingElement.style.display = "none";
    new Ajax.Request('/services/rs-prod-year-json.php',
      {
        method:'get',
        parameters: { modelid: selectedModel },
        onSuccess: function(transport) {
          var years = transport.responseJSON;
          addOption( selectYears, '--'+firstElement+'--', '--'+firstElement+'--');
          for (var i = 0; i < years.length; i++) {
            addOption( selectYears, years[i], years[i]);
          }
          preselectedYear(selectYears);
          new Effect.Appear(containingElement, {duration:0.5, from:0, to:1});
        }
      });
}

