(function($) {
	$.fn.newsSlide = function(options){

		// default configuration properties
		var defaults = {
		};

		var options = $.extend(defaults, options);

		return this.each(function() {
			var mainObj = $(this);
			var s = $("dl", mainObj).length;
			var childObjects = $("dl", mainObj);
			var startTimeOut = false;
			var animateTimeOut = false;
            		var currentObject = '';
            		var currentProcent = 0;


            for(var i=0; i<s; i++){
                selectedObj = $(childObjects[i]);
                var ddObject = $('dd', selectedObj);
                var dlObject = $('dd', selectedObj);
                var aObject = $('dt > a', selectedObj);
		var imgObj = $('dd img', selectedObj);
		ddObject.bind('load', function(){
		        recalculate(ddObject); 
		});

                selectedObj[0].ddObject = ddObject;
                selectedObj[0].aObject = aObject;
               	selectedObj[0].itemHeight = ddObject.height();
                if(i!=0){
                	ddObject.css('overflow-y', 'hidden');
                	ddObject.css('height', '0px');
                    	aObject.bind('mouseover', function(){
                    		animate($($($(this).parent()).parent()));
	               	});
                	selectedObj.css('z-index', (i*10));
                	ddObject.show();
               }else{
                	$('dd > a.comments', selectedObj).show();
                }
             }
            currentObject = $('dl[class="selected"]', mainObj);

	    function recalculate(obj){
				obj[0].itemHeight = obj.height();
			}

            function animate(obj){
                if(!animateTimeOut){
                    clearTimeout(startTimeOut);
                    obj[0].aObject.bind('mouseout',
                        function (){
                            clearTimeout(startTimeOut);
                        }
                    );
                    startTimeOut = setTimeout(function(){
                        currentObject.removeClass('selected');
                        obj.addClass('selected');
                        _realAnimate(obj, currentObject);
                    }, 200);
                }
            }
            function _realAnimate(newObject, oldObject){

                    if((oldObject[0].ddObject.height()-20)>0){
                        oldObject[0].ddObject.height(oldObject[0].ddObject.height()-20);
                    }else{
                        oldObject[0].ddObject.height(0);
                    }

                    if( (newObject[0].ddObject.height()+20)<newObject[0].itemHeight){
                        newObject[0].ddObject.height(newObject[0].ddObject.height()+20);
                    }else{
                        newObject[0].ddObject.height(newObject[0].itemHeight);
                    }

                    if( newObject[0].ddObject.height()<newObject[0].itemHeight||
                        oldObject[0].ddObject.height()>0){
                        animateTimeOut = setTimeout(
                            function(){
                                _realAnimate(newObject, oldObject);
                            },
                        30);
                    }else{
                        newObject[0].aObject.unbind('mouseover');
                        newObject[0].aObject.unbind('mouseout');
                        currentObject[0].aObject.bind('mouseover',
                                function (){
                                    animate($($($(this).parent()).parent()));
                                }
                        );
                        currentObject = newObject;
                        animateTimeOut = false;
                    }
            }
		});

	};

})(jQuery);

