
var UserAPI = {

    userId        : 0,
    email         : "",
    downloadToken : "",
    confirmed     : false,
    cookie        : new Array(),

    //email, password
    login : function(m, p) {
        //message( "Login. \n\nEmail: " + m + "\npassword: " + p );
        if (!UserAPI.is_logged_in()) {
            UserAPI._animate_start();
            $.post("/login/proxy.php", {
                action : "login",
                email : m,
                password : p
            },
            function(result) {
                for ( var key in result.data ) {
		  
                    if (result.data[key].loginInfo.userId > 0) {

                        UserAPI._animate_stop();
                        if (result.data[key].loginInfo.status != "VERIFIED") {
                            login_unverified();
                            return false;
                        }
                        //alert(result.data[key].loginInfo.userId);
                        UserAPI.userId        = result.data[key].loginInfo.userId;
                        UserAPI.email         = result.data[key].loginInfo.email;
                        UserAPI.downloadToken = result.data[key].loginInfo.downloadToken;
                    }
                }
                for ( var key in result.cookie ) {
                    var curr_cookie = result.cookie[key];
                    var domain = document.domain;
                    domain = domain.replace(/(^www.|^)/i, '.');
                    curr_cookie += "; domain=" + domain + "; path=/";
                    document.cookie = curr_cookie;
                    UserAPI.cookie.push(result.cookie[key]);
                }
                MyPopup.hideModalWindow();
                UserAPI._just_login_actions();
            },
            "json");
            return true;
        }
        return false;
    },

    forgot : function(m) {
        UserAPI._animate_start();
        $.post("/login/proxy.php", {
            action : "forgot",
            email : m,
            token: "af4acfe8-1818-4ad9-aa22-6e16fd8f64ff"
        }, function(result, stat) {
            UserAPI._animate_stop();
            if (result.length > 2) {
                message("Your new password will be emailed to you.");
            }
            else {
                message("Email account not found. Please register.");
            }
        }, "html");
        return true;
    },

    //email, password, firstName, lastName, phone, company, title, function, industry, country
    register : function(m, p, fn, ln, ph, comp, ct, t, i, c) {

        if (!UserAPI.is_logged_in()) {
            UserAPI._animate_start();
            $.post("/login/proxy.php", {
                "action" : "register",
                email : m,
                password : p,
                firstName : fn,
                lastName : ln,
                company: comp,
                title: ct,
                "function" : t,
                phone : ph,
                country : c,
                industry: i
            //product: prod
            }, function(result, stat) {
                if (result.data[0].loginInfo.userId > 0) {
                    UserAPI._animate_stop();
                    //MyPopup.hideModalWindow();
                    UserAPI._register_actions();
                }
            //alert(dump(result));
            }, "json");
            return true;
        }
        return false;
    },

    //email, password, firstName, lastName, phone, country
    update : function(m, p, fn, ln, ph, c, z) {
        if (UserAPI.is_logged_in()) {
            UserAPI._animate_start();
            $.post("/login/proxy.php", {
                "action" : "update",
                email : m,
                password : p,
                firstName : fn,
                lastName : ln,
                phone : ph,
                country : c
            }, function(result) {
                if (result.data[0].loginInfo.userId > 0) {
                    UserAPI.userId        = result.data[0].loginInfo.userId;
                    UserAPI.email         = m;
                    UserAPI.downloadToken = result.data[0].loginInfo.downloadToken;
                    UserAPI._animate_stop();
                    UserAPI._update_actions();
                }
            }, "json");
            return true;
        }
        return false;
    },

    logout : function() {
        if (UserAPI.is_logged_in() == false) {
            return false;
        }
        UserAPI._animate_start();
        $.post("/login/proxy.php", {
            "action" : "logout"
        }, function(result, stat) {
            UserAPI.userId        = 0;
            UserAPI.email         = "";
            UserAPI.downloadToken = "";
            UserAPI.confirmed     = false;
            var domain = document.domain;
            domain = domain.replace(/(^www.|^)/i, '.');
            $.cookie("restoken", null, {
                domain: domain,
                path: '/'
            });
            UserAPI._just_logout_actions();
        }, "html");
    },

    is_logged_in : function() {
 
        if (UserAPI.userId > 0) {
            return true;
        }
        var data = $.cookie("restoken");
        //message(data);
        // alert(data);
        if (data != null && data.length > 0) {
            var parts=data.split(":");
            UserAPI.userId        = parts[0];
            UserAPI.email         = parts[1];
            UserAPI.downloadToken = parts[2];
            return true;
        }
        return false;
    },

    state : function() {
        if(UserAPI.is_logged_in()) {
            UserAPI._login_actions();
            return true;
        }
        UserAPI._logout_actions();
        return false;
    },

    _animate_start : function() {
        $('#top_links').html(loader);
        $(".podPress_content").css("display", "none");
    },
    _animate_stop : function() {
        $('#top_links').html('');
        $(".podPress_content").css("display", "block");
    },

    _register_actions : function() {
        protect_just_register_actions();
    },
    _update_actions : function() {
        message('Your data has been updated.');
    },

    _just_login_actions : function() {
        protect_just_login_actions();
    },
    _just_logout_actions : function() {
        protect_just_logout_actions();
    },
    _login_actions : function() {
        protect_user_actions();
    },
    _logout_actions : function() {
        protect_anon_actions();
    }

}

$.ajaxSetup({
    error:function(x,e){
        if(x.status==0 || x.status==401){
            if (MyPopup.visible == true) {
                invalidLogin();
            }
            else {
                UserAPI._animate_stop();
                message("Wrong username or password.");
            }
        }else if(x.status==404){
            message('Requested URL not found.');
        }else if(x.status==409){
            $('#lightbox_email').css('background', '#ff0');
            $('#lightbox_email').focus();
            message('A user with this email already exists.');
        }else if(x.status==500){
            message('Internel Server Error.');
        }else if(e=='parsererror'){
            message('Connection problem. Please try again later.');
        //message('Error.\nParsing JSON Request failed.\n'+x.responseText);
        }else if(e=='timeout'){
            message('Request Time out.');
        }else {
            message('Unknow Error.\n'+x.responseText);
        }
    }
});
function message(txt) {
    alert(txt);
    if (UserAPI.userId > 0) {
        UserAPI._login_actions();
    }
    else {
        UserAPI._logout_actions();
    }
}
