// declare some variables
var blog_url = 'http://blogger-ru.blogspot.com'; // blog main url -> don't forget write your blog url
var randomCnt = 5; // number of random links
var donate = true; // if you want to say thank you, let this variable be true

// tests, if an element exists in given array
function in_array(test_arr, test_number)
{
  // create from array a string separated by #
  test_arr_str = test_arr.join('#');
  test_arr_str = '#' + test_arr_str + '#';
  
  // create search item to search in converted string
  test_number_str = '#' + test_number + '#';
  
  // look for search item in converted string
  test = test_arr_str.indexOf(test_number_str);
  return test;
}

// show donate url
function showDonatePost()
{
  // url of donate post
  url = 'http://dnevnik.ametov.net/2009/01/random-posts.html';
  
  // get title of a post
  title = 'Ametov.net';
  
  titleData = document.createTextNode(title);
  tag_a = document.createElement('a');
  tag_a.href = url;
  tag_a.target="_blank";
  tag_a.setAttribute('rel', 'nofollow'); 
  tag_li = document.createElement('li');
  tag_li.id = 'donate_widget_random_posts';
  tag_a.appendChild(titleData);
  tag_li.appendChild(tag_a);
  document.getElementById('widget_random_posts').appendChild(tag_li);
}

// make a post visible - show post url and title
function showPost(root)
{
  var feed = root.feed;
  var entries = feed.entry || [];
  var entry = feed.entry[0];
  
  for(var j=0; j<entry.link.length; j++) 
  {
    if (entry.link[j].rel == 'alternate') 
    {
      // get url of a post
      url = entry.link[j].href;
      
      // get title of a post
      title = entry.link[j].title;
      
      // if there is no title replace it with url
      if (title == '') title = url;
      
      titleData = document.createTextNode(title);
      tag_a = document.createElement('a');
      tag_a.href = url;
      tag_li = document.createElement('li');
      tag_a.appendChild(titleData);
      tag_li.appendChild(tag_a);
      if (donate)
      {
        document.getElementById('widget_random_posts').insertBefore(tag_li, document.getElementById('donate_widget_random_posts'));
      }
      else
      {
        document.getElementById('widget_random_posts').appendChild(tag_li);
      }      
    }
  }
}

// get info as json string for given post
function getPost(postNumber)
{
  script = document.createElement('script');
  script.src = blog_url + '/feeds/posts/summary?start-index='+postNumber+'&max-results=1&alt=json-in-script&callback=showPost';
  script.type = 'text/javascript';
  document.getElementsByTagName('head')[0].appendChild(script);
}

// get random posts for given blog
function getRandomPosts(root)
{
  var feed = root.feed;
  var total = parseInt(feed.openSearch$totalResults.$t,10);
  var randomNumber, test;
  
  var random_numbers = new Array(randomCnt);

  if (donate) showDonatePost();
  
  for (var i=0; i<randomCnt; i++)
  {
    randomNumber = -1;
    test = -1;

    // this cicle is to avoid of post repeats
    do
    {
      randomNumber = Math.ceil(Math.random()*total);
      test = in_array(random_numbers, randomNumber);
    } 
    while(test != -1)
    
    random_numbers[i] = randomNumber;
    getPost(randomNumber);    
  }  
}
  
// the main function, which get first number of posts and from which
// would be called all other functions above
function showRandomPosts()
{  
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = blog_url + '/feeds/posts/summary?max-results=0&alt=json-in-script&callback=getRandomPosts';
  document.getElementsByTagName('head')[0].appendChild(script);
}

