﻿//<![CDATA[
// 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;
}

// 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;

            temp_pos = url.indexOf("/", 8);
            block_name = url.substr(0, temp_pos);
            
            if (document.getElementById(block_name) == null)
            {
                str_tag_ul = '<ul id="' + block_name + '"></ul>';                
                if (donate) str_tag_ul = str_tag_ul + '<p style="margin-left:14;font-size:10px"><a href="http://dnevnik.ametov.net/2009/09/random-posts-widget-for-blogger.html">Random Posts Widget</a></p>';
                document.write(str_tag_ul);
            }

            // 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);
            document.getElementById(block_name).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;
    
    // get all posts number
    var total = parseInt(feed.openSearch$totalResults.$t,10);
    // and make it sure, that this number is greater as wished number of random posts
    if (total < randomCnt) randomCnt = total;
    
    var randomNumber, test;
    
    var random_numbers = new Array(randomCnt);
    
    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()
{
    donate = true;    
    length_blog_url = blog_url.length;
    if (blog_url.lastIndexOf('/') == length_blog_url-1) blog_url = blog_url.substr(0,length_blog_url-1);
    if (blog_url.indexOf('http://') == -1) blog_url = 'http://' + blog_url;
    
    str_tag_ul = '<ul id="' + blog_url + '"></ul>';                
    if (donate) str_tag_ul = str_tag_ul + '<p style="margin-left:14;font-size:10px"><a href="http://dnevnik.ametov.net/2009/09/random-posts-widget-for-blogger.html">Random Posts Widget</a></p>';
    document.write(str_tag_ul);
    
    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);
}
//]]>