// module depends on jquery.js,underscore.js

var adb = {};
adb.utils = (function() {

  var adb = {};

  adb.SetSiteMessage = function() {
    var st = $("#currentSiteMapTitle").text().trim();
    var obj = _.findWhere(amplify.store.localStorage("db.siteMessage"), {BC: st});
    var sm = (obj != undefined ? obj.Message : "noch kein Text definiert !");
    $("#siteMessage").text(sm);
  }


  adb.GetAPIUrl = function() {
    return apiUrl;
  };

  adb.GetJsonSynced = function(url) {
    var result = "";
    $.ajax({
      url: url,
      async: false,
      success: function(data, textStatus, jqXHR) {
        result = data;
      }
    });

    return result;
  };

  adb.GetJsonSyncedPosted = function(url) {
    var result = "";
    $.ajax({
      url: url,
      async: false,
      type: "POST",
      success: function(data, textStatus, jqXHR) {
        result = data;
      }
    });

    return result;
  };

  /*  adb.GetAjaxCache = function (id) {

   amplify.request(id, function (data) {reminders=data.d});
   }*/

  adb.SetCulture = function(culture) {
    amplify.store("_utils.localization.culture", culture);
    _utils.localization.Include(culture, function(key) {

      return amplify.store("_utils.localization.files." + culture)[key];
    });

  };

  adb.FormatTime = function(date) {
    var culture = amplify.store("_utils.localization.culture");
    if (culture == "de" || culture == undefined) return moment(date).format("DD.MM.YYYY");
    else throw "Not Implemented";
  };

  adb.GetCachedObject = function(cacheKey, query, returnProperty) {
    var cachedObject = amplify.store(cacheKey);
    if (query == null && returnProperty == null) return cachedObject;
    var foundResults = _.where(cachedObject, query);

    if (foundResults == undefined || foundResults.length == 0) return undefined;
    var x = _.first(foundResults);

    if (returnProperty == null) return x;

    return x[returnProperty];
  };

  adb.GetCachedArray = function(cacheKey, query) {
    var cachedObject = amplify.store(cacheKey);
    var x = _.where(cachedObject, query);
    return x;
  };

  adb.SaveProfile = function(profile) {
    amplify.store("profile", profile);
    $.ajax({
      type: "POST",
      url: adb.GetAPIUrl() + "jsonpost?command=saveprofile",
      data: { customerId: parseInt(GetUserId()), content: amplify.store("profile") },
      success: function(_result) {
      }
    });

  };

  adb.formatCSharpDate = function(dateString, dateFormat) {
      /// <summary>Format date object from string.</summary>
      /// <param name="dateString" type="String">Date as string</param>
      /// <param name="dateFormat" type="String">long for DD.MM.YYYY HH:mm, short for DD.MM.YYYY</param>
      /// <returns type="String">Date as String</returns>
      var YYYY = dateString.substring(0, 4);
      var MM = dateString.substring(5, 7);
      var DD = dateString.substring(8, 10);
      var HH = dateString.substring(11, 13);
      var mm = dateString.substring(14, 16);
      if (dateFormat === 'short')
          return DD + "." + MM + "." + YYYY;

      return DD + "." + MM + "." + YYYY + " " + HH + ":" + mm;
  };

  adb.GetSearchProfile = function(name) {
    //todo
  };

  function ParseFixedAbschnitte(data) {
      var posibleVariants = ["ABSCHNITT I: ÖFFENTLICHER AUFTRAGGEBER", "ABSCHNITT I: &#214;FFENTLICHER AUFTRAGGEBER", "ABSCHNITT I: AUFTRAGGEBER", "ABSCHNITT I: ÖFFENTLICHER AUFTRAGGEBER / AUFTRAGGEBER", "ABSCHNITT I: BAUKONZESSIONÄR",

          "ABSCHNITT II: GEGENSTAND",   // since (107794586)
          "ABSCHNITT II: GEGENSTAND DES PRÜFUNGSSYSTEMS", "ABSCHNITT II.A: AUFTRAGSGEGENSTAND – BAUAUFTRAG", "ABSCHNITT II.B: AUFTRAGSGEGENSTAND – LIEFERUNGEN ODER DIENSTLEISTUNGEN", "ABSCHNITT II.B: AUFTRAGSGEGENSTAND (LIEFERUNGEN ODER DIENSTLEISTUNGEN)", "ABSCHNITT II: AUFTRAGSGEGENSTAND", "ABSCHNITT II.A: AUFTRAGSGEGENSTAND", "ABSCHNITT II: GEGENSTAND DER BAUKONZESSION", "ABSCHNITT II: GEGENSTAND DES WETTBEWERBS / BESCHREIBUNG DES PROJEKTS", "ABSCHNITT III: RECHTLICHE, WIRTSCHAFTLICHE, FINANZIELLE UND TECHNISCHE INFORMATIONEN", "ABSCHNITT III: RECHTLICHE, WIRTSCHAFTLICHE, FINANZIELLE UND TECHNISCHE ANGABEN", "ABSCHNITT IV: VERFAHREN", "ABSCHNITT IV: VERFAHREN UND VERWALTUNGSANGABEN", "ABSCHNITT V: AUFTRAGSVERGABE", "ABSCHNITT V: WETTBEWERBSERGEBNISSE", "ABSCHNITT V: VERFAHREN", "ABSCHNITT VI: ZUSÄTZLICHE INFORMATIONEN", "ABSCHNITT VI: WEITERE ANGABEN",
          "ABSCHNITT VII: ÄNDERUNGEN", "ABSCHNITT VII: &#196;NDERUNGEN"   // since 20161018 EU-XML 2.0.9 (132563067) F14
      ];

    var abschnitte = [];
    var usedVariants = [];
    $.each(posibleVariants, function(key, value) {
      var variante = { start: data.toLowerCase().indexOf(value.toLowerCase()), txt: value, len: value.length };
      if (variante.start != -1) {
        usedVariants.push(variante);
      }
    });

    usedVariants.push({ start: data.length, txt: "ENDE", len: 0 });
    $.each(usedVariants, function(key, value) {
      var result = { ok: true };
      if (key < usedVariants.length - 1) {
        result.title = value.txt;
        var nxtStart = usedVariants[key + 1].start;
        var foo = data.substring(value.start + value.len, nxtStart);
        result.content = foo;
        abschnitte.push(result);
      }
    });
    return abschnitte;
  }

	adb.ParseFixedAbschnitte = ParseFixedAbschnitte;


    // set default toastr options
    function SetDefaultToastrOptions() {
        toastr.options = {
            "progressBar": true,
            "timeOut": "5000",
            "extendedTimeOut": "10",
            "positionClass": "toast-top-center"
        }
    }

    adb.SetDefaultToastrOptions = SetDefaultToastrOptions;
  
	return adb;

} ());
;
//todo : check for localstorage data if files on server have changed; if yes, clear

