// JavaScript Document

jQuery.fn.customBox = function( target, url, settings ) 
{
  return this.each( function()
  {
	$(this).change( function( ) 
	{
		settings = jQuery.extend(
		{
			after : null,
			before : null,
			usePost : false,
			parameters : { '_id' :  $(this).attr('id'), '_name' : $(this).attr('name') }
        } , settings);
		settings.parameters._color =  $('#colorBox').val();
		settings.parameters._type =  $('#typeBox').val();
		settings.parameters._size =  $('#sizeBox').val();		

		if ( settings.before != null ){
			settings.before( target );
		}

  		ajaxCallback = function ( data, textStatus ) 
		{			
			data = eval(data);//get json array		
			
			$('#colorBox').html("");//clear old options
			$('#colorBox').get(0).add(new Option("-- All Colors --",0,true,false), document.all ? 0 : null);
			
			$('#typeBox').html("");//clear old options
			$('#typeBox').get(0).add(new Option("-- All Types --",0,true,false), document.all ? 0 : null);
			
			$('#sizeBox').html("");//clear old options			
			$('#sizeBox').get(0).add(new Option("-- All Sizes --",0,true,false), document.all ? 0 : null);
			
			for (i = 0; i < data[0].length; i++)//iterate over all options
			{
			  for ( key in data[0][i] )//get key => value
			  {	
					$('#colorBox').get(0).add(new Option(data[0][i][key],[key],false, (parseInt(settings.parameters._color) == parseInt([key])) ? true : false ), document.all ? i : null);
               }
			}
			
			for (i = 0; i < data[1].length; i++)//iterate over all options
			{
			  for ( key in data[1][i] )//get key => value
			  {	
					$('#typeBox').get(0).add(new Option(data[1][i][key],[key],false, (parseInt(settings.parameters._type) == parseInt([key])) ? true : false ), document.all ? i : null);
               }
			}
			
			for (i = 0; i < data[2].length; i++)//iterate over all options
			{
			  for ( key in data[2][i] )//get key => value
			  {	
					$('#sizeBox').get(0).add(new Option(data[2][i][key],[key],false, (parseInt(settings.parameters._size) == parseInt([key])) ? true : false ), document.all ? i : null);
               }
			}

		if (settings.after != null  ) 
		{
			settings.after( target );
		}
	};

	if ( settings.usePost == true )
	{
		$.post( url, settings.parameters, ajaxCallback );
	} else
	{
		$.get( url, settings.parameters, ajaxCallback );
	}

	$("option:first", target).attr( "selected", "selected" );//select first option
	});
  });
};