//##############################################################################
//------------------------------------------------------------------------------
function Label(parent, title, size, linkURL, userID)
{    
	var backgroundItem = new ImageItem('img/titlebg.png');
	backgroundItem.opacity = 0;
	backgroundItem.parent = parent;
	this.backgroundItem = backgroundItem;
	
	var logoItem = new ImageItem('img/flickr.png');
	logoItem.linkURL = linkURL;
	logoItem.isLabelLogo = true;
	logoItem.sizeX = size * 1.7;
	logoItem.sizeY = logoItem.sizeX / 2;
	logoItem.opacity = 0;
	logoItem.parent = parent;
	this.logoItem = logoItem;

	var textItem = new TextItem(title, size, 'left');
	textItem.opacity = 0;
	textItem.setLink(linkURL);
	textItem.parent = parent;
	textItem.div.style.overflow = 'hidden';
	textItem.sizeY *= 1.2;
	this.textItem = textItem;
	
	this.fadeMode = 'none';
	this.opacity = 0;
	this.fadeInStep = 0.2;
	this.fadeOutStep = 0.1;
	this.title = title;
	this.userID = userID;
	this.labelPosition = 0.45;
}

//------------------------------------------------------------------------------
Label.prototype.update = function()
{
	var textItem = this.textItem;
	var logoItem = this.logoItem;
	var backgroundItem = this.backgroundItem;
	var item = textItem.parent;

	logoItem.posX = item.posX - ((item.sizeX / 2) - (logoItem.sizeX / 2));
	logoItem.posX += logoItem.sizeY * 0.3;          
	logoItem.posY = item.posY + ((item.sizeY / 2) - (logoItem.sizeY * 0.9)); 

	textItem.sizeX = item.sizeX - (logoItem.sizeX + (textItem.sizeY * 0.5));
	textItem.posX = item.posX + ((item.sizeX - textItem.sizeX) / 2);
	textItem.posY = item.posY + ((item.sizeY / 2) - (textItem.sizeY * this.labelPosition));
	
	backgroundItem.sizeX = item.sizeX;
	backgroundItem.sizeY = textItem.sizeY * 2;
	backgroundItem.posX = item.posX;
	backgroundItem.posY = item.posY + ((item.sizeY / 2) - (backgroundItem.sizeY / 2));

	if(this.fadeMode == 'in')
	{
		this.opacity += this.fadeInStep;
		if(this.opacity >= 1)
		{
			this.opacity = 1;
			this.fadeMode = 'none';
		}
	}
	else if(this.fadeMode == 'out')
	{
		this.opacity -= this.fadeOutStep;
		if(this.opacity <= 0)
		{
			this.opacity = 0;
			this.fadeMode = 'none';

			if(backgroundItem.attached)
				doc.removeItem(backgroundItem);

			if(textItem.attached)
				doc.removeItem(textItem);

			if(logoItem.attached)
				doc.removeItem(logoItem);
		}
	}
	
	if(backgroundItem.isLoaded() && logoItem.isLoaded())
	{
		textItem.opacity = this.opacity;
		backgroundItem.opacity = this.opacity;
		logoItem.opacity = this.opacity;
	}
}

//------------------------------------------------------------------------------
Label.prototype.fadeIn = function()
{
	if(!this.backgroundItem.attached)
		doc.addItem(this.backgroundItem);

	if(!this.logoItem.attached)
		doc.addItem(this.logoItem);

	if(!this.textItem.attached)
		doc.addItem(this.textItem);

	if(this.opacity < 1)
		this.fadeMode = 'in';

	// ___ Get the username
	if(typeof(this.userName) == 'undefined')
	{
		this.userName = '';
		var args = 'method=flickr.people.getInfo&user_id=' + this.userID;
		getXML(flickrPath + '?args=' + escape(args), parseFlickrPeopleGetInfo, this, 2);
	}
}

//------------------------------------------------------------------------------
Label.prototype.fadeOut = function()
{
    if(this.opacity > 0)
        this.fadeMode = 'out';
}

//------------------------------------------------------------------------------
Label.prototype.setUserName = function(name)
{
	var sizeX = this.textItem.sizeX;
	var sizeY = this.textItem.sizeY;
	this.textItem.setText(this.title + ' by ' + name);
	this.textItem.sizeX = sizeX;
	this.textItem.sizeY = sizeY;
	
	this.userName = name;
}

//##############################################################################
//------------------------------------------------------------------------------
function parseFlickrPeopleGetInfo(http_request, requester)
{
    var file = http_request.responseXML;
    if(file)
    {
    	var name = getXMLData(file, 'realname');
    	if(!name)
    		name = getXMLData(file, 'username');
    		
    	if(name)
    		requester.setUserName(name);
    }
}

