var ftags = '';
var mtags;
var tagi = 0;

function consumeTags(n)
{
  var count = 0;
  ftags = '';
  for (i=tagi;i<tagi+n;++i) {
    var tag = mtags[i];
    if (!tag) { continue; }
    if (i>tagi) { ftags += '%2C'+tag; } // url encoded comma separation
    else { ftags += tag; }
  }
  tagi += n;
}

var rateimg = new Image();
function rateClick(id, type, value) {
    var div = document.getElementById('rate-'+type);
    div.innerHTML = 'This '+type+' is '+value+'!';
    try { pageTracker._trackPageview('/rate-'+type+'/'+id+'/'+value); } catch (err) {}
    rateimg.src = 'http://metallizer.dk/api/rate-'+type+'/'+id+'/'+value;
}

function ratelink(id, type, value) {
    return '<a href="#" class="rate" onclick="rateClick(\''+id+'\',\''+type+'\',\''+value+'\'); return false;">'+value+'!</a>';
}

function setPageTitle(header) {
    var div = document.getElementById('pagetitle');
    if (div) {
	div.innerHTML = header;
    }
}

function flickrSearch()
{
    flickrGetFavorites();
}

function flickrPhotoSearch()
{
    var url = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=0c128cd493a2821204cd5be13fd0ca74&tags="+ftags+"&license=4%2C5%2C7&sort=interestingness_desc&per_page=9&format=json&tag_mode=all&extras=owner_name&jsoncallback=flickrSearchResults";
    document.write('<scr' + 'ipt type="text/javascript" src="'+url+'"></scr'+'ipt>');
}

function flickrGetFavorites()
{
    var url = "http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&api_key=0c128cd493a2821204cd5be13fd0ca74&user_id=36822996%40N05&extras=license%2Cowner_name%2Co_dims&jsoncallback=flickrFavoritesResults&format=json&per_page=500";
    document.write('<scr' + 'ipt type="text/javascript" src="'+url+'"></scr'+'ipt>');
}

function flickrImageSrc(photo, size) {
    return "http://farm"+photo.farm+".static.flickr.com/"+photo.server+"/"+photo.id+"_"+photo.secret+size+".jpg";
}


function fisherYates ( myArray ) {
    var i = myArray.length;
    if ( i == 0 ) return false;
    while ( --i ) {
	var j = Math.floor( Math.random() * ( i + 1 ) );
	var tempi = myArray[i];
	var tempj = myArray[j];
	myArray[i] = tempj;
	myArray[j] = tempi;
    }
}

function flickrFavoritesResults(result) {
    if (!result.photos || !result.photos.photo) { return; }
    
    var photo = result.photos.photo;

    var date=new Date();    
    var index = Math.floor(date.getTime()/1000);
    var n = photo.length;
    
    // find the first photo with a valid license.
    for (var i=0; i<n; ++i) {
	var x = (i+index) % n;
	if (!(photo[x].license) || photo[x].license < 1 || photo[x].license > 7) {
	    continue;
	}
	
	// found one!
	showCover(photo[x]);
	break;
    }
}

function loadSquareImage(element, src, size)
{
    var img = new Image();
    img.onload=function(){
	var width=size;
	var height=size;
	var right=0;
	var bottom=0;
	if(img.width > img.height) {
	    width = Math.floor(size * img.width / img.height);
	    height = size;
	    right = (width-size)/2;
	} else {
	    height = Math.floor(size * img.height / img.width);
	    width = size;
	    bottom = (height-size)/2;
	};
	var style = "width:"+width+"px;height:"+height+"px;position:relative;" +
	"right:"+right+"px;bottom:"+bottom+"px;";
	
	element.innerHTML = '<img src="'+src+'" style="'+style+'">';
    }
    img.src = src;
}

function showCover(photo)
{
    var div = document.getElementById('cover');
    if(div) {
	var src = flickrImageSrc(photo,'');
	
	div.innerHTML = '<div class="albumart"><a id="cover0link" target="_blank" href="http://www.flickr.com/photos/'+photo.owner+'/'+photo.id+'">Loading album art: '+photo.title+"' - by "+photo.ownername+' (used under CC license)</a></div>'
	    + '<div id="rate-cover">This album art is<br>' + 
	    ratelink(photo.id, 'cover', 'Awesome') + ' ' +
	    ratelink(photo.id, 'cover', 'Lame') +
	    '</div>';
	
	var img = document.getElementById('cover0link');
	img.alt = img.title = "Album art: '"+photo.title+"' - by "+photo.ownername;
	loadSquareImage(img, src, 240);
    }
}