function PagePrintGen() {
  window.print();
}

var lastCheckForCacheUpdatesOnServer = null;
var cacheUpdate = false;
var timeFormat = "MM.DD.YYYY HH:mm:ss";
var cacheExpiration = 0;

function OnServerResponseError(serviceResponse) {
  alert("Fehler beim Aufruf des Datenservice!");
}

function OnServerValidationError(serviceResponse) {
  alert("Validierungsfehler beim Aufruf des Datenservice!");
}


window.onerror = function (msg, url, line) {
  alert("Zeile: " + line + "\r\n" + "Msg: " + msg + "\r\n" + "Url: " + url);
};

var newVersion = 0; //nur fuer Version 3 um Wijmo/KO zu deaktivieren
var globals = {};
var forms = {};

forms.tenderer = {};                                                                                                    // f. forms.tenderer.myinvitations
forms.security = {};



                                                                                                                        // before 20201027 Removing wijmo #169971755  
                                                                                                                        // var gridHelpers = {};
                                                                                                                        // gridHelpers.tradeParser = ... amplify.store("db.trades"), { XId: value }));
                                                                                                                        // gridHelpers.denyReasonParser = ... parseDOM: ... parse: ... toStr: function (value, culture, format, nullString) ... "Aus Kapazitätsgründen nicht möglich";
                                                                                                                        // gridHelpers.tenderTypeParser = { ...   parseDOM: .... parse: ... amplify.store("db.tendertypes") ...


                                                                                                                        // before 20201027 #169971755   
                                                                                                                        // amplify.request.define("reminders"  ... "Reminders/GetCustomerReminders" ...
                                                                                                                        // amplify.request.define("currentRole", "ajax", { url: adb.utils.GetAPIUrl() + "Security/GetCurrentRole",... 
                                                                                                                        // amplify.request.define("userid", "ajax", { url: adb.utils.GetAPIUrl() + "Security/GetUserName",
                                                                                                                        // amplify.request.define("visitedtenders", "ajax", {   url: adb.utils.GetAPIUrl() + "TenderLog/GetVisitedTenders",



