1jQuery(document).ready(function ($) { 2 $('.js-hide').css("visibility", "hidden"); 3 4 if (!String.prototype.includes){ 5 String.prototype.includes = function(search, start) { 6 if (typeof start !== 'number') {start = 0;} 7 if (start + search.length > this.length) {return false;} 8 else {return this.indexOf(search, start) !== -1;}}; 9 } 10 11 $("input[type=email]").change(function () { 12 const input = $(this).val(); 13 const domainPart = input.substr(input.indexOf("@") + 1); 14 const umlaute = ['\u00dc', '\u00fc', // Ã,ü 15 '\u00c4', '\u00e4', // Ã,ä 16 '\u00d6', '\u00f6', // Ã, ö 17 '\u00df', 'Ã', 'xn--']; // Ã, punycode 18 const submitButton = $(this).closest('form').find(':submit'); 19 const submitInput = $('input[type=text]'); 20 const element = $('#email-validationSpace'); 21 submitButton.prop("disabled",false); 22 submitInput.prop("disabled",false); 23 element.css('display', 'none'); 24 if($('#validationSpace').is(':visible')){ 25 return false; 26 } 27 $.each(umlaute, function (index, value) { 28 if (domainPart.indexOf(value) > -1) { 29 element.css('display', 'block'); 30 submitButton.prop("disabled",true); 31 submitInput.prop("disabled",true); 32 } 33 }); 34 }); 35 36 $(".clickable-row").on("click", function () { 37 var tHref = $(this).data("href"); 38 if (tHref !== undefined && tHref != null) { 39 window.document.location = tHref; 40 } 41 }); 42 43 $("td.toggle-check").on("click", function () { 44 var tCheckbox = $(this).parent().children().find("input:checkbox"); 45 tCheckbox.prop("checked", (!tCheckbox.prop("checked"))); 46 }); 47 48 $(".selected-box").on("click", function(aEvent) { 49 $("#my-icon-select-box-scroll").toggle(); 50 aEvent.stopPropagation(); 51 $(document).one("click", function() { 52 $("#my-icon-select-box-scroll").hide(); 53 }); 54 }); 55 56 $("#conditions").on("click", function () { 57 var tCondition = $("#condition"); 58 tCondition.val(tCondition.val() === "false" ? "true" : "false"); 59 }); 60 61 var elem = $('#CSSelect'); 62 if (elem.length > 0) { 63 getCsSelect(elem.data('name'), elem.data('value'), elem.data('selected')); 64 } 65 66 $('table .linkArea').on("click", function() { 67 $(this).find("a").trigger("click"); 68 }); 69 70 $(".btn-modal.messageDetail").on("click", function (e) { 71 e.stopPropagation(); 72 getMessageDetail(this); 73 }); 74 75 $(".btn-modal.publicMessage").on("click", function (e) { 76 e.stopPropagation(); 77 getPublicMessage(this); 78 }); 79 80 $(".btn-modal.zipFileContents").on("click", function (e) { 81 e.stopPropagation(); 82 getStructure(this); 83 }); 84 85 $(".publicationDetail").on("click", function (e) { 86 e.stopPropagation(); 87 redirect(this); 88 }); 89 90 $("[data-name='modalButton']").each(function() { 91 $(this).on("click", function() { 92 $(this).parent().append('<div id="modalDialogWrapper"></div>'); 93 var href = $(this).attr("href"); 94 $.ajax({
95 url: href, 96 success: function(data) { 97 $("#modalDialogWrapper").html(data); 98 $('#modalDialog').modal("show").on('hidden.bs.modal', function () { 99 $("#modalDialogWrapper").remove(); 100 }) 101 } 102 }); 103 return false; 104 }); 105 }); 106 arrayFromFix(); 107}); 108 109function getCsSelect(aName, aTarget, aSelected) { 110 aTarget = '#' + aTarget; 111 var req = $(aTarget).prop('required'); 112 $.ajax({ 113 url: "DataProvider", 114 method: "POST", 115 data: {param: aName}, 116 success: function (aResponse) { 117 $(aTarget).prop('onclick', null).off('click'); 118 if (aResponse.length > 0) { 119 var size = 1; 120 var tOutput = ""; 121 var tJson = JSON.parse(aResponse); 122 $.each(tJson, function (k, v) { 123 tOutput += '<option value="' + (req ? '' : k) + '" ' + (k === aSelected ? "selected" : "") + (k === 0 ? "hidden" : "") + '>' + v + '</option>'; 124 size++; 125 req = false; 126 }); 127 $(aTarget).html(tOutput); 128 } 129 } 130 }); 131} 132 133function printDiv(divName) { 134 var newWin= window.open("", "printwindow"); 135 var tPrintDiv = $('#'+divName); 136 var tTitle = tPrintDiv.find(".modal-title").html(); 137 var tBody = tPrintDiv.find(".modal-body").html(); 138 newWin.document.write(tTitle); 139 newWin.document.write(tBody); 140 newWin.print(); 141 newWin.close(); 142} 143 144var color = "color-main"; 145var background = "background-blue"; 146function setContrast() { 147 var CONTRASTMODE = localStorage.getItem("contrastMode"); 148 if (CONTRASTMODE === "true") { 149 color = "color-black"; 150 background = "background-black"; 151 } else { 152 color = "color-main"; 153 background = "background-blue"; 154 } 155} 156 157function getMessageDetail(aElem) { 158 setContrast(); 159 var tTarget = $($(aElem).data("target")); 160 var tData = {param: "MessageDetail", oid: $(aElem).data("oid"), participant: $(aElem).data("participant"), 161 VALIDATION_TOKEN: $(aElem).data("token"), context: $(aElem).data("context")}; 162 getMessage(tTarget, tData); 163} 164 165function getPublicMessage(aElem) { 166 setContrast(); 167 var tTarget = $($(aElem).data("target")); 168 var tData = {param: "PublicMessageDetail", oid: $(aElem).data("oid"), context: $(aElem).data("context")}; 169 getMessage(tTarget, tData); 170} 171 172function getMessage(tTarget, tData) { 173 var tTitle = $(tTarget).find(".modal-title"); 174 var tBody = $(tTarget).find(".modal-body"); 175 $(tTarget).find("#btn-print").show(); 176 tBody.html("<div style='text-align: center; height: 40px'><span class='loader'></span></div>"); 177 tTitle.html(""); 178 $.ajax({ 179 url: "DataProvider", 180 method: "POST", 181 data: tData, 182 success: function (aResponse) { 183 if (aResponse.length > 0) { 184 var tJson = JSON.parse(aResponse); 185 tTitle.html(tJson.subject); 186 var tHTML = "<div>" + tJson.time + "</div>"; 187 var tTenderLink = tJson.tender + " " + tJson.authorityKey; 188 if (tJson.participant != null) { 189 tTenderLink = "<a href='ParticipationControllerServlet?function=SpecList&ParticipantOID="+ tJson.participant + 190 "&TenderOID="+ tJson.tenderOID +"&thContext=participant ' >"+ tTenderLink +"</a>"; 191 } 192 tHTML += "<h4 class='" + color + "' style='padding: 0 0 10px 0'>" + tTenderLink + "</h4>"; 193 if (tJson.fileName != null) { 194 tHTML += "<div><i class=\"fa fas fa-paperclip " + color + "\"></i>" + 195 "<a target='_blank' class='" + color + "' href='" + tJson.attachmentLink + "'> " + tJson.fileName + "</a></div><br/>"; 196 } 197 tHTML += "<p>" + tJson.body + "</p>"; 198 tBody.html(tHTML); 199 } 200 } 201 }); 202 $(tTarget).modal("show"); 203} 204 205function getStructure(aElem) { 206 setContrast(); 207 var tTarget = $($(aElem).data("target")); 208 var tTitles = Array.from($(aElem).data("title")); 209 var tOID = $(aElem).data("oid"); 210 var tTitle = $(tTarget).find(".modal-title"); 211 var tBody = $(tTarget).find(".modal-body"); 212 var tFolder = ""; 213 var tRoot = ""; 214 var tFolderIndex = 0; 215 $(tTarget).find("#btn-print").hide(); 216 tBody.html("<div style='text-align: center; height: 40px'><span class='loader'></span></div>"); 217 tTitle.html(""); 218 var tData = {param: "FileTree", oid: tOID, participant: $(aElem).data("participant"), VALIDATION_TOKEN: $(aElem).data("token")}; 219 $.ajax({
220 url: "DataProvider", 221 method: "POST", 222 data: tData, 223 success: function (aResponse) { 224 if(aResponse.length > 0) { 225 try { 226 var tJson = JSON.parse(aResponse); 227 } 228 catch(e) { 229 document.write(aResponse); 230 } 231 buildStructure(tJson); 232 tTitle.html(tTitles[0]); 233 tFolder += tFolder.length > 0 && tRoot.length > 0 ? "<span class='folder-border displayBlock'></span>" + tRoot : tRoot; 234 tBody.html("" + 235 "<form id='downloadSelection' method='post' action='TenderingProcedureDetails'>" + 236 "<div class='folderBox'>" + tFolder + "" + 237 "<input type='hidden' name='function' value='_DownloadTenderDocument' />" + 238 "<input type='hidden' name='documentOID' value='"+tOID+"' />" + 239 "</div>" + 240 "<div class='fileDownload'>" + 241 "<input style='margin-right: 10px;' type='button' class='btn btn-primary' data-status='true' data-value='" + tTitles[3] + "' value='" + tTitles[2] + "' onclick='toggleAll(this);' />" + 242 "<input type='submit' class='btn btn-primary' value='" + tTitles[1] + "' />" + 243 "</div>" + 244 "<script type=\"text/javascript\">" + 245 " $(\".fileDownload input\").attr(\"class\", $(\"#buttonModalClose\").attr(\"class\"));\n" + 246 "</script>" + 247 "</form>"); 248 249 $(".folderCheck").on("click", function() { 250 if ($(this).is(":checked")) { 251 $("[data-parent='" + $(this).data("folder") + "']").prop("checked", true); 252 } else { 253 $("[data-parent='" + $(this).data("folder") + "']").prop("checked", false); 254 } 255 }); 256 257 $(".folderBox input:checkbox:not('.folderCheck')").on("change", function() { 258 var tSize = $("[data-parent='" + $(this).data("parent") + "']").size(); 259 var tUnchecked = $("[data-parent='" + $(this).data("parent") + "']:not(:checked)").size(); 260 if (tUnchecked === 0) { 261 $("[data-folder='" + $(this).data("parent") + "']").prop({checked: true, indeterminate: false}); 262 } else if (tUnchecked < tSize) { 263 $("[data-folder='" + $(this).data("parent") + "']").prop({checked: false, indeterminate: true}); 264 } else { 265 $("[data-folder='" + $(this).data("parent") + "']").prop({checked: false, indeterminate: false}); 266 } 267 }); 268 269 $("#downloadSelection").on("submit", function(tEvent) { 270 if (!$("#downloadSelection").find("input:checkbox").is(":checked")) { 271 tEvent.preventDefault(); 272 return false; 273 } 274 275 let tContext = window.location.pathname.includes("NetServer") ? "/NetServer":""; 276 let tNewRequestURL = window.location.origin + tContext + "/TenderingProcedureDetails" + "?function=_DownloadTenderDocuments&documentOID="+tOID; 277 let tFormRequestURL = window.location.origin + window.location.pathname + "?" + $("#downloadSelection").serialize(); 278 if (tFormRequestURL.length >= 2000) 279 { 280 tEvent.preventDefault(); 281 window.location = tNewRequestURL 282 return false; 283 } 284 }); 285 } 286 } 287 }); 288 289 var tPrevious = []; 290 var tDepth = -1; 291 function buildStructure(aFiles) { 292 var tFolderIcon = "<i class='far fa-folder-open verticalMiddle' style='font-size: 120%; width: 20px;'></i>"; 293 var tFileIcon = "<i class='far fa-file-alt " + color + " verticalMiddle' style='font-size: 120%; width: 20px;'></i>"; 294 295 if (typeof aFiles === "object") { 296 $.each(aFiles, function (tKey, tObject) { 297 if (typeof tObject === "object" && "fileName" in tObject) { 298 addFileEntry(tObject, tFileIcon); 299 } 300 else { 301 tFolderIndex++; 302 if (tKey !== "/" && tKey !== "") { 303 var tFolderCheck = "<label class='documentCheckbox'>" + 304 "<input class='folderCheck' data-folder='folder-" + tFolderIndex + "' style='cursor: pointer' type='checkbox' /></label>"; 305 var tFolderName = "<span class='verticalMiddle' style='font-weight: bold'> " + tKey + "</span>"; 306 if (tDepth !== -1) { 307 tFolder += tFolder.length > 0 ? "<span class='folder-border displayBlock'></span>" : ""; 308 tFolder += "<div style='background: #e1e1e1'>" + buildDepth(tDepth) + tFolderIcon + tFolderName + tFolderCheck + "</div>"; 309 } 310 else { 311 tFolder += "<div class='background-grey'>" + tFolderIcon + tFolderName + tFolderCheck + "</div>"; 312 } 313 } 314 tDepth++; 315 buildStructure(tObject); 316 tDepth--; 317 } 318 }); 319 } 320 } 321 322 function addFileEntry(tObject, tFileIcon) { 323 var tHref = "TenderingProcedureDetails?function=_DownloadTenderDocument&documentOID=" + tOID + "&Document=" + tObject.encodedName; 324 var tFileName = tObject.fileName; 325 var tFileSize = "<span class='fileSize " + color + "'> " + tObject.size + "</span>"; 326 var tFileLink = "<a target='_blank' href='" + tHref + "' class='filenameEllipsis verticalMiddle " + color + "'> " + tFileName + "</a>"; 327 var tCheckbox = "<label class='documentCheckbox'>" + 328 "<input style='cursor: pointer' type='checkbox' data-parent='folder-" + tFolderIndex + "' name='Document' value='"+ tObject.encodedName +"' /></label>"; 329 var tIndent = -1; 330 if (tObject.parent && tObject !== "") { 331 tIndent = tObject.parent.split("/").length - 1; 332 } 333 if (!tObject.parent || tObject.parent === "/" || tObject.parent === "") { 334 tRoot += "<div>" + tFileIcon + tFileLink + tFileSize + tCheckbox + "</span></div>"; 335 } 336 else { 337 var tFileIndent = "<span class='verticalMiddle' style='font-size: 110%; padding-left: " + (tIndent * 20) + "px'>└ </span>"; 338 tFolder += "<div>" + tFileIndent + tFileIcon + tFileLink + tFileSize + tCheckbox + "</div>"; 339 } 340 } 341 342 function buildDepth(aDepth) { 343 return "<span class='verticalMiddle' style='font-size: 110%; padding-left: " + (aDepth * 20) + "px'>└ </span>"; 344 } 345 346 $(tTarget).modal("show"); 347} 348 349function toggleAll(aElem) { 350 var tBool = $(aElem).data("status"); 351 var tTitle = $(aElem).data("value"); 352 var tText = $(aElem).attr("value"); 353 $(this).parent().find("form").find($("input:checkbox").prop("checked", tBool));
354 $(aElem).data("status", !tBool).data("value", tText).attr("value", tTitle); 355} 356 357function redirect(aElem) { 358 var tFunction = $(aElem).data("function"); 359 if (tFunction === undefined) { 360 tFunction = "Detail" 361 } 362 $.ajax({ 363 async: false, 364 url: "DataProvider", 365 method: "POST", 366 data: {param: "Redirect", OID: $(aElem).data("oid"), function: tFunction, category: $(aElem).data("category")}, 367 success: function (aResponse) { 368 var getUrl = window.location; 369 var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1]; 370 window.location = baseUrl + "/" + aResponse; 371 } 372 }) 373} 374 375function arrayFromFix(){ 376 if (!Array.from) { 377 Array.from = (function () { 378 var toStr = Object.prototype.toString; 379 var isCallable = function (fn) { 380 return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; 381 }; 382 var toInteger = function (value) { 383 var number = Number(value); 384 if (isNaN(number)) { return 0; } 385 if (number === 0 || !isFinite(number)) { return number; } 386 return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); 387 }; 388 var maxSafeInteger = Math.pow(2, 53) - 1; 389 var toLength = function (value) { 390 var len = toInteger(value); 391 return Math.min(Math.max(len, 0), maxSafeInteger); 392 }; 393 394 return function from(arrayLike/*, mapFn, thisArg */) { 395 var C = this; 396 var items = Object(arrayLike); 397 if (arrayLike == null) { 398 throw new TypeError("Array.from requires an array-like object - not null or undefined"); 399 } 400 var mapFn = arguments.length > 1 ? arguments[1] : void undefined; 401 var T; 402 if (typeof mapFn !== 'undefined') { 403 if (!isCallable(mapFn)) { 404 throw new TypeError('Array.from: when provided, the second argument must be a function'); 405 } 406 407 if (arguments.length > 2) { 408 T = arguments[2]; 409 } 410 } 411 412 var len = toLength(items.length); 413 var A = isCallable(C) ? Object(new C(len)) : new Array(len); 414 var k = 0; 415 var kValue; 416 while (k < len) { 417 kValue = items[k]; 418 if (mapFn) { 419 A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); 420 } else { 421 A[k] = kValue; 422 } 423 k += 1; 424 } 425 A.length = len; 426 return A; 427 }; 428 }()); 429 } 430} 431 432 433// SBW-Custom scripts, don't remove 434 435function getZipFiles(aElem) { 436 setContrast(); 437 var tTarget = $($(aElem).data("target")); 438 var tOID = $(aElem).data("oid"); 439 var tData = { 440 param: "ZipFileContents", 441 oid: tOID, 442 participant: $(aElem).data("participant"), 443 VALIDATION_TOKEN: $(aElem).data("token") 444 }; 445 var tTitle = $(tTarget).find(".modal-title"); 446 var tBody = $(tTarget).find(".modal-body"); 447 $(tTarget).find("#btn-print").hide(); 448 tBody.html("<div style='text-align: center; height: 40px'><span class='loader'></span></div>"); 449 tTitle.html(""); 450 $.ajax({
451 url: "DataProvider", 452 method: "POST", 453 data: tData, 454 success: function (aResponse) { 455 if (aResponse.length > 0) { 456 try { 457 var tJson = JSON.parse(aResponse); 458 } catch (e) { 459 document.write(aResponse); 460 } 461 tTitle.text($(aElem).data("title")); 462 var tHTML = "<table class='table table-striped table-hover'>"; 463 tHTML += "<thead><tr><th class='" + background + "'>icon</th><th class='" + background + "'>name</th><th class='" + background + "'>size</th><th class='" + background + "'>date</th></tr></thead><tbody>"; 464 $.each(tJson, function (k, v) { 465 var tFile = v.substring(1, v.length - 1).split(","); 466 var tHref = "TenderingProcedureDetails?function=_DownloadTenderDocument&documentOID=" + tOID + "&Document=" + tFile[0]; 467 tHTML += "<tr><td><i class='far fa-file-alt " + color + "' style='font-size: 120%;' /></td>" + 468 "<td><a target='_blank' class='" + color + "' href='" + tHref + "'>" + k + "</a></td>" + 469 "<td>" + tFile[2] + "</td>" + 470 "<td>" + tFile[1] + "</td></tr>"; 471 }); 472 tHTML += "</tbody></table>"; 473 tBody.html(tHTML); 474 } 475 } 476 }); 477 $(tTarget).modal("show"); 478} 479 480 481// Zip-Download 482 483function closeDownloadModal() { 484 $('#modal-dialog').remove(); 485} 486 487function clickDownloadBtn(url) { 488 if (!$('#termsAndConditions').prop('disabled')) { 489 closeDownloadModal(); 490 window.location = url; 491 } 492} 493 494function checkConditionsConfirmation() { 495 if ($('#confirmedConditions').is(':checked')) { 496 $('#termsAndConditions').prop('disabled', false).removeAttr('disabled'); 497 } else { 498 $('#termsAndConditions').prop('disabled', true).attr('disabled', 'disabled'); 499 } 500} 501 502function confirmTermsAndConditions(url) { 503 var modalHtml = geConditionsModalHtml(url); 504 $('body').prepend(modalHtml); 505 $('#termsAndConditions').prop('disabled', true) 506} 507 508function geConditionsModalHtml (url) { 509 var lang = document.documentElement.lang; 510 var conditions = 'https://vergabe.saarland/teilnahmebedingungen/'; 511 if(lang === 'en') { 512 conditions = 'https://vergabe.saarland/en/terms-of-use/'; 513 return '<div id="modal-dialog" class="sta-modal">\n' + 514 '\t<div class="modal-wrapper">\n' + 515 '\t\t<div class="modal-content">\n' + 516 'Please note the <a href="' + conditions + '" target="_blank"><u>conditions of participation</u></a>.<br><br>' + 517 '<input id="confirmedConditions" onclick="checkConditionsConfirmation()" type="checkbox" /><label for="confirmedConditions"> I accept the conditions of participation</label><br>' + 518 '<a disabled="disabled" class="btn btn-secondary" id="termsAndConditions" title="Download documents" href="javascript: clickDownloadBtn(\'' + url + '\')">\n' + 519 ' Download documents' + 520 '</a> <a style="float: right; margin-top: 7px;" href="javascript: closeDownloadModal()">Cancel</a>' + 521 '\t\t</div>\n' + 522 '\t</div>\n' + 523 '</div>'; 524 } else { 525 return '<div id="modal-dialog" class="sta-modal">\n' + 526 '\t<div class="modal-wrapper">\n' + 527 '\t\t<div class="modal-content">\n' + 528 'Bitte beachten Sie die <a href="' + conditions + '" target="_blank"><u>Teilnahmebedingungen</u></a>.<br><br>' + 529 '<input id="confirmedConditions" onclick="checkConditionsConfirmation()" type="checkbox" /><label for="confirmedConditions"> Ich habe die Teilnahmebedingungen zu Kenntnis genommen</label><br>' + 530 '<a disabled="disabled" class="btn btn-secondary" id="termsAndConditions" title="Unterlagen herunterladen" href="javascript: clickDownloadBtn(\'' + url + '\')">\n' + 531 ' Unterlagen herunterladen' + 532 '</a> <a style="float: right; margin-top: 7px;" href="javascript: closeDownloadModal()">Abbrechen</a>' + 533 '\t\t</div>\n' + 534 '\t</div>\n' + 535 '</div>'; 536 } 537} 538 539// WL-modal 540 541checkSysRequirementsConfirmation = function () { 542 var terms = $('#confirmedTermsConditions').is(':checked'); 543 var requirements = $('#confirmedSysRequirements').is(':checked'); 544 if (terms && requirements) { 545 $('#startBietercockpit').prop('disabled', false).removeAttr('disabled'); 546 } else { 547 $('#startBietercockpit').prop('disabled', true).attr('disabled', 'disabled'); 548 } 549}; 550 551closeSysRequConfirmation = function () { 552 console.log('close');
553 $('#modal-dialog').remove(); 554}; 555 556clickRequBtn = function (type) { 557 if (!$('#startBietercockpit').prop('disabled')) { 558 $('#' + type).trigger('click'); 559 closeSysRequConfirmation(); 560 } 561}; 562 563confirmSysRequirements = function (type) { 564 console.log('confirmSysRequirements'); 565 var modalHtml = getWLModalHtml(type); 566 $('body').prepend(modalHtml); 567 $('#startBietercockpit').prop('disabled', true); 568}; 569 570getWLModalHtml = function (type) { 571 var sysRequirements = 'https://www.staatsanzeiger.de/fileadmin/staatsanzeiger/Vergabe/Service/BIETERCOCKPIT_Systemanforderungen.pdf'; 572 var conditions = 'https://vergabe.saarland/teilnahmebedingungen/'; 573 var lang = document.documentElement.lang; 574 if(lang === 'en') { 575 sysRequirements = 'https://www.staatsanzeiger.de/fileadmin/staatsanzeiger/Vergabe/Service/BIETERCOCKPIT_Systemanforderungen.pdf'; 576 conditions = 'https://vergabe.saarland/teilnahmebedingungen/'; 577 return '<div id="modal-dialog" class="sta-modal">\n' + 578 '\t<div class="modal-wrapper">\n' + 579 '\t\t<div class="modal-content">\n' + 580 '<strong>To participate electronically, you must process and submit the documents in the AI BIDDINGCOCKPIT.</strong> ' + 581 'To do this, <strong>the latest version of the AI WEBLAUNCHER</strong> must be installed on your computer.<br>' + 582 'A PDF viewer program is required to process fillable PDFs. ' + 583 'If you do not yet have a PDF reader, we recommend Adobe Acrobat Reader.<br>' + 584 'To edit GAEB files (widely used in the construction industry) you need AVA software. For the use in the <strong>AI BIDDINGCOCKPIT</strong> we offer a free tool.<br>' + 585 '<strong>The maximum data size when submitting an electronic offer is 300 MB.</strong> ' + 586 'This concerns the sum of the documents you import into the <strong>AI BIDDINGCOCKPIT</strong>. If you still have a larger amount of files, ' + 587 'please contact our support team at 0711-66601-476 or <a href="mailto:[email protected]">[email protected].</a><br>' + 588 'Please note the <a href="' + sysRequirements +'" target="_blank"><u>system requirements</u></a> of the tendering software' + 589 ' and the <a href="' + conditions + '" target="_blank"><u>Terms of use</u></a>.<br><br>' + 590 '<input id="confirmedSysRequirements" onclick="checkSysRequirementsConfirmation()" type="checkbox" /><label for="confirmedSysRequirements"> I accept the system requirements</label>' + 591 '<input id="confirmedTermsConditions" onclick="checkSysRequirementsConfirmation()" type="checkbox" /><label for="confirmedTermsConditions"> I accept the terms of use</label><br>' + 592 '<a disabled="disabled" class="btn btn-secondary startBietercockpit" id="startBietercockpit" title="Unterlagen in <strong>AI BIETER</strong>COCKPIT öffnen" href="javascript: clickRequBtn(\'' + type + '\')">\n' + 593 ' <img id="imageBietercockpit" src="_images/img/ai_bietercockpit_small.png" alt="Unterlagen in AI BIETERCOCKPIT öffnen">\n' + 594 ' Open documents in <strong>AI BIDDINGCOCKPIT</strong> \n' + 595 ' </a> <a style="float: right; margin-top: 7px;" href="javascript: closeSysRequConfirmation()">Cancel</a>' + 596 '\t\t</div>\n' + 597 '\t</div>\n' + 598 '</div>'; 599 } else { 600 return '<div id="modal-dialog" class="sta-modal">\n' + 601 '\t<div class="modal-wrapper">\n' + 602 '\t\t<div class="modal-content">\n' + 603 '<strong>Zur elektronischen Teilnahme müßen Sie die Unterlagen im BIETERCOCKPIT bearbeiten und abgeben.</strong> ' + 604 'Dazu muss auf Ihrem Rechner der <strong>AI WEBLAUNCHER in der jeweils aktuellsten Version</strong> installiert sein.<br>' + 605 'Zur Bearbeitung von ausfüllbaren PDFs ist ein PDF-Anzeigeprogramm nötig. ' + 606 'Falls Sie noch keinen PDF-Reader haben, empfehlen wir Adobe Acrobat Reader.<br>' + 607 'Zur Bearbeitung von GAEB-Dateien (im Baubereich weit verbreitet) benötigen Sie eine AVA-Software. Für den Einsatz im BIETERCOCKPIT bieten wir ein kostenloses Tool an.<br>' + 608 '<strong>Die maximale Datengröße bei Abgabe eines elektronischen Angebots beträgt 300 MB.</strong> ' + 609 'Diese betrifft die Summe der Dokumente, die Sie in das BIETERCOCKPIT importieren. Sollten sie dennoch eine größere Dateimenge haben, ' +
610 'wenden Sie sich bitte an unseren Support unter Tel.: 0711-66601-476 oder <a href="mailto:[email protected]">[email protected].</a><br>' + 611 'Bitte beachten Sie die <a href="' + sysRequirements +'" target="_blank"><u>Systemanforderungen</u></a> der Bietersoftware' + 612 ' sowie die <a href="' + conditions + '" target="_blank"><u>Teilnahmebedingungen</u></a>.<br><br>' + 613 '<input id="confirmedSysRequirements" onclick="checkSysRequirementsConfirmation()" type="checkbox" /><label for="confirmedSysRequirements"> Ich habe die Systemvoraussetzungen zur Kenntnis genommen</label>' + 614 '<input id="confirmedTermsConditions" onclick="checkSysRequirementsConfirmation()" type="checkbox" /><label for="confirmedTermsConditions"> Ich habe die Teilnahmebedingungen zur Kenntnis genommen</label><br>' + 615 '<a disabled="disabled" class="btn btn-secondary startBietercockpit" id="startBietercockpit" title="Unterlagen in <strong>AI BIETER</strong>COCKPIT öffnen" href="javascript: clickRequBtn(\'' + type + '\')">\n' + 616 ' <img id="imageBietercockpit" src="_images/img/ai_bietercockpit_small.png" alt="Unterlagen in AI BIETERCOCKPIT öffnen">\n' + 617 ' Unterlagen in <strong>AI BIETER</strong>COCKPIT öffnen\n' + 618 ' </a> <a style="float: right; margin-top: 7px;" href="javascript: closeSysRequConfirmation()">Abbrechen</a>' + 619 '\t\t</div>\n' + 620 '\t</div>\n' + 621 '</div>'; 622 } 623 624}; 625 626showAlert = function (show = false) { 627 var cnt = document.getElementById('sta-custom-errors'); 628 if (cnt) { 629 cnt.innerHTML = ''; 630 if (show) { 631 var msg = document.createElement('p'); 632 msg.className = 'alert alert-danger'; 633 msg.innerHTML = '<span>Bitte akzeptieren Sie die Teilnahmebedingungen und Datenschutzbestimmungen, um fortfahren zu können.</span>'; 634 cnt.appendChild(msg); 635 } 636 } 637} 638 639document.addEventListener('DOMContentLoaded', function () { 640 $('form.registration.conditions .next-step').on('click', function (event) { 641 var form = document.getElementById('sta-agb-form'); 642 if (form.checkValidity()) { 643 showAlert(); 644 } else { 645 showAlert(true); 646 } 647 }) 648}); 649 650// SBW custom END
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.