var XHModel,XHMotor;

var loadMakeSelect=null;
var loadModelSelect=null;
var loadModelSearch=true;
var loadModelClassic='';
var loadModelUserID=0;

var id_modello_selected=null;

function loadModelCallBack()
{
  if(XHModel.readyState==4)
  {
    if(XHModel.status==200)
    {
      var mnd=(loadModelSelect.className.search(/_mnd/)!=-1);
      var og;
      var op;
      removeAllChild(loadModelSelect);

      loadModelData(XHModel.responseText);

      if(ModelData.length==1)
      {
        op=d.createElement("option");
        op.value=ModelData[0].id;
        op.innerHTML=ModelData[0].desc;
        loadModelSelect.appendChild(op);

        if(loadMotorSelect)
          {loadMotor(ModelData[0].id);}
      }
      else
      {
        op=d.createElement("option");
        op.value='';
        if(loadModelSearch)
          {op.innerHTML=strSearchAll;}
        else
          {op.innerHTML=strSelectModel;}

        loadModelSelect.appendChild(op);

        var c_cl='';
        var c_des='';
        var c_des_prev='';

        if(loadModelClassic!='')
        {
          for(var j=0;j<ModelData.length;j++)
          {
            op=d.createElement("option");
            op.value=ModelData[j].id;
            op.innerHTML=ModelData[j].desc;

            if((pos=ModelData[j].desc.indexOf(" ("))>0)
              {c_des=ModelData[j].desc.substr(0,pos);}
            else
              {c_des=ModelData[j].desc;}

            if(c_des!=c_des_prev)
            {
              if(mnd)
              {
                if(c_cl=='option_mnd_dark')
                  {c_cl='option_mnd_light';}
                else
                  {c_cl='option_mnd_dark';}
              }
              else
              {
                if(c_cl=='option_dark')
                  {c_cl='option_light';}
                else
                  {c_cl='option_dark';}
              }
            }
            else
              {op.className=c_cl;}

            op.className=loadModelSelect.className+' '+c_cl;
            c_des_prev=c_des;

            loadModelSelect.appendChild(op);
          }
        }
        else
        {
          var year=0;
          for(var j=1;j<ModelData.length;j++)
          {
            if(ModelData[j].classic!=ModelData[j-1].classic)
            {
              year=ModelData[j].year_from;
              break;
            }
          }
          og=d.createElement("optGroup");
          if(year>0)
          {
            if(ModelData[0].classic=='1'>0)
              {og.label=strClassicCars+' (<<-'+year+')';}
            else
              {og.label=strModernCars+' ('+year+'->>)';}
          }
          else
          {
            if(ModelData[0].classic=='1'>0)
              {og.label=strClassicCars;}
            else
              {og.label=strModernCars;}
          }

          if(mnd)
          {
            if(c_cl=='option_mnd_dark')
              {c_cl='option_mnd_light';}
            else
              {c_cl='option_mnd_dark';}
          }
          else
          {
            if(c_cl=='option_dark')
              {c_cl='option_light';}
            else
              {c_cl='option_dark';}
          }

          if(BROWSER!='Opera')
            {og.className=loadModelSelect.className+' tst_b tst_i '+c_cl;}

          loadModelSelect.appendChild(og);

          for(var j=0;j<ModelData.length;j++)
          {
            if(j>0)
            {
              if(ModelData[j].classic!=ModelData[j-1].classic)
              {
                og=d.createElement("optGroup");
                if(ModelData[j].classic=='1'>0)
                  {og.label=strClassicCars+' (<<-'+ModelData[j].year_from+')';}
                else
                  {og.label=strModernCars+' ('+ModelData[j].year_from+'->>)';}

                if(mnd)
                {
                  if(c_cl=='option_mnd_dark')
                    {c_cl='option_mnd_light';}
                  else
                    {c_cl='option_mnd_dark';}
                }
                else
                {
                  if(c_cl=='option_dark')
                    {c_cl='option_light';}
                  else
                    {c_cl='option_dark';}
                }
  
                if(BROWSER!='Opera')
                  {og.className=loadModelSelect.className+' tst_b tst_i '+c_cl;}

                loadModelSelect.appendChild(og);
              }
            }

            op=d.createElement("option");
            op.value=ModelData[j].id;
            op.innerHTML=ModelData[j].desc;

            if((pos=ModelData[j].desc.indexOf(" ("))>0)
              {c_des=ModelData[j].desc.substr(0,pos);}
            else
              {c_des=ModelData[j].desc;}

            if(c_des!=c_des_prev)
            {
              if(mnd)
              {
                if(c_cl=='option_mnd_dark')
                  {c_cl='option_mnd_light';}
                else
                  {c_cl='option_mnd_dark';}
              }
              else
              {
                if(c_cl=='option_dark')
                  {c_cl='option_light';}
                else
                  {c_cl='option_dark';}
              }
            }
            else
              {op.className=c_cl;}

            op.className=loadModelSelect.className+' '+c_cl;
            c_des_prev=c_des;

            og.appendChild(op);
          }
        }
        loadModelSelect.style.width='auto';

        if(loadMotorSelect)
        {
          removeAllChild(loadMotorSelect);
          op=d.createElement("option");
          op.value='0';
          op.innerHTML='...';
          loadMotorSelect.appendChild(op);
        }
      }

      loadModelSelect.disabled=false;
      loadMakeSelect.disabled=false;
      if(loadMotorSelect)
        {loadMotorSelect.disabled=false;}

      hideLayer(d.getElementById('loadingContainer'));

      if(id_modello_selected)
      {
        selectOption(loadModelSelect,id_modello_selected);
        loadMotor(id_modello_selected,0);
      }

      delete XHModel;
    }
  }
}

