audi_ngw.acc.E = function(mediaserviceUrlPrefix, modelUrlPrefix, modelUrlSuffix, imageUrlPrefix, imageUrlSuffix, carlines)
{
  this.mediaserviceUrlPrefix = mediaserviceUrlPrefix;
  this.modelUrlPrefix = modelUrlPrefix;
  this.modelUrlSuffix = modelUrlSuffix;
  this.imageUrlPrefix = imageUrlPrefix;
  this.imageUrlSuffix = imageUrlSuffix;
  this.carlines = carlines;

  this.fillCarlineAndSelect = function (selectedCarlineText, carlineSelect)
  {
    for(var i in carlines)
    {
      var carline = carlines[i];
      var newID = carlineSelect.options.length;
      var selected = (carline.text == selectedCarlineText);
      carlineSelect.options[newID] = new Option(carline.text, i, selected, selected);
    }
  }

  this.chooseCarline = function (carlineSelect, modelSelect, modelImage)
  {
    this.changeModelSelect(carlineSelect, modelSelect);
    this.choose(carlineSelect, modelSelect, modelImage);
    if(carlineSelect[0].value == "default")
    {
      carlineSelect[0] = null;
    }
  }

  this.chooseCarlineWithoutDefault = function (carlineSelect, modelSelect, modelImage)
  {
    this.changeModelSelect(carlineSelect, modelSelect);
    this.choose(carlineSelect, modelSelect, modelImage);
  }

  this.choose = function(carlineSelect, modelSelect, modelImage)
  {
    var selectedCarline = carlineSelect.options[carlineSelect.options.selectedIndex].value;
    var selectedModel = modelSelect.options[modelSelect.options.selectedIndex].value;
    var carline = carlines[selectedCarline];
    var model = carline.models[selectedModel];
    modelImage.src = mediaserviceUrlPrefix + imageUrlPrefix + carline.imageUrlPrefix + model.imageUrl
      + carline.imageUrlSuffix + imageUrlSuffix;
  }

  this.changeModelSelect = function(carlineSelect, modelSelect)
  {
    var selectedCarline = carlineSelect.options[carlineSelect.options.selectedIndex].value;
    var carline = carlines[selectedCarline];
    var models = carline.models;
    this.clearCombo(modelSelect);
    for(var i in models)
    {
      var model = models[i];
      var newID = modelSelect.options.length;
      modelSelect.options[newID] = new Option(model.text, i, i == carline.defaultModel, i == carline.defaultModel);
    }
    modelSelect.options.selectedIndex = carline.defaultModel;
  }

  this.clearCombo = function(comBox)
  {
    for(var i in comBox)
    {
      comBox.remove(i);
    }
  }

  this.callUrl = function(configuratorUrlPrefix, carlineSelect, modelSelect)
  {
    var selectedCarline = carlineSelect.options[carlineSelect.options.selectedIndex].value;
    var selectedModel = modelSelect.options[modelSelect.options.selectedIndex].value;
    var carline = carlines[selectedCarline];
    var model = carline.models[selectedModel];
    configurator = window.open(configuratorUrlPrefix + modelUrlPrefix + model.modelUrl + modelUrlSuffix, "config");
    configurator.focus();
  }

  this.fillCarline = function (carlineSelect)
  {
    for(var i in carlines)
    {
      var carline = carlines[i];
      var newID = carlineSelect.options.length;
      carlineSelect.options[newID] = new Option(carline.text, i, false, false);
    }
  }
}

audi_ngw.acc.C = function(text, defaultModel, imageUrlPrefix, imageUrlSuffix, models)
{
  this.text = unescape(text);
  this.defaultModel = defaultModel;
  this.models = models;
  this.imageUrlPrefix = imageUrlPrefix;
  this.imageUrlSuffix = imageUrlSuffix;
}

audi_ngw.acc.M = function(text, modelUrl, imageUrl, price)
{
  this.text = unescape(text);
  this.modelUrl = modelUrl;
  this.imageUrl = imageUrl;
  this.price = price;
}