function openIdProvider(identifier, templateFieldName) { this.identifier = identifier; this.templateFieldName = templateFieldName; } $(document).ready(function() { document.usernamePlaceholder = "{username}"; document.openIdProviders = {}; document.openIdProviders['default'] = new openIdProvider("http://"); document.openIdProviders.yandex = new openIdProvider("http://openid.yandex.ru/"); document.openIdProviders.google = new openIdProvider("https://www.google.com/accounts/o8/id"); document.openIdProviders.yahoo = new openIdProvider("https://me.yahoo.com/"); document.openIdProviders.flickr = new openIdProvider("http://www.flickr.com/photos/{username}", "Пользователь Flickr"); document.openIdProviders.myopenid = new openIdProvider("https://www.myopenid.com/"); document.openIdProviders.livejournal = new openIdProvider("http://{username}.livejournal.com/", "Пользователь Live Journal"); document.openIdProviders.technorati = new openIdProvider("https://technorati.com/people/technorati/{username}/", "Пользователь Technorati"); document.openIdProviders.wordpress = new openIdProvider("https://{username}.wordpress.com/", "Пользователь Wordpress"); document.openIdProviders.blogspot = new openIdProvider("http://{username}.blogspot.com/", "Пользователь Blogspot"); document.openIdProviders.myvidoop = new openIdProvider("https://myvidoop.com/"); document.openIdProviders.verisignlabs = new openIdProvider("https://pip.verisignlabs.com/"); function isCompleteIdentifier(identifier) { return identifier && identifier != '' && identifier != 'http://' && identifier.indexOf(document.usernamePlaceholder) < 0; } $('#openidlogin').submit(function() { var identifier = $('#OpenId').val(); if (isCompleteIdentifier(identifier)) { return true; } if (identifier.indexOf(document.usernamePlaceholder) > -1) { var userName = $("#openIdUser input").val(); if (userName && userName.length > 0) { identifier = identifier.replace(document.usernamePlaceholder, userName); $("#OpenId").val(identifier); return true; } else { alert("Укажите пользователя!"); } } return false; }); document.selectOpenIdProvider = function(button, id) { var provider = document.openIdProviders[id]; var box = $('#OpenId')[0]; $('#openidlogin .provider').removeClass('highlight'); $(button).addClass('highlight').show(); $(box).val(provider.identifier); var isDefault = id == 'default'; var showUserBox = !(isCompleteIdentifier(provider.identifier) || isDefault); if (showUserBox) { $("#openIdUser").show(); $("#openIdUser label").html(provider.templateFieldName); $("#openIdIdentifier").hide(); } else { $("#openIdUser").hide(); $("#openIdIdentifier").show(); } if (isCompleteIdentifier(provider.identifier)) { completeLogin(); } }; function setSelection() { var box = $('#OpenId')[0]; var usernamePlaceholderIndex = box.value.indexOf(document.usernamePlaceholder); if (usernamePlaceholderIndex >= 0) { box.setSelectionRange(usernamePlaceholderIndex + document.usernamePlaceholder.length); box.setSelectionRange(usernamePlaceholderIndex, usernamePlaceholderIndex + document.usernamePlaceholder.length); } } function completeLogin() { var box = $('#OpenId')[0]; if (box.value.indexOf(document.usernamePlaceholder) >= 0) { alert('You need to type in your username first.'); box.focus(); setSelection(); return; } if (!isCompleteIdentifier(box.value)) { alert(box.value + ' is not a valid identifier.'); return; } $('#openidlogin').submit(); return box.value; } });