﻿
(function($){
    $.fn.expandingElement = function(options){
        var defaults = {
           contractText: "Contract",
           expandText: "Expand",
           height: 150           
        };      
        
        var options = $.extend(defaults, options);
      
        
        return this.each(function(){                        
           var obj = $(this);
         
         
           var parent = $(obj.parent().get(0));
           obj.before("<span class='expandContainer' style='overflow:hidden'></span>");
           var container = $(parent.children(".expandContainer").get(0));
         
           obj.appendTo(container);
           
           obj.css("display","block");
         
           obj.css("overflow-y","hidden");
           
           
           var link = $("<div style='clear:both'><a class='expandLink' href='#'>"+options.expandText+"</a></div>");
           link.appendTo(container);
           var originalHeight = parent.height();           
           
           link.click(function(){
                var time = originalHeight/options.height*400;
           
                if(obj.height() == options.height){
                    obj.animate({
                        "height": originalHeight                    
                    }, time, "linear", function(){                    
                        obj.css("overflow-y","visible");
                        obj.css("display","block");
                    });                
                    link.val(options.contractText);                        
                }
                else{
                    obj.animate({
                        "height":options.height                    
                    },time, "linear", function(){
                        obj.css("overflow-y","hidden");
                        obj.css("display","block");
                    });
                    link.val(options.expandText);                                            
                }
                return false;
                                
           });
           
          link.click();
           
        });//this.each
        
        
         
     }//function
})(jQuery);

