(function($)
{$.fn.fieldChain=function(options)
{var defaults={field_id:"id",field_value:"value",data:{}};var settings=$.extend({},defaults,options);return this.each(function()
{var $$=$(this);$$.change(function()
{var changed_id="#"+this.id;var data=null;if(typeof settings.data=='string')
{data=settings.data+'&'+this.name+'='+$$.val();}else if(typeof settings.data=='object'){data=$.extend({},settings.data);data[this.name]=$$.val();}
$.ajax({url:settings.url,data:data,type:(settings.type||'get'),dataType:'json',contentType:"application/json; charset=utf-8",beforeSend:function(x)
{if(x&&x.overrideMimeType)
x.overrideMimeType("application/json; charset=utf-8");},cache:false,success:function(j)
{$.each(settings.fields,function()
{var s=this;if(s!=changed_id)
{if($("select"+s).length)
{var d=j[s];if(typeof d=='object')
{prev_selected=$('select'+s+' option:selected').attr('value');$("select"+s).empty();var options=[],i=0,o=null;for(i=0;i<d.length;i++)
{o=document.createElement("OPTION");o.value=typeof d[i]=='object'?d[i][settings.field_id]:d[i];o.text=typeof d[i]=='object'?d[i][settings.field_value]:d[i];$("select"+s).get(0).options[i]=o;}
$('select'+s+' option:[value='+prev_selected+']').attr('selected','selected');}}}});},error:function(xhr,desc,er){}});});});};})(jQuery);
