diff --git a/js/shs.js b/js/shs.js
index 468f099..bf71d90 100644
--- a/js/shs.js
+++ b/js/shs.js
@@ -248,10 +248,16 @@
       },
       complete: function(xhr, status) {
         // Remove container.
-        $container.remove();
-        // Display triggering element.
-        $triggering_element.fadeIn();
-        $triggering_element.css('display','inline-block');
+        $container.remove();		
+
+		// Display triggering element.
+		//$triggering_element.fadeIn();
+		//$triggering_element.css('display','inline-block');			
+
+		$triggering_element.trigger('chosen:updated');
+		$('#' + $triggering_element.attr('id').replace(/-/g, '_')  + '_chosen').show();
+
+
       }
     });
   }
@@ -274,12 +280,12 @@
       if (Drupal.settings.chosen) {
         // Remove element created by chosen.
         var elem_id = $(this).attr('id');
-        $('#' + elem_id.replace(/-/g, '_') + '_chzn').remove();
+        $('#' + elem_id.replace(/-/g, '_') + '_chosen').remove();
       }
       // Remove element.
       $(this).remove();
     });
-    //$triggering_element.nextAll('.chzn-container').remove();
+    //$triggering_element.nextAll('.chosen-container').remove();
     $triggering_element.nextAll('.shs-term-add-new-wrapper').remove();
     // Create next level (if the value is != 0).
     if ($triggering_element.val() == '_add_new_') {
@@ -288,7 +294,8 @@
       if (Drupal.settings.chosen) {
         // Remove element created by chosen.
         var elem_id = $triggering_element.attr('id');
-        $('#' + elem_id.replace(/-/g, '_') + '_chzn').remove();
+        //$('#' + elem_id.replace(/-/g, '_') + '_chosen').remove();
+		$('#' + elem_id.replace(/-/g, '_') + '_chosen').hide();
       }
       // Create new container with textfield and buttons ("cancel", "save").
       $container = $('<div>')
@@ -318,6 +325,10 @@
           $container.remove();
           // Reset value of triggering element.
           $triggering_element.val(settings.settings.any_value);
+		  
+		  $triggering_element.trigger('chosen:updated');
+		  var chosen_element = "#" + $triggering_element.attr('id').replace(/-/g, "_") + "_chosen";
+		  $(chosen_element).show();
 
           if (!elementConvertToChosen($triggering_element, settings)) {
             // Display triggering element.
@@ -342,7 +353,9 @@
           // Create a term object.
           var term = {
             vid: settings.vid,
-            parent: (level == 1) ? 0 : ($triggering_element.prev('select').val() || 0),
+            //parent: (level == 1) ? 0 : ($triggering_element.prev('select').val() || 0),
+			//prev() doesn't work properly when chosen is being used			
+			parent: (level == 1) ? 0 : ($triggering_element.siblings('select').last().val() || 0),			
             name: termName
           };
           if (termName.length > 0) {
@@ -434,10 +447,20 @@
     $field_orig.val(settings.any_value);
     // Set original field value.
     if ($triggering_element.val() === settings.any_value || $triggering_element.val() == '_add_new_') {
+	  /*	
       if ($triggering_element.prev('select').length) {
         // Use value from parent level.
         $field_orig.val($triggering_element.prev('select').val());
       }
+	  */
+	  
+	  //prev() doesn't work properly when chosen is being used
+      if ($triggering_element.siblings('select').last().length) {
+        // Use value from parent level.
+        $field_orig.val($triggering_element.siblings('select').last().val());
+		//console.log($field_orig.val());
+      }	  
+	  
     }
     else {
       var new_val = $triggering_element.val();
@@ -485,7 +508,7 @@
    */
   elementConvertToChosen = function($element, settings) {
     if (Drupal.settings.chosen) {
-      $element.removeClass('chzn-done');
+      //$element.removeClass('chosen-done');
       var minWidth = Drupal.settings.chosen.minimum_width;
       // Define options for chosen.
       var options = {};
@@ -499,10 +522,16 @@
       var selector = Drupal.settings.chosen.selector.replace(/:visible/, '');
 
       if ((settings.settings.use_chosen == 'always') || ((settings.settings.use_chosen == 'chosen') && ($element.is(selector) && $element.find('option').size() >= Drupal.settings.chosen.minimum))) {
-        $element.css({
+        /*
+		$element.css({
           width : ($element.width() < minWidth) ? minWidth : $element.width()
         }).chosen(options);
-        return $element.hasClass('chzn-done');
+        return $element.hasClass('chosen-done');
+		*/
+				
+        options.width = (($element.width() < minWidth) ? minWidth : $element.width()) + 'px';
+        $element.chosen(options);
+		return true;		
       }
     }
     return false;
