(function () { function onLoggedIn() { ConnectionManager.getServers().done(function (result) { if (result.length) { connectToServerInstance(result[0]); } else { Dashboard.alert('Coming soon'); } }); } function connectToServerInstance(server) { connectToServerAtUrl(server, server.Url).fail(function () { if (server.LocalAddress) { connectToServerAtUrl(server, server.LocalAddress).fail(showServerConnectionFailure); } else { showServerConnectionFailure(); } }); } function showServerConnectionFailure() { alert('Unable to communicate with your server.'); } function connectToServerAtUrl(server, url) { var exchangeToken = server.AccessKey; return $.ajax({ type: "GET", url: url + "/mediabrowser/Connect/Exchange?format=json&ConnectUserId=" + ConnectionManager.connectUserId(), dataType: "json", error: function () { // Don't show normal dashboard errors }, headers: { "X-MediaBrowser-Token": exchangeToken } }).done(function (result) { Dashboard.serverAddress(url); Dashboard.setCurrentUser(result.LocalUserId, result.AccessToken); window.location = 'index.html'; }); } function login(page, username, password) { var md5 = CryptoJS.MD5(password).toString(); $.ajax({ type: "POST", url: "https://connect.mediabrowser.tv/service/user/authenticate", data: { userName: username, password: md5 }, dataType: "json", contentType: 'application/x-www-form-urlencoded; charset=UTF-8', error: function () { // Don't show normal dashboard errors } }).done(function (result) { ConnectionManager.onConnectAuthenticated(result); onLoggedIn(); }).fail(function (result) { Dashboard.alert({ message: Globalize.translate('MessageInvalidUser'), title: Globalize.translate('HeaderLoginFailure') }); $('#txtManualPassword', page).val(''); }); } function submit(page) { var user = $('#txtManualName', page).val(); var password = $('#txtManualPassword', page).val(); login(page, user, password); } window.ConnectLoginPage = { onSubmit: function () { var page = $(this).parents('.page'); submit(page); return false; } }; })();