
			/**
			 * 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){
            	var ageMsg = "";
                if (days > 1) {
                    ageMsg = String.sprintf("%d days ago", days);
                } else if (days==1){
                    ageMsg = "yesterday ";
                } else if (days< 1 && hours > 1) {
                    ageMsg = String.sprintf("%d hrs ago", hours);
                } else if (days< 1 && hours == 1) {
                    ageMsg = "in the last hour";
                } else if (days < 1 && hours < 1) {
                    ageMsg="just recently";
                }
                return ageMsg;
            }
            /* add jQuery-oberserver to enable mouse-clicks*/
            function addObserver(link, wrapper, preview, feed, name){
                jQuery(link).click(function(){
                    jQuery(wrapper).toggle("slow");
                    var feedControl = new google.feeds.FeedControl();
                    feedControl.addFeed(feed, name);
                    feedControl.draw(jQuery(preview).get(0));
                });
                jQuery(wrapper).click(function(){
                	jQuery(wrapper).toggle("slow");
                });
            }
            /* add age and other info to bookmark*/
            function addAge(entry, bookmark, anchor, divID, previewtoggle, last_posttitle){
                var $li = jQuery(bookmark),
                 $a = jQuery(anchor),
                 $toggle = jQuery(previewtoggle),
                 $title = jQuery(last_posttitle),
                 now = new Date(),
                 then = new Date(),
                 ageInDays,
                 ageInHours,
                 randomAge,
                 ageMsg,
                 $snippet;
                try {
                    then = new Date(entry.publishedDate);
                } catch (dateException) {
                    // do noting
                }

                ageInDays =  Math.floor((now.getTime()-then.getTime())/(1000*60*60*24)),
                ageInHours = Math.floor((now.getTime()-then.getTime())%(1000*60*60*24)/3600000);

                try {
                    $entryTitle = jQuery("<p />").html(entry.title);
                    $a.attr({title: $entryTitle.html()});
                } catch (titleException) {
                    $a.attr({title: ""});
                }
				if (!isNaN(then.getTime())){
					// insert age into list-item to allow sorting by age of post
                    $li.attr({age:then.getTime()});
				} else {
		            /* add "very old" age to bookmarks with no feed-url */
					randomAge = Math.floor(Math.random()*1000001);
					$li.attr({age:randomAge});
				}

                                if (isNaN(ageInDays) || isNaN(ageInHours)){
                    // do nothing
                } else {
                    ageMsg=getAge(ageInDays, ageInHours);
                    $toggle.html(ageMsg);
                }
                                                    $title.html(entry.title);
                    $title.attr({href:entry.link});
                    $snippet = jQuery("<p />").html(entry.contentSnippet);
                    $title.attr({title:$snippet.html()});
                    $title.attr({rel:"external"});
                    $title.attr({rev:"bookmark"});
                                return;
            }
            /* add "very old" age to bookmarks with no feed-url */
            function addZeroAge(zeroAgeBookmark){
                var $zali = jQuery(zeroAgeBookmark),
                randomAge = Math.floor(Math.random()*1000001);
                if ($zali !== null ) {
                    $zali.attr({age:randomAge});
                }
                return;
            }

            /*
             *
             */
            function feedreading_automatic_sort() {     				jQuery("#feedreading_blogroll_ > li").tsort({order:"desc",attr:"age"});
            		            }
			            /* call sort-function every half second */
            var myInterval = window.setInterval(function (){feedreading_automatic_sort(); },500);

            /* stop calling sort-function after 20 seconds */
			window.setTimeout(function (a,b){clearInterval(myInterval);}, 20000);
			
            function initializeBR() {
                
                						google.feeds.lookupFeed("http://www.rethinkingmedia.nl", function() {
							var url12= this.url, feed12 = new google.feeds.Feed(this.url);
                            feed12.load(function(result_12){
                                if (!result_12.error) {
                                addAge(result_12.feed.entries[0], "#feedreading_bookmark_12", "#feedreading_anchor_12", "#feedreading_info_12", "#feedreading_previewtoggle_12", "#frbl_last_posttitle_12");                   			} else {
                      			addZeroAge("#feedreading_bookmark_12");
                  			}
                                });

						});

                                          						google.feeds.lookupFeed("http://thenextweb.com/", function() {
							var url13= this.url, feed13 = new google.feeds.Feed(this.url);
                            feed13.load(function(result_13){
                                if (!result_13.error) {
                                addAge(result_13.feed.entries[0], "#feedreading_bookmark_13", "#feedreading_anchor_13", "#feedreading_info_13", "#feedreading_previewtoggle_13", "#frbl_last_posttitle_13");                   			} else {
                      			addZeroAge("#feedreading_bookmark_13");
                  			}
                                });

						});

                                          						google.feeds.lookupFeed("http://www.emerce.nl", function() {
							var url10= this.url, feed10 = new google.feeds.Feed(this.url);
                            feed10.load(function(result_10){
                                if (!result_10.error) {
                                addAge(result_10.feed.entries[0], "#feedreading_bookmark_10", "#feedreading_anchor_10", "#feedreading_info_10", "#feedreading_previewtoggle_10", "#frbl_last_posttitle_10");                   			} else {
                      			addZeroAge("#feedreading_bookmark_10");
                  			}
                                });

						});

                                          						google.feeds.lookupFeed("http://www.marketingfacts.nl", function() {
							var url11= this.url, feed11 = new google.feeds.Feed(this.url);
                            feed11.load(function(result_11){
                                if (!result_11.error) {
                                addAge(result_11.feed.entries[0], "#feedreading_bookmark_11", "#feedreading_anchor_11", "#feedreading_info_11", "#feedreading_previewtoggle_11", "#frbl_last_posttitle_11");                   			} else {
                      			addZeroAge("#feedreading_bookmark_11");
                  			}
                                });

						});

                                          						google.feeds.lookupFeed("http://www.dutchcowboys.nl/", function() {
							var url9= this.url, feed9 = new google.feeds.Feed(this.url);
                            feed9.load(function(result_9){
                                if (!result_9.error) {
                                addAge(result_9.feed.entries[0], "#feedreading_bookmark_9", "#feedreading_anchor_9", "#feedreading_info_9", "#feedreading_previewtoggle_9", "#frbl_last_posttitle_9");                   			} else {
                      			addZeroAge("#feedreading_bookmark_9");
                  			}
                                });

						});

                                          						google.feeds.lookupFeed("http://www.adformatie.nl", function() {
							var url8= this.url, feed8 = new google.feeds.Feed(this.url);
                            feed8.load(function(result_8){
                                if (!result_8.error) {
                                addAge(result_8.feed.entries[0], "#feedreading_bookmark_8", "#feedreading_anchor_8", "#feedreading_info_8", "#feedreading_previewtoggle_8", "#frbl_last_posttitle_8");                   			} else {
                      			addZeroAge("#feedreading_bookmark_8");
                  			}
                                });

						});

                                          
                }


            
                    