function renderLatestAlbums(root) 
{ 
    var albums = root.feed.entry;

    if (albums.length > 0)
    {    
        for(var i=0; i<albums.length; i++)
        {
            var album = albums[i];
            renderAlbumThumbnail(album);
        }        
    }
}

function renderGallery(root)
{ 
    var albums = root.feed.entry;

    if (albums.length == 0)
    {
        document.write('There are no albums in this gallery');
    }
    else
    {                
        var curYear = 0;
        var curMonth = '';
        
        for(var i=0; i<albums.length; i++)
        {
            var album = albums[i];

            var albumYear = fetchYearFromGDate(album.published.$t);
            var albumMonth = fetchMonthFromGDate(album.published.$t);
            
            if ((albumMonth != curMonth) || (albumYear != curYear))
            {
                renderGalleryDateHeading(albumYear, albumMonth);
                curYear = albumYear;
                curMonth = albumMonth;
            }
            
            renderAlbumThumbnail(album);          
        }
        
        var loadingPanel = document.getElementById('loading-panel');
        loadingPanel.style.display = 'none';
    }
}

function renderGalleryDateHeading(year, monthName)
{
    document.write('<h2 class="photo-gallery-heading"><span>' + monthName + '</span> ' + year + '</h2>');
}

function renderAlbumThumbnail(album)
{
    var albumTitle = album.title.$t;
    var albumUrl = getAlbumURL(album);
    var albumCover = album.media$group.media$content[0].url;
    var albumThumbnail = album.media$group.media$thumbnail[0].url; // == albumCover + '?imgmax=160&amp;crop=1';
    var albumSummary = album.summary.$t;
    var albumID = getAlbumID(album);
    var albumLink = 'photo_album.html?id=' + albumID + '&albumTitle=' + albumTitle;
    var albumPublished = formatGDate(album.published.$t);
    var albumDescription = album.media$group.media$description.$t;
    
    document.write('<div class="photo-album">');
    document.write('<a href="' + albumLink + '">');
    document.write('<img src="' + albumThumbnail + '" width="160" height="160" alt="' + albumTitle + '" />');
    document.write('</a>');
    document.write('');
    document.write('<a class="photo-album-title" href="' + albumLink + '">' + albumTitle + '</a>');
    document.write('</div>');
}

function renderPhotoGalleryAlbum()
{
    var albumID = 0;
            
    // Load all photos from the album specified by the 'id' query string variable
    if (params('id') != null && params('id').length > 0) {
        var albumID = params('id');

        var script = document.createElement('script');
        script.setAttribute('src', 'http://picasaweb.google.com/data/feed/base/user/SmartCarping/albumid/' + albumID +
                          '?kind=photo&access=public&alt=json-in-script&callback=renderPhotoAlbum');
        script.setAttribute('type', 'text/javascript');

        document.documentElement.firstChild.appendChild(script);

        if (params('albumTitle').length > 0) {
            var mainheading = document.getElementById('main-heading');
            mainheading.innerHTML += ' - ' + params('albumTitle');

            document.title += ' - ' + params('albumTitle');
        }
    }
}

function renderPhotoAlbum(root)
{
    if (root.feed.entry.length == 0)
    {
        document.write('There are no photos in this album');
    }
    else
    {    
        for(var i=0; i<root.feed.entry.length; i++)
        {
            var photo = root.feed.entry[i];
            renderPhoto(photo, (i+1));
        }
    }
    
    var loadingPanel = document.getElementById('loading-panel');
    loadingPanel.style.display = 'none';

    var box = {};
    box = new MultiBox('photo', { descClassName: 'photo-caption', useOverlay: true });
}

function renderPhoto(photo, photoNumber)
{
    //var photoUrl = photo.media$group.media$content[0].url;
    var photoThumbnail = photo.media$group.media$thumbnail[0].url;
    var photoUrl = photoThumbnail.replace('s72', 's400'); // s512
    var photoPreview = photoThumbnail.replace('s72', 's144-c');  // s120, s160-c, s220, s288
    var photoSummary = photo.summary.$t;
    var photoDescription = photo.media$group.media$description.$t;
    var albumID = getAlbumIDFromPhoto(photo);
    var photoID = getPhotoID(photo);
  
    var container = document.getElementById('photo-album');
    container.innerHTML += '<a href="' + photoUrl + '" id="photo' + photoNumber + '" title="" class="photo"><img src="' + photoPreview + '" alt="" border="0" width="144" height="144"/></a>';
    container.innerHTML += '<div class="photo-caption photo' + photoNumber + '">' + photoDescription + '</div>';
    container.innerHTML += '<br class="clear" />';
}

function getAlbumID(album)
{
    var start = album.id.$t.indexOf('/albumid/') + 9;
    var end = album.id.$t.indexOf('?');
        
    return album.id.$t.substring(start,end);
}

function getAlbumURL(album)
{
	var link = '#';
	
	for (var i = 0; i < album.link.length; i++)
	{
		if (album.link[i].type == 'text/html')
			link = album.link[i].href;
	}
	
	return link;
}

function getAlbumIDFromPhoto(photo)
{
    var start = photo.id.$t.indexOf('/albumid/') + 9;
    var end = photo.id.$t.indexOf('/photoid/');
    
    return photo.id.$t.substring(start,end);
}

function getPhotoID(photo)
{
    var start = photo.id.$t.indexOf('/photoid/') + 9;
    var end = photo.id.$t.indexOf('?hl=');
    
    return photo.id.$t.substring(start,end);
}

function formatGDate(googleDate)
{
    return fetchMonthFromGDate(googleDate) + ' ' + fetchYearFromGDate(googleDate);
}

function fetchMonthFromGDate(googleDate)
{
    var dateParts = googleDate.substring(0,10).split('-');   
    
    // dateParts[0] - year
    // dateParts[1] - month
    // dateParts[2] - day
    
    return monthName(dateParts[1]);
}

function fetchYearFromGDate(googleDate)
{
    var dateParts = googleDate.substring(0,10).split('-');   
    
    // dateParts[0] - year
    // dateParts[1] - month
    // dateParts[2] - day
    
    return dateParts[0];
}

function monthName(month)
{
    switch (month)
    {
        case '01': return 'January';
        case '02': return 'February';
        case '03': return 'March';
        case '04': return 'April';
        case '05': return 'May';
        case '06': return 'June';
        case '07': return 'July';
        case '08': return 'August';
        case '09': return 'September';
        case '10': return 'October';
        case '11': return 'November';
        case '12': return 'December';
    }
}