var loadMotorSelect=null;
var loadMotorSearch=true;

var id_motorizzazione_selected=null;

function loadMotorCallBack()
{
  if(XHMotor.readyState==4)
  {
    if(XHMotor.status==200)
    {
      var mnd=(loadMotorSelect.className.search(/_mnd/)!=-1);
      var og;
      var op;
      removeAllChild(loadMotorSelect);
      loadMotorData(XHMotor.responseText);

      if(MotorData.length==1)
      {
        op=d.createElement("option");
        op.value=MotorData[0].id;
        op.innerHTML=MotorData[0].desc;
        loadMotorSelect.appendChild(op);
      }
      else
      {
        op=d.createElement("option");
        op.value='';
        if(loadMotorSearch)
          {op.innerHTML=strSearchAll;}
        else
          {op.innerHTML=strSelectMotor;}

        loadMotorSelect.appendChild(op);

        var i_b=0;
        var i_f=0;
        var dr=0;

        var c_cl='';

        for(var j=0;j<MotorData.length;j++)
        {
          if(i_b!=MotorData[j].id_body || (dr!=MotorData[j].doors && MotorData[j].doors>0))
          {
            og=d.createElement("optGroup");
            if(MotorData[j].doors>0)
              {og.label=strBody[getArrayKeyByObjId(strBody,MotorData[j].id_body)].str+' '+MotorData[j].doors+' '+strDoors;}
            else
              {og.label=strBody[getArrayKeyByObjId(strBody,MotorData[j].id_body)].str;}

            if(mnd)
            {
              if(c_cl=='option_mnd_dark')
                {c_cl='option_mnd_light';}
              else
                {c_cl='option_mnd_dark';}
            }
            else
            {
              if(c_cl=='option_dark')
                {c_cl='option_light';}
              else
                {c_cl='option_dark';}
            }

            if(BROWSER!='Opera')
              {og.className=loadMotorSelect.className+' tst_b tst_i '+c_cl;}

            loadMotorSelect.appendChild(og);
          }
          else if(i_f!=MotorData[j].id_fuel && i_f!=0)
          {
            op=d.createElement("option");
            op.value='';
            op.innerHTML=' ';
            op.className=loadMotorSelect.className+' '+c_cl;
            op.disabled=true;

            if(og)
              {og.appendChild(op);}
            else
              {loadMotorSelect.appendChild(op);}
          }

          op=d.createElement("option");
          op.value=MotorData[j].id;
          op.innerHTML=MotorData[j].desc;
          op.className=loadMotorSelect.className+' '+c_cl;

          i_b=MotorData[j].id_body;
          dr=MotorData[j].doors;
          i_f=MotorData[j].id_fuel;

          if(og)
            {og.appendChild(op);}
          else
            {loadMotorSelect.appendChild(op);}
        }
        loadMotorSelect.style.width='auto';
      }

      loadMotorSelect.disabled=false;

      hideLayer(d.getElementById('loadingContainer'));

      if(id_motorizzazione_selected)
        {selectOption(loadMotorSelect,id_motorizzazione_selected);}

      delete XHMotor;
    }
  }
}

function BuildYearSelect(select,from,to,type,selected_value)
{
  var mnd=(select.className.search(/_mnd/)!=-1);
  var op;

  removeAllChild(select);
  if(type=='s')
  {
    op=d.createElement("option");
    op.value='0';
    op.innerHTML=strSearchAll;
    select.appendChild(op);
  }
  else if(type=='sf')
  {
    op=d.createElement("option");
    op.value='0';
    op.innerHTML=strFrom;
    select.appendChild(op);

    op=d.createElement("option");
    op.value='0';
    op.innerHTML=strSearchAll;
    select.appendChild(op);
  }
  else if(type=='st')
  {
    op=d.createElement("option");
    op.value='0';
    op.innerHTML=strTo;
    select.appendChild(op);

    op=d.createElement("option");
    op.value='0';
    op.innerHTML=strSearchAll;
    select.appendChild(op);
  }
  else
  {
    op=d.createElement("option");
    op.value='0';
    op.innerHTML='...';
    select.appendChild(op);
  }

  if(mnd)
    {var bgc='option_mnd_dark';}
  else
    {var bgc='option_dark';}

  for(var i=to;i>=from;i--)
  {
    if((i+1)%10==0)
    {
      if(mnd)
      {
        if(bgc=='option_mnd_light')
          {bgc='option_mnd_dark';}
        else
          {bgc='option_mnd_light';}
      }
      else
      {
        if(bgc=='option_light')
          {bgc='option_dark';}
        else
          {bgc='option_light';}
      }

    }
    op=d.createElement("option");
    op.value=i;
    op.innerHTML=i;
    op.className=bgc;
    if(i==selected_value)
      {op.selected=true;}
    select.appendChild(op);
  }
}