globals.ajaxSetup =
{
  dataType: 'json',
  contentType: "application/json",
  fail: function (jqXHR, textStatus, errorThrown) {
                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        //if (jqXHR.status === 401) {
                                                                                                                        //  forms.security.login.Init($("#dlg_login"));
                                                                                                                        //}
                                                                                                                        //else {
                                                                                                                        //  toastr.error("unbekannt","Fehler");
                                                                                                                        //}
  }
};


globals.maxInt = 2147483647;
globals.events =
{
  ShowDetails: "0",
                                                                                                                        // before 20201027 Removing wijmo #169971755   ShowSearchResults: "1",
                                                                                                                        // before 20201027 Removing wijmo #169971755   SaveProfile: "2",
  RenameProfile: "3",
  UpdateProfile: "4",
  RunProfile: "5",
  ShowDetailsNoAccordion: "6",
  ReminderRemoved: "7",
  TenderQuestionPost: "8",
  DeleteProfile: "10",
  TabReady: "11",
  CompanySelectionDone: "12",
  TenderFileGridNeedsRefresh: "13",
//  ShowBanner: "14"
};
globals.servicecodes =
{
  OK: 0,
  Error: -99,
  ValidationFailure: -98,
  Failure1: -1,
  Failure2: -2,
  Failure3: -3,
  Failure4: -4,
  Failure5: -5,
  Failure6: -6,
  Failure7: -7,
  InActivTender: -8,
  PrincipialNotAllowed: -9,
  TendererListPwRequired: -10,
  TendererListPwExists: -11,
  DLTendererNotAllowed: -12,
  BasisTendererNotAllowed: -13,
  UnregisteredUserInvited: -14,
  CSearchProfilDeleteNotAllowed: -15

};
$.ajaxSetup(globals.ajaxSetup);




var allowedFileExtensions = ".doc, .xls, .pdf, .rar, .xml, .zip, .bmp, .jpeg, .jpg, .png, .txt, .csv," +
    ".dta, .dtn, .onlb, .onlv, .docx, .xlsx, .odt, .ods, .dwf, .dwg, .dxf, .d81, .d82, .d83, .d84, .d85," +
    ".d86, .d88, .d89, .P81, .P83, .P84, .P85, .X80, .X81, .X82, .X83, .X84, .X85, .X86, .X87, .X89, .X83Z, " +
    ".X84Z, .X86ZR, .X86ZE, .X31, .X52, .X93, .X94, .X96, .X97, .shx, .ctb";

function LogOff() {
  $.ajax({
    type: "POST",
    url: adb.utils.GetAPIUrl() + "Security/Logout",
    success: function (result) {
      if (result.Status == globals.servicecodes.Error) OnServerResponseError(result);
      else {
        if (result.Data.Success == false) {
          alert("Logout fehlgeschlagen!");
        } else {
          window.location.href = result.Data.RedirectTo;
        }
      }
    }
  });
}


/**
 * @param until_now since 20151215 EU-XML-Version 2.0.9 (107794586) 
 */
function SetDatePicker(container, until_now) {
    var dp_options = {
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd.mm.yy',
        monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
    'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
        monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun',
    'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
        dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
        dayNamesShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
        dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
        firstDay: 1,
    };

    if (until_now == true) {                        // since (107794586)
        dp_options.yearRange = "-10:+0",
        dp_options.maxDate = new Date()
    }
    else {
        dp_options.yearRange = "-0:+10",
        dp_options.minDate = new Date()
    }

    $(container).datepicker(dp_options);
}

