/* **************************************************************
*                         --XJS--	                            *
* Desenvolvedora: Rhianna Cantarelli							*
* Versão: 1.5													*
* Data: 17.05.2007												*
* Email: r.rhianna@yahoo.com.br									*
************************************************************** */







/*
	- CONFIGURAÇÃO DO SCRIPT PRINCIPAL NA ADIÇÃO DE UM MODAL:
	
	EM 'executeOnLoad()'
	Add:
	if(xjs_browser.type == 'IE'&& xjs_browser.version == '6'){
		searchAndInsertIframe('div', 'iFrame'); 
		autoResizeIframes();
	}


	Em 'executeOnResize()'
	Add:
	if(xjsBool_ModalIsOpen == true) { 
		extendToNode('divShadow', 'Screen', 'yes', 'yes'); 
		if(xjs_browser.type == 'IE' && xjs_browser.version == '6') { autoResizeIframes(); }
	}


	- EDITAR OS SEGUINTES MÉTODOS DESTA FOLHA
	showHideModal();
	resetModal();
	setModalContent();
	setModalDimensions();
*/





/* **************************************************************
Abre/Fecha Modal + Sombra
	- Possivelmente quando for aplicada, esta Função deverá ser alterada
 	para receber os dados que irão gerar o conteudo dinamico
************************************************************** */
function showHideModal(toDo) {
	if(toDo == 'show') {
		xjsBool_ModalIsOpen = true;
		LoadModal(arguments);
		setModalCoords();
	}
	else if(toDo == 'hide') {
		xjsBool_ModalIsOpen = false;
		UnLoadModal();
	}
}





/* **************************************************************
	Faz Ajuste de Posição em que o Modal deve Permanecer
************************************************************** */
function setModalCoords()
{
    coordY = 0; coordX = 0; dimenW = 0; dimenH = 0;

    atualY = getPageYScroll();
    atualX = getPageXScroll();
    
    atualW = id('divModal').clientWidth;
    atualH = id('divModal').clientHeight;

    // Posiciona eixo Vertical
    if(xjsInt_ModalY == 'middle') {
        bodyY = xjs_thisPage.windowH/2;
        xjsInt_modalY = atualH/2;
        coordY = atualY + (bodyY - xjsInt_modalY);
    }
    else { coordY = atualY + xjsInt_ModalY; }

    // Posiciona eixo Horizontal    
    if(xjsInt_ModalX == 'middle') {
        bodyX = xjs_thisPage.windowW/2;
        xjsInt_modalX = atualW/2;
        coordX = atualX + (bodyX - xjsInt_modalX);
    }
    else { coordX = atualX + xjsInt_ModalX; }
    
    id('divModal').style.top = coordY + 'px';
    id('divModal').style.left = coordX + 'px';
}




/* **************************************************************
Abre/Fecha Sombra - Usada para Modal
************************************************************** */
function showHideShadow(toDo) {
	if(toDo == 'show') {
		setDisplay('divShadow', 'block');
		extendToNode('divShadow', 'Screen', 'yes', 'yes');
	}
	else if(toDo == 'hide') { setDisplay('divShadow', 'none'); }

	if(toDo == 'show' && xjs_browser.type == 'IE' && xjs_browser.version == '6') { 
		searchAndInsertIframe('div', 'iFrame'); 
	}
}




/* **************************************************************
	ABAIXO ESTÃO OS MÉTODOS QUE DEVEM SER REVISTOS EM CADA PROJETO
	E ALTERADOS QUANDO NECESSÁRIO

		Usar Sempre: showHideModal(N Arguments) // Suporta vários argumentos
					para serem usados na função "setModalContent();"
************************************************************** */








/* **************************************************************
Evento que ocorre sempre que o modal é Carregado
************************************************************** */
function LoadModal(param) {
	// Mostra Sombra
	showHideShadow('show');
	// Mostra Container do Modal
	setDisplay('divContainModal', 'block');
	// Reseta Interior do Modal
	resetModal();
	// Adiciona Conteudo do Modal
	setModalContent(param);
}
/* **************************************************************
Evento que ocorre sempre que o modal é Descarregado
************************************************************** */
function UnLoadModal() {
	// Reseta Interior do Modal
	resetModal();
	// Torna o Modal Invisivel
	setDisplay('divContainModal', 'none');
	// Esconde a Sombra
	showHideShadow('hide');	
}





/* **************************************************************
Reseta Posição, Elementos e Dimensoes do Modal
	- Este Método Preenche o conteudo do Modal com o HTML temporário
	até que o novo seja carregado. Alem disso ele é responsavel pelo
	pré-posicionamento e dimensionamento do mesmo.
************************************************************** */
function resetModal() {
    id('divModal').innerHTML = '';
	if(xjs_browser.type == 'IE' && xjs_browser.version == '6') {
		id('divModal').style.height = xjsInt_ModalOnLoadH + 'px';
		id('divModal').style.width = xjsInt_ModalOnLoadW + 'px';
	}
	else {
		id('divModal').style.minHeight = xjsInt_ModalOnLoadH + 'px';
		id('divModal').style.minWidth = xjsInt_ModalOnLoadW + 'px';
	}
	setModalCoords();
}





/* **************************************************************
Esta Função é responsavel pela criação do conteúdo do Modal
************************************************************** */
function setModalContent(param) {
    var modalType = param[1]; // Nome da Página ASPX na Pasta _modal à ser carregada
	var modalParam = param[2]; // Parametros à serem enviados para a Página a ser Carregada


	RequestConfig.setConfig('POST', false, false, '', '');
    RequestConfig.setState(4, 'onLoadModal();', true);


	var urlModal = '../_modal/' + modalType + '.aspx?' + modalParam;
	XmlHttp.LoadPage(urlModal, modalParam, 'divModal');

    // Refaz o Iframe do Modal - Pode se sobrepor ao conteudo
	if(xjs_browser.type == 'IE' && xjs_browser.version == '6') { autoResizeIframes(); }
}





function onLoadModal() { 
	setModalCoords();

    // Se for IE, Reinicia Objetos de Ajax
    if(xjs_browser.type == 'IE') {
        RequestConfig = new objXmlHttpRequestConfig();
        XmlHttp = new objXmlHttpRequest(RequestConfig);
    }
}


/*   ------------------------------------------   */
