/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
function logoutUser(){
    sessionObj = new Object();
    sessionObj.key = readCookie('__snupK');
    sessionObj.user = Ext.decode(readCookie('__snupU'));
    sessionObj.browser = "";
    sessionObj.os = "";
    sessionObj.ip = "";

    var jObj = Ext.encode(sessionObj);

    Ext.Ajax.request({
        waitMsg: 'Please wait...',
        url: 'RequestHandler',
        params: {
            action: '5', //logout
            inObject: '4', //session
            jObject: jObj,
            sKey: readCookie('__snupK')
        },
        success: function(response){
            var result=eval(response.responseText);
            var successMsg = "You have successfully logged out. Goodbye!";
            var failMsg = "Sorry, could not log you out. Please try again.";

            switch(result){
                case 1:
                    eraseCookie('__snupU');
                    eraseCookie('__snupK');
                    eraseCookie('__cntE');
                    eraseCookie('__cntS');
                    eraseCookie('__usrE');
                    createCookie('__mType', 'SUCCESS', 0);
                    createCookie('__mText', successMsg, 0);
                    redirect("index.jsp");
                    break;
                case 0:
                    eraseCookie('__snupU');
                    eraseCookie('__snupK');
                    eraseCookie('__cntE');
                    eraseCookie('__cntS');
                    eraseCookie('__usrE');
                    createCookie('__mType', 'FAILURE', 0);
                    createCookie('__mText', 'Unauthorized! Please log in to use this feature.', 0);
                    redirect("index.jsp");
                    break;
                default:
                    //Ext.MessageBox.alert('Error', 'Sorry, could not log you out:\n'+result);
                    createCookie('__mType', 'FAILURE', 0);
                    createCookie('__mText', failMsg, 0);
                    break;
            }
        },
        failure: function(response){
            Ext.MessageBox.alert('Error', response.responseText);
        }
    });
}

//loading mask
function waitMask(el, wMsg){
    wMask = new Ext.LoadMask(el, {msg: wMsg, removeMask: true});

    return wMask;
}

function reloadContacts(){
        var mask = waitMask(tree2.getEl(), "Loading...");
//        mask.show();
        tree2.loader = new Ext.tree.TreeLoader({
            dataUrl:'RequestHandler',
            baseParams: {action:'8',
                         inObject:'1',
                         jObject:"{user: "+sessionUserObj+"}",
                         sKey: sessionKey
                        }
        });
        tree2.root.reload();
//        if(!tree2.root.isLoaded()){
//            mask.show();
//        } else {
//            mask.hide();
//        }
    }

function forgotPassword(){

    requestPassMsg = new Ext.form.Label({
        html:'Enter your email address below and we will send you a link <br /> to reset your password',
        style: 'font-family:tahoma;font-size:12px;text-align:right;line-height:24px;'
    });

    requestPassEmailField = new Ext.form.TextField({
        fieldLabel : 'Email: ',
        labelSeparator: '',
//        labelStyle: 'font-weight:bold;text-align:right;padding-right:10px;width:40px;',
        hideLabel: true,
        name       : 'remail',
        emptyText: 'Email',
        blankText: 'Email Required',
        invalidText: 'Email Invalid',
        allowBlank: false,
        minLength: 6,
        regex: /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/,
        //            msgTarget: 'title',
        anchor: '100%'
    });

    requestPassFormPanel = new Ext.form.FormPanel({
       border: false,
       bodyStyle: 'padding:10px',
       buttonAlign: 'right',
       items:[ requestPassMsg, requestPassEmailField ],
       buttons:[new Ext.Button({text: '<b>Submit</b>', handler: requestPassword}),
       new Ext.Button({text: '<b>Close</b>', handler: function(){requestPassFormPanel.getForm().reset();requestPassWindow.close()}})]
    });

    requestPassSentFormPanel = new Ext.form.FormPanel({
        border: false,
        bodyStyle: 'padding:10px',
        buttonAlign: 'right',
        items:[ new Ext.form.Label({style: 'font-family:tahoma;font-size:12px;text-align:right;line-height:24px;',html:'<span><b>Password Reset Sent</b></span><br /><span>Please check your <span id="lemail">name@email.com</span> email.<br />We\'ve sent you a link to reset your password.</span>'}) ],
        buttons:[new Ext.Button({text: ' Close ', handler: function(){requestPassSentWindow.close()}})]
    });

    requestPassWindow = new Ext.Window({
        title: 'Forgot Password',
        layout: 'fit',
        width: 360,
        height: 180,
        closeAction: 'hide',
        items:[ requestPassFormPanel ]
    });

    requestPassSentWindow = new Ext.Window({
        title: 'Forgot Password',
        layout: 'fit',
        width: 360,
        height: 180,
        closeAction: 'hide',
        items:[ requestPassSentFormPanel ]
    });

    requestPassWindow.show();
}

function requestPassword(){
    if(requestPassFormPanel.getForm().isValid()){
        var mask = waitMask(requestPassFormPanel.getEl(), "Requesting...");
            mask.show();

            requestObj = new Object();
            requestObj.email = requestPassEmailField.getValue();

            var jObj = Ext.encode(requestObj);

        Ext.Ajax.request({
                waitMsg: 'Please wait...',
                url: 'RequestHandler',
                params: {
                    action: '14', //password request
                    inObject: '0', //user
                    jObject: jObj
                },
                success: function(response){
                    var result=eval(response.responseText);
                    switch(result){
                        case 1:
                            mask.hide();
                            requestPassWindow.hide();
                            requestPassSentWindow.show();
                            Ext.get('lemail').dom.innerHTML = requestPassEmailField.getValue();
                            requestPassFormPanel.getForm().reset();
                            break;
                        case 2:
                            mask.hide();
                            Ext.MessageBox.alert('Error', 'Link already sent');
                            break;
                        case 4:
                            mask.hide();
                            Ext.MessageBox.alert('Error', 'Internal');
                            break;
                        default:
                            //show error msg
                            var error=response.responseText;
                            Ext.MessageBox.alert('Error', 'Unable so send link. Please Retry');
                            break;
                    }
                },
                failure: function(response){
                    //show errors
                    var result=response.responseText;
                    Ext.MessageBox.alert('Error', 'Unable so send link.');
                }
            });
        } //else
        //Ext.MessageBox.alert('Error', 'Email Invalid');
}

// Add the additional 'advanced' VTypes
Ext.apply(Ext.form.VTypes, {
    daterange : function(val, field) {
        var date = field.parseDate(val);

        if(!date){
            return;
        }
        if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
            var start = Ext.getCmp(field.startDateField);
            start.setMaxValue(date);
            start.validate();
            this.dateRangeMax = date;
        }
        else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
            var end = Ext.getCmp(field.endDateField);
            end.setMinValue(date);
            end.validate();
            this.dateRangeMin = date;
        }
        /*
         * Always return true since we're only using this vtype to set the
         * min/max allowed values (these are tested for after the vtype test)
         */
        return true;
    },

    birthdate : function(val, field){
        var dt = field.parseDate(val);

        if(!dt){
            return;
        }
        if(dt>=new Date()){            
            return false;
        }
        td = new Date();
        st = td.add(Date.YEAR, -95);
        ed = td.add(Date.YEAR, -6);
        if(!dt.between(st, ed)){
            return false;
        }
        return true;
    },

    birthdateText: 'Should be between 6 and 95 years',

    password : function(val, field) {
        if (field.initialPassField) {
            var pwd = Ext.getCmp(field.initialPassField);
            return (val == pwd.getValue());
        }
        return true;
    },

    passwordText : 'Passwords do not match'
});