function ApplyControlScripts() {
  $.datepicker.setDefaults({
    yearRange: "-10:+10",
    changeMonth: true,
    changeYear: true,
    dateFormat: 'dd.mm.yy',
    monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
    monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],
    dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
    dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
    dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
    firstDay: 1
  });

  $("#button1").button();
  $("#button2").button();
  $("#button3").button();
  $("#download").button();
  $("#komfortStandard").button();
  $("#kostenlos").button();
  $("#eMailAlert").button();
  $("#jetztAnmelden").button();

  $("#gdb").button();
  $("#fdb").button();
  $("#zg").button();
  $("#ebr").button();

  $("#bt_logout").button({ label: "Abmelden" }).click(function () {
    LogOff();
  });

                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        //$("#bt_loginDlg").button({ label: "Anmelden" }).click(function () {
                                                                                                                        //  forms.security.login.Init($("#dlg_login"));
                                                                                                                        //});

                                                                                                                        //$('#dlg_login').wijdialog({
                                                                                                                        //  width: 'auto',
                                                                                                                        //  height: 'auto',
                                                                                                                        //  resizable: false,
                                                                                                                        //  autoOpen: false,
                                                                                                                        //  modal: true,
                                                                                                                        //  title: "",
                                                                                                                        //  captionButtons: {
                                                                                                                        //    pin: { visible: false },
                                                                                                                        //    refresh: { visible: false },
                                                                                                                        //    toggle: { visible: false },
                                                                                                                        //    minimize: { visible: false },
                                                                                                                        //    maximize: { visible: false }
                                                                                                                        //  }
                                                                                                                        //});


  $("#dlg_CustomerDetail").wijdialog({
    width: 800,
    height: 600,
    autoOpen: false,
    captionButtons: {
      pin: { visible: false },
      refresh: { visible: false },
      maximize: { visible: false },
      minimize: { visible: false },
      toggle: { visible: false }
    }
  });

  /* neu fuer Version 3 */
  /* ENDE neu fuer Version 3 */

  // before 20180604 #157915060    .slider-main ... directorySlider
}


$(document).ready(function () {

    $("#PagePrintGen").click(function () {
        PagePrintGen();
    });

    $('#fullYear').text(new Date().getFullYear());
});



function SetTac() {
    $.ajax({
        type: "POST",
        url: adb.utils.GetAPIUrl() + "Security/SetTrueTac",
        success: function (result) {
            if (result.Status == globals.servicecodes.Error) OnServerResponseError(result);
        }
    });
}

