var cur_year;
var cur_manufacturer;
var cur_model;
var cur_engine;
var incatalog = false;

function imgLoadingData(st, loading_stage) {
    //$('loadSta').innerHTML = loading_stage;
    $('loadInd').style.display = st;
}
function setInCatalog() {
    incatalog = true;
}

function fillSelect(json, selectName, selected_val) {
    $(selectName).options.length = 0;
    any_selected = false;
    for (i=0; i<json.length; i++)
    {
        $(selectName).options[i] = new Option(json[i].name, json[i].id);
        if (json[i].id == selected_val) {
            $(selectName).options[i].selected = true;
            any_selected = true;
        }
    }
    
    if (!any_selected) {
        $(selectName).options[0].selected = true;
        return json[0].id;
    }
    
    return selected_val;
}

function somethingWrong(transport) {
    //alert(transport.responseText);
    alert('Error while fetching data.');
    imgLoadingData('none');
}

function getManufacturers() {
    cur_year = $F('year');
    
    imgLoadingData('', 'Loading Manufacturer');
    new Ajax.Request('app/sources/ajax/manufacturer.php', {
        method:'get',
        parameters:{year:cur_year},
        onSuccess:fillManufacturers,
        onFailure:somethingWrong
    });
}
function getModels() {
    cur_year = $F('year');
    cur_manufacturer = $F('manufacturer');
    
    imgLoadingData('', 'Loading Model range');
    new Ajax.Request('app/sources/ajax/model.php', {
        method:'get',
        parameters:{year:cur_year, manufacturer:cur_manufacturer},
        onSuccess:fillModels,
        onFailure:somethingWrong
    });
}
function getEngines() {
    cur_year = $F('year');
    cur_model = $F('model');
    
    imgLoadingData('', 'Loading Engine');
    new Ajax.Request('app/sources/ajax/engine.php', {
        method:'get',
        parameters:{year:cur_year, model:cur_model},
        onSuccess:fillEngines,
        onFailure:somethingWrong
    });
}
function getEngineCodes() {
    cur_year = $F('year');
    cur_model = $F('model');
    cur_engine = $F('engine');
    imgLoadingData('' ,'Loading Engine code');
    new Ajax.Request('app/sources/ajax/engine_code.php', {
        method:'get',
        parameters:{year:cur_year, model:cur_model, engine:cur_engine},
        onSuccess:fillEngineCodes,
        onFailure:somethingWrong
    });
}

function fillManufacturers(transport) {
    var json = transport.responseText.evalJSON();
    cur_manufacturer = fillSelect(json, 'manufacturer', cur_manufacturer);
    getModels();
}
function fillModels(transport) {
    var json = transport.responseText.evalJSON();
    cur_model = fillSelect(json, 'model', cur_model);
    getEngines();
}
function fillEngines(transport) {
    var json = transport.responseText.evalJSON();
    cur_engine = fillSelect(json, 'engine', cur_engine);
    getEngineCodes();
}

function fillEngineCodes(transport) {
    if (!incatalog) {
        imgLoadingData('none');
        return;
    }
    var json = transport.responseText.evalJSON();
    fillEngineCodes_(json);
}
function fillEngineCodes_(json) {
    out  = '<table width="100%" cellpadding="4" cellspacing="1" border="0" bgcolor="#2e2e2e">'
    out += '  <tr class="table_hat">';
    out += '    <td width="80%" class="acenter">Year</td>';
    out += '    <td width="20%" class="acenter">View</td>';
    out += '  </tr>';
    
    for (i=0; i<json.length; i++)
    {
        out += '<tr bgcolor="#000000">';
        out += '  <td class="acenter">' + json[i].year + '&nbsp;</td>';
        out += '  <td class="acenter"><a href="index.php?articles&amp;engine_id=' + json[i].id + '&amp;year=' + cur_year + '">View</a></td>';
        out += '</tr>';
    }
    out += '</table>';
    
    $('engineCodeDiv').innerHTML = out;
    imgLoadingData('none');
}

