function Sky(autoUpdate, dayTime, sunDistance, time)
{	
	Group.call(this);

	this.name = "sky";
	this.type = "Sky";
	
	/**
	 * Array with top sky colors.
	 *
	 * @property colorTop
	 * @type {Array}
	 */
	this.colorTop = [new Color(0x77b3fb), new Color(0x0076ff), new Color(0x035bb6), new Color(0x002439)];

	/**
	 * Array with bottom sky colors.
	 *
	 * @property colorBottom
	 * @type {Array}
	 */
	this.colorBottom = [new Color(0xebece6), new Color(0xFFFFFF), new Color(0xfee7d7), new Color(0x0065a7)];

	/**
	 * Sun color in hex RGB.
	 *
	 * @property sunColor
	 * @type {number}
	 * @default 0xFFFFAA
	 */
	this.sunColor = 0xFFFFAA;

	/**
	 * Sun color intensity.
	 *
	 * @property intensity
	 * @type {number}
	 */
	this.intensity = 0.3;

	/**
	 * Moon color in hex RGB.
	 *
	 * @property moonColor
	 * @type {number}
	 * @default 0x5555BB
	 */
	this.moonColor = 0x5555BB;

	/**
	 * Hemisphere light used to match ambient ligth with sky color.
	 *
	 * @property hemisphere
	 * @type {HemisphereLight}
	 */
	this.hemisphere = new HemisphereLight(0x3284ff, 0xffcc7f, 0.5);
	this.hemisphere.name = "hemisphere";
	this.hemisphere.locked = true;
	this.hemisphere.matrixAutoUpdate = false;
	this.add(this.hemisphere);

	/**
	 * Directional light to simulate sun light and cast shadows.
	 *
	 * @property sun
	 * @type {DirectionalLight}
	 */
	this.sun = new DirectionalLight(this.sunColor, this.intensity);
	this.sun.castShadow = true;
	this.sun.locked = true;
	this.add(this.sun);

	// Uniforms
	var uniforms =
	{
		topColor: {type: "c", value: new Color(0.0, 0.46, 1.0)},
		bottomColor: {type: "c", value: new Color(1.0, 1.0, 1.0)},
		offset:	{type: "f", value: 20},
		exponent: {type: "f", value: 0.2}
	};
	
	uniforms.topColor.value.copy(this.hemisphere.color);

	// Sky
	var geometry = new SphereBufferGeometry(1500, 16, 16);
	var material = new ShaderMaterial(
		{
			vertexShader: SkyVertexShader,
			fragmentShader: SkyFragmentShader,
			uniforms: uniforms,
			side: BackSide
		});

	/**
	 * Sky mesh with material shader to calculate dinamically sky color.
	 *
	 * @property sky
	 * @type {Mesh}
	 */
	this.sky = new Mesh(geometry, material);
	this.sky.locked = true;
	this.sky.matrixAutoUpdate = false;
	this.sky.name = "sky";
	this.add(this.sky);

	// Override sky raycast function
	this.sky.raycast = function()
	{
		return null;
	};

	/**
	 * If set to true the sky auto updates its time.
	 *
	 * @property autoUpdate
	 * @default true
	 * @type {boolean}
	 */
	this.autoUpdate = autoUpdate !== undefined ? autoUpdate : true;

	/**
	 * Sun distance.
	 *
	 * @property sunDistance
	 * @type {number}
	 */
	this.sunDistance = sunDistance !== undefined ? sunDistance : 100;

	/**
	 * Day time in seconds.
	 *
	 * @property dayTime
	 * @type {number}
	 */
	this.dayTime = dayTime !== undefined ? dayTime : 120;

	/**
	 * Current day time in seconds.
	 *
	 * @property time
	 * @type {number}
	 */
	this.time = time !== undefined ? time : 75;
	
	this.updateSky();
}
Sky class if composed of a HemisphereLight, DirectionalLight and a dynamic generated Sky sphere geometry.

This object is composed by 3 internal objects
	- Hemisphere light
	- Directional Light
	- Mesh

@param {boolean} autoUpdate If true sky auto updated its state 
@param {number} dayTime Day duration in seconds
@param {number} sunDistance Distance of the sun
@param {number} time Starting time
@class Sky
@extends {Object3D}
@module Lights