var $j = jQuery.noConflict();

$j.namespace('ChemCore');

ChemCore.Login = function() {
    var _urlCode = 1000;
    var _handle;
    var _password;
    var _terms = false;
    var _rememberMe = false;
    var _promoId = 1;
    var _btnLogin = null;
    var _handleElem = 'INPUT[@name="loginhandle"]';
    var _passwordElem = 'INPUT[@name="loginpassword"]';
    var _failureDelegate = new ChemCore.Delegate();
    var _successDelegate = new ChemCore.Delegate();
    var _busy = false;

    var consumeForm = function() {
        _handle = $j(_handleElem).val();
        if (_handle == "username") { _handle = ""; }
        _password = $j(_passwordElem).val();
        if (_password == "password") { _password = ""; }
        _terms = $j('INPUT[@name="chkTermsAgree"]').val();
        _promoId = $j('INPUT[@name="hdnPROID"]').val();
        _rememberMe = ($j('INPUT[@name="rememberMe"][@checked]').val() != null);
    }

    var _failure = function(response) {
        ChemCore.CurrentUser.LoggedIn(false);
        ChemCore.CurrentUser.Handle(_handle);

        if (_failureDelegate.count() > 0) {
            _failureDelegate.fire(response);
        }
    }

    var _success = function(response) {
        if (response.Success == 1) { ChemCore.CurrentUser.LoggedIn(true); }
        ChemCore.CurrentUser.Handle(_handle);
        if (_successDelegate.count() > 0) {
            _successDelegate.fire(response);
        }
    }

    return {
        init: function(opts) {
            if (opts) {
                if (opts.urlCoded)
                    _urlCode = opts.urlCoded;
                if (opts.fail)
                    _failureDelegate.add(opts.fail);
                if (opts.success)
                    _successDelegate.add(opts.success);
                if (opts.btnLogin)
                    _btnLogin = opts.btnLogin;
                if (opts.handleElem)
                    _handleElem = opts.handleElem;
                if (opts.pwdElem)
                    _passwordElem = opts.pwdElem;
            }

            $j(_btnLogin).bind('click', this.submit).bind("keyup", { submitFunc: this.submit }, function(e) { if (e.keyCode == 13) { e.data.submitFunc(); } });
            $j(_passwordElem).bind("keyup", { submitFunc: this.submit }, function(e) { if (e.keyCode == 13) { e.data.submitFunc(); } });
            //ChemCore.CurrentUser.onReady(function() { ; });
        },

        submit: function() {
            consumeForm();
            if (!ChemCore.CurrentUser.LoggedIn()) {
                var path = '/api/Login.svc/login?apikey=0566e181-5b76-44e7-a41d-e556635d5dee';
                if ($j.query.toString().length > 0) { path = path + $j.query.toString().replace('?', '&'); }
                url = path + "&urlCode=" + _urlCode + "&h=" + _handle + "&ps=" + _password + "&pid=" + _promoId + "&term=" + _terms + "&rem=" + _rememberMe;
                $j.ajax({ type: "GET",
                    url: url,
                    cache: false,
                    dataType: "json",
                    success: function(response) { _success(response); },
                    failure: function(response) { _failure(response); }
                });
            }
            else {
                var rep = { "Success": true, "Messages": [{ Text: "Already logged in."}] };
                _success(rep);
            }

        },

        onSuccess: function(handler) {
            _successDelegate.add(handler);
        },

        onFailure: function(handler) {
            _failureDelegate.add(handler);
        }
    };
} ();


