function Car(model, get_completion)
{
    this.name = model.name;
    this.completions = [];
    this.carsSliderItems = [];
    this.programs = facade.getProgramsByCar(this.name);
    
    this.startProgram = facade.getDefaultProgramByCar(this.name);
    this.startCompletion = 0;
    this.startData = false;
    
    if (typeof get_completion != 'undefined')
    {
        this.getCompletion = get_completion;
    }
    else
    {
        this.getCompletion = false;
    }
}

Car.prototype.renderToCalc = function(startProgram, startCompletion, startData)
{
    if (typeof startProgram != 'undefined')
    {
        this.startProgram = startProgram;
    }
    
    if (typeof startCompletion != 'undefined')
    {
        this.startCompletion = startCompletion;
    }
    
    if (typeof startData != 'undefined')
    {
        this.startData = startData;
    }
    
    this.changeBackground();
    this.load();
    this.loadCarsSlider();
    facade.page.carNameNode.html(this.name);
    
    facade.page.programsListNode.empty();
    
    for (var i = 0; i < this.programs.length; i++)
    {
        var program_name = facade.programs[this.programs[i]].name;
        if (typeof facade.programs[this.programs[i]].description != 'undefined')
        {
            program_name = ' <a href="' + facade.programs[this.programs[i]].description + '" target="_blank" title="подробнее">'+facade.programs[this.programs[i]].name+'</a>';
        }
        facade.page.programsListNode.append('<div style="margin-bottom:5px;"><input class="credit_program_selector" name="credit_program" type="radio" value="'+i+'" id="credit_program_'+i+'" '+(this.programs[i] == this.startProgram ? 'checked="checked"' : '')+' /><label class="program_label" for="credit_program_'+i+'" style="margin-left:5px;">' + program_name + '</label></div>');
    }
    
    document.title = "Тойота Банк :: кредитный калькулятор :: расчет кредита на покупку Toyota :: параметры кредита";
    if (pageTracker)
    {
        pageTracker._trackPageview("calculatorFormVisualSlider.html");
    }
}



Car.prototype.load = function()
{
    var _self = this;
    $.ajax
    ({
        url: credit_root + "/b.php?t=integration",
        type: 'post',
        data: {intName: _self.name},
        dataType: 'json',
        success: _self.onLoadSuccess
    });
}

Car.prototype.onLoadSuccess = function(data)
{
    facade.car.completions = data;
    
    var completion = facade.car.completions[facade.car.startCompletion];
    if (facade.car.getCompletion)
    {
        for (var i = 0; i < facade.car.completions.length; i++)
        {
            if (facade.car.completions[i].id == facade.car.getCompletion)
            {
                var completion = facade.car.completions[i].id;
                facade.car.startCompletion = i;
            }
        }
    }
    
    facade.car.renderCompletions();
    
    if (facade.car.startData && facade.car.startData.price)
    {
        completion.price = facade.car.startData.price;
    }
    facade.program = new facade.programs[facade.car.startProgram].programClass(facade.car.completions[facade.car.startCompletion]);
    
    facade.program.init(facade.car.startData);
    
    $('.credit_program_selector').change(function(){
        var price = facade.program.price;
        var completionPrice = facade.program.completionPrice;
        var USDRate = facade.program.USDRate;
        var currency = facade.program.currency;
        
        if (currency == 'rub')
        {
            facade.program = new facade.programs[facade.car.programs[$(this).val()]].programClass(facade.program.completion);
            facade.program.price = price;
            facade.program.completionPrice = completionPrice;
            facade.program.USDRate = USDRate;
            facade.program.currency = currency;
            facade.program.init(false, true);
        }
        else
        {
            facade.program = new facade.programs[facade.car.programs[$(this).val()]].programClass(facade.program.completion);
            facade.program.init();
        }
    });
    
    
    facade.car.setupCarView();
}



Car.prototype.loadCarsSlider = function()
{
    var _self = this;
    $.ajax
    ({
        url: credit_root + "/b.php?t=LoadCar",
        type: 'post',
        data: {intName: _self.name},
        dataType: 'json',
        success: _self.onLoadCarsSliderSuccess
    });
}

Car.prototype.onLoadCarsSliderSuccess = function(data)
{
    facade.car.carsSliderItems = [];
    var tmp = '';
    for(var i = 0; i < data.length; i++)
    {
        facade.car.carsSliderItems[i + 1] = {name: data[i].NameAuto};
        
        if(i == 2)
        {
            facade.car.image = data[i].fPic;
            $('#VisualPictureDiv').attr('src', '/userfiles/cAuto/' + data[i].vfPic);
            tmp += '<div id="car_model_selected" class="car_model_selected">';
            tmp += '<div style="background: url(/userfiles/cAuto/' + data[i].fPic + ') bottom center no-repeat; height:168px; width:265px;">';
            tmp += '<div id="car_name_cost" class="car_name_cost">' + data[i].NameAuto + '</div>';
            tmp += '<div id="car_cost" class="car_cost">от<br><font id="cost_p_m" class="cost_p_m">';
            tmp += 'USD' + data[i].CostInteg + '';
            tmp += '</font><br>в месяц</div>';
            tmp += '</div>';
            tmp += '</div>';
        }
        else
        {
            tmp += '<div class="car_model" style="cursor: pointer;" id="slidercar' + (i + 1) + '">';
            tmp += '<img src="/userfiles/cAuto/' + data[i].sPic + '" border="0" valign="top" align="center" vspace="10" hspace="8">';
            tmp += '<br /><div style="text-align:center; width:110px;">';
            tmp += data[i].NameAuto;
            tmp += '</div></div>';
        }
    }
    $('#othermodelbutt').click(facade.car.showCarsSlider);
    facade.page.carsSliderNode.html(tmp);
    
    $('.car_model').click(facade.car.carsSliderSelect);
}

Car.prototype.carsSliderSelect = function()
{
    facade.page.carsSliderContainerNode.fadeOut(400, function() { facade.page.carHeaderContainerNode.fadeIn(400) });
    var model = facade.car.carsSliderItems[$(this).attr('id').substr(9)];
    facade.car = new Car(model);
    facade.car.renderToCalc();
}

Car.prototype.showCarsSlider = function()
{
    facade.page.carHeaderContainerNode.fadeOut(400, function() { facade.page.carsSliderContainerNode.fadeIn(400, function() { new dw_scrollObj('wn', 'lyr1', 't1'); }) });
    $('#LsTerm').hide();
    $('#tips').hide();
}

Car.prototype.renderCompletions = function()
{
    facade.page.carCompletionsContainerNode.empty();
    
    for (var i = 0; i < this.completions.length; i++)
    {
        facade.page.carCompletionsContainerNode.append('<div class="punkt"><input ' + (i == facade.car.startCompletion ? 'checked="checked"' : '') + ' class="compl_check" type="radio" value="' + i + '" name="TypeInteg" />' + this.completions[i].name + '</div>');
    }
}

Car.prototype.changeBackground = function()
{
    var model = facade.car.name;
    if (model != 'Автомобили с пробегом')
    {
        model = model.split(' ').join('_');
        $('body').removeClass().addClass(model);
    }
    else
    {
        $('body').removeClass();
    }
}

Car.prototype.setupCarView = function()
{
    if (this.name == 'Автомобили с пробегом')
    {
        $('#FormCostColor').css('visibility', 'hidden');
        $('#sendmailpage_button').hide();
        
        return true;
    }
    
    $('#FormCostColor').css('visibility', 'visible');
    $('#sendmailpage_button').show();
}