function Texture(source, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding)
{
	/**
	 * Source image of the texture.
	 * 
	 * @property source
	 * @type {Image}
	 */
	if (typeof source === "string")
	{
		this.source = new Image(source);
	}
	else if (source === undefined)
	{
		this.source = new Image();
	}
	else
	{
		this.source = source;
	}

	TTexture.call(this, document.createElement("img"), mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);
	
	var self = this;

	/**
	 * Name of the texture (doesn't need to be unique).
	 *
	 * @property name
	 * @type {string}
	 */
	this.name = "texture";
	this.category = "Image";

	/**
	 * Flag used to know is the texture has been disposed.
	 * 
	 * Is used to control animation when using a gif as a texture.
	 * 
	 * @property disposed
	 * @type {boolean}
	 * @default false
	 */
	this.disposed = false;

	this.format = this.source.hasTransparency() ? RGBAFormat : RGBFormat;

	this.updateSource();

	// Check if image is animated format and start an update cycle
	if (this.source.encoding === "gif")
	{
		this.generateMipmaps = false;
		this.magFilter = LinearFilter;
		this.minFilter = LinearFilter;

		function update()
		{
			if (!self.disposed)
			{
				self.needsUpdate = true;
				requestAnimationFrame(update);
			}
		}
		update();
	}
}
Basic image texture object wraps a texture from a img DOM element

Support for GIF animations without playback controls.

@class Texture
@extends {Texture}
@module Textures
@param {Image | String} source
@param {number} mapping
@param {number} wrapS
@param {number} wrapT
@param {number} magFilter
@param {number} minFilter
@param {number} format
@param {number} type
@param {number} anisotropy
@param {number} encoding