// create a javascript hash to hold or callback methods
var hwCallback =
{
    getCountries: function(result)
    {
        clear_dropdown("country");
        fill_dropdown("country", result);    
    },
    getMarks:function(result)
    {
        clear_dropdown("mark");
        fill_dropdown("mark", result);
    },
    getModels:function(result)
    {
        clear_dropdown("model");
        fill_dropdown("model", result);
    },
    getYears:function(result)
    {
        clear_dropdown("year");
        fill_dropdown("year", result);
    },
    getCubics:function(result)
    {
        clear_dropdown("cubics");
        fill_dropdown("cubics", result);
    },
    getCategoryData:function(result)
    {
        theimg.src = "img/empty.gif";
        theimg.title = "empty";
        theimg.alt = "empty"
        fill_text_data(result);   
    },
    getPartData:function(result)
    {
        fill_text_data(result[0]);        
        fill_picture_data(result[1]);
    }
}
var carID = 0;
var remoteHW = new Kasto(hwCallback);
var carmodel_orig = '';

remoteHW.dispatcher.timeout = 400000;  
    
function init_page()
{
    disable_dropdowns();
    remoteHW.getCountries();
    setDropdownChangeHandler("country", countryChange);
    setDropdownChangeHandler("mark", markChange);
    setDropdownChangeHandler("model", modelChange);
    setDropdownChangeHandler("year", yearChange);
//    setDropdownChangeHandler("cubics", cubicsChange);
}
//Data Content Managers
function fill_text_data(data)
{
    thediv = document.getElementById("text_data");    
    thediv.innerHTML = data;
}
function fill_picture_data(data)
{
    theimg = document.getElementById("partPic");
    theimg.src = data["tmb"];
    //theimg.src = data["path"];    
    theimg.title = data["name"];
    theimg.alt = data["name"];
}
function flashClick(categoryID)
{    
    if (carID == 0)
    {
        alert("Моля използвайте падащите менюта за да изберете колата за която търсите част.");    
    }
    else
    {
	window.carmodel_orig = document.getElementById("carmodel").innerHTML;

	document.getElementById("carmodel").innerHTML = '<embed quality="high" width="742" height="423" src="car.swf"></embed>';
	//document.getElementById("carmodel").innerHTML = '<object style="padding: 0cm;"><embed quality="high" width="742" height="423" src="car_anims/' + categoryID + '.swf"></embed></object>';
	remoteHW.getCategoryData(carID, categoryID);
    }
    
}
//Menu access modifiers
function disable_dropdowns()
{
        disable_dropdown('mark');
        disable_dropdown('model');
        disable_dropdown('year');
//        disable_dropdown('cubics');        
}
function enable_dropdown(id)
{
    dropdown = document.getElementById(id);    
    dropdown.disabled = false;    
}
function disable_dropdown(id)
{
    document.getElementById(id).disabled = true;
    fill_text_data("");
    theimg = document.getElementById("partPic");
    theimg.src = "img/empty.gif";
    theimg.title = "empty";
    theimg.alt = "empty";
}

