/**
 * PlayAllTrivia
 *
 * Site JS: main.js
 *
 * Author: Alex Lilly (alilly@mogopogo.net)
 *
 * Last Edit:
 */

if (!window.MPogo) {
    window.MPogo = {
        $J: null
    };
}

var PAT = {
    LOGGED_IN: false,
    
    login: function() {
        MPogo.$J.get('/login', {}, function(data) {
            if (data == 'logged_in') {
                PAT.LOGGED_IN = true;
                PAT.loadPlayAllTrivia();
                return;
            }
            
            MPogo.$J('#login').html(data).overlay({
                top: '15%',
                mask: {
                    color: '#000',
                    loadSpeed: 220,
                    opacity: 0.5
                },
                // oneInstance: false,
                closeOnClick: false,
                load: true,
                
                onLoad: function() {
                    MPogo.$J('#loginform').submit(function() {
                        var $login = MPogo.$J('#loginform'), data = {
                            site: 'mogopogo',
                            cmd: 'login',
                            responsetype: 'json',
                            username: MPogo.$J('input[name="username"]', $login).val(),
                            password: MPogo.$J('input[name="password"]', $login).val(),
                            loginsubmit: 1,
                            dummy: (new Date()).getTime()
                        };
                        
                        MPogo.$J.post('/external', data, function(response) {
                            switch(response.result) {
                                case 'success':
                                    MPogo.$J('#login').data('overlay').close();
                                    PAT.refreshUI();
                                    PAT.loadPlayAllTrivia();
                                    break;
                                
                                case 'error':
                                    alert('Invalid Username/Password!');
                                    break;
                            }
                        }, 'json');
                        
                        return false;
                    });
                    
                    MPogo.$J('#regform').submit(function() {
                        var $regform = MPogo.$J('#regform'),
                        fvar = function(name) {
                            return MPogo.$J('input[name="'+name+'"]', $regform).val();
                        },
                        data = {
                            site: 'mogopogo',
                            cmd: 'register',
                            username: fvar('username'),
                            password: fvar('password'),
                            fname: fvar('fname'),
                            lname: fvar('lname'),
                            email: fvar('email'),
                            gender: fvar('gender'),
                            zip: fvar('zip'),
                            birthday: fvar('bday_month')+'-'+fvar('bday_day')+'-'+fvar('bday_year'),
                            ads_optin: fvar('ads_optin'),
                            registersubmit: 1,
                            regfrom: 'p',
                            dummy: (new Date()).getTime()
                        }, $submit = MPogo.$J('input[type="submit"]', $regform);
                        
                        $submit.attr('disabled', 'disabled');
                        
                        MPogo.$J.post('/external', data, function(response) {
                            var overlay = MPogo.$J('#login').data('overlay');
                            
                            MPogo.$J('#regstatus').fadeOut();
                    
                            switch(response.result) {
                                case 'error':
                                    MPogo.$J('#regstatus').css({textAlign: 'center', fontWeight: 'bold', color: '#FF0000'}).html(response.message).fadeIn();
                                    $submit.attr('disbabled', '');
                                    break;
                                
                                case 'success':
                                    MPogo.$J('#loginwrapper').fadeOut().after('<div style="width: 800px;text-align: center;position: relative;top: 50%;">Thank You for registering</div>');
                                    setTimeout(function() { overlay.close(); }, 3000);
                                    break;
                            }
                        }, 'json');
                        
                        return false;
                    });
                    
                    MPogo.$J('#tos_agree').click(function() {
                        MPogo.$J('input[name="regsubmit"]').attr('disabled', 'disabled');
                        if (this.checked) {
                            MPogo.$J('input[name="regsubmit"]').attr('disabled', '');
                        }
                    });
                    
                    MPogo.$J('label[for="tos_agree"] a').click(function() {
                        window.open('http://www.mogopogo.com/info/tos');
                        return false;
                    });
                }
            });
        });
    },
    
    logout: function() {
        MPogo.$J.get('/logout', {}, function(response) {
            if (response == 'ok') {
                PAT.LOGGED_IN = false;
                PAT.refreshUI();
            }
        });
    },
    
    refreshUI: function() {
        MPogo.$J.get('/userlinks', {}, function(result) {
            MPogo.$J('#userlinks').html(result);
            MPogo.$J('#playalltrivia').html('<div id="placeholder"><div id="playbutton"><img src="/img/play.png" alt="Click to Play" /><br />Click to Play</div></div>');
        });
        
        // Reassign Handlers
        PAT.init();
    },
    
    loadPlayAllTrivia: function() {
        if (!PAT.LOGGED_IN) {
            PAT.login();
            return;
        }
        
        MPogo.$J.get('/app?cmd=launch&app_id=1', {dummy: (new Date()).getTime()}, function(data) {
            MPogo.$J('#placeholder').html(data);
            
            if (window.App) {
                // Define App context
                App.$context = MPogo.$J('#placeholder');
                
                App.init();
            }
        });
    },
    
    init: function() {
        MPogo.$J('#playbutton').click(function() {
            PAT.loadPlayAllTrivia();
        });
    }
};

MPogo.$J = jQuery.noConflict();

MPogo.$J(document).ready(function() {
    PAT.init();
});
