window.pemco = window.pemco || {};

/*
Various public functions related to users
*/
(function($) {
    var pub = pemco.user = {};



    pub.setupScroll = function() {
        var $pane = $('#profiles_list_pane');
        $pane.jScrollPane({
            dragMaxHeight: 14
        });
    }

    pub.toggleSubscription = function(imgID, checkboxID) {
        var objElement = document.getElementById(imgID);

        if (objElement != null) {
            if (objElement.src.indexOf('on.gif') > -1) {
                objElement.src = objElement.src.toString().replace('on.gif', 'off.gif');

                objElement = document.getElementById('chbSubscribe');
                if (objElement != null) {
                    objElement.checked = false;
                }
            }
            else {
                objElement.src = objElement.src.toString().replace('off.gif', 'on.gif');
                objElement = document.getElementById('chbSubscribe');
                if (objElement != null) {
                    objElement.checked = true;
                }
            }

        }
    }

    pub.togglePemcoMember = function(imgID, checkboxID) {
        var objElement = document.getElementById(imgID);

        if (objElement != null) {
            if (objElement.src.indexOf('on.gif') > -1) {
                objElement.src = objElement.src.toString().replace('on.gif', 'off.gif');

                objElement = document.getElementById('chbPemcoMember');
                if (objElement != null) {
                    objElement.checked = false;
                }
            }
            else {
                objElement.src = objElement.src.toString().replace('off.gif', 'on.gif');
                objElement = document.getElementById('chbPemcoMember');
                if (objElement != null) {
                    objElement.checked = true;
                }
            }

        }
    }

    /***************************************
    * Process User login - handle from popup login page
    ***************************************/
    pub.processLogin = function(strAjaxHandler) {

        var strErrorMessage = "";
        var strUsername = "";
        var strPassword = "";
        var strRemember = "";

        var objElement = document.getElementById("txtLoginUsername");
        if (objElement != null) strUsername = objElement.value;
        if (strUsername == "") strErrorMessage += "Please enter username. ";

        objElement = document.getElementById("txtPassword");
        if (objElement != null) strPassword = objElement.value;
        if (strPassword == "") strErrorMessage += "Please enter password. ";

        if (strErrorMessage != "") {
            parent.pemco.ajax.flash(strErrorMessage, "Error");
            return false;
        }

        objElement = document.getElementById("chbRemember");

        if (objElement != null) strRemember = objElement.value;

        var data = {
            'action': 'login',
            'username': strUsername,
            'password': strPassword,
            'remember': strRemember
        };

        jQuery.ajax({
            type: "POST",
            url: strAjaxHandler,
            dataType: "json",
            data: data,
            success: function(response) {
                if (response) {
                    if (response.status == "Success") {

                        parent.pemco.ajax.flash(response.message, response.status);

                        //Update User info box
                        objElement = parent.document.getElementById("divUserStatusText");

                        if (objElement != null) {

                            objElement.innerHTML = response.html;

                            pemco.user.showCreds();
                        }

                        pemco.user.closeLightboxPopup();

                        //Now Check If We're on contest page
                        if ($('.vote_link').html() != null) {
                            window.location.reload();
                        }
                    }
                    else {
                        parent.pemco.ajax.flash("Invalid username or password.", "Error");
                    }
                }
            }
    ,
            error: function() { parent.pemco.ajax.flash("Fail to process request.", "Error"); }
        });

        return false; //prevent propagation
    }

    pub.getMyAccountDetails = function(strAjaxHandler) {

        var strHtml = "";

        var data = { 'action': 'get_my_account' };

        //Hide background
        pemco.home.hideBackground(1000);

        jQuery.ajax({
            type: "POST",
            url: strAjaxHandler,
            dataType: "text",
            data: data,
            success: function(response) {
                if (response) {
                    strHtml += response;

                    var objElement = document.getElementById("my_profiles_panel");

                    if (objElement != null) {
                        objElement.innerHTML = strHtml;
                        setTimeout(function() { pemco.user.setupScroll() }, 1000);
                    }


                }

            },
            error: function() { pemco.ajax.flash("Failed to process request.", "Error"); },
            complete: function() { pemco.bbq.loadComplete('my_account'); }
        });

        return strHtml;
    }

    /**********************************************
    Update User Account
    **********************************************/
    pub.updateAccount = function(strAjaxHandler) {
        var first_name = "";
        var username = "";
        var email = "";
        var password = "";
        var confirmPassword = "";
        var is_pemco_member = false;
        var is_subscribe = false;
        var zip_code = "";
        var strErrorMessage = "";

        //Username
        var objElement = document.getElementById("txtUsername");
        if (objElement != null) username = objElement.value;
        if (username == "" || username == "Username") strErrorMessage += "Please enter username. ";

        //First Name
        objElement = document.getElementById("txtFirstName");
        if (objElement != null) first_name = objElement.value;
        if (first_name == "" || first_name == "First Name") strErrorMessage += "Please enter first name. ";

        //Email
        objElement = document.getElementById("txtEmail");
        if (objElement != null) email = objElement.value;
        if (email == "" || email == "E-mail") {
            strErrorMessage += "Please enter email. ";
        }
        else if (email.indexOf("@") == -1 && email.indexOf(".") == -1) {
            strErrorMessage += "Please enter valid email. ";
        }

        //Subscribe
        objElement = document.getElementById("chbSubscribe");
        if (objElement != null) is_subscribe = objElement.checked;

        //Is Pemco Member
        objElement = document.getElementById("chbPemcoMember");
        if (objElement != null) is_pemco_member = objElement.checked;

        objElement = document.getElementById("txtZipCode");
        if (objElement != null) zip_code = objElement.value;

        //Password
        objElement = document.getElementById("txtNewPassword");
        if (objElement != null) password = objElement.value;

        //Confirm Password
        objElement = document.getElementById("txtConfirmPassword");
        if (objElement != null) confirmPassword = objElement.value;

        if (password != confirmPassword) {
            strErrorMessage += "Password does not match.<br/>";
        }

        if (strErrorMessage != "") {
            pemco.ajax.flash(strErrorMessage, "Failure");
            return false;
        }

        var data = {
            'action': 'update_account',
            'first_name': first_name,
            'username': username,
            'email': email,
            'new_pass': password,
            'pemco_member': is_pemco_member,
            'subscribe': is_subscribe,
            'zip_code': zip_code
        };

        jQuery.ajax({
            type: "POST",
            url: strAjaxHandler,
            dataType: "json",
            data: data,
            success: function(response) {
                if (response) {
                    if (response.status == "Success") {
                        //Update DivUserInfo
                        var objElement = document.getElementById("divUserStatusText");

                        if (first_name.length > 7) {
                            first_name = first_name.substring(0, 4) + "...";
                        }

                        if (objElement != null) {
                            objElement.innerHTML = "<p class=\"text\">" +
                                                   "Welcome <a href=\"default.aspx#my_account\" style=\"text-decoration:underline; font-size:11px;\" title=\"My Account\">" + first_name + "</a> " +
                                                   "| <a href=\"javascript:pemco.user.closeLightboxPopup();\" onclick=\"javascript:return confirm('Are you sure that you want to logout?');\">Logout</a>" +
                                                   "</p>";
                        }

                    }

                    pemco.ajax.flash(response.message, response.status);
                }
            }
    ,
            error: function() { pemco.ajax.flash("Failed to update account info.", "Error"); }
        });

        return false; //Prevent Propagation
    }

    /***********************************************************************
    This function process new user registration
    If registration is success, then automatically logged them in
    ***********************************************************************/
    pub.registerNewAccount = function(strAjaxHandler) {
        var strUsername = "";
        var strPassword = "";
        var strConfirmPassword = "";
        var strFirstName = "";
        var strLastName = "";
        var strEmail = "";
        var strZipCode = "";
        var strPemcoMember = "";
        var strSubcribe = "";

        var strErrorMessage = "";

        //---- Form Validation --------------------------------------------
        //Username
        var objElement = document.getElementById("txtUsername");
        if (objElement != null) strUsername = objElement.value;
        if (strUsername == "" || strUsername == "Username") strErrorMessage += "Enter username. ";

        //First Name
        objElement = document.getElementById("txtFirstName");
        if (objElement != null) strFirstName = objElement.value;

        if (strFirstName == "" || strFirstName == "First Name") strErrorMessage += "Enter your first name. ";

        //Last Name
        objElement = document.getElementById("txtLastName");
        if (objElement != null) strLastName = objElement.value;

        //if (strLastName == "" || strLastName == "Last Name") strErrorMessage += "Enter last name. ";

        //Email Address
        objElement = document.getElementById("txtEmail");
        if (objElement != null) strEmail = objElement.value;

        if (strEmail == "") strErrorMessage += "Enter email address.";
        else if (strEmail.indexOf("@") == -1 && strEmail.indexOf(".") == -1) strErrorMessage += "Invalid email address. ";

        //Subscription
        objElement = document.getElementById("hdnSubscribe");
        if (objElement != null) strSubcribe = objElement.value;

        //Pemco Member
        objElement = document.getElementById("hdnMember");
        if (objElement != null) strPemcoMember = objElement.value;

        //Zip Code
        objElement = document.getElementById("txtZipCode");
        if (objElement != null) strZipCode = objElement.value;

        if (strZipCode == "" || strZipCode == "Zip Code") strErrorMessage += "Enter zip code. ";

        //Password
        objElement = document.getElementById("txtPassword");
        if (objElement != null) strPassword = objElement.value;
        if (strPassword == "") strErrorMessage += "Enter password. ";

        //Confirm Password
        objElement = document.getElementById("txtPasswordConfirm");
        if (objElement != null) strConfirmPassword = objElement.value;
        if (strConfirmPassword == "") strErrorMessage += "Confirm password. ";
        if (strPassword != strConfirmPassword) strErrorMessage += "Confirm password does not match. ";

        //Stop if failed
        if (strErrorMessage != "") {
            pemco.ajax.flash(strErrorMessage, "Error");
            return false;
        }

        var data = {
            'action': 'user_registration',
            'username': strUsername,
            'password': strPassword,
            'first_name': strFirstName,
            'last_name': strLastName,
            'email': strEmail,
            'zip_code': strZipCode,
            'subscription': strSubcribe,
            'pemco_member': strPemcoMember
        };

        jQuery.ajax({
            type: "POST",
            url: strAjaxHandler,
            dataType: "json",
            data: data,
            success: function(response) {
                if (response) {

                    if (response.status == "Success") {

                        pemco.ajax.flash("You have successfully registered for an account.", response.status);

                        //Update divUserInfo
                        objElement = document.getElementById("divUserStatusText");
                        if (objElement != null) {

                            objElement.innerHTML = response.html;

                            pemco.user.showCreds();
                        }

                        //Hide registration box
                        //lightbox.hide();
                        pemco.user.closeLightboxPopup();

                        //window.location.reload();
                    }
                    else {
                        pemco.ajax.flash(response.message, response.status);
                    }
                }
            }
        ,
            error: function() { pemco.ajax.flash("Failed to register new user.", "Failure"); }
        });

        return false; //Prevent propagation
    }

    /**********************************************
    Retrieval Password 
    **********************************************/
    pub.resendPassword = function(strAjaxHandler) {
        var strEmail = "";

        var objElement = document.getElementById("txtForgetEmail");
        if (objElement != null) strEmail = objElement.value;

        if (strEmail == "" || strEmail == "Email") {
            pemco.ajax.flash("Please enter your registered email address below.", "Error");
            return false;
        }

        var data = { 'action': 'resend_password', 'email': strEmail };

        jQuery.ajax({
            type: "POST",
            url: strAjaxHandler,
            dataType: "json",
            data: data,
            success: function(response) {
                if (response) {

                    if (response.status == "Success") {
                        pemco.ajax.flash("Login information has been sent to your registered email.", "Success");

                        //pemco.user.showCreds();
                        pemco.user.closeLightboxPopup();
                        //lightbox.hide();
                    }
                    else {
                        pemco.ajax.flash(response.message, response.status);
                    }
                }
            }
        ,
            error: function() { }
        });

        return false; //Prevent Propagation
    }

    /**********************************************
    Delete User Account
    **********************************************/
    pub.deleteSelectedNWTypes = function(strAjaxHandler) {

        var blnDelete = confirm("Are you sure what you want to delete?");

        if (blnDelete) {

            var nw_type_list = "";

            var objElement = document.getElementById("hfNumNWType");

            var count = 0;

            if (objElement != null) count = parseInt(objElement.value);

            for (var i = 1; i <= count; i++) {

                objElement = document.getElementById("chbNWType" + i);

                if (objElement != null && objElement.checked) {

                    if (nw_type_list == "") {

                        nw_type_list = objElement.value;

                    }

                    else {

                        nw_type_list += "," + objElement.value;

                    }
                }
            }

            if (nw_type_list.length == 0) {
                pemco.ajax.flash("No NW Profile was selected for delete.", "Failsure");
                return false;
            }

            var data = { 'action': 'delete_profile', 'nw_type_list': nw_type_list };

            jQuery.ajax({
                type: "POST",
                url: strAjaxHandler,
                dataType: "json",
                data: data,
                success: function(response) {
                    if (response) {
                        pemco.ajax.flash(response.message, response.status);

                        pemco.home.myProfilesMode();
                    }
                }
            ,
                error: function() { pemco.ajax.flash("Failed to process ajax call.", "Error"); }
            });

        } //blnDelete

        return false; //Prevent Propagation
    }

    //My profile View - Toggle option for delete
    pub.selectAllCheckboxes = function(checkAllID) {

        var objElement = document.getElementById(checkAllID);

        if (objElement != null) {
            if (objElement.checked) {
                objElement = document.getElementById("hfNumNWType");

                if (objElement != null) {
                    var count = parseInt(objElement.value);

                    var index = 0;

                    while (index <= count) {
                        objElement = document.getElementById("chbNWType" + index);
                        if (objElement != null) {
                            objElement.checked = true;
                        }
                        index++;
                    }
                }
            }
            else {
                objElement = document.getElementById("hfNumNWType");

                if (objElement != null) {
                    var count = parseInt(objElement.value);

                    var index = 0;

                    while (index <= count) {
                        objElement = document.getElementById("chbNWType" + index);
                        if (objElement != null) {
                            objElement.checked = false;
                        }
                        index++;
                    }
                }

            } //if (objElement.checked
        }


    }

    $('.lblRemember').live('click', function() {
        if ($('#chbRemember').val() == 'on') {
            $('#chbRemember').val('');
            $('.lblRemember').attr('src', 'images/login-remember-me-off.gif');
        }
        else {
            $('#chbRemember').val('on');
            $('.lblRemember').attr('src', 'images/login-remember-me-on.gif');
        }
    });

    $('.lblSubscribe').live('click', function() {
        if ($('#hdnSubscribe').val() == 'on') {
            $('#hdnSubscribe').val('');
            $('.lblSubscribe').attr('src', 'images/subscribe-newsletter-off.gif');
        }
        else {
            $('#hdnSubscribe').val('on');
            $('.lblSubscribe').attr('src', 'images/subscribe-newsletter-on.gif');
        }
    });

    $('.lblCurrent').live('click', function() {
        if ($('#hdnMember').val() == 'on') {
            $('#hdnMember').val('');
            $('.lblCurrent').attr('src', 'images/current-pemco-member-off.gif');
        }
        else {
            $('#hdnMember').val('on');
            $('.lblCurrent').attr('src', 'images/current-pemco-member-on.gif');
        }
    });


    $('.default').live('click', function() {

        $('.default').each(function() {
            var default_val = $(this).val();

            $(this).focus(
	            function() {
	                if (default_val == $(this).val()) {
	                    $(this).val('');
	                }
	            }
	        ).blur(
	            function() {
	                if ('' == $(this).val()) {
	                    $(this).val(default_val);
	                }
	            }
	        );
        });
    });

    //00000000000000000000000000000000000000000000000000000000000000000000000000000000000

    //Get Login Status
    pub.isSignedIn = function(strAjaxHandler) {

        var data = { 'action': 'get_user_info' };

        jQuery.ajax({
            type: "POST",
            url: strAjaxHandler,
            dataType: "json",
            data: data,
            success: function(response) {
                if (response) {
                    if (response.status == "Success") {
                        var objElement = document.getElementById("divUserStatusText");
                        if (objElement != null) {
                            objElement.innerHTML = response.html;
                        }
                    }
                    else {
                        pemco.ajax.flash(response.message, response.status);
                    }
                }
            }
                ,
            error: function() { /*pemco.ajax.flash("Failed to process ajax call.", "Error");*/ }
        });
        return false;
    }

    pub.showCreds = function() {
        //show username and logout link, 
        //OR show welcome message 

        $('#divUserInfo .text').show();
        $('#divUserInfo .corner').show();
        $('#divUserInfo').css('background-image', '');
        $('#divUserInfo').css('background-color', '');

        $('#login,#register').hide();
    }

    var hideCreds = function() {
        $('#divUserInfo .text').hide();
        $('#divUserInfo .corner').hide();
        $('#divUserInfo').css('background-image', 'none');
        $('#divUserInfo').css('background-color', 'transparent');
    }

    pub.showLogin = function() {

        hideCreds();

        lightboxLoadContent('User Login', 230, 250, 'login.aspx?action=login');

        lightbox.show();

        $('.lightbox-helper').attr('id', 'login');
        $('.lightbox-helper').show();
    }

    pub.closeLightboxPopup = function() {

        $('.lightbox-helper').attr('id', '');
        $('#lightbox').hide();
        pemco.user.showCreds();
        //lightbox.hide();
    }

    pub.showLogout = function() {

        hideCreds();

        lightboxLoadContent('User Login', 230, 250, 'login.aspx?action=logout');

        parent.pemco.ajax.flash("You have successfully logged out of the system.", "Success");

        setTimeout(function() { pub.closeLightboxPopup() }, 5000);

        //Change Text
        var objElement = document.getElementById("divUserStatusText");
        if (objElement != null) {
            objElement.innerHTML = "<p class='text'>" +
            "<a href='javascript:pemco.user.showLogin();'>Login</a> | <a href='javascript:pemco.user.showRegister();'>Register</a> " +
            "<img src='images/help-mark-off.gif' border='0' style='margin-bottom:-2px;' onmouseover='pemco.tooltip.show(\"registration\");' />" +
            "</p>" +
            "<div style='float:right; display:block; padding:5px 5xp 0 0; margin-right:60px; margin-top:-8px;'>" +
                "<div id='tooltip-registration' class='tooltip-popup' onclick='pemco.tooltip.hide('registration');'>" +
                    "<div class='tooltip-top'>" +
                        "<div class='tooltip-top-icon'></div>" +
                    "</div>" +
                    "<div class='tooltip-middle'>" +
                        $('#hfRegistrationToolTip').val() +
                    "</div>" +
                    "<div class='tooltip-bottom'></div>" +
                "</div>" +
            "</div>";
        }

        //lightbox.hide();
        if ($('#home_top').html() != null) {
            window.location.hash = "#profiles";
        }

        if ($('.vote_link')) {
            $('.vote_link').css('display', 'none');
            $('.vote_results').css('display', '');
        }
    }

    pub.showForgetPassword = function() {

        hideCreds();

        lightboxLoadContent('Forgot Password', 480, 480, 'forget_password.aspx');

        lightbox.show();

        $('.lightbox-helper').attr('id', 'forget_password');
    }

    pub.showRegister = function() {
        hideCreds();

        lightboxLoadContent('User Registration', 480, 480, 'register.aspx');
        lightbox.show();

        $('.lightbox-helper').attr('id', 'register');
        $('.lightbox-helper').show();
    }


})(jQuery);


