(function($){
	
	/*
		options = {
			src : '', //source select
			dest : '', //destination select
			defaultText : '', //text in a default (primary, no-select) item
			currentLanguage : '', //current application language
			titles : {'lt' : 'title', 'en' : 'titleEn'}, //language specific name variable
			url : '', //ajax request url
			defaultValue : 0
		}
	*/
	$.fn.ajaxSelect = function(options)
	{
		//optimizing. Shouldn't work, if no matching element found
		//alert(options.dest + ": " + $(this).size());
		if($(this).size()==0) return;
		//alert("continueing...");
		
		//define defaults
		options = jQuery.extend({
			"defaultText" : " ",
			"currentLanguage" : "lt",
			"titles" : {"lt" : "title", "en" : "titleEn"},
			"defaultValue" : 0 
		}, options);
		
		if( ! (options.url && options.dest) )
			return;
		
		//first we load all the children
		getSubFields(0);
		
		$(this).change(function(){
			var id = $(this).val();
			getSubFields(id.toString());
		});
		
		function getSubFields(id)
		{
			if(id == "0" || id == 0)
				id = "";

			jQuery.getJSON(
				options.url,
				{k:id},
				function(data){
					var subfield = $(options.dest);
					subfield.empty();
					subfield.append("<option value='"+options.defaultValue+"'>"+options.defaultText+"</option>");
					jQuery.each(data.list, function(i, item){
						var lng = $(options.dest).attr("lang");
						lng = lng ? lng : options.currentLanguage;
						var title = "";
						//var titleName = options.titles[options.currentLanguage]; 
						var titleName = options.titles[lng];
						title = item[titleName];
						subfield.append("<option value='"+item.id+"'>"+title+"</option>");
					});
					subfield.val(0);
				}
			);
		}
	}
	
})(jQuery);