$(function () {
    //----- OPEN
    $(function () {
        var popupTriggers = $('[data-popup-open]');

        popupTriggers.on('click', function (e) {
            var targeted_popup_class = $(this).attr('data-popup-open');
            $('[data-popup="' + targeted_popup_class + '"]').toggle(350);

            e.preventDefault();
        });

        popupTriggers.each(function () {
            var targeted_popup_class = $(this).attr('data-popup-open');
            $('[data-popup="' + targeted_popup_class + '"]').fadeIn(350);
        });
    });

    //----- CLOSE
    $('[data-popup-close]').on('click', function (e) {
        var targeted_popup_class = jQuery(this).attr('data-popup-close');
        $('[data-popup="' + targeted_popup_class + '"]').fadeOut(350);

        e.preventDefault();

    });
});;
forms.security.login = (function () {

    "use strict";


                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        //var container, vm;
                                                                                                                        //
                                                                                                                        //function ViewModel(_ck) {
                                                                                                                        //    var self = this;
                                                                                                                        //    self.tenderCount = ko.observable("");
                                                                                                                        //    self.UserName = ko.observable(_ck).extend({ required: true }).extend({ number: true }); //throttle MUST be first extension
                                                                                                                        //    self.Password = ko.observable("").extend({ required: true });
                                                                                                                        //    self.RememberMe = ko.observable(false);
                                                                                                                        //    self.DoLogin = function () {
                                                                                                                        //        DoLogin();
                                                                                                                        //    };
                                                                                                                        //}

    function trimVal( v) {
        return v == null ? "" : v.toString().trim();
    }


    function DoLogin() {
                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        //setTimeout(function () {
                                                                                                                        //    $("#tb_password").trigger("change");
                                                                                                                        //}, 250);
                                                                                                                        //setTimeout(function () {
                                                                                                                        //    $("#tb_username").trigger("change");
                                                                                                                        //}, 250);
                                                                                                                        //setTimeout(function () {
                                                                                                                        //var myViewModel = ko.validatedObservable(vm);
                                                                                                                        //myViewModel.errors.showAllMessages();
            var queryString = $.qsHandler.deserialize();
            var returnUrl = "";
            if (queryString["ReturnUrl"] != undefined) returnUrl = decodeURIComponent(queryString["ReturnUrl"]);
            if (queryString["releaseId"] != undefined) returnUrl = "/Neuheiten/Detail?releaseId=" + queryString["releaseId"];


            var userName    = trimVal($("#tb_username").val());
            var password    = trimVal($("#tb_password").val());
            
            var                rememberMe_fd = document.getElementById("cb_rememberMe");
            var rememberMe = ( rememberMe_fd != null  &&  rememberMe_fd.checked ? true : false );


            if (userName != "" && password != "") {
                $.ajax({
                    type: "POST",
                    url: adb.utils.GetAPIUrl() + "Security/Login",
                    data: JSON.stringify( { UserName: userName, Password: password, RememberMe: rememberMe, ReturnUrl: returnUrl } ),
                    success: function (result) {
                        if (result.Status == globals.servicecodes.Error) OnServerResponseError(result);
                        else {
                            if (result.Status == globals.servicecodes.ValidationFailure) {
                                var aDiv = document.getElementById("login-adb-alert");
                                if (aDiv != null) {
                                    var  msg           = "Anmeldung fehlgeschlagen -- ";
                                    var  today_blocked = ( result.Data != null  &&  result.Data.Today_blocked == true ? true : false );
                                    if(  today_blocked ) {
                                        msg = msg + "max. Anzahl der Anmeldeversuche überschritten -- bitte nutzen Sie die Funktion 'Passwort vergessen' oder ";
                                    }

                                    var customer_blocked = (result.Data != null && result.Data.Customer_blocked == true ? true : false);
                                    if (customer_blocked) {
                                        msg = msg + "dieser Zugang ist gesperrt!";
                                    }
                                    else {
                                        msg = msg + "bitte versuchen Sie den Vorgang " + (today_blocked ? "morgen" : "") + " erneut."
                                    }

                                    BuildBootStrapAlert("danger", msg, "#login-adb-alert");                             // before 20201006 #156265937 blocked aktivieren   toastr.error("Bitte versuchen sie den Vorgang erneut.", "Anmeldung fehlgeschlagen.");
                                }
                            } else {
                                window.location.href = result.Data.RedirectTo;

                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        //var expires = new Date();
                                                                                                                        //expires.setTime(expires.getTime() + (14 * 24 * 60 * 60 * 1000));
                                                                                                                        //
                                                                                                                        //document.cookie = "ck_adb" + '=' + $("#tb_username").val(); +';expires=' + expires.toUTCString();
                                                                                                                        //if ($('#cb_rememberMe').is(':checked')) {
                                                                                                                        //    document.cookie = "ck_pwd" + '=' + $("#tb_password").val(); +';expires=' + expires.toUTCString();
                                                                                                                        //} else {
                                                                                                                        //    document.cookie = "ck_pwd" + '=;expires=' + expires.toUTCString();
                                                                                                                        //}
                            }
                        }
                    }
                });
            }
                                                                                                                        // }, 2000);
    }

    
                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        // function Validate() {
                                                                                                                        //var myViewModel = ko.validatedObservable(vm);
                                                                                                                        //myViewModel.errors.showAllMessages();
                                                                                                                        //return myViewModel.isValid();
                                                                                                                        //    return true;
                                                                                                                        //}

                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        //function GetTenderCount() {
                                                                                                                        //    $.ajax({
                                                                                                                        //        url: adb.utils.GetAPIUrl() + "Security/GetTenderCount",
                                                                                                                        //        success: function (result) {
                                                                                                                        //            if (result.Status == globals.servicecodes.Error){
                                                                                                                        //                //OnServerResponseError(result);
                                                                                                                        //            }
                                                                                                                        //            else {
                                                                                                                        //                vm.tenderCount(result.Data);
                                                                                                                        //            }
                                                                                                                        //        }
                                                                                                                        //    });
                                                                                                                        //
                                                                                                                        //}


    function Init(_container) {
                                                                                                                        // before 20201006 #156265937 blocked aktivieren
                                                                                                                        //container = _container;
                                                                                                                        //// ck kommt aus cshtml
                                                                                                                        //if (ko.dataFor(container[0]) == undefined) {
                                                                                                                        //    var _ck = "";

                                                                                                                        //    if (typeof (ck) !== 'undefined') {
                                                                                                                        //        _ck = ck == 0 ? "" : ck;
                                                                                                                        //    }

                                                                                                                        //    vm = new ViewModel(_ck);
                                                                                                                        //    GetTenderCount();
                                                                                                                        //    ko.applyBindings(vm, container[0]);
                                                                                                                        //}

                                                                                                                        //if (container.selector == "#dlg_login") {
                                                                                                                        //    container.wijdialog('open');
                                                                                                                        //}
    }

    return {
        Init: Init,
        DoLogin: DoLogin
    };
} ());;
forms.security.fdbGdbLogin = function () {

    // @before 20170306 Zusatzdienste auf MVC #138127603:  var vm;  self.userName = ko.observable();   self.passWord = ko.observable();


  "use strict";

  function getFd(fdId) {
      return  document.getElementById( fdId);
  }

  function setErrorMsg(               t) {
      getFd("errorMsg").textContent = t;
      $('#adb-message-error').fadeIn();
  }


  var doLogin = function () {
      var userName = getFd("userName").value;
      var passWord = getFd("passWord").value;

      $.ajax({
          type: "POST",
          async: false,
          url: adb.utils.GetAPIUrl() + "Security/FdbGdbLogin/",
          data: JSON.stringify( { userName: userName, passWord: passWord }),
          success: function (result) {
              if (result.Status == globals.servicecodes.OK) {
                  setErrorMsg("Sie wurden erfolgreich angemeldet!");
                  window.open(result.Data);
              }
              else if (result.Status == globals.servicecodes.Failure1) {
                  setErrorMsg("Der eingegebene Benutzername bzw. das Passwort waren falsch. Bitte korrigieren Sie ihre Eingaben.");
              }
              else if (result.Status == globals.servicecodes.Failure1) {
                  setErrorMsg("Der angeforderte Token ist ungültig.<br>Probieren Sie es zu einem späteren Zeitpunkt nochmals.");
              }
              else {
                  OnServerResponseError(result);
              }
          }
      });
  }


  return {
      doLogin: doLogin
  };
}();

