package com.dzq.controls
{

import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.ByteArray;

import mx.controls.Image;
import mx.utils.Base64Decoder;


/**
 *  Base64Image
 * <p>
 *  SinaMicroBlog:  http://t.sina.com.cn/duzengqiang<p>
 *  QQMicroBlog:    http://t.qq.com/imduzengqiang<p>
 *  Blog:           http://www.duzengqiang.com<p>
 *
 *  @author Ethan Du 
 *  @Date: Dec 14, 2010
 *  @version: 1.0
 */
public class Base64Image extends Image
{
    
    private var _source:Object;
	/**
	 * Attempt to auto detect if we're receiving a base64 encoded string
	 * or a traditional value for the image source
	 */
	override public function set source( value:Object ) :void
	{
		_source = value;
		
		var decoder:Base64Decoder = new Base64Decoder();
		var byteArray:ByteArray;

		try
		{
			decoder.decode( value as String );
			byteArray = decoder.flush();
			load( byteArray );
		}
		catch (error:Error)
		{
			super.source = value
		}
	}
	
	override public function get source():Object {
		return _source;
	}
  
}
}
