if (typeof(browserDetect) == 'undefined') {
	var browserDetect = detectBrowser('', '');
}

function Scene() {
	var code = generateCodeNumber + '' + generateCode();
	generateCodeNumber ++;
	var interval = '';
	var intervalResizeDelay = 100;
	this.show = show;
	this.hide = hide;
	this.getVisibility = getVisibility;
	this.swapDepth = swapDepth;	
	this.getObject = getObject;
	
	if (browserDetect[0] == 'msie') {
		var myElement = document.createElement('<div id = "' + code + '" style = "position:absolute; left:0; top:0; visibility:hidden; filter:progid:DXImageTransform.Microsoft.Alpha(opacity = 0, style = 0); z-index:auto; background-color:#000000; width:1; height:1;"></div>');
	}
	else {
		var myElement = document.createElement('div');
		myElement.id = code;
		myElement.style.position = 'absolute';
		myElement.style.left = '0px';
		myElement.style.top = '0px';
		myElement.width = '1px';
		myElement.height = '1px';
		myElement.style.visibility = 'hidden';
	}
	window.document.body.appendChild(myElement);
	var object = document.getElementById(code);
	
	function addEventListener_() {
		if (window.attachEvent) {
			window.attachEvent('onresize', resizeDelay);
		}
		else {
			window.addEventListener('resize', resizeDelay, false);	
		}
	}
	
	function removeEventListener_() {
		if (window.detachEvent) {
			window.detachEvent('onresize', resizeDelay);
		}
		else {
			window.removeEventListener('resize', resizeDelay, false);
		}
	}
	
	function resizeDelay() {
		if (object.style.visibility == 'visible') {
			object.style.height = '1px';
			object.style.width = '1px';
			object.style.left = '0px';
			object.style.top = '0px';
			if (interval != '') {
				clearInterval(interval);
				interval = '';
			}
			interval = setInterval(resize_, intervalResizeDelay);
		}
	}
	
	function resize_() {
		if (interval != '') {
			clearInterval(interval);
			interval = '';
		}
		if(object.style.visibility == 'visible') {
			var documentAreaShowSize = getDocumentAreaShowSize();
			var width_ = documentAreaShowSize[0];
			var height_ =  documentAreaShowSize[1];
			var scrollXY = getScrollXY();
			var left_ = scrollXY[0];
			var top_ = scrollXY[1];
			object.style.width = (width_ + left_) + 'px';
			object.style.height = (height_ + top_) + 'px';
			var documentSize = getDocumentSize();
			var width_ = documentSize[0];
			var height_ = documentSize[1];
			object.style.width = width_ + 'px';
			object.style.height = height_ + 'px';
		}
	}
	
	function show(opacity_, zindex_, bgcolor_, intervalResizeDelay_) {
		if (intervalResizeDelay_ !== '') {
			intervalResizeDelay = intervalResizeDelay_;
		}
		
		var documentSize = getDocumentSize();
		var width_ = documentSize[0];
		var height_ = documentSize[1];
		
		if (browserDetect[0] == 'msie') {
			object.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity_;
		}
		else {			
			object.style.opacity = (opacity_ / 100);
		}
		if (typeof(zindex_) == 'number') {
			object.style.zIndex = zindex_;
		}
		object.style.backgroundColor = bgcolor_;
		object.style.height = height_ + 'px';
		object.style.width = width_ + 'px';
		object.style.visibility = 'visible';
		addEventListener_();
	}
	
	function hide() {
		removeEventListener_();
		if (interval != '') {
			clearInterval(interval);
			interval = '';
		}
		object.style.height = '1px';
		object.style.width = '1px';
		object.style.left = '0px';
		object.style.top = '0px';
		object.style.visibility = "hidden";
	}
	
	function getVisibility() {
		return object.style.visibility;
	}
	
	function swapDepth(zindex_) {
		if (typeof(zindex_) == 'number') {
			object.style.zIndex = zindex_;
		}
	}
	
	function getObject() {
		return object;
	}
}