function dict()
{
	this._dict = new Object();
	this._keys = new Array();
	
	this.length = function()
	{
		return this._keys.length;
	}
	
	this.set = function( k, v )
	{
		var vv = this._dict[ k ];
		if (vv == null) {
			this._dict[ k ] = v;
			this._keys.push( k );
		} else {
			this._dict[ k ] = v;
		}
	}
	
	this.get = function( k )
	{
		return this._dict[ k ];
	}
	
	this.keys = function()
	{
		return this._keys.slice( 0, this._keys.length );
	}
}

function build_option( value, title )
{
	var opt = document.createElement( "option" );
	opt.value = value;
	opt.appendChild( document.createTextNode( title ));
	return opt;
}

function build_optgroup( label, items )
{
	var optgroup = document.createElement("optgroup");
	optgroup.label = label;
	for( var i=0; i<items.length; i++) {
		optgroup.appendChild( build_option( items[i], items[i] ) );
	}
	return optgroup;
}

function populate_menus()
{
	var model_menu = document.forms["formWarranty"].elements["modelname"];
	
	var opt = document.createElement( "option" );
	model_menu.appendChild( build_option( "Select...", "Select..." ) );
	
	var keys = groups.keys()
	for( var i=0; i<keys.length; i++ ) {
		model_menu.appendChild( build_optgroup( keys[i], groups.get(keys[i]) ) );
	}
	
	model_menu.onchange = update_menus;
	update_menus();
}

function update_menus()
{
	var f = document.forms["formWarranty"];
	
	var model_menu = f.elements["modelname"];
	var size_menu = f.elements["size"];
	var color_menu = f.elements["color"];
	
	var k = model_menu.options[model_menu.selectedIndex].value;
	var s = sizes.get(k);
	var c = colors.get(k);
	
	size_menu.length = 0;
	for ( var i=0; i<s.length; i++) {
		size_menu.options[i] = new Option( s[i], s[i] );
	}

	color_menu.length = 0;
	for ( var i=0; i<c.length; i++) {
		color_menu.options[i] = new Option( c[i], c[i] );
	}
}

function show_custom_fields()
{
	var f = document.forms["formWarranty"];
	
	var model_menu = f.elements["modelname"];
	var size_menu = f.elements["size"];
	var color_menu = f.elements["color"];
		
	var cutom_modelname = f.elements["custom_modelname"];
	var custom_size = f.elements["custom_size"];
	var custom_color = f.elements["custom_color"];
	
	if (f.elements['show_custom'].checked) {
		model_menu.style.display = "none";
		size_menu.style.display = "none";
		color_menu.style.display = "none";
		
		cutom_modelname.style.display = "";
		custom_size.style.display = "";
		custom_color.style.display = "";
	}
	else {
		model_menu.style.display = "";
		size_menu.style.display = "";
		color_menu.style.display = "";
		
		cutom_modelname.style.display = "none";
		custom_size.style.display = "none";
		custom_color.style.display = "none";
	}
}