function BuildFuelSelect(select,ids)
{
  var mnd=(select.className.search(/_mnd/)!=-1);
  var op;

  if(mnd)
    {var bgc='option_mnd_light';}
  else
    {var bgc='option_light';}

  removeAllChild(select);

  if(ids)
  {
    if(ids.length>1)
    {
      op=d.createElement("option");
      op.value='0';
      op.innerHTML=strSearchAll;
      select.appendChild(op);
    }

    for(var i=0;i<ids.length;i++)
    {
      op=d.createElement("option");
      op.value=ids[i];
      op.innerHTML=strFuel[getArrayKeyByObjId(strFuel,ids[i])].str;
      op.className=select.className+' '+bgc;
      select.appendChild(op);
    }
  }
  else
  {
    op=d.createElement("option");
    op.value='0';
    op.innerHTML=strSearchAll;
    select.appendChild(op);

    for(var i=0;i<strFuel.length;i++)
    {
      op=d.createElement("option");
      op.value=strFuel[i].id;
      op.innerHTML=strFuel[i].str;
      op.className=select.className+' '+bgc;
      select.appendChild(op);
    }
  }
}

function BuildBodySelect(select,ids)
{
  var mnd=(select.className.search(/_mnd/)!=-1);
  var op;

  if(mnd)
    {var bgc='option_mnd_light';}
  else
    {var bgc='option_light';}

  removeAllChild(select);

  if(ids)
  {
    if(ids.length>1)
    {
      op=d.createElement("option");
      op.value='0';
      op.innerHTML=strSearchAll;
      select.appendChild(op);
    }

    for(var i=0;i<ids.length;i++)
    {
      op=d.createElement("option");
      op.value=ids[i];
      op.innerHTML=strBody[getArrayKeyByObjId(strBody,ids[i])].str;
      op.className=select.className+' '+bgc;
      select.appendChild(op);
    }
  }
  else
  {
    op=d.createElement("option");
    op.value='0';
    op.innerHTML=strSearchAll;
    select.appendChild(op);

    for(var i=0;i<strBody.length;i++)
    {
      op=d.createElement("option");
      op.value=strBody[i].id;
      op.innerHTML=strBody[i].str;
      op.className=select.className+' '+bgc;
      select.appendChild(op);
    }
  }
}

var ModelData=new Array();

function Model(id,desc,year_from,classic,ids_fuel,ids_body)
{
  this.id=id;
  this.desc=desc;
  this.year_from=year_from;
  this.classic=classic;
  this.ids_fuel=ids_fuel;
  this.ids_body=ids_body;
}

function loadModelData(rawdata)
{
  var i_m,d_m,a_m,e_m,if_m,ib_m;

  data=rawdata.split("\n");
  i_m=loadArray(trimString(data[0]));
  d_m=loadArray(trimString(data[1]));
  a_m=loadArray(trimString(data[2]));
  e_m=loadArray(trimString(data[3]));
  if_m=loadArray(trimString(data[4]));
  ib_m=loadArray(trimString(data[5]));

  ModelData.length=0;

  for(var j=0;j<i_m.length;j++)
    {ModelData[j]=new Model(i_m[j],d_m[j],a_m[j],e_m[j],if_m[j].replace(/,/g,';'),ib_m[j].replace(/,/g,';'));}
}

var MotorData=new Array();

function Motor(id,desc,year_from,id_fuel,id_body,doors)
{
  this.id=id;
  this.desc=desc;
  this.year_from=year_from;
  this.id_body=id_body;
  this.id_fuel=id_fuel;
  this.doors=doors;
}

function loadMotorData(rawdata)
{
  var i_m,d_m,a_m,dr_m,if_m,ib_m;

  data=rawdata.split("\n");
  i_m=loadArray(trimString(data[0]));
  d_m=loadArray(trimString(data[1]));
  a_m=loadArray(trimString(data[2]));
  if_m=loadArray(trimString(data[3]));
  ib_m=loadArray(trimString(data[4]));
  dr_m=loadArray(trimString(data[5]));

  MotorData.length=0;

  for(var j=0;j<i_m.length;j++)
    {MotorData[j]=new Motor(i_m[j],d_m[j],a_m[j],if_m[j],ib_m[j],dr_m[j]);}
}

function selectOption(select,value)
{
  var found=false;
  var i;

  for(i=0;i<select.options.length;i++)
  {
    if(select.options[i].value==value && !found)
    {
      select.options[i].selected=true;
      found=true;
    }
    else
      {select.options[i].selected=false;}
  }

  if(!found)
  {
    for(i=0;i<select.options.length;i++)
    {
      if(select.options[i].value=='' || select.options[i].value=='0')
      {
        select.options[i].selected=true;
        break;
      }
    }
  }
}