﻿/* **************************************************************
							--XJS--
Desenvolvedora: Rhianna Cantarelli
Versão: 2.0
Data: 17.10.2007
Email: r.rhianna@yahoo.com.br
************************************************************** */







/* **************************************************************
Esta deve ser a Única função Publica a ser chamada para 
Executar a abertura ou fechamento de um Modal.
    
toDo = 'show/hide'          : Carrega / Descarrega Modal
arguments[1] = Nome da Div a Ser aberta.
arguments[2] = Nome da Pagina a ser Aberta.
arguments[3] = Parametros Enviados.
************************************************************** */
function showHideModal(toDo) {
    if (toDo == 'show') {
        xjs_isModalOpen = true; // Marca Abertura do Modal
        xjs_IDModalOpen = arguments[1];

        // Abre e Posiciona Shadow e ModalContainer
        showHideShadow(toDo);

        // Reseta Modal
        resetModal();

        // Esconde o Flash pra ele não ficar sobre o Modal
        xGet.get('#divFlash');
        xGet.VisibilityHidden();

        // Posiciona Modal e Dispara Efeito Fade IN
        setModalCoords();
        
        // Carrega Modal
        LoadModal(arguments);
    }
    else if (toDo == 'hide') {
        xjs_isModalOpen = false; // Marca que Modal está Fechado

        // Reseta Modal
        resetModal();

        showHideShadow(toDo);

        // Mostra o Flash
        xGet.get('#divFlash');
        xGet.VisibilityVisible();
    }
};




/* **************************************************************
Abre/Fecha Sombra - Usada para Modal
************************************************************** */
function showHideShadow(toDo) {
    if (toDo == 'show') {
        // Mostra Shadow e Dimensiona ela para toda a Extensão da Tela
        node = xGet.get('#divShadow');
        xGet.DisplayBlock();
        xDoc.extendToScreen(node);

        // Mostra Container do Modal Dimensiona ele para toda a Extensão da Tela
        node = xGet.get('#divContainModal');
        xGet.DisplayBlock();
        xDoc.extendToScreen(node);
    }
    else if (toDo == 'hide') {
        // Esconde Shadow
        node = xGet.get('#divShadow');
        node.style.width = '10px';
        node.style.heigth = '10px';
        xGet.DisplayNone();
        

        // Esconde Container do Modal
        node = xGet.get('#divContainModal');
        node.style.width = '10px';
        node.style.heigth = '10px';
        xGet.DisplayNone();
    }
};




/* **************************************************************
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() {
    node = xGet.get('#' + xjs_IDModalOpen);
    node.innerHTML = '';
    node.className = 'ModalLoading';

    minH = xjs_ModalOnLoadH + 'px';
    minW = xjs_ModalOnLoadW + 'px';
    classH = 'minHeight';
    classW = 'minWidth';

    // Seta Altura e Largura Minima no DivModal
    xGet.setCss(classH, minH);
    xGet.setCss(classW, minW);
};




/* **************************************************************
Faz Ajuste de Posição em que o Modal deve Permanecer
************************************************************** */
function setModalCoords() {
    xDoc.setNodePosition(xGet.get('#' + xjs_IDModalOpen), 'Center', '', '');
};





























/* **************************************************************
Esta Função é responsavel pela criação do conteúdo do Modal
************************************************************** */
function LoadModal(param) {
    var modalNode = xGet.get('#' + xjs_IDModalOpen); // Node onde deve ser Carregado o Conteudo do Modal
    var modalType = param[2]; // Nome da Página ASPX na Pasta _modal à ser carregada
    var modalParam = param[3]; // Parametros à serem enviados para a Página a ser Carregada
    var isXML = xjs_isApplicationXml;

    // Usado para Corrigir Navegadores que usam Outra forma de Codificação no Head
    while (modalParam.indexOf('&#38;') != -1) { modalParam = modalParam.replace('#38;', ''); }


    // Se for IE deve Restagar como HTML
    if (xDoc.userBrowser == "IE") { isXML = false; }

    // Configura Objeto de Configuração
    RequestConfig.setConfig('POST', isXML, false, '', '');
    // Adiciona Ações para cada Estágio
    if (param.length >= 5) { RequestConfig.setState(1, param[4], true); }
    if (param.length >= 6) { RequestConfig.setState(2, param[5], true); }
    if (param.length == 7) { RequestConfig.setState(3, param[6], true); }

    // Finaliza Configurações
    RequestConfig.setState(4, 'onLoadModal();', true);

    // Seta Ações em caso de Erro
    if (xjs_isModalDebug == true) { RequestConfig.execInError('alert("Erro n: " + intStatus); showHideModal("hide");'); }
    else { RequestConfig.execInError('onModalError();'); }


    // Determina Página da Requisição
    var urlPage = '../_modal/' + modalType + '.aspx?' + modalParam;

    // Executa Requisição
    XmlHttp.LoadPage(urlPage, modalParam, modalNode);
    // Refaz Objeto em caso de IE
    if (xDoc.userBrowser == "IE") { XmlHttp = new objXmlHttpRequest(RequestConfig); }
};






function onLoadModal() {
    modalNode = xGet.get('#' + xjs_IDModalOpen);
    modalNode.className = 'ModalLoaded';
    setModalCoords();
};
function onModalError() { alert(xjs_ModalErrorMessage); showHideModal('hide'); };



function showNextModal(parameters) {
    var arrInfos = new Array();
    arrInfos[0] = 'show';
    arrInfos[1] = 'divModal';
    arrInfos[2] = 'ModalImagem';
    arrInfos[3] = parameters;
    LoadModal(arrInfos);
};

function showNextImage(parameters) {
    var arrInfos = new Array();
    arrInfos[0] = 'show';
    arrInfos[1] = 'divModal';
    arrInfos[2] = 'ModalSecao';
    arrInfos[3] = parameters;
    LoadModal(arrInfos);
};
