/*
 * KWJAXWindows.
 */
function KWJAXWindows() {

	// Objetos de janelas
	var gWindowObject = new Object();

	/*
	 * Método de criação de janela.
	 */
	this.cmdCreateWindow = function(pWindowID, pLeft, pTop, pWidth, pHeight, pZIndex) {

		// Verifica existência da janela
		if (gWindowObject[pWindowID] != null) {
			return false;
		}

		// Obtém janela
		var lWindowElement = document.getElementById(pWindowID);

		// Verifica janela
		if (lWindowElement == null) {
			alert('Janela ' + pWindowID + ' não encontrada');
			return false;
		}

		// Obtém contentor
		var lWindowContainerElement = lWindowElement.parentNode;

		// Verifica contentor
		if (lWindowContainerElement == null) {
			var lMessage = '';
			lMessage += 'Estrutura básica não satisfeita:' + '\n';
			lMessage += '' + '\n';
			lMessage += '<html>' + '\n';
			lMessage += '	<head>' + '\n';
			lMessage += '		...' + '\n';
			lMessage += '		<!-- KWJAXWindows -->' + '\n';
			lMessage += '		<script type="text/javascript" charset="ISO-8859-1" src="KWJAXWindows.js"></script>' + '\n';
			lMessage += '		<script type="text/javascript">' + '\n';
			lMessage += '' + '\n';
			lMessage += '			// KWJAXWindows' + '\n';
			lMessage += '			var wnKWJAXWindows = new KWJAXWindows();' + '\n';
			lMessage += '		</script>' + '\n';
			lMessage += '		...' + '\n';
			lMessage += '	</head>' + '\n';
			lMessage += '	<body>' + '\n';
			lMessage += '		...' + '\n';
			lMessage += '		<div style="display: none"><div name="winWindow1" id="winWindow1">' + '\n';
			lMessage += '			...' + '\n';
			lMessage += '		</div></div>' + '\n';
			lMessage += '		<script type="text/javascript">' + '\n';
			lMessage += '			wnKWJAXWindows.cmdCreateWindow(\'winWindow1\', 0, 0, 320, 240);' + '\n';
			lMessage += '		</script>' + '\n';
			lMessage += '		...' + '\n';
			lMessage += '	</body>' + '\n';
			lMessage += '</html>';
			lMessage += '' + '\n';
			lMessage += 'ATENÇÃO: Algumas funções podem exigir bibliotecas adicionais.' + '\n';
			alert(lMessage);
			return false;
		}

		// Cria fundo
		var lWindowBackElement = document.createElement('IFRAME');
		lWindowBackElement.setAttribute('frameborder', '0');
		lWindowBackElement.style.position = 'absolute';
		lWindowBackElement.style.left = '0px';
		lWindowBackElement.style.top = '0px';
		lWindowBackElement.style.width = '100%';
		lWindowBackElement.style.height = '100%';
		lWindowBackElement.style.filter = 'alpha(opacity=0)';
		lWindowBackElement.style.opacity = 0;
		lWindowBackElement.style.zIndex = -1;
		lWindowContainerElement.appendChild(lWindowBackElement);

		// Atribui propriedades do contentor
		lWindowContainerElement.style.position = 'absolute';
		if (pLeft != null) {
			lWindowContainerElement.style.left = parseInt(pLeft, 10) + 'px';
		} else {
			lWindowContainerElement.style.left = '0px';
		}
		if (pTop != null) {
			lWindowContainerElement.style.top = parseInt(pTop, 10) + 'px';
		} else {
			lWindowContainerElement.style.top = '0px';
		}
		if (pWidth != null) {
			lWindowContainerElement.style.width = parseInt(pWidth, 10) + 'px';
		} else {
			lWindowContainerElement.style.width = '100px';
		}
		if (pHeight != null) {
			lWindowContainerElement.style.height = parseInt(pHeight, 10) + 'px';
		} else {
			lWindowContainerElement.style.height = '100px';
		}
		if (pZIndex != null) {
			lWindowContainerElement.style.zIndex = parseInt(pZIndex, 10);
		} else {
			lWindowContainerElement.style.zIndex = 0;
		}

		// Atribui propriedades da janela
		lWindowElement.style.position = 'absolute';
		lWindowElement.style.left = '0px';
		lWindowElement.style.top = '0px';
		lWindowElement.style.width = '100%';
		lWindowElement.style.height = '100%';
		lWindowElement.style.overflow = 'hidden';
		lWindowElement.style.zIndex = 0;

		// Armazena elementos
		var lWindowObject = new Object();
		lWindowObject.lWindowElement = lWindowElement;
		lWindowObject.lWindowContainerElement = lWindowContainerElement;
		lWindowObject.lWindowBackElement = lWindowBackElement;

		/*
		 * Método de exibição.
		 */
		lWindowObject.cmdShow = function() {
			this.lWindowContainerElement.style.display = '';
		}

		/*
		 * Método de ocultação.
		 */
		lWindowObject.cmdHide = function() {
			this.lWindowContainerElement.style.display = 'none';
		}

		/*
		 * Método de centralização.
		 */
		lWindowObject.cmdCenter = function() {
			this.setLeft(((new KWJAXUtil().getClientWidth() - this.getWidth()) / 2) + new KWJAXUtil().getXScroll());
			this.setTop(((new KWJAXUtil().getClientHeight() - this.getHeight()) / 2) + new KWJAXUtil().getYScroll());
		}

		/*
		 * Getter do índice Z.
		 */
		lWindowObject.getZIndex = function() {
			return this.lWindowContainerElement.style.zIndex;
		}

		/*
		 * Getter da posição X.
		 */
		lWindowObject.getLeft = function() {
			return parseInt(this.lWindowContainerElement.style.left, 10);
		}

		/*
		 * Getter da posição Y.
		 */
		lWindowObject.getTop = function() {
			return parseInt(this.lWindowContainerElement.style.top, 10);
		}

		/*
		 * Getter da dimensão X.
		 */
		lWindowObject.getWidth = function() {
			return parseInt(this.lWindowContainerElement.style.width, 10);
		}

		/*
		 * Getter da dimensão Y.
		 */
		lWindowObject.getHeight = function() {
			return parseInt(this.lWindowContainerElement.style.height, 10);
		}

		/*
		 * Setter do índice Z.
		 */
		lWindowObject.setZIndex = function(pZIndex) {
			this.lWindowContainerElement.style.zIndex = pZIndex;
		}

		/*
		 * Setter da posição X.
		 */
		lWindowObject.setLeft = function(pLeft) {
			this.lWindowContainerElement.style.left = parseInt(pLeft, 10) + 'px';
		}

		/*
		 * Setter da posição Y.
		 */
		lWindowObject.setTop = function(pTop) {
			this.lWindowContainerElement.style.top = parseInt(pTop, 10) + 'px';
		}

		/*
		 * Setter da dimensão X.
		 */
		lWindowObject.setWidth = function(pWidth) {
			this.lWindowContainerElement.style.width = parseInt(pWidth, 10) + 'px';
		}

		/*
		 * Setter da dimensão Y.
		 */
		lWindowObject.setHeight = function(pHeight) {
			this.lWindowContainerElement.style.height = parseInt(pHeight, 10) + 'px';
		}

		// Armazena janela
		gWindowObject[pWindowID] = lWindowObject;
		return true;
	}

	/*
	 * Método de obtenção de janela.
	 */
	this.getWindow = function(pWindowID) {
		return gWindowObject[pWindowID];
	}

	/*
	 * Método de centralização de todas as janelas.
	 */
	this.cmdCenterAll = function() {

		// Percorre janelas
		for (lWindowObject in gWindowObject) {

			// Centraliza janela
			gWindowObject[lWindowObject].cmdCenter();
		}
	}
}