

jQuery(function($) {


	google.load("feeds", "1",{"callback" : initializeBR});
	//initializeBR();

			/**
			 * printf() for Javascript
			 */
			function sprintf() {
                if( sprintf.arguments.length < 2 ) {
                    return;
                }
                var data = sprintf.arguments[ 0 ];
                for( var k=1; k<sprintf.arguments.length; ++k ) {
                    switch( typeof( sprintf.arguments[ k ] ) ){
                        case 'string':
                            data = data.replace( /%s/, sprintf.arguments[ k ] );
                            break;
                        case 'number':
                            data = data.replace( /%d/, sprintf.arguments[ k ] );
                            break;
                        case 'boolean':
                            data = data.replace( /%b/, sprintf.arguments[ k ] ? 'true' : 'false' );
                            break;
                            default:
                           /// function | object | undefined
                        break;
                    }
                }
                return(data);
            }
            if( !String.sprintf ) {
            	String.sprintf = sprintf;
            }


            /**
             * generate text showing the age of the bookmark's latest post
             */
            function getAge(days, hours){
                if (days > 1) {
                    return String.sprintf("vor %d Tagen", days);
                } else if (days==1){
                	return "Gestern ";
                } else if (days< 1 && hours > 1) {
                	return String.sprintf("vor %d Stunden", hours);
                } else if (days< 1 && hours == 1) {
                	return "vor einer Stunde";
                } else if (days < 1 && hours < 1) {
                	return "gerade eben";
                }
            }
            /* add age and other info to bookmark*/
            function addAge(feed, bookmark, anchor, divID, previewtoggle, last_posttitle){
                var $li =$(bookmark),
                 $a =$(anchor),
                 $toggle =$(previewtoggle),
                 $title =$(last_posttitle),
                 now = (new Date()).getTime(),
                 then = (new Date()).getTime(),
                 ageInDays,
                 ageInHours,
                 randomAge,
                 ageMsg=[],
                 $snippet,
                 entry;
                entry = feed.entries[0]
                /*,entry1= feed.entries[1] */;
                try {
                    then = new Date(entry.publishedDate).getTime();
                } catch (dateException) {
                    // do noting
                }
                
                ageInDays =  Math.floor((now-then)/(1000*60*60*24)),
                ageInHours = Math.floor((now-then)%(1000*60*60*24)/3600000);

                try {
                                         $entryTitle =$("<p></p>").html(entry.title);
                                        $a.attr({title: $entryTitle.html()});
                } catch (titleException) {
                    $a.attr({title: ""});
                }
				if (!isNaN(then)){
					// insert age into list-item to allow sorting by age of post
                    $li.attr({age:then});
				} else {
		            /* add "very old" age to bookmarks with no feed-url */
					randomAge = Math.floor(Math.random()*1000001);
					$li.attr({age:randomAge});
				}

                                                return false;
            }
            /* add "very old" age to bookmarks with no feed-url */
            function addZeroAge(zeroAgeBookmark){
                var $zali =$(zeroAgeBookmark),
                randomAge = Math.floor(Math.random()*1000001);
                if ($zali !== null ) {
                    $zali.attr({age:randomAge});
                }
                return false;
            }

            /* add jQuery-oberserver to enable mouse-clicks*/
            function addFeedControl(preview, feed, name){
                    var feedControl = new google.feeds.FeedControl();
                    feedControl.addFeed(feed, name);
                    feedControl.draw($(preview).get(0));
                    return false;
            }

			/*
			 *
			 */
            function feedreading_limit_display(){ 
            	var
                 liArray72 = $("#feedreading_blogroll_72 > li") , liArray73 = $("#feedreading_blogroll_73 > li") , liArray74 = $("#feedreading_blogroll_74 > li") ;	        				for (var i=0; i < liArray72.length; i++) { 
	        					if(i > -1){
	                				$(liArray72[i]).css("display","none");
	        					}
	        				}
	        					        				for (var i=0; i < liArray73.length; i++) { 
	        					if(i > -1){
	                				$(liArray73[i]).css("display","none");
	        					}
	        				}
	        					        				for (var i=0; i < liArray74.length; i++) { 
	        					if(i > -1){
	                				$(liArray74[i]).css("display","none");
	        					}
	        				}
	        								return false;
        	}
        	
            /*
             * Sort the blogroll with tsort()
             */
            function feedreading_automatic_sort() { 			var $allCompleted ,
			            				$hasCompleteAge72=true, isComplete72=false, $liSortArray72 = $("#feedreading_blogroll_72>li") 
          				 ,             				$hasCompleteAge73=true, isComplete73=false, $liSortArray73 = $("#feedreading_blogroll_73>li") 
          				 ,             				$hasCompleteAge74=true, isComplete74=false, $liSortArray74 = $("#feedreading_blogroll_74>li") 
          				;            		for (var i=0; i < $liSortArray72.length; i++) {
						var $age72 = $($liSortArray72[i]).attr("age");
						if ($age72 === null || $age72 == "" || isNaN($age72)) {
							$hasCompleteAge72 = false;
						}
            		}
					if ($hasCompleteAge72 && !isComplete72) {
						$("#feedreading_blogroll_72>li").tsort({order:"desc",attr:"age"});
						isComplete72=true;
					}
          				            		for (var i=0; i < $liSortArray73.length; i++) {
						var $age73 = $($liSortArray73[i]).attr("age");
						if ($age73 === null || $age73 == "" || isNaN($age73)) {
							$hasCompleteAge73 = false;
						}
            		}
					if ($hasCompleteAge73 && !isComplete73) {
						$("#feedreading_blogroll_73>li").tsort({order:"desc",attr:"age"});
						isComplete73=true;
					}
          				            		for (var i=0; i < $liSortArray74.length; i++) {
						var $age74 = $($liSortArray74[i]).attr("age");
						if ($age74 === null || $age74 == "" || isNaN($age74)) {
							$hasCompleteAge74 = false;
						}
            		}
					if ($hasCompleteAge74 && !isComplete74) {
						$("#feedreading_blogroll_74>li").tsort({order:"desc",attr:"age"});
						isComplete74=true;
					}
          								$allCompleted =
									            				$hasCompleteAge72          									 &&             				$hasCompleteAge73          									 &&             				$hasCompleteAge74          				;				
				if ($allCompleted){
				clearInterval(myInterval);
								 feedreading_rolling(); 				}
								return false;
            }

	function feedreading_rolling(){
						var
				         							
						$blogroll_72 = $('#feedreading_blogroll_72'), $blogroll_72_size=$blogroll_72.find('li').size() , $blogroll_72_limit = ($blogroll_72_size>5)? (5): ($blogroll_72_size-1) 
						,	         							
						$blogroll_73 = $('#feedreading_blogroll_73'), $blogroll_73_size=$blogroll_73.find('li').size() , $blogroll_73_limit = ($blogroll_73_size>5)? (5): ($blogroll_73_size-1) 
						,	         							
						$blogroll_74 = $('#feedreading_blogroll_74'), $blogroll_74_size=$blogroll_74.find('li').size() , $blogroll_74_limit = ($blogroll_74_size>5)? (5): ($blogroll_74_size-1) 
									;
			
						
				         							
				if ($blogroll_72_size > 1) {
					$("#feedreading_blogroll_72 > li").css("display","none");
					$blogroll_72.feedReadingBlogrollSpy($blogroll_72_limit,4000);
				}
					         							
				if ($blogroll_73_size > 1) {
					$("#feedreading_blogroll_73 > li").css("display","none");
					$blogroll_73.feedReadingBlogrollSpy($blogroll_73_limit,4000);
				}
					         							
				if ($blogroll_74_size > 1) {
					$("#feedreading_blogroll_74 > li").css("display","none");
					$blogroll_74.feedReadingBlogrollSpy($blogroll_74_limit,4000);
				}
						return false;
	}

            /*
             * add observer to blogroll()
             */
	function feedreading_category_observer() {
	    		$("ul.feedreading_blogroll_bookmarklist").bind("mouseenter",function(event){
			var $eventTarget =$(event.target);
			$eventTarget.parents(".feedreading_blogroll_bookmarklist").addClass("mouseover");
		});
		$("ul.feedreading_blogroll_bookmarklist").bind("mouseleave",function(event){
			var $eventTarget =$(event.target);
			$eventTarget.parents(".feedreading_blogroll_bookmarklist").removeClass("mouseover");
		});
		return false;
	}
			
      function initializeBR() {                       	addZeroAge("#feedreading_bookmark_39");
                                                                	addZeroAge("#feedreading_bookmark_40");
                                                                	addZeroAge("#feedreading_bookmark_41");
                                                                	addZeroAge("#feedreading_bookmark_42");
                                                                	addZeroAge("#feedreading_bookmark_43");
                                                                	addZeroAge("#feedreading_bookmark_44");
                                                                	addZeroAge("#feedreading_bookmark_45");
                                                                	addZeroAge("#feedreading_bookmark_46");
                                                                	addZeroAge("#feedreading_bookmark_47");
                                                                	addZeroAge("#feedreading_bookmark_48");
                                                                	addZeroAge("#feedreading_bookmark_49");
                                                                	addZeroAge("#feedreading_bookmark_50");
                                                                	addZeroAge("#feedreading_bookmark_51");
                                                                	addZeroAge("#feedreading_bookmark_52");
                                                                	addZeroAge("#feedreading_bookmark_53");
                                                                	addZeroAge("#feedreading_bookmark_54");
                                                                	addZeroAge("#feedreading_bookmark_55");
                                                                	addZeroAge("#feedreading_bookmark_56");
                                                                	addZeroAge("#feedreading_bookmark_57");
                                                                	addZeroAge("#feedreading_bookmark_58");
                                                                	addZeroAge("#feedreading_bookmark_59");
                                                                	addZeroAge("#feedreading_bookmark_60");
                                                                	addZeroAge("#feedreading_bookmark_61");
                                                                	addZeroAge("#feedreading_bookmark_62");
                                                                	addZeroAge("#feedreading_bookmark_65");
                                                                	addZeroAge("#feedreading_bookmark_66");
                                                                	addZeroAge("#feedreading_bookmark_68");
                                                                	addZeroAge("#feedreading_bookmark_69");
                                          
																												 feedreading_rolling(); 				feedreading_category_observer();
				return false;
                }


      $.fn.feedReadingBlogrollSpy = function (limit, interval) {
    	    limit = limit || 4;
    	    interval = interval || 4000;

    	    return this.each(function () {
    	        // 1. setup
    	            // capture a cache of all the list items
    	            // chomp the list down to limit li elements
    	        var $list = $(this),
    	            items = [], // uninitialised
    	            currentItem = limit,
    	            total = 0, // initialise later on
    	            height = $list.find('li:first').height();

    	        // capture the cache
    	        $list.find('li').each(function () {
    	            //items.push('<li>' + $(this).html() + '</li>');
    	            items.push($(this));
    	        });
    	        /*for (var i=0; i < li_items.length; i++){
    	            //items.push('<li>' + $(this).html() + '</li>');
    	            items.push($(this));
    	        } */

    	        total = items.length;

    	        $list.wrap('<div class="spyWrapper" />').parent().css({ height : height * (limit + 2) });

    	        $list.find('li').filter(':gt(' + (limit - 1) + ')').remove();

    	        // 2. effect
    	        function spy() {
			if(!$list.hasClass("mouseover")){
			    // insert a new item with opacity and height of zero
			    var $insert = $(items[currentItem]).css({
				height : 0,
				opacity : 0,
				display : 'none'
			    }).prependTo($list);

			    // fade the LAST item out
			    $list.find('li:last').animate({ opacity : 0}, 1000, function () {
				// increase the height of the NEW first item
				$insert.animate({ height : height }, 1000).animate({ opacity : 1 }, 1000);

				// AND at the same time - decrease the height of the LAST item
				// $(this).animate({ height : 0 }, 1000, function () {
				    // finally fade the first item in (and we can remove the last)
				    $(this).remove();
				// });
			    });

			    currentItem++;
			    if (currentItem >= total) {
				currentItem = 0;
			    }
			}
			setTimeout(spy, interval);
    	        }

    	        spy();
    	    });
    	};
});
            
                    