
/* LOGIN */
function MudaBase(){
	if(document.getElementById('dbList')){
	    if(document.getElementById('dbList').value != '-1'){
		    var codigoRequest = oAjax.init('login.php5?view=ajax', AJAX_ASYNC, AJAX_XML, AJAX_POST);
		    setLoad(codigoRequest, 'carregandoUnidades');
			var formKey = createFormKey(('loadUnidades'+document.getElementById('dbList').value));
		    oAjax.setQueryString(codigoRequest, formKey.name, formKey.value);
		    oAjax.setQueryString(codigoRequest, "ViewLoginAjax[method]", 'loadUnidades');
		    oAjax.setQueryString(codigoRequest, 'base', document.getElementById('dbList').value);
		    oAjax.setUserFunction(codigoRequest, CallUnidades);
		    oAjax.broadcast(codigoRequest);
		}else{
		    var select = document.getElementById('lstUnidades');
		    select.options.length = 0;
			select.options.add(new Option('--- Sem Unidades', 'null'));
		}
	}
}

function BuscaUnidades(base, selectName, unidadeSelecionada){
    if(base != ''){
	    var codigoRequest = oAjax.init('login.php5?view=ajax', AJAX_ASYNC, AJAX_XML, AJAX_POST);
	    setLoad(codigoRequest, 'carregandoUnidades');
	    var formKey = createFormKey(('loadUnidades'+base));
	    oAjax.setQueryString(codigoRequest, formKey.name, formKey.value);
	    oAjax.setQueryString(codigoRequest, "ViewLoginAjax[method]", 'loadUnidades');
	    oAjax.setQueryString(codigoRequest, 'base', base);
	    oAjax.setUserFunction(codigoRequest, CallUnidades);
	    oAjax.setInvokeParam(codigoRequest, selectName);
	    oAjax.setInvokeParam(codigoRequest, unidadeSelecionada);
	    oAjax.broadcast(codigoRequest);
	}else{
	    var select = document.getElementById(selectName);
	    select.options.length = 0;
		select.options.add(new Option('--- Sem Unidades', 'null'));
	}
}

function CallUnidades(codigoRequest, params){
	
    if(params[0] != null){
	    var select = document.getElementById(params[0]);
	}else{
	    var select = document.getElementById('lstUnidades');
	}
	iterator = new XMLIterator(oAjax.xml[codigoRequest]);
	
	var conectouComSusseso = true;
	try{
	    meta = iterator.getMetadata();
    }catch(e){
        conectouComSusseso = false;
    }
    
    if(!conectouComSusseso){
        alert('Conexão com Servidor Indisponível no Momento.');
        select.options.length = 0;
		select.options.add(new Option('--- Sem Unidades', 'null'));
		 try{
		    document.getElementById('btnEntrar').disabled = true;
		}catch(e){
		    document.getElementById(params[0]+'btnEntrar').disabled = true;
		}
    }else{    
        try{
            document.getElementById('btnEntrar').disabled = false;
        }catch(e){
            document.getElementById(params[0]+'btnEntrar').disabled = false;
        }
        
	    if (parseInt(meta.errorlevel) > 0){
		    alert(meta.errormsg);
	    } else {
		    if (parseInt(meta.errorcode) != 0){
			    alert(meta.errormsg);
		    }

		    data = iterator.getData();

		    if(data.listaunidades.length > 0){
			    select.options.length = 0;
			    for (i=0; i<data.listaunidades.length; i++){
				    desc = data.listaunidades[i].CODIGOUNIDADE + 
				            ' - ' + data.listaunidades[i].NOMEEMPRESAREDUZIDO + 
				            ' | ' + data.listaunidades[i].NOMEUNIDADE;
				    cod  = data.listaunidades[i].CODIGOEMPRESA + 
				            ',' + data.listaunidades[i].CODIGOUNIDADE;
				    select.options.add(new Option(desc, cod));
			    }
		    }else{
			    select.options.length = 0;
			    select.options.add(new Option('--- Sem Unidades', 'null'));
		    }
	    }
	    if(params[1] != null){
	        select.value = params[1];
	    }else{
	        if(unidadeSelecionada != '-1'){
	            select.value = unidadeSelecionada;
	        }
	    }
	}
}



