private void initializeLights(Document document) {
		NodeList lightList = document.getElementsByTagName("light");
		for (int i = 0; i < lightList.getLength(); i++) {
			Element lightElement = (Element) lightList.item(i);

			// Set up light properties
			Light lightNode = null;
			LightObject lightObject = null;

			if (lightElement.getAttribute("type").equals("ambient")) {
				// Ambient
				Color3f color = new Color3f(
						parseFloats(lightElement.getElementsByTagName("color")
								.item(0).getTextContent()));
				lightNode = new AmbientLight(color);
				lightObject = new AmbientLightObject(color, null, 0.0);

			} else if (lightElement.getAttribute("type").equals("directional")) {
				// Directional
				Color3f color = new Color3f(
						parseFloats(lightElement.getElementsByTagName("color")
								.item(0).getTextContent()));
				Vector3f direction = new Vector3f(parseFloats(lightElement
						.getElementsByTagName("direction").item(0)
						.getTextContent()));
				lightNode = new DirectionalLight(color, direction);
				lightObject = new DirectionalLightObject(color, null, 0.0,
						direction);

			} else if (lightElement.getAttribute("type").equals("point")) {
				// Point
				Color3f color = new Color3f(
						parseFloats(lightElement.getElementsByTagName("color")
								.item(0).getTextContent()));
				Point3f position = new Point3f(parseFloats(lightElement
						.getElementsByTagName("position").item(0)
						.getTextContent()));
				Point3f attenuation = new Point3f(parseFloats(lightElement
						.getElementsByTagName("attenuation").item(0)
						.getTextContent()));
				lightNode = new PointLight(color, position, attenuation);
				lightObject = new PointLightObject(color, null, 0.0,
						attenuation);
			}

			if (lightNode != null) {
				// Set up bounds
				Element boundsElement = (Element) lightElement
						.getElementsByTagName("bounds").item(0);
				Point3d position = new Point3d(parseDoubles(boundsElement
						.getElementsByTagName("position").item(0)
						.getTextContent()));
				double radius = Double.parseDouble(boundsElement
						.getElementsByTagName("radius").item(0)
						.getTextContent());
				lightObject.setPosition(position);
				lightObject.setRadius(radius);
				BoundingSphere bounds = new BoundingSphere(position, radius);
				lightNode.setInfluencingBounds(bounds);

				// Add light to scene graph
				BranchGroup group = new BranchGroup();
				group.setCapability(BranchGroup.ALLOW_DETACH);
				group.addChild(lightNode);

				lightsBranchGroup.addChild(group);
				lights.add(lightObject);
			}
		}
	}