﻿$(function() {
    $('img[title]').qtip({
        position: {
            corner: {
                target: 'topRight',
                tooltip: 'bottomLeft'
            }
        },
        style: {
            name: 'cream',
            padding: '7px 13px',
            width: {
                max: 210,
                min: 0
            },
            tip: true
        }
    });

    $("#logout").click(function() {
        $.get("/account/logout", function() {
            location.reload();
        });
        return false;
    });

    $("#tbsignup").click(function() {
        $("#signup_dialog #username").val('');
        $("#signup_dialog #password").val('');
        $("#signup_dialog #password2").val('');
        $("#signup_dialog #firstname").val('');
        $("#signup_dialog #lastname").val('');
        $("#signup_dialog #zipcode").val('');
        $("#signup_dialog #country").val('US');
        $("#signup_dialog #dob").val('');
        $("#signup_dialog #email").val('');
        $("#signup_dialog").css({ 'visibility': 'visible' });
        $("#signup_dialog").dialog('open');
    });

    //{{{ login / signup / logout

    $(".account input").focus(function() {
        var el = $(this);
        if (this.name == 'password') {
            if (this.value == 'Password') {
                var el2 = $('<input/>').attr("type", "password").attr("name", "password");
                el.after(el2).remove();
                el2.val('');
                el2.focus();
            }
            else {
                this.select();
            }
        }
        else if (this.name == 'login') {
            if (this.value == 'User Name' || this.value == 'User Name or Email') {
                el.val('');
            }
            else {
                this.select();
            }
        }

    }).blur(function() {
        if (!this.value || this.value == '') {
            this.value = this.title;
        }
    });

    // login / forgot password scrollable
    $("#loginscroll").scrollable({
        next: '#anext',
        prev: '#aprev',
        size: 1,
        clickable: false,
        onBeforeSeek: function(e, i) {
            $("#loginform").animate({ height: (i ? '-' : '+') + '=50' });
        }
    });

    // toggle login / signup
    $("#acc a").each(function(i) {

        var a = $(this);

        a.mouseover(function() {
            a.addClass("active");
        });

        a.tooltip({
            tip: i == 0 ? '#loginscroll' : '#signup',
            position: 'bottom right',
            offset: [-10, i == 0 ? -45 : -52],
            events: {
                tooltip: 'mouseover'
            },

            onShow: function(e) {
                a.addClass("active");
            },
            onBeforeHide: function(e, i) {
                a.removeClass("active");
            }
        });
    });

    function closeAcc() {
        $("#loginscroll, #signup").slideUp();
        $("#acc a").removeClass("active");
    }

    $(document).click(function(e) {
        var el = $(e.target)
        if ($(".account:visible").length && !el.is(".account") && !el.parents(".account").length && !el.is("#acc a")) {
            closeAcc();
        }
    });

    $(document).keydown(function(e) {
        if (e.keyCode == 27) { closeAcc(); }
    });


    function formSubmit(form, action, fn) {

        form = $(form).fadeTo(400, 0.6);

        // error container
        var err = form.find(".error");
        if (!err.length) { err = $("<p></p>").addClass("error"); form.append(err); }
        err.hide();

        $.post(action + "&" + form.serialize(), function(res) {
            form.fadeTo(200, 1);

            res = eval("(" + res + ")");
            if (res.message) {
                err.html(res.message).show();
                setTimeout(function() { err.slideUp(); }, 3000);
            } else {
                if (typeof fn == 'string') { err.html(fn); }
                else { fn.call(); }
            }
        });

        return false;
    }

    $.formSubmit = formSubmit;

    // login
    $("#loginform").submit(function() {
        return formSubmit(this, "/Ajax/User.aspx?ReqType=Login", function() {
            closeAcc();
            location.href = "/users/";
        });
    });

    $("#forgotform").submit(function() {
        return formSubmit(this, "/Ajax/User.aspx?ReqType=Password", function() {
            closeAcc();
            showSuccess('Success', 'Your account password has been sent successfully! Please check your e-mail.');
        });
    });
});