;
// Provides resource bundle from App_GlobalResources within JavaScript
// Resources have to be defined within resx files under App_GlobalResources
// Can be retrieved through the function call getMessage().<RESOURCESTRING>, ...

// App_GlobalResources Messages.resx
function getMessage() {

    var messages;

    $.ajax({
        async: false,
        type: "POST",
        url: adb.utils.GetAPIUrl() + "Resources/GetMessages",
    }).done(function (data) {
        messages = data.Data;
    });

    return messages;
}

// App_GlobalResources AdbText.resx
function getAdbText() {

    var text;

    $.ajax({
        async: false,
        type: "POST",
        url: adb.utils.GetAPIUrl() + "Resources/GetAdbText",
    }).done(function (data) {
        text = data.Data;
    });

    return text;
}

// App_GlobalResources AdbTextHtml.resx
function getAdbTextHtml() {

    var text;

    $.ajax({
        async: false,
        type: "POST",
        url: adb.utils.GetAPIUrl() + "Resources/GetAdbTextHtml"
    }).done(function (data) {
        text = data.Data;
    });

    return text;
}

// App_GlobalResources Icons.resx
function getIcon() {

    var icons;

    $.ajax({
        async: false,
        type: "POST",
        url: adb.utils.GetAPIUrl() + "Resources/GetIcons",
    }).done(function (data) {
        icons = data.Data;
    });

    return icons;
}

// String Formatter
// Call via 'someValue is {0} and anotherValue is {1}'.format(someValue, anotherValue);
if (!String.prototype.format){
    String.prototype.format = function () {
        var content = this;
        for (var i = 0; i < arguments.length; i++) {
            var replacement = '{' + i + '}';
            content = content.replace(replacement, arguments[i]);
        }
        return content;
    };
};
