(function($){

   $.fn.linkedSelect = function(url,destination,params) {

      var params = $.extend({

         firstOption : 'Please Select',

         loadingText : 'Loading...',
         
         parentVal: false

      },params);

      var $dest = $(destination);

      return this.each(function(){

         $(this).bind('change', function() {

            var $$ = (params.parentVal==false)? $(this) : $(params.parentVal);

            $dest.attr('disabled','false')
                 .html('<option value="">' +params.loadingText+ '</option>')
                 .ajaxStart(function(){

                    $$.show();

            });

            $.getJSON(url,{str: $$.val() }, function(j)
            {
            	$($dest).html('');
				if (j.length > 0) {
				
					$("<option></option>").attr('value','').html(params.firstOption).appendTo($dest);
				  //var $options = '<option value="">' +params.firstOption+ '</option>';
				
				  for (var i = 0; i < j.length; i++) {
				
				  	$("<option></option>").attr('value',j[i].optionValue).html(j[i].optionDisplay).appendTo($dest);
				    // $options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
				
				  }
				
				}
				else
				{
					$("<option></option>")
						.attr('value','')
						.html("None in Database")
						.appendTo($dest);
				}
				
				$dest.removeAttr('disabled')
					.find('option:first')
					.attr('selected', 'selected');
               
            }); // end getJSON

         });  // end change

      }); // end return each

   };  // end function

})(jQuery);