CINXE.COM

DHI Stage en Ingénierie Marine et Côtière - Mise en place d'un système opérationnel de prévision et d'aide à la décision sur le risque de submersion marine

<!DOCTYPE html> <html lang="en-GB"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0" /> <base href="/"> <title>DHI Stage en Ing&#233;nierie Marine et C&#244;ti&#232;re - Mise en place d&#39;un syst&#232;me op&#233;rationnel de pr&#233;vision et d&#39;aide &#224; la d&#233;cision sur le risque de submersion marine </title> <meta name="description" content="&#201;tudiant(e) en derni&#232;re ann&#233;e d’&#233;cole d’ing&#233;nieur ou de master et en qu&#234;te d’un stage de fin d’&#233;tudes ? Associez votre int&#233;r&#234;t pour&#160;l’informatique et le&#160;milieu marin&#160;en rejoignant un projet pilote for"> <meta property="og:title" content="DHI Stage en Ing&#233;nierie Marine et C&#244;ti&#232;re - Mise en place d&#39;un syst&#232;me op&#233;rationnel de pr&#233;vision et d&#39;aide &#224; la d&#233;cision sur le risque de submersion marine "> <meta property="og:type" content="website"> <meta property="og:url" content="https://dhi.career.emply.com/ad/stage-en-ingenierie-marine-et-cotiere-mise-en-place-dun-systeme-operationnel/iwdzpt/en"> <meta property="og:image" content=""> <meta property="og:description" content="&#201;tudiant(e) en derni&#232;re ann&#233;e d’&#233;cole d’ing&#233;nieur ou de master et en qu&#234;te d’un stage de fin d’&#233;tudes ? Associez votre int&#233;r&#234;t pour&#160;l’informatique et le&#160;milieu marin&#160;en rejoignant un projet pilote for"> <meta property="fb:app_id" content=""> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet"> <link rel="shortcut icon" href="/img/favicon.ico"> <link href="/bundles/css?v=ym4IVaHb6jkuBKloU_CG28BUxzyZGWKkkoR7hS8hxfw1" rel="stylesheet"/> <script src="/bundles/js?v=y8nqM23MgD-BR9BqJqqcDXysymyvS9giJhpfWnCrnGY1"></script> <script type="text/javascript"> $(function () { $('.titleTooltip').tooltipster(); }); </script> <script type="text/javascript"> $(document).ready(function () { var referrer = document.referrer; if (referrer && localStorage && !referrer.startsWith(window.location.origin)) { localStorage.setItem('referrer', referrer); } }); </script> <script> var mapInits = []; var mapInitialized = false; function initMap() { mapInitialized = true; for (var i = 0; i < mapInits.length; i++) { mapInits[i](); } } </script> <script src="https://maps.googleapis.com/maps/api/js?callback=initMap&libraries=places&key=AIzaSyDDwJDtaszetWDicXKS6Fvkp-K8MO3NSxM"></script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <style> .csl_body { font-family: 'Roboto', arial, verdana !important; color: #000000; } .css_headline { color: #000000; } .css_subheadline { color: #000000; opacity: 1; } .css_heightCell { color: #000000; } .csl_top { position: relative; background: #fff; line-height: 24px; font-size: 16px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); z-index: 100; } .csl_top .css_holder { padding-top: 0; padding-bottom: 0; } .csl_topTable { float: left; display: table; width: 100%; } .csl_topLogo { display: table-cell; padding: 20px 0; vertical-align: middle; } @media (max-width: 795px) { .csl_topLogo {padding: 10px 0;} } .csl_topLogo:empty:before { content: attr(careersite); line-height: 36px; font-size: 26px; } @media (max-width: 1275px) { .csl_topLogo:empty:before {font-size: 20px;} } .csl_topLogo img { float: left; max-width: 50vw; max-height: 90px; } .csl_topMenu { display: table-cell; vertical-align: middle; } .csl_topMenu > ul { transition: all 0.25s; float: right; list-style-type: none; padding: 0; margin: 0; } @media (max-width: 795px) { .csl_topMenu > ul { position: absolute; top: 0; left: 0; width: calc(100% - 60px); background: #fff; overflow: hidden; transform: translate(0, -100%); border-bottom-right-radius: 10px; } .csl_topMenu.active > ul { transform: translate(0, 0); box-shadow: 0 0 20px rgba(0, 0, 0, 0.15); } } .csl_topMenu > ul > li { position: relative; float: left; padding: 0 20px; box-sizing: border-box; } @media (max-width: 1275px) { .csl_topMenu > ul > li {padding: 0 10px;} } @media (max-width: 795px) { .csl_topMenu > ul > li { display: block; width: 100%; padding: 0; } } .csl_topMenu > ul > li:last-child { padding-right: 0; } .csl_topLink { transition: all 0.25s; position: relative; display: block; padding: 10px 0; text-decoration: none; color: #000; opacity: 0.75; } .csl_topLinkHolder.active .csl_topLink, .csl_topLinkHolder .csl_topLink:hover { opacity: 1; } .csl_topLink:after { transition: all 0.25s; content: ''; position: absolute; bottom: 5px; left: 50%; width: 0%; height: 2px; background: #1d9a3f; opacity: 0; transform: translate(-50%, 0); } .csl_topLink:hover:after, .csl_topLinkHolder.active .csl_topLink:after { width: 100%; opacity: 1; } @media (max-width: 795px) { .csl_topLink { padding: 15px 20px; font-weight: bold; border-bottom: 1px solid #eee; opacity: 1; } .csl_topLink:hover { background: rgba(0, 0, 0, 0.025); } .csl_topLink:after { display: none; } } .csl_topMenu ul li ul { transition: all 0.25s 0.5s; display: none; position: absolute; top: 40px; left: 0; background: #fff; list-style-type: none; padding: 5px 0; margin: 0; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); opacity: 0; } @media (max-width: 795px) { .csl_topMenu ul li ul { display: block; position: relative; top: 0 !important; padding: 0; border-radius: 0; box-shadow: none; opacity: 1 !important; } } .csl_topMenu ul li:hover ul { transition: all 0.25s; display: block; top: 60px; opacity: 0.9; } @media (min-width: 796px) { .csl_topMenu ul li ul:before { content: ''; position: absolute; top: -21px; left: 0; width: 100%; height: 21px; } } .csl_topMenu ul li ul li { white-space: nowrap; } .csl_topMenu ul li ul li a { transition: all 0.25s; display: block; padding: 5px 20px; text-decoration: none; color: #000; } @media (max-width: 795px) { .csl_topMenu ul li ul li a { padding: 10px 20px 8px 30px; border-bottom: 1px solid #eee; } } .csl_topMenu ul li ul li a:hover { text-decoration: underline; } @media (max-width: 795px) { .csl_topMenu ul li ul li a:hover { background: rgba(0, 0, 0, 0.025); text-decoration: none; } } @media (max-width: 795px) { .csl_topMenu ul li.csl_topLanguages { float: left; width: auto; padding: 20px; } } .csl_topLanguages a { float: left; padding: 11px 5px 13px 0; opacity: 0.5; } .csl_topLanguages a:hover { opacity: 1; } .csl_topLanguages a:last-child { padding-right: 0; } .csl_topLanguages a img { float: left; } @media (max-width: 795px) { .csl_topMenu ul li.csl_topLogin { padding: 0 20px; } } @media (max-width: 795px) { .csl_topMenu ul li.csl_topLogin { float: right; width: auto; margin: 20px 0; } } .csl_topLogin a { display: block; background: #3296FA; padding: 5px 10px 4px; text-decoration: none; color: #fff; border-radius: 3px; margin: 5px 0; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); } @media (max-width: 795px) { .csl_topLogin a { float: left; } } .csl_topLogin a:hover { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15), 0 0 5px rgba(255, 255, 255, 0.5) inset; } .csl_topLogin a:active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15), 0 0 20px rgba(255, 255, 255, 0.5) inset; } .csl_topMenuIcon { float: right; position: relative; width: 20px; height: 20px; margin-left: 20px; } @media (min-width: 796px) { .csl_topMenuIcon {display: none;} } .csl_topMenuIcon span, .csl_topMenuIcon span:before, .csl_topMenuIcon span:after { transition: all 0.25s; position: absolute; top: 9px; left: 0; width: 100%; height: 2px; background: #3296FA; content: ''; } .csl_topMenu.active .csl_topMenuIcon span { background: rgba(0, 0, 0, 0); } .csl_topMenuIcon span:before { top: -6px; } .csl_topMenu.active .csl_topMenuIcon span:before { top: 0; transform: rotate(45deg); } .csl_topMenuIcon span:after { top: 6px; } .csl_topMenu.active .csl_topMenuIcon span:after { top: 0; transform: rotate(-45deg); } .css_button, .button, .button:hover, .tabs .line,.css_quote .slick-arrow { background: #1d9a3f; } .css_quoteMark { color: #1d9a3f; } .tabs .link:not(.active):not(.disabled):hover { border-color: #1d9a3f; } .css_jobsCell:hover:before { border-color: #1d9a3f; box-shadow: 0 0 0 1px #1d9a3f; } .csl_topLogin a { background: #1d9a3f; } .css_section p a, .csa_jobadText a { color: #1d9a3f; } .csl_topMenuIcon span, .csl_topMenuIcon span:before, .csl_topMenuIcon span:after { background: #1d9a3f; } .css_button { border-radius: 3px; } link-to-page-button:not(:first-child) .css_button { margin-top: 10px; } .css_jobagentNotify a.active { color: #1d9a3f; border-color: #1d9a3f; } .cse_iframe { -webkit-overflow-scrolling: touch; } .csa_jobadInfoMap agm-map { height: 192px; } @media print { body, .cse_iframe { height: 100%; overflow-y: visible; overflow-x: visible; } .css_bannerTable { height: auto !important; } .css_bannerTable * { color: #000 !important; } } .css_perksbenefitsBox { border: 5px solid #fff; box-sizing: border-box; } @media (min-width: 796px) { .csl_topLanguages { display: none; } .csl_topLanguagesDropdown { position: relative; } .csl_topLanguagesDropdown:before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 50px; } .csl_topLanguagesDropdownTrigger { position: relative; float: left; width: 33px; height: 33px; background: url('/img/icons/flags/global.svg') 50% 50% no-repeat; margin-top: 5px; cursor: pointer; } .csl_topLanguagesDropdownHolder { transition: all 0.25s; display: none; position: absolute; top: 48px; left: 50%; width: calc(100% + 10px); background: #fff; padding: 10px 10px 0px 10px; border-radius: 3px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); transform: translate(-50%, 0); } .csl_topLanguagesDropdown:hover .csl_topLanguagesDropdownHolder { display: block; } .csl_topLanguagesDropdownHolder a { display: block; line-height: 13px; font-size: 12px; white-space: nowrap; text-decoration: none; color: #000; margin-bottom: 10px; } .csl_topLanguagesDropdownHolder a img { float: left; width: 12px; margin: 0 5px 0 0; } } @media (max-width: 795px) { .csl_topLanguagesDropdown { display: none !important; } } .css_jobagentFilters.ng-star-inserted{ background-color:white; } .css_jobagentInfo.ng-star-inserted{ background-color:white; } </style> <script> </script> <script type="text/javascript"> var isPageIdle = false; $(document).idle({ onIdle: function () { isPageIdle = true; }, onActive: function () { isPageIdle = false; }, idle: 60000 }); function scheduleKeepAlive() { setTimeout('callKeepAlive()', 60000); } function callKeepAlive() { if (isPageIdle) { scheduleKeepAlive(); return; } $.ajax({ type: 'POST', url: '/api/keep-alive', error: function () { scheduleKeepAlive(); }, success: function () { scheduleKeepAlive(); } }); } $(document).ready(function () { scheduleKeepAlive(); }); </script> <script> $(document).ready(function () { const burgerMenu = document.getElementById("topMenuIcon"); const style = window.getComputedStyle(burgerMenu); const isBurgerMenuHidden = style.display === "none"; const topMenu = document.getElementsByClassName("csl_topMenu")[0]; const topMenuList = topMenu.firstElementChild; const firstPageLink = topMenuList.firstElementChild.firstElementChild; if (!isBurgerMenuHidden) { topMenuList.ariaHidden = true; setTabIndexToChildElements(topMenuList); } $('.csl_topMenuIcon').click(function () { if ($('.csl_topMenu').hasClass('active')) { hideBackgroundForElement("body-without-popups"); removeTabIndexForChildElements(topMenu); burgerMenu.ariaExpanded = true; topMenuList.ariaHidden = null; } else { showBackgroundForElement("body-without-popups"); setTabIndexToChildElements(topMenuList); burgerMenu.ariaExpanded = false; topMenuList.ariaHidden = true; } }); $('.csl_topMenuIcon').keydown(function (event) { if ($('.csl_topMenu').hasClass('active')) { if (event.key.toLowerCase() === 'tab') { if (event.shiftKey) { return; } else { event.preventDefault(); firstPageLink.focus(); } } } else { return; } }); }); </script> </head> <body class=""> <div id="body-without-popups"> <div class="csl_body"> <div class="csl_top"> <div class="css_holder"> <div class="csl_topTable"> <a href="/../"> <div class="csl_topLogo" careersite="Egen hjemmeside"><img src="/api/file/get-optimized-image/8ae4c6a6-24c3-4f9f-85e8-5a9516e96a9d"></div> </a> <div class="csl_topMenu"> <ul> <li class="csl_topLinkHolder "> <a role="tab" class="csl_topLink" href="/job-alert">Job Alert</a> </li> <li class="csl_topLinkHolder "> <a role="tab" class="csl_topLink" href="/available-positions">Available positions</a> </li> <li class="csl_topLogin"><a class="ui_login_button_popup ui_popup_open" data-popup-id="popup_login" href="javascript:void(0);" style="display: none;">Login</a><a class="ui_login_button_profile" href="/profile" style="display: none;">My profile</a><a class="ui_login_button_onboarding_profile" href="/onboarding-profile" style="display: none;">My profile</a></li> </ul> <a role="menuitem" id="topMenuIcon" class="csl_topMenuIcon" onClick="if($(this).parent().hasClass('active')){$(this).parent().removeClass('active');}else{$(this).parent().addClass('active');}" href="javascript:void(0);"><span></span></a> </div> </div> <div class="clear"></div> </div> </div> <div role="tabpanel"> <div id="section_ae924485-5a6f-4ad9-a04e-b7989b5be605" class="css_section"> <style> .css_banner h1 { animation: adHeadline 2s; } @keyframes adHeadline { 0% {margin-top: 40px; opacity: 0;} 25% {margin-top: 40px; opacity: 0;} 100% {margin-top: 0; opacity: 1;} } @media print { .csl_top, .css_section.css_banner, .css_button, .csa_jobadShare, .csa_jobadInfoMap, .css_section.bottom {display: none;} .csa_jobadLeft {width: 65%; padding-right: 40px;} .csa_jobadRight {float: none; width: auto; overflow: hidden; margin: 0 !important;} .csa_jobadInfo {width: 100%; -webkit-print-color-adjust: exact; margin: 0 !important;} } </style> <div> <img src="" style="float: left; width: 100%;"> <div class="clear"></div> </div> <div class="css_section csa_area csa_jobad"> <div class="css_holder"> <div class="csa_jobadLeft"> <h1 class="css_headline">Stage en Ing&#233;nierie Marine et C&#244;ti&#232;re - Mise en place d'un syst&#232;me op&#233;rationnel de pr&#233;vision et d'aide &#224; la d&#233;cision sur le risque de submersion marine</h1> <div class="clear"></div> <div class="csa_jobadText"><p>Étudiant(e) en dernière année d’école d’ingénieur ou de master et en quête d’un stage de fin d’études ? Associez votre intérêt pour&nbsp;<strong>l’informatique</strong> et le&nbsp;<strong>milieu marin</strong>&nbsp;en rejoignant un projet pilote formateur, stimulant et concret que vous mènerez de A à Z aux côtés d’experts en modélisation numérique et en informatique&nbsp;:&nbsp;<strong>le développement d’une plateforme en ligne de prévision du risque de submersion marine</strong>.</p><p>&nbsp;DHI : QUI SOMMES-NOUS ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>Le Danish Hydraulic Institute (DHI) est un groupe international d’experts en modélisation hydraulique basé au Danemark et implanté dans 30 pays avec plus de 1 200 collaborateurs. Spécialiste de l’environnement de l’eau et de modélisation numérique, DHI développe la suite logicielle MIKE Powered by DHI et des services innovants (systèmes en temps réel, applications Cloud, intelligence artificielle…). Société à but non lucratif, DHI réinvestit ses bénéfices en recherche et développement.</p><p>À Nantes, DHI France réalise des études d’ingénierie-conseil en milieu maritime, côtier, fluvial et urbain.&nbsp;</p><p>Les missions réalisées par l’équipe du département maritime « Marine &amp; Coastal » couvrent des thématiques très variées, par exemple&nbsp;:&nbsp;</p><ul><li style="text-align:justify;">Energies Marines Renouvelables&nbsp;: études météo-océaniques, d’affouillement, …</li><li style="text-align:justify;">Génie côtier&nbsp;: études hydro-sédimentaires (érosion littorale et solutions de protection)</li><li style="text-align:justify;">Aménagements portuaires&nbsp;: agitation, courantologie…</li><li style="text-align:justify;">Risques littoraux&nbsp;: submersion marine, chocs mécaniques liés aux vagues</li><li style="text-align:justify;">Qualité des eaux et environnement</li></ul><p>&nbsp;</p><p>&nbsp;SUJET DE STAGE ET OBJECTIFS&nbsp;&nbsp;&nbsp;</p><p>Près d’1 million de personnes vivant sur les communes littorales métropolitaines françaises sont exposées à l’aléa naturel inondation par submersion marine (Ministère de la Transition Ecologique et de la Cohésion des Territoires, 2024). DHI travaille sur les risques de submersion marine sur de nombreux sites en France, en mettant en place des modèles numériques hydrodynamiques, de propagation des vagues et des franchissements par paquets de mer en rejouant des tempêtes historiques et en caractérisant le risque associé à des événements de période de retour donnée.</p><p><strong>L’objectif de ce stage est, pour un site (à définir), de passer de l’étude historique/théorique au système de prévision en temps réel, et à la communication des résultats via une plateforme en ligne qui collectera les données météo-marines (vagues, niveaux marins) observées en temps réel et celles issues de modélisations prévisionnelles.</strong></p><p>L’objectif d’une telle plateforme est d’informer les collectivités sur les risques, et de leur apporter un outil d’aide à la décision dans la gestion de ces risques.</p><p>Au sein du département «&nbsp;Marine &amp; Coastal&nbsp;», le ou la stagiaire se verra ainsi confier les missions suivantes&nbsp;:&nbsp;</p><ul><li style="text-align:justify;">Prise en main des modèles numériques de la suite logicielle MIKE&nbsp;: 21/3 HD pour l’hydrodynamique, MIKE 21 SW pour les états de mer ainsi que les outils de pré et de post traitement associés (Toolboxes Matlab et Python)&nbsp;;</li><li style="text-align:justify;">Développement de la chaîne de modélisation en temps réel (traitement des données, automatisation, …)&nbsp;;</li><li style="text-align:justify;">Développement d’une plateforme en ligne collectant les données en temps réel et les résultats de modélisation.</li></ul><p>&nbsp;</p><p>&nbsp;&nbsp; &nbsp;PROFIL RECHERCHÉ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p style="text-align:justify;"><strong>Niveau&nbsp;de formation :&nbsp;</strong>Bac +5 de type ingénieur ou Master II</p><p style="text-align:justify;"><strong>Compétences nécessaires&nbsp;:</strong></p><ul><li>Traitement et analyse de données (Excel, Matlab, Python...)</li><li>Informatique générale</li><li>Développement web</li><li>Hydraulique maritime&nbsp;</li><li>Bonne maîtrise de l’anglais (écrit ET parlé)</li><li>Français courant</li></ul><p style="text-align:justify;"><strong>Les + appréciés&nbsp;:&nbsp;</strong></p><ul><li>Autonomie et organisation</li><li>Connaissances en modélisation hydraulique sous MIKE</li><li>Connaissances en programmation</li><li>Connaissances en cartographie et SIG&nbsp;</li></ul><p>&nbsp;</p><p>&nbsp;&nbsp; &nbsp;CE QUE NOUS OFFRONS</p><p><strong>Durée du stage</strong>&nbsp;: 6 mois</p><p><strong>Période du stage&nbsp;:&nbsp;</strong>à partir du 1er trimestre 2025</p><p><strong>Lieu du stage</strong>&nbsp;: Nantes</p><p><strong>Indemnités&nbsp;:&nbsp;</strong>rémunération mensuelle + tickets restaurant + prise en charge de 50% de l’abonnement au réseau de transport en commun de l’agglomération nantaise.</p><p>Si cette opportunité vous intéresse, merci de déposer votre candidature (CV + lettre de motivation) sur le site de DHI&nbsp;<a href="http://www.dhigroup.com/careers">http://www.dhigroup.com/careers</a> <strong>avant le 1er décembre 2024.</strong></p><p>DHI s’engage à donner une réponse dans les deux semaines suivant réception de la candidature.&nbsp;</p><p>&nbsp;</p><p>Rejoignez notre équipe&nbsp;! DHI offre également&nbsp;:</p><ul><li>Un environnement de travail stimulant et à taille humaine</li><li>Des opportunités de développer vos compétences entouré(e) d’une équipe soudée à Nantes</li><li>Un accès au réseau international d’experts du groupe</li><li>Une culture d'entreprise basée sur l'écoute et le travail collaboratif</li></ul></div> <a class="css_button" href="https://dhi.career.emply.com/apply/stage-en-ingenierie-marine-et-cotiere-mise-en-place-dun-systeme-operationnel/iwdzpt" style="margin-top: 40px;"> Apply </a> <div id="share_e41f44ae-1c3a-4f43-aba8-b747615d1f2e" class="csa_jobadShare"> <span tabindex="0">Share in your network</span> <a class="ui_share_facebook" role="link" href="javascript:void(0);"><img class="titleTooltip" title="Share on Facebook" src="/img/careersite/share/facebook.svg" alt="Share on Facebook"></a> <a class="ui_share_twitter" role="link" href="javascript:void(0);"><img class="titleTooltip" title="Share on X" src="/img/careersite/share/twitter.svg" alt="Share on X"></a> <a class="ui_share_linkedin" role="link" href="javascript:void(0);"><img class="titleTooltip" title="Share on LinkedIn" src="/img/careersite/share/linkedin.svg" alt="Share on LinkedIn"></a> <a class="ui_share_googleplus" role="link" href="javascript:void(0);"><img class="titleTooltip" title="Share on Google Plus" src="/img/careersite/share/googleplus.svg" alt="Share on Google Plus"></a> <a class="ui_share_print" role="link" href="javascript:void(0);"><img class="titleTooltip" title="Print" src="/img/careersite/share/print.svg" alt="Print"></a> <a class="ui_share_mail" role="link" href="javascript:void(0);"><img class="titleTooltip" title="Tip a friend" src="/img/careersite/share/mail.svg" alt="Tip a friend"></a> </div> <script> $(document).ready(function() { var adLink = 'https://dhi.career.emply.com/ad/stage-en-ingenierie-marine-et-cotiere-mise-en-place-dun-systeme-operationnel/iwdzpt'; $('#share_e41f44ae-1c3a-4f43-aba8-b747615d1f2e .ui_share_facebook').click(function() { window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(adLink), '_blank'); }); $('#share_e41f44ae-1c3a-4f43-aba8-b747615d1f2e .ui_share_twitter').click(function () { window.open('https://twitter.com/intent/tweet?url=' + encodeURIComponent(adLink), '_blank'); }); $('#share_e41f44ae-1c3a-4f43-aba8-b747615d1f2e .ui_share_linkedin').click(function () { window.open('https://www.linkedin.com/shareArticle?mini=true&url=' + encodeURIComponent(adLink), '_blank'); }); $('#share_e41f44ae-1c3a-4f43-aba8-b747615d1f2e .ui_share_googleplus').click(function () { window.open('https://plus.google.com/share?url=' + encodeURIComponent(adLink), '_blank'); }); $('#share_e41f44ae-1c3a-4f43-aba8-b747615d1f2e .ui_share_print').click(function () { const jobAdHeadlineContents = document.querySelector('.css_headline').outerHTML; const jobAdTextContents = document.querySelector('.csa_jobadText').outerHTML; const jobAdInfoContents = document.querySelector('.csa_jobadInfo').outerHTML; const printContents = jobAdHeadlineContents + jobAdTextContents + jobAdInfoContents; const printWindow = window.open('', '_blank'); printWindow.document.title = document.title; printWindow.document.head.outerHTML = document.head.outerHTML; printWindow.document.body.outerHTML = printContents; printWindow.onafterprint = function () { printWindow.close(); }; printWindow.print(); }); $('#share_e41f44ae-1c3a-4f43-aba8-b747615d1f2e .ui_share_mail').click(function () { window.location.href = 'mailto:?subject=' + this.mailSubject + '&body=' + encodeURIComponent(adLink); }); }); </script> <div class="clear"></div> </div> <div class="csa_jobadRight"> <div class="csa_jobadRight"> <div class="csa_jobadInfo"> <div class="csa_jobadInfoItem"> <strong>Deadline:</strong> <span data-fact-id="deadline"></span> <script> $(document).ready(function () { var dateMoment = moment('2024-12-01T22:59:00.000Z'); var datePattern = 'DD/MM/YYYY'; var timePattern = 'HH:mm'; var dateFormat = dateMoment.hours() === 23 && dateMoment.minutes() === 59 ? datePattern : datePattern + ', ' + timePattern; var dateString = dateMoment.format(dateFormat); $('span[data-fact-id="deadline"]').html(dateString); }); </script> </div> <div class="csa_jobadInfoItem"> <strong>Expected start date:</strong> <span>01/02/2024</span> </div> <div class="csa_jobadInfoItem"> <strong> Position type:</strong> <span>Internship</span> </div> <div class="csa_jobadInfoItem"> <strong>City:</strong> <span>Nantes</span> </div> <div class="csa_jobadInfoItem"> <strong>Country:</strong> <span>France</span> </div> <div class="csa_jobadInfoItem"> <strong>Job type:</strong> <span>Advisory</span> </div> <div class="csa_jobadInfoMap" style="padding-top: 0;"> <a href="https://www.google.com/maps/place/47.2754238,-1.5099741/" target="_blank"> <img src="data:image/jpeg;base64,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" alt="2/4 rue Edouard Nignon CS 47202, 44372, Nantes, France"> </a> </div> </div> </div> <div class="clear"></div> </div> <div class="clear"></div> <br><br> DHI are the first people you should call when you have a tough challenge to solve in a water environment – be it a river, a reservoir, an ocean, a coastline, within a city or a factory. <br><br> Our knowledge of water environments is second-to-none. It represents 50 years of dedicated research and real-life experience from more than 140 countries. We strive to make this knowledge globally accessible to clients and partners by channelling it through our local teams and unique software. <br><br> Our world is water. So whether you need to save water, share it fairly, improve its quality, quantify its impact or manage its flow, we can help. Our knowledge, combined with our team's expertise and the power of our technology, holds the key to unlocking the right solution. <br><br> For more information please visit <a href="https://www.dhigroup.com">www.dhigroup.com</a> <div class="clear"></div> </div> </div> <style> #section_ae924485-5a6f-4ad9-a04e-b7989b5be605 .videoIframe , #section_ae924485-5a6f-4ad9-a04e-b7989b5be605.videoIframe { float: right; position: relative; width: 100%; padding-top: 56.25%; overflow: hidden; border-radius: 3px; margin-bottom: 30px; } #section_ae924485-5a6f-4ad9-a04e-b7989b5be605 .videoIframe iframe , #section_ae924485-5a6f-4ad9-a04e-b7989b5be605.videoIframe iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } #section_ae924485-5a6f-4ad9-a04e-b7989b5be605 .csa_jobadInfo , #section_ae924485-5a6f-4ad9-a04e-b7989b5be605.csa_jobadInfo { padding: 30px; border: 1px solid #ddd; border-radius: 3px; } #section_ae924485-5a6f-4ad9-a04e-b7989b5be605 .csa_jobadLeftLang , #section_ae924485-5a6f-4ad9-a04e-b7989b5be605.csa_jobadLeftLang { float: right; height: 50px; padding: 14px; overflow: hidden; border: 1px solid #eee; margin-left: 30px; box-sizing: border-box; } #section_ae924485-5a6f-4ad9-a04e-b7989b5be605 .css_headline , #section_ae924485-5a6f-4ad9-a04e-b7989b5be605.css_headline { font-weight: 400; } </style> <script> $(function() { $(".csa_jobadInfoItem:contains('Logo')").find('strong').remove(); }); </script> </div> </div> <div id="section_26393fb5-a17c-4589-a38b-6169f765d875" class="css_section"> <div class="css_section bottom"> <div class="css_holder"> <div class="bottom_table"> <div class="bottom_cell"> <strong>DHI A/S</strong><br /> Agern Alle 5<br /> 2970 Hørsholm<br /> Denmark<br /> hr-support@dhigroup.com<br /> </div> <div class="bottom_cell"> </div> <div class="bottom_cell bottom_social"> <a class="bottom_facebook" href="https://www.facebook.com/DHIgroup" target="_blank"></a> <a class="bottom_linkedin" href="https://www.linkedin.com/company/dhi" target="_blank"></a> <a class="bottom_youtube" href="https://www.youtube.com/user/DHIGroup" target="_blank"></a> </div> </div> </div> </div> <style> @media (max-width: 700px) { .bottom_table, .bottom_cell {display: block !important;} .bottom_cell:not(:first-child) {margin-top: 30px !important;} } </style> <style> #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom { background: #1d9a3f; color: #fff; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom a , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom a { color: #fff; text-decoration: none; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom a:hover , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom a:hover { text-decoration: underline; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_table , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_table { display: table; width: 100%; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_cell , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_cell { display: table-cell; vertical-align: top; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_phone, #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_phone, #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_mail , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_mail { height: 36px; background: url('/api/file/get/39d12231-06e0-41c5-bae9-f982451207bc') 0 5px no-repeat; padding: 0 0 0 36px; line-height: 37px; overflow: hidden; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_mail , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_mail { background-image: url('/api/file/get/1182e1bb-9042-4ddb-b93e-3b22d39fe9fd'); } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_social , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_social { width: 10px; font-size: 0px; white-space: nowrap; color: 000; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_facebook, #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_facebook, #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_instagram, #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_instagram, #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_linkedin, #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_linkedin, #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_youtube , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_youtube { display: inline-block; width: 40px; height: 40px; background: url('/img/careersite/perksbenefits/social_facebook.svg') 0 0 no-repeat; background-size: cover; margin: 16px 0 0 15px; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_facebook , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_facebook { margin-left: 0; } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_instagram , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_instagram { background-image: url('/img/careersite/perksbenefits/social_instagram.svg'); } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_linkedin , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_linkedin { background-image: url('/img/careersite/perksbenefits/social_linkedin.svg'); } #section_26393fb5-a17c-4589-a38b-6169f765d875 .bottom_youtube , #section_26393fb5-a17c-4589-a38b-6169f765d875.bottom_youtube { background-image: url('/img/careersite/perksbenefits/social_youtube.svg'); } </style> <script> </script> </div> </div> <div class="csl_bottom"> <style> .csl_bottom .css_holder { padding-top: 35px; padding-bottom: 35px; } @media (max-width: 795px) { .csl_bottom .css_holder { padding-top: 15px; padding-bottom: 15px; } } .csl_bottomPowered { transition: all 0.25s; float: left; width: 100%; display: block; height: 20px; line-height: 100px; background: url('/img/careersite/new_logo_poweredby.svg') 50% 50% no-repeat; overflow: hidden; } .csl_bottomPowered:hover { opacity: 1; filter: brightness(0) saturate(100%) invert(13%) sepia(48%) saturate(1860%) hue-rotate(186deg) brightness(95%) contrast(92%); } </style> <div class="css_holder"> <a lang="en-US" class="csl_bottomPowered" href="https://emply.com" target="_blank">Powered by Emply</a> <div class="clear"></div> </div> </div> </div> <div class="popup" role="dialog" id="popup_login" data-open-script="initLoginPopup()" style="display: none;"> <div class="holder"> <div class="content" style="width: 500px;"> <div id="showLoginDiv" class="showLogin"> <div role="dialog" aria-labelledby="login-title" aria-describedby="login-description" aria-modal="true" class="contentPadding"> <div id="login-title" class="headline marginBottom">Login</div> <div id="login-description" class="marginBottom">Have you applied for a job or created a job agent? Login below to show/change your preferences.</div> <div class="ui_login_email input icon marginBottom"> <input placeholder="Email" type="email" aria-required="true"> <div class="icon_holder" style="background-image: url('/img/icons/12/letter_bbbbbb.svg');"></div> </div> <div class="ui_login_names" style="display: none;"> <div class="ui_login_first_name input icon marginBottom"> <input placeholder="First Name" required> <div class="icon_holder" style="background-image: url('/img/icons/12/link_bbbbbb.svg');"></div> </div> <div class="ui_login_last_name input icon marginBottom"> <input placeholder="Last Name"> <div class="icon_holder" style="background-image: url('/img/icons/12/link_bbbbbb.svg');"></div> </div> </div> <div class="ui_login_password input icon marginBottomExtra"> <input type="password" placeholder="Password" aria-required="true"> <div class="icon_holder" style="background-image: url('/img/icons/12/key_bbbbbb.svg');"></div> </div> <div id="error-box" tabindex="0" role="alert" class="infomessage notallowed marginBottomExtra" hidden> Incorrect credentials </div> <a class="ui_login_login button" style="margin-right: 15px;" role="button" href="javascript:void(0);"> <span>Login</span> </a> <a class="button secondary" role="button" onClick="onForgotButtonClick()" href="javascript:void(0);"> <span>Forgot</span> </a> <a class="button cancel ui_popup_close" role="button" onClick="onMainCancelButtonClick()" href="javascript:void(0);"> <span>Cancel</span> </a> <div class="clear"></div> </div> </div> <div role="dialog" class="showForgot" style="display: none;"> <div aria-labelledby="forgot-title" aria-describedby="forgot-description" class="contentPadding"> <div id="forgot-title" class="headline marginBottom">Forgot Password</div> <div id="forgot-description" class="marginBottom"> Please fill in your email address if you have forgotten your password. We will send you an email with a link to create a new password. This link will be valid for 24 hours. </div> <div roll="form" class="showForgotForm"> <div class="ui_forgot_expired infomessage warning marginBottom" style="display: none;"> <span>Link to renewing your password has expired request a new link by entering your email below</span> <div class="clear"></div> </div> <div class="ui_forgot_email input icon"> <input type="email" aria-required="true" placeholder="Email"> <div class="icon_holder" style="background-image: url('/img/icons/12/letter_aaaaaa.svg');"></div> </div> <div class="ui_forgot_names" style="display: none;"> <div class="clear marginBottom"></div> <div class="ui_forgot_first_name input icon marginBottom"> <input placeholder="First Name"> <div class="icon_holder" style="background-image: url('/img/icons/12/link_aaaaaa.svg');"></div> </div> <div class="ui_forgot_last_name input icon"> <input placeholder="Last Name"> <div class="icon_holder" style="background-image: url('/img/icons/12/link_aaaaaa.svg');"></div> </div> </div> <div class="clear marginBottomExtra"></div> <a role="button" class="ui_forgot_renew button" href="javascript:void(0);"> <span>Renew</span> </a> <a role="button" class="button cancel" onClick="onForgotPasswordCancelClick()" href="javascript:void(0);"> <span>Cancel</span> </a> </div> <div class="showForgotSuccess" style="display: none;"> <div class="infomessage marginBottomExtra"> <span>Link to renewing your password is sent to your email.</span> <div class="clear"></div> </div> <div class="clear"></div> <a class="button secondary ui_popup_close" href="javascript:void(0);"> <span>Close</span> </a> </div> <div class="clear"></div> </div> </div> <div class="showSecure" style="display: none;"> <div class="contentPadding"> <div class="headline marginBottom">We have sent a security code to your e-mail.</div> <div class="showSecureForm"> <div class="ui_secure_code input icon"> <input placeholder="Code"> <div class="icon_holder" style="background-image: url('/img/icons/12/letter_aaaaaa.svg');"></div> </div> <div class="clear marginBottomExtra"></div> <a role="button" class="ui_secure_login button style="margin-right: 15px;" href="javascript:void(0);"> <span>Login</span> </a> <a role="button" class="button secondary" onClick="$('.showLogin, .showForgot').slideToggle(250);" href="javascript:void(0);"> <span>Forgot</span> </a> <a role="button" class="button cancel ui_popup_close" href="javascript:void(0);"> <span>Cancel</span> </a> </div> <div class="clear"></div> </div> </div> </div> </div> </div> <script> function initLoginPopup() { show('.showLogin'); hide('.showForgot'); hide('.showSecure'); hideBackgroundForElement("body-without-popups"); show('.showForgotForm') hide('.showForgotSuccess') hide('.ui_forgot_expired'); $('.ui_login_email input').val(''); $('.ui_login_first_name input').val(''); $('.ui_login_last_name input').val(''); $('.ui_login_password input').val(''); hide('.ui_login_names'); $('.ui_forgot_email input').val(''); $('.ui_forgot_first_name input').val(''); $('.ui_forgot_last_name input').val(''); $('.ui_secure_code input').val(''); hide('.ui_forgot_names'); setTimeout(() => { $('#showLoginDiv').attr('tabindex', '0').focus(); }); } function onMainCancelButtonClick() { $('.ui_login_button_popup').attr('tabindex', '0').focus(); showBackgroundForElement("body-without-popups"); hide('#error-box'); } function onForgotButtonClick() { $('.showLogin, .showForgot').slideToggle(250); hide('#error-box'); $('.showForgot').attr('tabindex', '0').focus(); } function onForgotPasswordCancelClick() { $('.showLogin, .showForgot').slideToggle(250); $('.showLogin').attr('tabindex', '0').focus(); } function openForgotPasswordWithExpired() { openPopup('popup_login'); hide('.showLogin'); hide('.showSecure'); show('.showForgot'); show('.ui_forgot_expired'); } function openSecureCodeMode() { hide('.showLogin'); hide('.showForgot'); show('.showSecure'); } function updateLoginButtonState(loggedIn, hasOnboarding) { if (loggedIn) { hide('.ui_login_button_popup'); if (hasOnboarding) { show('.ui_login_button_onboarding_profile'); hide('.ui_login_button_profile'); } else { hide('.ui_login_button_onboarding_profile'); show('.ui_login_button_profile'); } } else { show('.ui_login_button_popup'); hide('.ui_login_button_profile'); hide('.ui_login_button_onboarding_profile'); } } function show(selector) { $(selector).show(); } function hide(selector) { $(selector).hide(); } $(document).ready(function() { var loginInProgress = false; var forgotInProgress = false; var isSecureMode = false; //login status function hasLoginHash() { return window.location.hash && window.location.hash === '#login'; } function checkLoginHash() { if (hasLoginHash()) { openPopup('popup_login'); } } function checkCandidateLoggedIn() { $.ajax({ type: 'GET', contentType: 'application/json', url: '/api/integration/v2/candidate/logged-in', success: function (data) { updateLoginButtonState(data.candidateExists, data.hasOnboarding); if (!data.candidateExists) { checkLoginHash(); } }, error: function () { updateLoginButtonState(false); checkLoginHash(); } }); } checkCandidateLoggedIn(); //login function onLoginClick() { if (loginInProgress) { return; } loginInProgress = true; var loginData = { email: $('.ui_login_email input').val(), firstName: $('.ui_login_first_name input').val(), lastName: $('.ui_login_last_name input').val(), password: $('.ui_login_password input').val(), secureCode: isSecureMode ? $('.ui_secure_code input').val() : '' }; $.ajax({ type: 'POST', contentType: 'application/json', url: '/api/integration/v2/candidate/login', data: JSON.stringify(loginData), success: function (pageType) { if (pageType === 16) { openSecureCodeMode(); isSecureMode = true; loginInProgress = false; return; } if (pageType === 17) { isSecureMode = true; loginInProgress = false; return; } closePopup('popup_login'); const hasOnboarding = pageType === 14; updateLoginButtonState(true, hasOnboarding); window.location.href = hasOnboarding ? '/onboarding-profile' : '/profile'; loginInProgress = false; showBackgroundForElement("body-without-popups"); }, error: function(response) { if (response.status === 403 && response.responseJSON && response.responseJSON.requiresName) { show('.ui_login_names'); showErrorPopup('Enter first and last name to login'); } else { show('#error-box'); document.getElementById("error-box").focus(); } loginInProgress = false; } }); } $('.ui_login_login').click(onLoginClick); $('.ui_login_email input').on('enterKey', onLoginClick); $('.ui_login_password input').on('enterKey', onLoginClick); $('.ui_secure_login').click(onLoginClick); $('.ui_secure_code input').on('enterKey', onLoginClick); //forgot function onForgotClick() { if (forgotInProgress) { return; } forgotInProgress = true; var forgotData = { email: $('.ui_forgot_email input').val(), firstName: $('.ui_forgot_first_name input').val(), lastName: $('.ui_forgot_last_name input').val(), languageKey: 'en-GB' }; $.ajax({ type: 'POST', contentType: 'application/json', url: '/api/integration/v2/candidate/forgot-password', data: JSON.stringify(forgotData), success: function () { hide('.showForgotForm'); show('.showForgotSuccess'); forgotInProgress = false; }, error: function(response) { if (response.status === 403 && response.responseJSON && response.responseJSON.requiresName) { show('.ui_forgot_names'); showErrorPopup('Enter first name and last name'); } else { showErrorPopup('Incorrect e-mail'); } forgotInProgress = false; } }); } $('.ui_forgot_renew').click(onForgotClick); $('.ui_forgot_email input').on('enterKey', onForgotClick); }); </script> <div class="popup" id="popup_password" style="display: none;"> <div class="holder"> <div class="content" style="width: 500px;"> <div class="contentPadding"> <div class="headline marginBottom">Create password</div> <div class="ui_password_new_password input icon marginBottom"> <input type="password" placeholder="Password"> <div class="icon_holder" style="background-image: url('/img/icons/12/key_aaaaaa.svg');"></div> </div> <div class="ui_password_verify_password input icon marginBottomExtra"> <input type="password" placeholder="Verify password"> <div class="icon_holder" style="background-image: url('/img/icons/12/key_aaaaaa.svg');"></div> </div> <a class="ui_password_save button" style="margin-right: 15px;" href="javascript:void(0);"> <span>Save</span> </a> <div class="clear"></div> </div> </div> </div> </div> <script> $(document).ready(function() { var savePasswordInProgress = false; function getForgotCode() { return window.location.hash ? window.location.hash.replace('#newpassword/', '') : null; } function hasForgotCode() { return window.location.hash && window.location.hash.startsWith('#newpassword/') && getForgotCode(); } function setForgotCodeData() { $('#popup_password').attr('data-open-script', "document.getElementById('popup_password').setAttribute('data-code','" + getForgotCode() + "')"); } function getForgotCodeData() { return $('#popup_password').data('code'); } //check forgot code expiration function checkForgotCodeExpiration() { $.ajax({ type: 'GET', contentType: 'application/json', url: '/api/integration/v2/candidate/check-reset-code?code=' + getForgotCode(), success: function (data) { setForgotCodeData(); openPopup('popup_password'); }, error: function () { openForgotPasswordWithExpired(); } }); } if (hasForgotCode()) { checkForgotCodeExpiration(); } //save password function onSavePasswordClick() { if (savePasswordInProgress) { return; } if ($('.ui_password_new_password input').val() !== $('.ui_password_verify_password input').val()) { showErrorPopup('Passwords must match'); return; } savePasswordInProgress = true; var renewData = { code: getForgotCodeData(), password: $('.ui_password_new_password input').val() }; $.ajax({ type: 'POST', contentType: 'application/json', url: '/api/integration/v2/candidate/renew', data: JSON.stringify(renewData), success: function (pageType) { closePopup('popup_password'); const hasOnboarding = pageType === 14; updateLoginButtonState(true, hasOnboarding); window.location.href = hasOnboarding ? '/onboarding-profile' : '/profile'; savePasswordInProgress = false; }, error: function (error) { //todo: correct error message showErrorPopup(error.responseJSON.message); savePasswordInProgress = false; } }); } $('.ui_password_save').click(onSavePasswordClick); $('.ui_password_new_password input').on('enterKey', onSavePasswordClick); $('.ui_password_verify_password input').on('enterKey', onSavePasswordClick); }); </script> <div class="popup" id="popup_delete" data-open-script="initDeletePopup()" style="display: none;"> <div class="holder"> <div id="popup_delete_content" class="content"> <div class="contentPadding"> <div class="headline marginBottom"> Do you want to delete? </div> <div style="margin-bottom: 25px;"> If you delete, all related data will be lost. </div> <a class="button warning ui_popup_delete_confirm" href="javascript:void(0);"> <span>Delete</span> </a> <a class="button cancel ui_popup_delete_cancel" href="javascript:void(0);"> <span>Do not delete</span> </a> <div class="clear"></div> </div> </div> </div> </div> <script> var deleteConfirmCallback = null; function initDeletePopup() { hideBackgroundForElement("body-without-popups"); } function showDeleteConfirm(callback) { deleteConfirmCallback = callback; openPopup('popup_delete'); $('#popup_delete_content').attr('tabindex', '0').focus(); } $(document).ready(function () { $('.ui_popup_delete_confirm').click(function () { deleteConfirmCallback(); deleteConfirmCallback = null; closePopup('popup_delete'); showBackgroundForElement("body-without-popups"); }); $('.ui_popup_delete_cancel').click(function () { deleteConfirmCallback = null; closePopup('popup_delete'); showBackgroundForElement("body-without-popups"); }); }); </script> <div class="popup" id="popup_error" style="display: none;"> <div class="holder"> <div class="content"> <div class="contentPadding"> <div class="headline marginBottom"> Error </div> <div class="infomessage notallowed marginBottomExtra" style="margin-bottom: 25px;"> <span class="ui_error_message">Unknown error</span> <div class="clear"></div> </div> <a class="button secondary ui_popup_close" href="javascript:void(0);"> <span>Close</span> </a> <div class="clear"></div> </div> </div> </div> </div> <script> function showErrorPopup(message) { $('.ui_error_message').text(message); openPopup('popup_error'); } </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10