//Change Handlers
function countryChange()
{
    if (carID)
	setcarmodel();

    clear_dropdown("model");
    clear_dropdown("year");
//    clear_dropdown("cubics");
    disable_dropdown("model");
    disable_dropdown("year");
//    disable_dropdown("cubics");
    carID = 0;
    hide_flash();
    cmenu = document.getElementById("country");
    cvalue = cmenu.options[cmenu.selectedIndex].value;    
    document.getElementById("flag").src = "img/flags/" + cvalue + ".jpg";
    ctext = document.getElementById('countryName');
    ctext.innerHTML = "";
    if (cvalue == 1)    
        ctext.innerHTML = "САЩ";
    else if (cvalue == 2)     
        ctext.innerHTML = "Германия";
    else if (cvalue == 3)     
        ctext.innerHTML = "Англия";
    else if (cvalue == 4)     
        ctext.innerHTML = "Франция"; 
    else if (cvalue == 5)         
        ctext.innerHTML = "Япония"; 
    else if (cvalue == 6)     
        ctext.innerHTML = "Италия"; 
    else if (cvalue == 7)     
        ctext.innerHTML = "Испания";
    else
        ctext.innerHTML = "";
    if (cvalue == 0)
    {
        clear_dropdown("mark");
        disable_dropdown("mark");
    }
    else
    {    
        enable_dropdown("mark");        
        remoteHW.getMarks(cvalue);
    }
    
}
function markChange()
{
    if (carID)
	setcarmodel();

    clear_dropdown("year");
//    clear_dropdown("cubics");
    disable_dropdown("year");
//    disable_dropdown("cubics");
    carID = 0;
    hide_flash();
    mamenu = document.getElementById("mark");
    mavalue = mamenu.options[mamenu.selectedIndex].value;
    if (mavalue == 0)
    {
        clear_dropdown("model");
        disable_dropdown("model");
    }
    else
    {
        enable_dropdown("model");
        remoteHW.getModels(mavalue);    
    }
}
function modelChange()
{
//    if (carID)
//	setcarmodel();

//    clear_dropdown("cubics");
//    disable_dropdown("cubics");    
    carID = 0;
    hide_flash();
    momenu = document.getElementById("model");
    movalue = momenu.options[momenu.selectedIndex].value;
    if (movalue == 0)
    {
        clear_dropdown("year");
        disable_dropdown("year");    
    }
    else
    {
        remoteHW.getYears(movalue); 
        enable_dropdown("year");                             
    }
}
function yearChange()
{
//    if (carID)
//	setcarmodel();

    carID = 0;
    hide_flash();

    mmenu = document.getElementById("mark");
    mvalue = mmenu.options[mmenu.selectedIndex].value;
    momenu = document.getElementById("model");
    movalue = momenu.options[momenu.selectedIndex].value;
    ymenu = document.getElementById("year");
    yvalue = ymenu.options[ymenu.selectedIndex].value;
/*
    if (yvalue == 0)
    {   
        clear_dropdown("cubics");
        disable_dropdown("cubics");                    
    }
    else
    {
        enable_dropdown("cubics");
        remoteHW.getCubics(movalue, yvalue) 
    }
*/

	new Ajax.Request('/getcarid.php',
	{
		method:'get',
		parameters: {year: yvalue, modelid: movalue},
		onSuccess: function(transport) {
			var response = transport.responseText || "";
			if (transport.responseText) {
				window.carID = transport.responseText;
				show_flash();
			}
		},
		onFailure: function () {
			alert("Problem retrieving car data..");
		}
	});

   carID = window.carID;
}

/*
function cubicsChange()
{
    cubmenu = document.getElementById("cubics");
    carID = cubmenu.options[cubmenu.selectedIndex].value;
    if (carID != 0)
    {
        show_flash();
    }
}
*/

function setDropdownChangeHandler(menu, handler)
{
    select = document.getElementById(menu);
    select.onchange = handler;
    select.onclick = handler;     
}

function hide_flash()
{
    carimg = document.getElementById("dis_car");
    carimg.src = "img/dis_car.jpg";
	carimg.style.display = 'block';
}

function show_flash()
{
    carimg = document.getElementById("dis_car");
    carimg.src = "img/empty.gif";
	carimg.style.display = 'none';
}

//Menu Content Managers
function fill_dropdown(menu, data)
{
    select = document.getElementById(menu);
    var i = 1;
    var opt = new Option("Изберете от тук: ", "0");
    select.options[0] = opt;

    for (var key in data)
    {    
//	if (key % 1 != 0 && !(key.indexOf('+') == 4 || $key.indexOf('-') == 4)) /* key does not hold an integer value. Related to a bug - something filled the <select>s with garbage.. */
//		continue;

        /* azo */
        var azo_re = /^([a-z]|[A-Z]|[0-9]| |\+|\-)*$/;
        if (data[key].substr(0, 9) == "function ")
                continue;
        if (menu == 'year' && !data[key].match(azo_re))
                continue;

        var opt = new Option(data[key], key);
        select.options[i++] = opt;
    }      
}
function clear_dropdown(menu)
{
    select = document.getElementById(menu);
    for (var key = 0; key < select.options.length; key++)
    {
        select.options[key] = null;
        select.remove(key);
    }
}

function setcarmodel()
{
	document.getElementById('carmodel').innerHTML = window.carmodel_orig;
}
