<!DOCTYPE html>
<!-- template name: identifier.first.template.html.bentley -->
<html class="iui-theme-light" lang="en" dir="ltr">
<head>
<title>Sign In</title>
<link rel="icon" type="image/x-icon" href="https://connect-cdn.bentley.com/cdn/en/favicon.ico"/>
<base href="https://ims.bentley.com/"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<style>
#postButton {
}
</style>
<link rel="stylesheet" type="text/css" href="assets/css/main.css">
<link rel="stylesheet" type="text/css" href="assets/css/global.css">
<link rel="stylesheet" type="text/css" href="assets/css/ims-overrides.css">
<link rel="stylesheet" type="text/css" href="assets/css/inputs.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Support Promises in Internet Explorer -->
<script type="text/javascript">
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))
document.write('<script src="https://polyfill.io/v3/polyfill.min.js?features=Promise%2CPromise.prototype.finally"><\/script>');
</script>
</head>
<body class="iui-body" onload="parseAccountCompletion();setHrefCookie();">
<div class="ping-container">
<div class="ping-header has-logo">
<span class="company-logo"><img src="https://connect-cdn.bentley.com/cdn/en/logo.svg" alt="Bentley Systems logo"></span>
<text id="company-logo-div-text">
Sign In
</text>
</div><!-- .ping-header -->
<div class="ping-body-container">
<form method="POST" action="/as/cVuMj/resume/as/authorization.ping" autocomplete="off">
<label id="identifierInputLabel" class="ping-input-label" for="identifierInput">
Email Address
</label>
<div class="ping-input-container">
<input class="iui-input" id="identifierInput" type="email" size="36" name="subject" value="" autocorrect="off" oninput="clearError();"
autocapitalize="off" onKeyPress="return postOnReturn(event)"/>
<div class="place-bottom type-alert tooltip-text" id="username-text" onclick="hideToolTip('username-text');">
<div class="icon">!</div>
Please fill out this field.
</div>
<!--Adding to handle invalid email format-->
<div class="place-bottom type-alert tooltip-text" id="invalid-email-format" onclick="hideToolTip('invalid-email-format');">
<div class="icon">!</div>
Please enter a valid email address.
</div>
</div>
<div id="postButton" class="ping-buttons">
<a tabindex="0" id="sign-in-button" onclick="postOk();" onkeydown="if(event.keyCode ==32 || event.keyCode==13) postOk();" class="ping button normal allow"
title="Next">Next</a>
</div><!-- .ping-buttons -->
<br>
<span id="registrationLink">
<a onclick="postCancel()" href="javascript:void(0);" class="iui-anchor">Don't have an account? Register now</a>.
</span>
<input type="hidden" name="hiddenIdentifierInput" id="hiddenIdentifierInput" value="">
<input type="hidden" name="clear.previous.selected.subject" id="clear.previous.selected.subject" value="">
<input type="hidden" name="cancel.identifier.selection" value="false">
<input type="hidden" name="b" value="$branding">
<input type="hidden" name="completeAccountCreation" value="">
</form>
</div><!-- .ping-body-container -->
<div class="ping-footer-container">
<div class="ping-footer">
<div class="ping-copyright">© <script>var year = new Date();document.write(year.getFullYear());</script> Bentley Systems, Incorporated | <a href="https://www.bentley.com/legal/privacy-policy/" target="_blank"> <span style="color: rgb(153, 153, 153)">Privacy</span></a> | <a href="https://www.bentley.com/legal/terms-of-use-and-select-online-agreement/" target="_blank"> <span style="color: rgb(153, 153, 153)">Terms of Use</span></a> | <a href="https://www.bentley.com/legal/cookie-policy/" target="_blank"> <span style="color: rgb(153, 153, 153)">Cookies</span></a> | <a href="https://www.bentley.com/legal/overview/" target="_blank"> <span style="color: rgb(153, 153, 153)">Legal Notices</span></a>
<br>
</div>
</div> <!-- .ping-footer -->
</div><!-- .ping-footer-container -->
</div><!-- .ping-container -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-17568443-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-17568443-1');
</script>
<script type="text/javascript">
var allowReturnKey = true;
function removeIdentifier(existingIdentifier) {
document.forms[0]['clear.previous.selected.subject'].value = existingIdentifier;
document.forms[0]['subject'].value = '';
submitForm();
}
function showIdentifierInputBox() {
// update the title text
document.title = 'Sign In';
// update company-logo-div-text
document.getElementById("company-logo-div-text").textContent = 'Sign In';
// hide the identifier selection list
document.getElementById("existingAccountsSelectionList").style.display = "none";
// show the identifier input box
document.getElementById("identifierInputLabel").style.display = "inline";
document.getElementById("identifierInput").style.display = "inline";
document.getElementById("postButton").style.display = "inline-block";
setFocus();
}
function clearError(){
//document.getElementById("sign-in-button").onclick = postOk();
document.getElementById("sign-in-button").classList.remove("disabled");
document.getElementById('username-text').className = 'place-bottom type-alert tooltip-text';
document.getElementById('invalid-email-format').className = 'place-bottom type-alert tooltip-text';
}
function selectIdentifier(identifier) {
document.forms[0]['subject'].value = identifier;
postOk();
}
function drowse(ms) {
return new Promise(function (resolve) {
return setTimeout(resolve, ms);
});
}
function showToolTip(name) {
document.getElementById(name).className = 'place-bottom type-alert tooltip-text show';
}
function hideToolTip(name) {
document.getElementById(name).className = 'place-bottom type-alert tooltip-text';
}
function postOk() {
var username_tt_shown = false;
var any_tt_shown = false;
document.forms[0]['subject'].value=document.forms[0]['subject'].value.trim();
// remove error tips
if (document.forms[0]['subject'].value !== '') {
hideToolTip('username-text');
}
// Add back
if (document.forms[0]['subject'].value === '') {
showToolTip('username-text');
username_tt_shown = true;
any_tt_shown = true;
} else {
//var mailformat = /^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,24}$/;
var mailformat = /^[a-zA-Z0-9'_+&*-]+(?:\.[a-zA-Z0-9'_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,24}$/;
if (document.forms[0]['subject'].value.match(mailformat)){
hideToolTip('invalid-email-format');
any_tt_shown = true;
document.getElementById("sign-in-button").classList.add("disabled");
document.getElementById("sign-in-button").onclick = null;
submitForm();
}
if (!document.forms[0]['subject'].value.match(mailformat)){
document.getElementById('invalid-email-format').className += ' show';
showToolTip('invalid-email-format');
any_tt_shown = true;
}
}
if (any_tt_shown) {
drowse(5000).then(function(result) {
hideToolTip('invalid-email-format');
hideToolTip('username-text');
});
}
}
function autoPost() {
var urlDecodedString = decodeURIComponent('$ofh');
var decodedString = window.atob(urlDecodedString);
document.forms[0]['subject'].value='id@' + decodedString;
document.forms[0]['subject'].style.display = "none";
submitForm();
}
function postCancel()
{
document.getElementById('hiddenIdentifierInput').setAttribute('name','subject');
document.getElementById('identifierInput').setAttribute('name','hiddenIdentifierInput');
document.forms[0]['subject'].value = 'registration';
submitForm();
//postOk();
//document.forms[0]['cancel.identifier.selection'].value = 'true';
//submitForm();
}
function submitForm()
{
document.forms[0].submit();
}
function postOnReturn(e) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
if (keycode == 13) {
if (allowReturnKey == false) {
return false;
}
allowReturnKey = false;
postOk();
return false;
} else {
if (allowReturnKey == false) {
allowReturnKey = true;
}
return true;
}
}
function setFocus() {
var platform = navigator.platform;
if (platform != null && platform.indexOf("iPhone") == -1) {
document.getElementById('identifierInput').focus();
}
}
function parseAccountCompletion() {
if ("" === "TRUE") {
document.forms[0]['completeAccountCreation'].value = 'true';
document.forms[0]['subject'].value = '';
submitForm();
} else {
setFocus();
parseBinaryBranding();
}
}
function setHrefCookie() {
document.cookie = "originalHref=" + document.location.href + "; path=/";
}
function parseBinaryBranding(){
let brandingRegex = /([0|1])([0|1])([0|1])([0|1])/;
let brandingResult = '$branding'.match(brandingRegex);
if (brandingResult) {
if (brandingResult[1] == '0') {
document.getElementsByClassName('company-logo')[0].style.visibility = 'hidden';
document.getElementsByClassName('ping-footer-container')[0].style.visibility = 'hidden';
}
if (brandingResult[2] == '0') {
document.getElementById('registrationLink').style.visibility = 'hidden';
}
if (brandingResult[3] == '0') {
//no-op
}
if (brandingResult[4] == '0') {
//no-op
}
}
}
function setMobile(mobile) {
var className = ' mobile',
hasClass = (bodyTag.className.indexOf(className) !== -1);
if (mobile && !hasClass) {
bodyTag.className += className;
} else if (!mobile && hasClass) {
bodyTag.className = bodyTag.className.replace(className, '');
}
<!-- Check if this is the PingOne Mobile App -->
}
function getScreenWidth() {
return (window.outerHeight) ? window.outerWidth : document.body.clientWidth;
}
var bodyTag = document.getElementsByTagName('body')[0],
width = getScreenWidth();
if (/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
setMobile(true);
} else {
setMobile((width <= 480));
window.onresize = function() {
width = getScreenWidth();
setMobile((width <= 480));
}
}
</script>
</body>
</html>