// JavaScript Document

var ajaxObj = new XMLHTTP("/common/javascript/mybic/mybic_server.php");
//ajaxObj.debug=1;

var number_u = new Array(), number_d = new Array();

for (var i=0; i < 4; i++ )
{
	number_u[i] = new Image();
	number_u[i].src = "/common/images/content/products/find_cap/step"+i+"-u.gif";
	
	number_d[i] = new Image();
	number_d[i].src = "/common/images/content/products/find_cap/step"+i+"-d.gif";
}

// Data driven to avoid duplication
var getFuncs = new Array( "getMakes", "getModels", "getYears", "getSubModels" );
var getFuncParams = new Array( new Array(), new Array(), new Array(), new Array( 1, 2 ) );
// Constructors fail for single-element arrays...
getFuncParams[1][0] = 0;
getFuncParams[2][0] = 1;

// Current select box
var cur = 0;
var selectBox = null;

////////////////////////////////////////////////////////////
function makeChange() 		{ cur=1;enableNextBox(); }
function modelChange() 		{ cur=2;enableNextBox(); }
function yearChange() 		{ cur=3;enableNextBox(); }
function subModelChange() { cur=4;updateArrow(); }

////////////////////////////////////////////////////////////
function enableNextBox()
{
	for ( var i=cur+1; i < 4; i++ )
	{
		selectBox[i].disabled = true;
		selectBox[i].options.length = 0;
	}

	actionStr = "action="+getFuncs[cur];
		
	for ( i=0; i < getFuncParams[cur].length; i++ )
	{
		selBox = selectBox[getFuncParams[cur][i]];
		
		actionStr += "&p"+i+"="
			+encodeURIComponent( selBox.options[selBox.selectedIndex].value );
	}
		
	selectBox[cur].options[0] = new Option( "Loading...", 0 );

	ajaxObj.method="GET";
	ajaxObj.call( actionStr, response );
}

////////////////////////////////////////////////////////////
function updateArrow()
{
	for ( var i=0; i < 4; i++ )
	{
		document.getElementById( 'arrow'+i ).style.display = ( i == cur ? 'block' : 'none' );		
		document['number'+i].src = ( i <= cur ? number_u[i].src : number_d[i].src );
	}
	
	// Remove null option of last selection
	if ( cur > 0 && selectBox[cur-1].options[0].value == "" )
		selectBox[cur-1].options[0] = null;
}

////////////////////////////////////////////////////////////
function response( resp )
{	
	if ( !resp )
	{
		if (resp.errors)
			alert( "Error: "+ resp.error );
		return;
	}	

	updateArrow();
	items = selectBox[cur].options;
	items.length = 0;
	
	if ( resp.items.length == 0 )
	{
		selectBox[cur].disabled = true;
		items[0] = new Option( "None", 0 );
		// Point back to the previous select
		cur--;
		updateArrow();
		return;
	}

	selectBox[cur].disabled = false;	
	items[0] = new Option( );
	
	for ( i=0; i < resp.items.length; i++ )
		items[i+1] = new Option(resp.items[i].name, resp.items[i].value);
}