function flickrSearchResults(result)
{
    var photo = result.photos.photo[0];
    if (photo) {
	showCover(photo);
    }
    else {
	consumeTags(2);
	if (ftags) { flickrSearch() }
    }
}

function jsonMetallizerAlbum(album)
{
    var s = '';
    setPageTitle(album.metallizer);
    s += '<div id="album">'
	+ '<div id="artist">'+album.artist+':</div>'
	+ '<div id="albumtitle">'+album.album+'</div>'
	+ '<div id="year">('+album.year+' - '+album.id+')</div>'
	+ '<div id="tracklist"><div id="tracklistheader">Track listing:</div><ol>';
    for (x in album.tracks) {
	s += '<li>'+album.tracks[x]+'</li>';
    }
    s += '</ol></div>';
    s += '<div id="rate-album">' +
	ratelink(album.id, 'album', 'Awesome') + ' ' +
	ratelink(album.id, 'album', 'Lame') +
	'</div></div>';
    //    s += '<a target="_blank" href="http://searchservice.myspace.com/index.cfm?fuseaction=sitesearch.results&type=Music&qry='+encodeURIComponent(album.artist)+'">Search MySpace Music for '+album.artist+'</a>';
    mtags = album.tags;
    consumeTags(2);
    
    document.write(s);
}

var bookmarkers = [
{
  "id" : "facebook",
  "name" : "Facebook",
  "url" : "http://www.facebook.com/share.php?u="
},
/*
{
  "id" : "digg",
  "name" : "Digg",
  "url" : "http://digg.com/submit?phase=2&url="
  },
*/
{
  "id" : "stumbleupon",
  "name" : "Stumbleupon",
  "url" : "http://www.stumbleupon.com/submit?url="
},
{
  "id" : "twitter",
  "name" : "Twitter",
  "url" : "http://twitter.com/home?status=Random%20Metal%20Album%20Generator%20-%20"
},
{
  "id" : "delicious",
  "name" : "Del.icio.us",
  "url" : "http://del.icio.us/post?title=Metallizer&url="
},
/*
{
  "id" : "myspace",
  "name" : "MySpace",
  "url" : "http://www.myspace.com/Modules/PostTo/Pages/?l=1&t=Random%20Metal%20Album%20Generator&u="
},
{
  "id" : "google",
  "name" : "Google",
  "url" : "http://www.google.com/bookmarks/mark?op=edit&bkmk="
},
{
  "id" : "technorati",
  "name" : "Technorati",
  "url" : "http://technorati.com/cosmos/search.html?url="
},
{
  "id" : "reddit",
  "name" : "Reddit",
  "url" : "http://reddit.com/submit?url="
},
{
  "id" : "slashdot",
  "name" : "Slashdot",
  "url" : "http://slashdot.org/bookmark.pl?title=Random%20Metal%20Album%20Generator&url="
}
*/
];


function shareClick(i, url) {
    if(!url) url = 'http://metallizer.dk/';
    var service = bookmarkers[i];
    if (!service) return false;
    var serviceUrl = service.url + encodeURIComponent(url);
    try { pageTracker._trackPageview('/goal/share/'+service.id); } catch (err) {}
    window.open(serviceUrl, service.id+'-sharer', 'toolbar=0,status=0,width=1000,height=700');
    return false;
}

function shareLinks() {
    var s = '';
    for (x in bookmarkers) {
	var service = bookmarkers[x];
	s += '<li class="share" id="share-'+service.id+'">'
	    + '<a href="#" ref="nofollow" "onclick="return shareClick('+x+')">'
	    + '<img alt="Share on '+service.name+'" src="/static/img/'+service.id+'.png" /> '
	    + service.name
	    + '</a></li>';
    }
    document.write(s);
}



function createCookie(name,value,days) {
    if (days) {
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
	var c = ca[i];
	while (c.charAt(0)==' ') c = c.substring(1,c.length);
	if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

function showOnce(name) {
    var message = readCookie(name);
    if(!message) return;

    // double decoding is necessary.
    message = decodeURIComponent(message);
    document.write('<div class="bigbox"><div class="boxcontent">'+decodeURIComponent(message)+'</div></div>');
    eraseCookie(name);
}