function showPanel(PanelName,PanelNameBody){
	document.getElementById(PanelName).style.display = 'block';
	document.getElementById(PanelNameBody).style.display = 'block';
}

function closePanel(panelName, PanelNameBody){
	document.getElementById(panelName).style.display = 'none';
	document.getElementById(PanelNameBody).style.display = 'none';
}

/**
 * Carrega os parametros necessários e 
 * Exibe a janela de recuperação de senha
 */
function showWindowLembrar(login) {
    if (login) {
        ResetPasswd.currentDbList       = 'dbList_' + login;
        ResetPasswd.currentLsUnidades   = 'lstUnidades_' + login;
        ResetPasswd.currentUsr          = 'usr_' + login;
    } else {
        ResetPasswd.currentDbList       = 'dbList';
        ResetPasswd.currentLsUnidades   = 'lstUnidades';
        ResetPasswd.currentUsr          = 'usr';
    }
    ResetPasswd.win.show();
}

/**************************
 * Início do uso do ExtJs *
 **************************/
 
Ext.onReady(function() {
    Ext.QuickTips.init(); //singleton
});

/**
 * objeto "Resetar Senha"
 */
var ResetPasswd = {

    //id/name dos campos a obter dados jah preenchidos
    currentDbList: null,
    currentLsUnidades: null,
    currentUsr: null,

    /**
     * Janela contento o formulário de reset da senha
     */
    win: null,
    
    /**
     * ExtJs Data Store para o combo de bases de dados
     */
    storeComboBases: new Ext.data.JsonStore({
        url : 'login.php5',
        baseParams : {
            'view': 'ajax',
            'ViewLoginAjax[method]': 'getDbList'
        },
        fields : ['id', 'descricao']
    }),
    
    /**
     * ExtJs Data Store para o combo de empresas e unidades
     */
    storeComboUnidades: new Ext.data.Store({
        autoLoad: false,
        reader: new Ext.data.ArrayReader({}, [
            {name: 'id'},
            {name: 'descricao'}
        ])
    }),

    /**
     * Callback para a exibição da janela do formulário
     */
    callbackShowWindow: function(me) {
        dbListValue = Ext.get(ResetPasswd.currentDbList).getValue();
        if (dbListValue != '-1') {
            comboBases = Ext.getCmp('rpBaseDadosCmb');
            comboBases.setValue( dbListValue );
            comboBases.fireEvent('select', comboBases);
        }
        
        usrValue = Ext.get(ResetPasswd.currentUsr).getValue();
        if (usrValue != '') {
            Ext.getCmp('rpLogin').setValue(usrValue);
        }
    },

    /**
     * Callback para a seleção de base de dados no combobox
     */
    callbackSelectComboBases: function(me, rec, i) {
        Ext.Ajax.request({
            url:'login.php5', 
            params:{
                view: 'ajax', 
                'ViewLoginAjax[method]': 'getUnidades', 
                base: me.getValue()
            },
            callback: ResetPasswd.afterSelectComboBases
        })
    },
    
    callbackSuccessSubmit: function(frm, act) {
        ResetPasswd.win.hide();
        Ext.getCmp('resetForm').getForm().reset();
        Ext.MessageBox.show({
            title: 'Aviso',
            msg: act.result.message,
            icon: Ext.MessageBox.INFO,
            buttons: Ext.MessageBox.OK
        });
    },

    callbackFailureSubmit: function(frm, act) {
        try {
            var message = act.result.message;
        } catch(e) {
            var message = 'Erro ao enviar senha. Por favor, tente novamente mais tarde.';
        }
        Ext.MessageBox.show({
            title: 'Erro',
            msg: message,
            icon: Ext.MessageBox.ERROR,
            buttons: Ext.MessageBox.OK
        });
    },
    
    /**
     * Callback para a requisição ajax após a seleção de base
     */
    afterSelectComboBases: function(op, success, resp) {
        if (success) {
            storeEU = new Array();
            result = Ext.util.JSON.decode(resp.responseText);
            for (i = 0; i < result.length; i++) {
                storeEU[i] = new Array(
                    result[i].CODIGOEMPRESA 
                            + ',' + result[i].CODIGOUNIDADE,
                    result[i].CODIGOUNIDADE 
                            + ' - ' + result[i].NOMEEMPRESAREDUZIDO 
                            + ' | ' + result[i].NOMEUNIDADE
                )
            }
            ResetPasswd.storeComboUnidades.loadData(storeEU);

            lstUnidadesValue = Ext.get(ResetPasswd.currentLsUnidades).getValue();
            rpUnidade = Ext.getCmp('rpUnidadeCmb');
            
            re = new RegExp('^'+lstUnidadesValue+'$');
            if ( (lstUnidadesValue != 'null') && (rpUnidade.store.query('id', re).length == 1) ) {
                rpUnidade.setValue(lstUnidadesValue);
            } else {
                rpUnidade.setValue(null);
            }
        }
    },
    
    /**
     * Inicializa a janela e o formulario
     */
    init: function(params) {
        //Cria a janela com o formulário para resetar a senha
        ResetPasswd.win = new Ext.Window({
            id: 'resetWindow',
            title: 'Recuperar senha',
            closeAction: 'hide',
            resizable: false,
            width: 350,
            items: [
                new Ext.FormPanel({
                    id: 'resetForm',
                    url: 'login.php5',
                    baseParams: {
                        view: 'ajax', 
                        'ViewLoginAjax[method]': 'novaSenha' 
                    },
                    labelWidth: 120,
                    frame: true,
                    bodyStyle: 'padding:5px 5px 0',
                    width: 336,
                    autoHeight: true,
                    defaults: {
                        width: 186,
                        allowBlank: false
                    },
                    collapsible: false,
                    animCollapse: false,
                    monitorValid: true,
                    buttonAlign: 'right',
                    items: [
                        {
                            border : false,
                            width: 330,
                            html : 'Preencha os dados abaixo para enviarmos uma nova senha para seu endereço de e-mail.<br/>'
                                    + 'O endereço de e-mail deve ser o mesmo cadastrado no sistema.',
                            bodyStyle : 'padding-bottom:20px;'
                        }, {
                            xtype: 'combo',
                            id: 'rpBaseDadosCmb',
                            hiddenName: 'rpBaseDados',
                            fieldLabel: 'Base',
                            editable: false,
                            triggerAction: 'all',
                            listWidth: 310,
                            listAlign: 'tr-br',
                            valueField: 'id',
                            displayField: 'descricao',
                            hideLabel: (parseInt(params.modoProducao) == 1) ? (true) : (false),
                            hidden: (parseInt(params.modoProducao) == 1) ? (true) : (false),
                            emptyText: '--- Selecione',
                            store: ResetPasswd.storeComboBases,
                            listeners: {
                                select: ResetPasswd.callbackSelectComboBases
                            }
                        }, {
                            xtype: 'combo',
                            id: 'rpUnidadeCmb',
                            hiddenName: 'rpUnidade',
                            fieldLabel: 'Unidade',
                            triggerAction : 'all',
                            editable: false,
                            listWidth: 310,
                            listAlign: 'tr-br',
                            valueField: 'id',
                            displayField: 'descricao',
                            mode: 'local',
                            forceSelection: true,
                            emptyText: '--- Selecione',
                            store: ResetPasswd.storeComboUnidades
                        }, {
                            xtype: 'textfield',
                            id: 'rpLogin',
                            fieldLabel: 'Usuário'
                        }, {
                            xtype: 'textfield',
                            id: 'rpEmail',
                            vtype: 'email',
                            fieldLabel: 'E-mail cadastrado'
                        }
                    ],
                    buttons: [
                        {
                            id: 'btnEnviarReset',
                            text:'Enviar',
                            formBind: true,
                            handler: function(){
                                Ext.MessageBox.wait('Enviando dados', 'Aguarde...');
                                Ext.getCmp('resetForm').getForm().submit({
                                    success: ResetPasswd.callbackSuccessSubmit,
                                    failure: ResetPasswd.callbackFailureSubmit
                                });
                            }
                        }, {
                            id: 'btnFecharReset',
                            text:'Fechar',
                            handler: function(){
                                Ext.getCmp('resetWindow').hide();
                                Ext.getCmp('resetForm').getForm().reset();
                            }
                        }
                    ]
                })
            ]
            ,
            listeners: {
                show: ResetPasswd.callbackShowWindow
            }
        });
        
    }
}


