Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <reference path="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"/>
- var Chayns = {};
- (function () {
- //#region vars
- var that = this;
- var cacheVersion = "100" + 6,
- cssVersion = "V2_100",
- invertVersion = "V2_100",
- webshadowCssVersion = "V2_100",
- chaynsApiRoot = "//" + window.location.host + "/SlitteRessource/API/",
- loadedInWebshadow = false,
- lastSetHeightOffset = 0,
- setHeightInterval = null,
- lastWindowWidth = window.innerWidth,
- lastWindowHeight = window.innerHeight,
- uacGroups = null,
- locationUsers = null,
- isAdminList = {},
- getAppInfosUserCallBacks = [],
- singelGeoCoordinatesResponse,
- getLongLatCallBack,
- bleResponseCallback,
- createQRCodeCallBack,
- beaconListCallBack,
- appInfos = null,
- beaconList = null,
- dateSelectCallBackOptions = null,
- languages = { 1: "german", 2: "english", 5: "dutch" },
- chaynsCSSRules = [],
- fbFriendsAccessToken = "",
- facebookFriends = null,
- foldOutTableTypes = { FoldOutTableNormal: "FoldOutTableNormal", FoldOutTableWrappedEntries: "FoldOutTableWrappedEntries" },
- facebookFriendsResultCallback = null,
- chaynsCallQueue = [];
- this.Slitte = {};
- this.App = this.Slitte;
- this.API = {};
- this.UrlParameter = {};
- this.OS = "";
- this.DeviceOS = "";
- this.OSVersion = "";
- this.AppVersion = "";
- this.SiteID = "";
- this.IsColorInverted = false;
- this.Language = null;
- this.Colors = null;
- this.CaptionButtonCallback = function () { };
- this.BackButtonCallback = function () { };
- this.GetLngLatCallBack = handleLongLatCallBack;
- this.NfcCallBack = function () { };
- this.FBChangedCallBack = function () { };
- this.DateSelectCallBack = handleDateSelectResponse;
- this.GetAppInfosCallBack = handleNewAppInfos;
- this.ImageUploadCallBack = null;
- this.BLECallBack = handleBLEResponse;
- this.ScanQRCodeCallBack = function () { };
- this.CreateQRCodeCallBack = handleCreateQRCodeResponse;
- this.GetBeaconsCallBack = handleNewBeaconsResponse;
- //#endregion
- //#region Init
- if (isLangResLoaded()) {
- this.DayNames = [];
- var dayNamesArray = LangRes.Get('txt_default_days_array').split(",");
- if (dayNamesArray.length > 0) {
- for (var i = 7; i < dayNamesArray.length; i++)
- this.DayNames.push(dayNamesArray[i]);
- }
- this.MonthNames = [];
- var monthNamesArray = LangRes.Get('txt_default_months_array').split(",");
- if (monthNamesArray.length > 0) {
- for (var i = 12; i < monthNamesArray.length; i++)
- this.MonthNames.push(monthNamesArray[i]);
- }
- } else {
- this.DayNames = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
- this.MonthNames = ["Januar", "Februar", "M" + String.fromCharCode(228) + "rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
- }
- getparams();
- createHeadTags();
- preLoadImg();
- listenPostMessage();
- if (!window.console) window.console = {};
- if (typeof window.console.log != 'function') window.console.log = function () { };
- if (isJQload()) {
- $.support.cors = true;
- jQuery.support.cors = true;
- $(document).ready(function () {
- setupChaynsCallQueue();
- $("body").append('<div id="ChaynsRoot"></div>');
- var rootContainer = ["ChaynsSelectContainer", "ChaynsPopUpContainer"];
- for (var container = 0; container < rootContainer.length; container++) {
- $("#ChaynsRoot").append('<div class="' + rootContainer[container] + '"></div>');
- }
- onLoadDocument();
- var showBody = function () { $('body').css('visibility', 'visible'); };
- if (!that.Slitte.GetAppInfos(showBody)) {
- createColorSchemeCSS();
- showBody();
- }
- setTimeout(showBody, 200);
- });
- }
- //#endregion
- //#region Layout
- this.Ready = function (CallBack) {
- if (typeof CallBack == 'function') {
- if (isJQload()) {
- if (appInfos == null) {//noch nicht aufgerufen (auf DOM-ready warten)
- getAppInfosUserCallBacks.push(CallBack);
- } else if (!this.Slitte.GetAppInfos(CallBack)) {//immer zurück geben
- CallBack(null);
- }
- } else {
- CallBack(null);
- }
- }
- }
- this.SetIntroText = function (Content) {
- if (isJQload()) {
- if (Content) {
- var introBox = $("#IntroBox");
- if (introBox.length > 0) {
- introBox.html(Content);
- } else {
- var modeSwitchBox = $('#ModeSwitch'),
- introBoxHTML = '<div id="IntroBox">' + Content + '</div>';
- if (modeSwitchBox.length > 0) {
- $(introBoxHTML).insertAfter(modeSwitchBox);
- } else {
- $("body").prepend(introBoxHTML);
- }
- }
- return $("#IntroBox");
- } else {
- that.RemoveIntroText();
- }
- }
- }
- this.RemoveIntroText = function () {
- if (isJQload()) {
- $("#IntroBox").remove();
- }
- }
- this.CreateBox = function (ParentElement, Content, BoxID, Admin) {
- if (isJQload()) {
- var boxwrapper = createDomElement("div", { "class": "BoxWrapper" + (Admin ? " AdminBox" : "") });
- if (BoxID) boxwrapper.id = BoxID;
- var contentwrapper = createDomElement("div", { "class": "ContentWrapper" }, Content);
- boxwrapper.appendChild(contentwrapper);
- if (ParentElement) {
- if (typeof ParentElement == "string") {//ID
- var elm = document.getElementById(ParentElement);
- if (elm) {
- elm.appendChild(boxwrapper);
- return;
- }
- } else if (ParentElement.appendChild) {//DomElement
- ParentElement.appendChild(boxwrapper);
- return;
- } else if (ParentElement.append && ParentElement.length > 0) {//jQuery
- ParentElement.append(boxwrapper);
- return;
- }
- }
- return $(boxwrapper);
- }
- }
- this.WrapBox = function (Element, BoxID, Admin) {
- var box = that.CreateBox(null, null, BoxID, Admin);
- if (isJQload()) {
- if (typeof Element == "string" && Element.indexOf("#") == -1)
- Element = "#" + Element;
- return $(Element).wrap(box).closest(".BoxWrapper");
- }
- }
- this.AnimateHeight = function (obj, height, isCompleteHeight) {
- $(obj).css("height", $(obj).innerHeight() + "px");
- window.setTimeout(function () {
- $(obj).addClass("Animate");
- $(obj).css("height", height);
- window.setTimeout(function () {
- $(obj).removeClass("Animate");
- if (isCompleteHeight != undefined && isCompleteHeight && obj.css("height") == height) {
- $(obj).css("height", "auto");
- }
- }, 600);
- }, 20);
- }
- function onLoadDocument() {
- if (that.OS == "IOS") {
- document.body.style.fontSize = "14px";
- document.body.style.lineHeight = "23px";
- } else if (that.OS.indexOf("WEBSHADOW") != -1) {
- document.body.style.fontSize = "14px";
- document.body.style.lineHeight = "23px";
- } else if (that.OS == "WP8") {
- document.body.style.fontSize = "14px";
- document.body.style.lineHeight = "23px";
- } else {
- document.body.style.fontSize = "16px";
- document.body.style.lineHeight = "21px";
- }
- if (that.OS.indexOf("WEBSHADOW") == 0) {
- that.SetWebshadowHeight();
- }
- if (isJQload()) {
- $("body").attr("ontouchstart", " ");
- }
- }
- this.CreateSwitch = function (Parent, TrueText, FalseText, State, CallBack) {
- if (isJQload() && TrueText && FalseText && TrueText) {
- State = State ? true : false;
- var wrapper = createDomElement("div", { "class": "switch", state: State.toString() });
- var trueElm = createDomElement("div", { "class": State ? "" : "inActive" }, TrueText);
- var falseElm = createDomElement("div", { "class": State ? "inActive" : "" }, FalseText);
- wrapper.appendChild(trueElm);
- wrapper.appendChild(falseElm);
- wrapper.onclick = function () {
- var elm = $(this);
- elm.find("div").toggleClass("inActive")
- elm.attr("state", elm.attr("state") == "true" ? "false" : "true");
- if (typeof CallBack == "function")
- CallBack.apply(this, [elm.attr("state") == "true"]);
- };
- if (Parent) {
- if (typeof Parent == "string" && Parent.indexOf("#") == -1)
- Parent = "#" + Parent;
- $(Parent).append(wrapper);
- }
- return $(wrapper);
- }
- }
- this.CreateCheckBox = function (Parent, Text, State, CallBack) {
- if (isJQload() && Parent) {
- Text = Text ? Text : " ";
- var cb = createDomElement("div", { "class": "checkBox" + (State ? " active" : "") }, Text);
- cb.onclick = function () {
- var elm = $(this);
- elm.toggleClass("active");
- if (typeof CallBack == "function")
- CallBack.apply(this, [elm.is(".active")]);
- }
- if (Parent) {
- if (typeof Parent == "string" && Parent.indexOf("#") == -1)
- Parent = "#" + Parent;
- $(Parent).append(cb);
- }
- return $(cb);
- }
- }
- this.CreateCSSRule = function (selector, rules) {
- if (typeof selector === "string" && typeof rules === "string") {//TODO: mit gleichem selector überschreiben
- for (var i = 0; i < chaynsCSSRules.length; i++) {
- if (selector == chaynsCSSRules[i].selector) {
- chaynsCSSRules[i].rules = rules;
- writeChaynsCSS();
- return true;
- }
- }
- chaynsCSSRules.push({ selector: selector, rules: rules });
- writeChaynsCSS();
- return true;
- }
- return false;
- }
- //#endregion
- //#region Select
- this.Select = function (Items, Multiple, CallBack, Headline, OnLoad) {
- if (isJQload() && CallBack) {
- if (Items && Items.length > 0) {
- var defaultIndex = 0;
- for (var i = 0; i < Items.length; i++) {
- if (!(Items[i] instanceof that.SelectOption))
- return false;
- else if (Items[i].Selected)
- defaultIndex = i;
- }
- var list = '<div id="ChaynsAPISelectionContainer">';
- for (var i = 0; i < Items.length; i++) {
- var selected = Items[i].Selected ? " selected" : "";
- list += '<div val="' + i + '" class="ChaynsAPISelectEntry' + selected + '">' + Items[i].Name + '</div>';
- }
- list += '</div>';
- }
- var buttons = [
- new that.PopUpButton(getLang('$txt_default_Cancel', "Abbrechen"), function () {
- if (typeof CallBack == "function")
- CallBack(null);
- })
- ];
- if (Multiple)
- buttons.push(new that.PopUpButton("OK", function () { selectDlgClosed(Items, CallBack); }));
- that.ShowPopUp(list, Headline, buttons, true, function (content) {
- var itemHeight = $("#ChaynsAPISelectionContainer>.ChaynsAPISelectEntry").first().height() + 16;
- var scrollHeight = (defaultIndex * itemHeight) - (content.height() / 2) + (itemHeight / 2);
- content.scrollTop(scrollHeight);
- $("#ChaynsAPISelectionContainer>.ChaynsAPISelectEntry").on("click", function () {
- selectDlgItemClicked(this, Items, CallBack, Multiple);
- });
- if (typeof OnLoad == "function") {
- OnLoad(content);
- }
- });
- }
- }
- function selectChange(elm, list, cb) {
- var index = $(elm).val();
- $(elm).remove();
- if (index == -1 || index == null) {//Bitte Wählen || none on mulitple
- cb(null);
- } else {
- if (typeof index == "string") {
- cb(list[index].Value);
- } else {
- var retval = [];
- for (var i = 0; i < index.length; i++) {
- if (index[i] != -1) {
- retval.push(list[index[i]].Value);
- }
- }
- if (retval.length == 1)
- cb(retval[0]);
- else
- cb(retval);
- }
- }
- }
- function selectDlgClosed(Items, CallBack) {
- if (typeof CallBack == "function") {
- var list = [], textList = [];
- var selected = $("#ChaynsAPISelectionContainer>.ChaynsAPISelectEntry.selected").each(function () {
- list.push(Items[$(this).attr("val")].Value);
- textList.push(Items[$(this).attr("val")].Name);
- });
- if (list.length == 1) {
- CallBack(list[0], textList[0]);
- } else if (list.length > 1) {
- CallBack(list, textList);
- } else {
- CallBack(null);
- }
- }
- }
- function selectDlgItemClicked(Element, Items, CallBack, Multiple) {
- if (Multiple) {
- $(Element).toggleClass("selected");
- } else {
- $(Element).addClass("selected").siblings(".selected").removeClass("selected");
- closePopUp();
- selectDlgClosed(Items, CallBack);
- }
- }
- //#endregion
- //#region FoldOutTableBasic
- function FoldOutTableBasic(Headline, Multiple, FoldOutTableType) {
- //if (this.constructor != Chayns.FoldOutTable) {
- // //wird das Object nicht mit new instanziert, sondern wie eine Funktion aufgerufen, so wird eine neue FoldOutTable zurückgegeben.
- // return new Chayns.FoldOutTable(Headline, Multiple);
- //}
- //--Private Fields
- var me = this;
- var headline = (Headline == undefined ? "" : Headline);
- var items = new Array();
- var multiple = (!Multiple ? false : true);
- var element;
- var type = FoldOutTableType == undefined ? foldOutTableTypes.FoldOutTableNormal : FoldOutTableType;
- //--Public Methods
- this.Print = type == foldOutTableTypes.FoldOutTableWrappedEntries ? printFoldOutTableWrappedEntries : printFoldOutTable;
- this.Helper = {
- GetHeadline: function () {
- return headline;
- },
- SetHeadline: function (newHeadline) {
- if (newHeadline == null) {
- newHeadline = "";
- }
- $(element).children(".FoldOutTableMainHeadline").html(newHeadline);
- if (newHeadline == "" && headline.length > 0) {
- $(element).children(".FoldOutTableMainHeadline").hide();
- }
- else if (newHeadline.length > 0 && headline == "") {
- $(element).children(".FoldOutTableMainHeadline").show();
- }
- headline = newHeadline;
- },
- GetItems: function () {
- return items;
- },
- GetElement: function () {
- return element;
- },
- GetMultiple: function () {
- return multiple;
- },
- SetMultiple: function (newMultiple) {
- multiple = newMultiple;
- },
- GetType: function () {
- return type;
- }
- };
- //--Public Fields
- this.Items;
- this.Multiple;
- this.Headline;
- this.Element;
- this.Type;
- this.Items.push = function (ItemHeadline, ItemDescription, ItemSelected, ItemInActive, Position) {
- var item = new FoldOutTableEntry(me, ItemHeadline, ItemDescription, ItemSelected, ItemInActive, Position);
- if (Position < 0) {
- return;
- }
- if (Position == null || Position >= items.length) {
- items[items.length] = item;
- } else if (Position == 0) {
- items.unshift(item);
- } else {
- before = item;
- for (var i = 0; i < items.length; i++) {
- if (i >= Position) {
- var now = items[i];
- items[i] = before;
- before = now;
- }
- }
- items[items.length] = before;
- }
- return items.length;
- }
- this.Items.pop = function (item) {
- items[items.length - 1].Remove(true);
- items[items.length - 1] = undefined;
- return Array.prototype.pop.apply(items);
- }
- this.Items.shift = function () {
- if (items[0]) {
- items[0].Remove(true);
- items[0] = undefined;
- return Array.prototype.shift.apply(items);
- }
- return;
- }
- this.Items.splice = function (StartIndex, Count) {
- if (typeof StartIndex == "number" && typeof Count == "number") {
- for (i = 0; i < Count; i++) {
- items[StartIndex + i].Remove(true);
- items[StartIndex + i] = undefined;
- }
- }
- return Array.prototype.splice.apply(items, [StartIndex, Count]);
- }
- element = buildFoldOutTable(me);
- }
- Object.defineProperties(FoldOutTableBasic.prototype, {
- "Headline": {
- get: function () { return this.Helper.GetHeadline(); },
- set: function (e) { this.Helper.SetHeadline(e); }
- },
- "Items": {
- get: function () { return this.Helper.GetItems(); }
- },
- "Element": {
- get: function () { return this.Helper.GetElement(); }
- },
- "Multiple": {
- get: function () { return this.Helper.GetMultiple(); },
- set: function (e) { this.Helper.SetMultiple(e); }
- },
- "Type": {
- get: function () { return this.Helper.GetType(); }
- }
- });
- function printFoldOutTable(Container, WrapContent, AsAdminBox) {
- try {
- var rootFoldOutTable = null;
- if (Container == undefined) { Container = document.body; WrapContent = true; }
- $(Container).append(this.Element);
- if (WrapContent != undefined && WrapContent) {
- Chayns.WrapBox(this.Element, null, AsAdminBox);
- }
- if ($(this.Element).parent().hasClass("ContentWrapper")) {
- $(this.Element).parent().css("padding", "0");
- } else if ($(this.Element).closest('.FoldOutTableRowDescription').length > 0) {
- $(this.Element).closest('.FoldOutTableRowDescription').css('padding', '0');
- }
- } catch (e) {
- return null;
- }
- }
- function printFoldOutTableWrappedEntries(Container) {
- try {
- Container = Container ? Container : document.body;
- $(Container).append(this.Element);
- }
- catch (e) {
- return null;
- }
- }
- function buildFoldOutTable(obj) {
- try {
- var itemsCorrect = true;
- for (var i = 0; i < obj.Items.length; i++) {
- if (!(obj.Items[i] instanceof that.FoldOutTableEntry)) {
- itemsCorrect = false;
- }
- }
- if (!isJQload() || !itemsCorrect) {
- return null;
- }
- if (obj.Multiple == undefined) obj.Multiple = false;
- var html = $('<div class="ChaynsAPIFoldOutTableContainer"></div>');
- var head = $('<div class="FoldOutTableRow FoldOutTableMainHeadline">' + obj.Headline + '</div>')
- if (obj.Headline == "") {
- head.hide();
- }
- html.append(head);
- return html;
- }
- catch (e) {
- return null;
- }
- }
- function buildFoldOutTableEntry(item, parent) {
- if (item.Selected && !parent.Multiple) {
- for (var i = 0; i < parent.Items.length; i++) {
- if (parent.Items[i].Selected && parent.Items[i] != item) {
- item.Selected = false;
- break;
- }
- }
- }
- var row = $('<div class="FoldOutTableRow"></div>');
- var rowHeadline = $('<div class="FoldOutTableRowHeadline Animate' + (item.Selected ? ' Active' : '') + (item.InActive ? ' InActive' : '') + '">' + item.Headline + '</div>');
- rowHeadline.on("click", null, item, FoldOutTableItemClicked);
- row.append(rowHeadline);
- var rowDescriptionContainer = $('<div class="FoldOutTableRowDescriptionContainer" ' + (item.Selected ? 'style="height:auto;"' : '') + '></div>');
- if (typeof item.Description == "string") {
- var rowDescription = $('<div class="FoldOutTableRowDescription">' + item.Description + '</div>');
- } else {
- var rowDescription = $('<div class="FoldOutTableRowDescription"></div>');
- rowDescription.append(item.Description);
- }
- rowDescriptionContainer.append(rowDescription);
- row.append(rowDescriptionContainer);
- if (parent.Type == foldOutTableTypes.FoldOutTableWrappedEntries) {
- row.addClass("WrappedEntries");
- $(row.find(".FoldOutTableRowDescription")[0]).addClass("WrappedEntries");
- $(row.find(".FoldOutTableRowHeadline")[0]).addClass("WrappedEntries");
- Chayns.WrapBox(row);
- row = row.parent().parent();
- $(row.find(".ContentWrapper")[0]).css("padding", "0").parent().css('background-color', 'inherit');
- }
- return row;
- }
- function FoldOutTableItemClicked(event) {
- event.data.Selected = (!event.data.Selected);
- }
- //#endregion FoldOutTableBasic
- //#region FoldOutTable
- this.FoldOutTable = function (Headline, Multiple) {
- return new FoldOutTableBasic(Headline, Multiple, foldOutTableTypes.FoldOutTableNormal);
- }
- //#endregion FoldOutTable
- //#region FoldOutTableWrappedEntries
- this.FoldOutTableWrappedEntries = function (Multiple) {
- return new FoldOutTableBasic(null, Multiple, foldOutTableTypes.FoldOutTableWrappedEntries);
- }
- //#endregion FoldOutTableWrappedEntries
- //#region FBFriendsDlg
- this.ShowFacebookFriendsDlg = function (AccessToken, ForceUpdate, ResultCallback, OnLoadCallback, DisplayMe) {
- DisplayMe = DisplayMe == undefined ? false : DisplayMe;
- fbFriendsAccessToken = AccessToken || fbFriendsAccessToken || (appInfos == null ? null : appInfos.AppUser.FacebookAccessToken);
- facebookFriendsResultCallback = ResultCallback;
- if ((fbFriendsAccessToken == null || fbFriendsAccessToken == "") && (facebookFriends == null || ForceUpdate)) {
- if (typeof ResultCallback == "function") {
- ResultCallback(null);
- }
- }
- else {
- if (facebookFriends == null || ForceUpdate) {
- getFacebookFriends(showFBFriendsDlg, OnLoadCallback, DisplayMe);
- }
- else {
- showFBFriendsDlg(facebookFriends, OnLoadCallback, DisplayMe)
- }
- }
- }
- this.SetFacebookFriends = function (data) {
- facebookFriends = data;
- }
- function getFacebookFriends(callback, onLoadCallback, displayMe) {
- $.get('https://graph.facebook.com/me/friends?access_token=' + fbFriendsAccessToken + "&fields=id,name,first_name,last_name,gender", function (response) {
- $.get('https://graph.facebook.com/me?access_token=' + fbFriendsAccessToken + "&fields=id,name,first_name,last_name,gender", function (me) {
- response.data.push(me);
- callback(response.data, onLoadCallback, displayMe);
- });
- });
- }
- function showFBFriendsDlg(fbResp, onLoadCallback, displayMe) {
- if (fbResp) {
- facebookFriends = fbResp;
- var items = buildFBFriendsItems(null, displayMe);
- Chayns.Select(items, false, fbFriendsCallback, null, function () {
- $("#ChaynsAPISelectionContainer").before("<div style='margin:8px;'><input id='Searchbar' style='width:100%; box-sizing: border-box;' onkeyup='Chayns.searchFBFriendDlg(this, " + displayMe + ");' /></div>");
- $("#Searchbar").focus();
- if (typeof onLoadCallback == "function") {
- onLoadCallback();
- }
- });
- }
- else {
- if (typeof facebookFriendsResultCallback == "function") {
- facebookFriendsResultCallback(null);
- }
- }
- }
- this.searchFBFriendDlg = function (obj, displayMe) {
- var text = obj.value.toLowerCase();
- var items = buildFBFriendsItems(text, displayMe);
- var list = '<div id="ChaynsAPISelectionContainer">';
- for (var i = 0; i < items.length; i++) {
- var selected = items[i].Selected ? " selected" : "";
- list += '<div val="' + items[i].Value + '" class="ChaynsAPISelectEntry' + selected + '">' + items[i].Name + '</div>';
- }
- list += '</div>';
- $("#ChaynsAPISelectionContainer").html(list);
- $("#ChaynsAPISelectionContainer>.ChaynsAPISelectEntry").on("click", function () {
- selectDlgItemClicked(this, buildFBFriendsItems(null, displayMe), fbFriendsCallback);
- });
- }
- function fbFriendsCallback(val) {
- if (val == null || val < 0) {
- facebookFriendsResultCallback(null);
- return;
- }
- facebookFriendsResultCallback(facebookFriends[val]);
- }
- function buildFBFriendsItems(search, displayMe) {
- var template = '<div style="display: table; width: 100%; vertical-align: middle;"><div style="display: table-cell; height: 30px; width: 30px; vertical-align: middle;padding-right: 10px;"><img src="##imgSrc##" style="height: 30px; width: 30px;" /></div><div style="display: table-cell; vertical-align: middle;" class="FacebookUserEntry">##name##</div></div>';
- var items = new Array();
- var i = 0;
- for (i = 0; i < facebookFriends.length; i++) {
- if ((i < facebookFriends.length - 1 || displayMe) && (search == null || facebookFriends[i].name.toLowerCase().search(search) > -1)) {
- var txt = template;
- txt = txt.replace("##imgSrc##", "//graph.facebook.com/" + facebookFriends[i].id + "/picture?width=30&height=30");
- txt = txt.replace("##name##", facebookFriends[i].name);
- items.push(new Chayns.SelectOption(txt, i, false));
- }
- }
- return items;
- }
- //#endregion
- //#region Dialog
- this.ShowPopUp = function (Content, Headline, Buttons, NoContentPadding, OnLoad) {
- var strContent = "";
- if (typeof Content === "string")
- strContent = Chayns.Trim(Content.replace(/<br[ /]*?>/g, "\n"));
- if (!Buttons || Buttons.length == 0) {
- Buttons = [new that.PopUpButton("OK")];
- }
- if (checkAppVersion({ ANDROID: 2606 }) && Buttons.length <= 3 && typeof Content == "string" && !strContent.match(/<[a-z][^<]*?>/i)) {
- chaynsCall("slitte://chaynsCall(16, 'ChaynsDialogCallBack()'," +
- "'" + encodeURI(Headline ? Headline : "") + "'," +
- "'" + encodeURI(strContent) + "', '" + encodeURI(Buttons[0] ? Buttons[0].Name : "") + "', '" + encodeURI(Buttons[1] ? Buttons[1].Name : "") + "', '" + encodeURI(Buttons[2] ? Buttons[2].Name : "") + "')");
- window.ChaynsDialogCallBack = function (ButtonID) {
- ButtonID = parseInt(ButtonID) - 1;
- if (Buttons[ButtonID]) {
- Buttons[ButtonID].CallBack();
- }
- delete window.ChaynsDialogCallBack;
- }
- } else {
- if (isJQload()) {
- window.setTimeout(function () {
- var popup = createPopUp();
- var popupHeadline = $("#ChaynsAPIPopupHeadline");
- if (Headline) {
- popupHeadline.show();
- popupHeadline.html(Headline);
- } else {
- popupHeadline.hide();
- }
- var popupcontent = $("#ChaynsAPIPopUpContent");
- popupcontent.html(Content);
- if (NoContentPadding)
- popupcontent.css("padding", "0 !important");
- var popupbuttons = $("#ChaynsAPIPopUpButtons");
- popupbuttons.html("");
- createButtons(popupbuttons, Buttons);
- $(popup).show();
- $("#ChaynsAPIPopUpOverlay").show();
- that.Slitte.AllowRefreshScroll(false);
- if (that.OS == "WP8")
- $(popup).css("max-height", "75%");
- if (OnLoad && typeof OnLoad == "function")
- OnLoad(popupcontent);
- resetPopUpSizeAndPos();
- }, 100);
- }
- }
- }
- function closePopUp() {
- $("#ChaynsAPIPopUpContainer, #ChaynsAPIPopUpOverlay").hide();
- that.Slitte.AllowRefreshScroll(true);
- }
- function createPopUp() {
- var popup = document.getElementById("ChaynsAPIPopUpContainer");
- if (!popup) {
- var chaynsRoot = $("#ChaynsRoot .ChaynsPopUpContainer");
- chaynsRoot.append(createDomElement("div", { id: "ChaynsAPIPopUpOverlay", "class": "PopUpOverLay" }));
- var container = createDomElement("div", { id: "ChaynsAPIPopUpContainer", "class": "PopUp" });
- container.appendChild(createDomElement("div", { id: "ChaynsAPIPopupHeadline" }));
- container.appendChild(createDomElement("div", { id: "ChaynsAPIPopUpContent" }));
- container.appendChild(createDomElement("div", { id: "ChaynsAPIPopUpButtons", "class": "PopUpButtons" }));
- chaynsRoot.append(container);
- $(window).resize(function () {
- if (lastWindowWidth != window.innerWidth || lastWindowHeight < window.innerHeight) {
- lastWindowWidth = window.innerWidth;
- lastWindowHeight = window.innerHeight;
- setTimeout(resetPopUpSizeAndPos, 100);
- }
- });
- return container;
- } else {
- return popup;
- }
- }
- function resetPopUpSizeAndPos() {
- var popup = document.getElementById("ChaynsAPIPopUpContainer");
- if (popup) {
- Chayns.GetWindowMetrics(function (data) {
- var contentHeight = (data.AvailHeight * ((that.OS == "WP8") ? 0.75 : 0.9)) - 100;
- if (that.OS == "ANDROID" && that.OSVersion < "3.0") {
- contentHeight -= 60;
- }
- if ($("#ChaynsAPIPopupHeadline").is(":visible")) {
- contentHeight -= 40;
- }
- contentHeight = contentHeight < 37 ? 37 : contentHeight;
- $("#ChaynsAPIPopUpContent").css("max-height", contentHeight + "px");
- var width = ((window.innerWidth - popup.clientWidth) * 0.5);
- if (that.OS != 'ANDROID' && that.DeviceOS != 'ANDROID') {
- width -= 8;
- }
- popup.style.left = width + "px";
- createScrollDivs($("#ChaynsAPIPopUpContent"));
- var topOffset = ((data.AvailHeight - popup.clientHeight) * 0.5);
- topOffset += data.WindowScrollTop;
- if (topOffset < 50) topOffset = 50;
- popup.style.top = topOffset + "px";
- });
- }
- }
- function createButtons(Parent, Buttons) {
- var buttonsWidth = (100 / Buttons.length) + '%';
- for (var i = 0; i < Buttons.length; i++) {
- var button = function (iCopy) {
- var btn = createDomElement("div", { "class": "PopUpButton" }, Buttons[iCopy].Name);
- if (that.OS == 'ANDROID' || that.DeviceOS == 'ANDROID') {
- btn.style.width = buttonsWidth;
- }
- if (that.OS && that.OS == "ANDROID") {
- btn.style.width = (100 / Buttons.length) + "%";
- }
- var hasClosed = false;
- $(btn).on("click", function (e) {
- try {
- e.stopPropagation();
- } catch (e) { }
- if (!hasClosed && Buttons[iCopy].CallBack(btn) != false) {
- hasClosed = true;
- closePopUp();
- }
- });
- return btn;
- }(i);
- Parent.append(button);
- }
- }
- function createScrollDivs(popupContent) {
- if (checkIfScrollIsNeeded()) {
- if ($("#ChaynsAPIPopUpContainer .scroll").length > 0) return true;
- if (that.OS == "ANDROID" && that.OSVersion < "3.0") {
- $('<div class="scroll up"></div>').insertBefore(popupContent);
- $('<div class="scroll down"></div>').insertAfter(popupContent);
- $("#ChaynsAPIPopUpContainer .scroll").on("touchstart", function () {
- var scroll = $("#ChaynsAPIPopUpContent").scrollTop();
- if ($(this).hasClass("up")) {
- scroll -= 37;
- } else {
- scroll += 37;
- }
- $("#ChaynsAPIPopUpContent").stop().animate({ scrollTop: scroll + "px" }, 200);
- });
- return true;
- }
- return false;
- } else {
- $("#ChaynsAPIPopUpContainer .scroll").remove();
- return false;
- }
- }
- function checkIfScrollIsNeeded() {
- var container = $("#ChaynsAPIPopUpContent")[0];
- return (container.scrollHeight - 10) > container.clientHeight;
- }
- //#endregion
- //#region SlitteBefehle
- //möglich im Webshadow
- this.Slitte.GetFacebookConnect = function (Permissions, ReloadParameter) {
- if (!Permissions) Permissions = 'user_friends';
- if (ReloadParameter == null) ReloadParameter = "comment";
- if (checkAppVersion({ ANDROID: 1359, IOS: 1366, WP8: 2469 })) {
- if (Permissions || ReloadParameter) {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(7,'" + Permissions + "','ExecCommand=" + ReloadParameter + "')");
- } else {
- chaynsCall("slitte://RequestPermissions?permissions=" + Permissions + "&ExecCommand=" + ReloadParameter);
- }
- return true;
- } else {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(8)");
- } else {
- chaynsCall("slitte://facebookconnect");
- }
- return true;
- }
- } else if (loadedInWebshadow) {
- var params = {};
- if (ReloadParameter != null) params.ReloadParameter = 'ExecCommand=' + ReloadParameter;
- if (Permissions != null) params.Permissions = Permissions;
- callWebshadowFunction('facebookConnect', JSON.stringify(params));
- return true;
- }
- return false;
- }
- //möglich im Webshadow?
- this.Slitte.CreateCaptionButton = function (Text, CallBack) {
- if (checkAppVersion({ ANDROID: 1358, IOS: 1366, WP8: 2469 })) {
- var cbParam = "";
- if (typeof CallBack == "function") {
- that.CaptionButtonCallback = CallBack;
- cbParam = "Chayns.CaptionButtonCallback()";
- } else if (typeof CallBack == "string") {
- that.CaptionButtonCallback = function () { }
- if (CallBack.indexOf("(") == -1)
- CallBack += "();";
- cbParam = CallBack;
- } else {
- that.CaptionButtonCallback = function () { }
- }
- if (cbParam) {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(5,'" + Text + "','" + cbParam + "')");
- } else {
- chaynsCall("slitte://ShowCaptionButton=" + Text + "," + cbParam);
- }
- return true;
- }
- }
- return false;
- }
- //möglich im Webshadow?
- this.Slitte.HideCaptionButton = function () {
- if (checkAppVersion({ ANDROID: 1358, IOS: 1366, WP8: 2469 })) {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(6)");
- } else {
- chaynsCall("slitte://HideCaptionButton");
- }
- return true;
- }
- return false;
- }
- this.Slitte.OpenInterCom = function () {
- if (checkAppVersion({ ANDROID: 2402, IOS: 1383, WP8: 2543 })) {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(12)");
- } else {
- chaynsCall("slitte://selectInterCom");
- }
- return true;
- }
- return false;
- }
- //möglich im Webshadow
- this.Slitte.SelectOtherTab = function (Tab, Parameter) {
- if (checkAppVersion({ ANDROID: 2402, IOS: 1383, WP8: 2469 })) {
- if (typeof Tab == "string" || typeof Tab == "number") {
- if (useChaynsCall()) {
- if (typeof Parameter === "string") {
- if (!Parameter.match(/^[&|\?]/)) {
- Parameter = "&" + Parameter;
- }
- Parameter = Parameter.replace(/^\?/, "&");
- chaynsCall("chayns://chaynsCall(13,'" + Tab + "','" + Parameter + "')");
- } else {
- chaynsCall("chayns://chaynsCall(2,'" + Tab + "')");
- }
- } else {
- chaynsCall("slitte://selectTab('" + Tab + "')");
- }
- return true;
- }
- } else if (loadedInWebshadow) {
- var paramsObj = {
- Tab: Tab,
- Parameter: Parameter
- };
- callWebshadowFunction('selectothertab', JSON.stringify(paramsObj));
- }
- return false;
- }
- //möglich im Webshadow in manchen browsern
- this.Slitte.ShowBackButton = function (CallBack) {
- if (checkAppVersion({ ANDROID: 2405, IOS: 2636, WP8: 2469 })) {
- var cbParam = "";
- if (typeof CallBack == "function") {
- that.BackButtonCallback = CallBack;
- cbParam = "Chayns.BackButtonCallback()";
- } else if (typeof CallBack == "string") {
- if (CallBack.indexOf("(") == -1) CallBack += "()";
- cbParam = CallBack;
- } else {
- that.BackButtonCallback = function () {
- that.HideBackButton();
- history.back();
- }
- cbParam = "Chayns.BackButtonCallback()";
- }
- if (cbParam) {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(10,'" + cbParam + "')");
- } else {
- chaynsCall("slitte://showBackButton," + cbParam);
- }
- return true;
- }
- }
- return false;
- }
- //möglich im Webshadow in manchen browsern
- this.Slitte.HideBackButton = function () {
- if (checkAppVersion({ ANDROID: 2405, IOS: 2636, WP8: 2469 })) {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(11)");
- } else {
- chaynsCall("slitte://hideBackButton");
- }
- return true;
- }
- return false;
- }
- this.Slitte.OpenLinkInBrowser = function (Url) {
- if (checkAppVersion({ ANDROID: 2405, IOS: 2466, WP8: 2543 })) {
- if (typeof Url == "string") {
- chaynsCall("chayns://chaynsCall(9,'" + Url + "')");
- return true;
- }
- } else if (loadedInWebshadow) {
- if (typeof Url == 'string') {
- if (Url.indexOf('http') != 0) {
- Url = 'http://' + Url;
- }
- window.open(Url, '_blank');
- return true;
- }
- }
- return false;
- }
- //möglich im Webshadow, aber ungenau
- this.Slitte.GetLongLat = function (CallBack, ContinuousTracking) {
- if (checkAppVersion({ ANDROID: 2501, IOS: 2466, WP8: 2469 })) {
- var cbParam = 'null';
- if (typeof CallBack == 'function') {
- getLongLatCallBack = CallBack;
- cbParam = "'Chayns.GetLngLatCallBack()'";
- }
- if (ContinuousTracking != true) {
- ContinuousTracking = false;
- }
- singelGeoCoordinatesResponse = !ContinuousTracking;
- chaynsCall("chayns://chaynsCall(14," + cbParam + ")");
- return true;
- }
- return false;
- };
- this.Slitte.AllowRefreshScroll = function (State) {
- if (checkAppVersion({ ANDROID: 2501 })) {
- chaynsCall("chayns://chaynsCall(0," + (State ? "true" : "false") + ")");
- return true;
- }
- return false;
- }
- //möglich im Webshadow
- this.Slitte.ShowWaitCursor = function (State) {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(1," + (State ? "true" : "false") + ")");
- return true;
- } else if (loadedInWebshadow) {
- callWebshadowFunction((State ? 'show' : 'hide') + 'LoadingCursor');
- return true;
- }
- return false;
- }
- //möglich im Webshadow
- this.Slitte.ShowPicture = function (Url) {
- if (checkAppVersion({ ANDROID: 2501, IOS: 2636, WP8: 2543 })) {
- if (typeof Url == "string" && Url.match(/jpg$|png$|gif$/i)) {
- chaynsCall("chayns://chaynsCall(4,'" + Url + "')");
- return true;
- }
- } else if (loadedInWebshadow) {
- callWebshadowFunction('showPicture', Url);
- }
- return false;
- }
- this.NfcResponseData = {
- RFID: 0,
- PersonID: 1
- };
- this.Slitte.SetNfcCallBack = function (CallBack, ResponseData) {
- if (typeof CallBack == 'function') {
- if (checkAppVersion({ ANDROID: 3234, WP8: 3121 })) {
- that.NfcCallBack = CallBack;
- var chaynsCallNr = (ResponseData == that.NfcResponseData.PersonID) ? 37 : 38;
- chaynsCall("chayns://chaynsCall(" + (chaynsCallNr == 37 ? 38 : 37) + ",null)");
- chaynsCall("chayns://chaynsCall(" + chaynsCallNr + ",'Chayns.NfcCallBack')");
- return true;
- }
- } else if (CallBack == null) {
- chaynsCall("chayns://chaynsCall(37,null)");
- chaynsCall("chayns://chaynsCall(37,null)");
- }
- return false;
- }
- //möglich im Webshadow, wenn alben als tapp vorhanden
- this.Slitte.SelectAlbum = function (AlbumName) {
- if (typeof AlbumName === "string") {
- if (useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(3,'" + AlbumName + "')");
- return true;
- } else if (loadedInWebshadow) {
- callWebshadowFunction('selectAlbum', AlbumName);
- }
- }
- return false;
- }
- //möglich im Webshadow
- this.Slitte.ShowVideo = function (VideoURL) {
- if (typeof VideoURL === "string") {
- if (VideoURL.match(/.*\..{2,}/) && useChaynsCall()) {
- chaynsCall("chayns://chaynsCall(15,'" + VideoURL + "')");
- return true;
- } else if (loadedInWebshadow) {
- callWebshadowFunction('showVideo', VideoURL);
- }
- }
- return false;
- }
- //möglich im Webshadow
- this.Slitte.GetAppInfos = function (CallBack, forceReload) {
- if (appInfos && !forceReload) {
- if (typeof CallBack == "function") {
- CallBack(appInfos);
- return true;
- }
- } else {
- if (typeof CallBack == "function") {
- getAppInfosUserCallBacks.push(CallBack);
- }
- if (that.OS && that.OS != 'BLACKBERRY' && !loadedInWebshadow) {//checkAppVersion({ "ANDROID": 2660, "IOS": 2579, "WP8": 2521 })
- chaynsCall("chayns://chaynsCall(18,'Chayns.GetAppInfosCallBack()')");
- return true;
- } else if (loadedInWebshadow) {
- callWebshadowFunction('getAppInfos', '');//TODO: callback behandeln
- return true;
- } else {
- for (var i = 0; i < getAppInfosUserCallBacks.length; i++) {
- getAppInfosUserCallBacks[i](null);
- }
- getAppInfosUserCallBacks = [];
- }
- }
- return false;
- }
- this.Slitte.Vibrate = function (Duration) {
- if (checkAppVersion({ "ANDROID": 2695, "IOS": 2596, "WP8": 2515 })) {
- Duration = (typeof Duration == "number") ? Duration : 150;
- chaynsCall("chayns://chaynsCall(19, " + Duration.toString() + ")");
- return true;
- }
- return false;
- }
- //möglich im Webshadow history.back()
- this.Slitte.NavigateBack = function () {
- if (checkAppVersion({ "ANDROID": 2696, "IOS": 2600, "WP8": 2515 })) {
- chaynsCall("chayns://chaynsCall(20)");
- return true;
- }
- return false;
- }
- //möglich im Webshadow
- this.Slitte.UploadImage = function (CallBack) {
- if (checkAppVersion({ "ANDROID": 2705, "WP8": 2538, "IOS": 2642 }) && typeof CallBack === "function") {
- that.ImageUploadCallBack = CallBack;
- chaynsCall("chayns://chaynsCall(21, 'Chayns.ImageUploadCallBack()')");
- return true;
- }
- return false;
- }
- //möglich im Webshadow (HTML5)
- this.Slitte.Player = {
- Pause: function () {
- if (checkAppVersion({ "ANDROID": 2752, "IOS": 2644, "WP8": 2543 })) {
- chaynsCall("chayns://chaynsCall(24, 0)");
- return true;
- }
- return false;
- },
- Play: function () {
- if (checkAppVersion({ "ANDROID": 2752, "IOS": 2644, "WP8": 2543 })) {
- chaynsCall("chayns://chaynsCall(24, 1)");
- return true;
- }
- return false;
- },
- ChangeUrl: function (newUrl) {
- if (checkAppVersion({ "ANDROID": 2752, "IOS": 2644, "WP8": 2543 })) {
- chaynsCall("chayns://chaynsCall(22, '" + newUrl + "')");
- return true;
- }
- return false;
- },
- UseDefaultUrl: function () {
- if (checkAppVersion({ "ANDROID": 2752, "IOS": 2644, "WP8": 2543 })) {
- chaynsCall("chayns://chaynsCall(22, 0)");
- return true;
- }
- return false;
- },
- HideButton: function () {
- if (checkAppVersion({ "ANDROID": 2752, "IOS": 2644, "WP8": 2543 })) {
- chaynsCall("chayns://chaynsCall(23, 0)");
- return true;
- }
- return false;
- },
- ShowButton: function () {
- if (checkAppVersion({ "ANDROID": 2752, "IOS": 2644, "WP8": 2543 })) {
- chaynsCall("chayns://chaynsCall(23, 1)");
- return true;
- }
- return false;
- },
- GetPlaybackStatus: function (CallBack) {
- if (checkAppVersion({ "ANDROID": 2754, "IOS": 2644 })) {
- if (typeof CallBack == "function") {
- Chayns.Slitte.GetAppInfos(function (infoObj) {
- CallBack({
- AppControlVisible: infoObj.AppInfo.PlaybackInfo.IsAppControlVisible,
- Status: infoObj.AppInfo.PlaybackInfo.PlaybackStatus,
- Url: infoObj.AppInfo.PlaybackInfo.StreamUrl
- });
- }, true);
- }
- }
- return false;
- }
- }
- this.Slitte.Bluetooth = {
- LE_SendStrength: {
- Adjacent: 0,
- Nearby: 1,
- Default: 2,
- Far: 3
- },
- LE_Scan: function (CallBack) {
- if (checkAppVersion({ "ANDROID": 2771, "IOS": 2651 })) {
- if (typeof CallBack == "function") {
- bleResponseCallback = CallBack;
- chaynsCall("chayns://chaynsCall(26, 'Chayns.BLECallBack')");
- return true;
- }
- }
- return false;
- },
- LE_Connect: function (Address, CallBack, Password) {
- if (checkAppVersion({ "ANDROID": 2771, "IOS": 2651 })) {
- if (typeof Address == "string" && that.IsBLEAdress(Address)) {
- if (typeof CallBack == "function") {
- bleResponseCallback = CallBack;
- if (typeof Password != "string" || !Password.match(/^[0-9a-f]{6,12}$/i)) {
- Password = '';
- }
- chaynsCall("chayns://chaynsCall(27, '" + Address + "','" + Password + "')");
- return true;
- }
- }
- }
- return false;
- },
- LE_Write: function (Address, SubID, MeasurePower, SendStrength, CallBack) {
- if (checkAppVersion({ "ANDROID": 2771, "IOS": 2651 })) {
- if (typeof Address == "string" && that.IsBLEAdress(Address)) {
- if (typeof SubID != 'number' || SubID < 0 || SubID > 4095) {
- SubID = 'null';
- }
- if (typeof MeasurePower != 'number' || MeasurePower < -100 || MeasurePower > 0) {
- MeasurePower = 'null';
- }
- if (typeof SendStrength != 'number' || SendStrength < 0 || SendStrength > 3) {
- SendStrength = 'null';
- }
- if (SubID != 'null' || MeasurePower != 'null' || SendStrength != 'null') {
- bleResponseCallback = (typeof CallBack == "function") ? CallBack : null;
- chaynsCall("chayns://chaynsCall(28, '" + Address + "','7A07E17A-A188-416E-B7A0-5A3606513E57'," + SubID + "," + MeasurePower + "," + SendStrength + ")");
- return true;
- }
- }
- }
- return false;
- }
- };
- //möglich im Webshadow? (custom handlers)
- this.Slitte.SaveAppointment = function (name, location, description, start, end) {
- if (checkAppVersion({ 'ANDROID': 3054, 'WP8': 3030, 'IOS': 3067 })) {
- if (typeof start != 'number' && start instanceof Date) {
- start = parseInt(start.getTime() / 1000);
- } else { return false; }
- if (typeof end != 'number') {
- end = parseInt(end.getTime() / 1000);
- } else { return false; }
- chaynsCall("chayns://chaynsCall(29,'" + name + "','" + location + "','" + description + "'," + start + "," + end + ")");
- return true;
- }
- return false;
- }
- this.DateSelectTypes = {
- Date: 1,
- Time: 2,
- DateTime: 3
- };
- this.Slitte.DateSelect = function (DateSelectType, Preselect, CallBack, MinDate, MaxDate) {
- if (checkAppVersion({ 'ANDROID': 3072, 'WP8': 3030, 'IOS': 3062 })) {//WP8 unterstützt min/maxDate noch nicht
- if (typeof CallBack == 'function' && typeof DateSelectType == 'number' && DateSelectType > 0) {
- if (typeof Preselect != 'number') {
- if (Preselect instanceof Date) {
- Preselect = parseInt(Preselect.getTime() / 1000);
- } else {
- Preselect = -1;
- }
- }
- if (typeof MinDate != 'number') {
- if (MinDate instanceof Date) {
- MinDate = parseInt(MinDate.getTime() / 1000);
- } else {
- MinDate = -1;
- }
- }
- if (typeof MaxDate != 'number') {
- if (MaxDate instanceof Date) {
- MaxDate = parseInt(MaxDate.getTime() / 1000);
- } else {
- MaxDate = -1;
- }
- }
- var dateRange = '';
- if (MinDate > -1 && MaxDate > -1) {
- dateRange = ',' + MinDate + ',' + MaxDate;
- }
- dateSelectCallBackOptions = {
- 'Function': CallBack,
- 'Preselect': Preselect,
- 'SelectType': DateSelectType
- };
- chaynsCall("chayns://chaynsCall(30, 'Chayns.DateSelectCallBack'," + DateSelectType + "," + Preselect + dateRange + ")");
- return true;
- }
- }
- return false;
- };
- //möglich im Webshadow, wenn navigate back auch klappt
- this.Slitte.ShowUrlInApp = function (URL, Title) {
- if (typeof URL == 'string') {
- if (checkAppVersion({ 'ANDROID': 3110, 'WP8': 3063, 'IOS': 3074 })) {
- var titleParam = "";
- if (typeof Title == 'string' && Title != '') {
- titleParam = ",'" + Title + "'";
- }
- chaynsCall("chayns://chaynsCall(31, '" + URL + "'" + titleParam + ")");
- return true;
- }
- }
- return false;
- }
- this.Slitte.CreateQRCode = function (DataStr, CallBack) {
- if (checkAppVersion({ 'ANDROID': 3220, 'WP8': 3106, 'IOS': 1372 })) {//TODO iOS-Version einfügen
- if (typeof DataStr != 'string') {
- DataStr = JSON.stringify(DataStr);
- }
- var callbackStr = '';
- if (typeof CallBack == 'function') {
- createQRCodeCallBack = CallBack;
- callbackStr = ",'Chayns.CreateQRCodeCallBack()'";
- }
- chaynsCall("chayns://chaynsCall(33,'" + DataStr + "'" + callbackStr + ")");
- return true;
- }
- return false;
- };
- this.Slitte.ScanQRCode = function (CallBack) {
- if (typeof CallBack == 'function') {
- if (checkAppVersion({ 'ANDROID': 3220, 'WP8': 3106, 'IOS': 1372 })) {//TODO iOS-Version einfügen
- Chayns.ScanQRCodeCallBack = CallBack;
- chaynsCall("chayns://chaynsCall(34, 'Chayns.ScanQRCodeCallBack()')");
- return true;
- }
- }
- return false;
- };
- this.Slitte.GetLocationBeacons = function (CallBack, forceReload) {
- if (checkAppVersion({ 'ANDROID': 4045, 'IOS': 4048 })) {
- if (typeof CallBack == 'function') {
- if (beaconList && !forceReload) {
- CallBack(beaconList);
- } else {
- beaconListCallBack = CallBack;
- chaynsCall("chayns://chaynsCall(39,'Chayns.GetBeaconsCallBack()')");
- }
- }
- }
- };
- //#endregion
- //#region API-Funktionen
- this.API.GetIntroText = function (SiteID, TappID, justLoad, CallBack) {
- if (isJQload()) {
- if (SiteID && TappID != null) {
- $.getJSON("//chayns1.tobit.com/TappApi/Tapp/IntroText", { SiteID: SiteID, TappID: TappID }, function (response) {
- if (response.ResultCode == 0) {
- if (justLoad) {
- if (typeof CallBack == "function")
- CallBack(response.Data.IntroText);
- } else {
- var getIntro = that.SetIntroText(response.Data.IntroText);
- if (typeof CallBack == "function")
- CallBack(getIntro);
- }
- }
- });
- }
- }
- }
- this.API.GetLocationUsers = function (fn, forceReload) {
- if (locationUsers === null || forceReload) {
- if (isJQload()) {
- $.ajax({
- url: "//chayns1.tobit.com/TappApi/User/GetAllLocationUsers",//TODO
- data: {
- SiteID: that.SiteID
- },
- cache: false,
- crossDomain: true,
- type: "GET"
- }).done(function (data) {
- if (data && data.Status && data.Status.ResultCode == 0) {
- for (var i = 0; i < data.Value.length; i++) {
- data.Value[i].PictureLink = "http://graph.facebook.com/" + data.Value[i].ID + "/picture";
- }
- locationUsers = data.Value;
- if (typeof fn === "function") {
- fn(locationUsers);
- }
- } else {
- if (typeof fn === "function") {
- fn(null);
- }
- }
- }).fail(function () {
- if (typeof fn === "function") {
- fn(null);
- }
- });
- }
- } else {
- if (typeof fn === "function") {
- fn(locationUsers);
- }
- }
- }
- this.API.GetUACGroups = function (fn, forceReload) {
- if (uacGroups === null || forceReload) {
- if (isJQload()) {
- $.ajax({
- url: "//chayns1.tobit.com/TappApi/Tapp/GetUACGroups",//TODO
- data: {
- SiteID: that.SiteID
- },
- cache: false,
- crossDomain: true,
- type: "GET"
- }).done(function (data) {
- if (data && data.Status && data.Status.ResultCode == 0) {
- uacGroups = data.Value;
- if (typeof fn === "function") {
- fn(uacGroups);
- }
- } else {
- if (typeof fn === "function") {
- fn(null);
- }
- }
- }).fail(function () {
- if (typeof fn === "function") {
- fn(null);
- }
- });
- }
- } else {
- if (typeof fn === "function") {
- fn(uacGroups);
- }
- }
- }
- this.API.IsUserAdminOfLocation = function (userFBID, fn, forceReload) {
- if (userFBID) {
- if (userFBID in isAdminList && !forceReload) {
- if (typeof fn === "function") {
- fn(isAdminList[userFBID]);
- }
- } else {
- if (isJQload()) {
- $.ajax({
- url: "//chayns1.tobit.com/TappApi/User/IsUserAdmin",//TODO
- data: {
- SiteID: that.SiteID,
- FBID: userFBID
- },
- cache: false,
- crossDomain: true,
- type: "GET"
- }).done(function (data) {
- if (data && data.Status.ResultCode == 0) {
- isAdminList[userFBID] = data.Value;
- if (typeof fn === "function") {
- fn(data.Value);
- }
- } else {
- if (typeof fn === "function") {
- fn(null);
- }
- }
- }).fail(function () {
- if (typeof fn === "function") {
- fn(null);
- }
- });
- }
- }
- }
- }
- this.API.SendInterComMessage = function (reciever, name, fbToken, finished) {//default im dialog
- if (typeof reciever === "string") {
- var getDataFunction = null;
- if (reciever.toLowerCase() == "user") {
- getDataFunction = that.API.GetLocationUsers;
- } else if (reciever.toLowerCase() == "group") {
- getDataFunction = that.API.GetUACGroups;
- } else {//site || FacebookID
- showInterComMsgDialog(reciever, name);
- return;
- }
- getDataFunction(function myfunction(list) {
- var options = [];
- for (var i = 0; i < list.length; i++) {
- options.push(new that.SelectOption(list[i].Name, list[i].ID));
- }
- that.Select(options, false, showInterComMsgDialog);
- });
- }
- function showInterComMsgDialog(id, showName) {
- that.ShowPopUp('<textarea class="borderbox" style="width: 100%;"></textarea>', "Nachricht an " + (name || showName || id),
- [new that.PopUpButton("Abbrechen"), new that.PopUpButton("Senden", function () {
- var msg = that.Trim($("#ChaynsAPIPopUpContent>textarea").val());
- if (msg != "") {
- if (reciever.toLowerCase() == "group") {
- that.API.SendInterComMessageToGroup(fbToken, id, msg, finished);
- } else if (reciever.toLowerCase() == "user") {
- that.API.SendInterComMessageToUser(fbToken, id, msg, finished);
- } else if (reciever.toLowerCase() == 'site') {
- that.API.SendInterComMessageAsUser(fbToken, msg, finished);
- } else {//reciever == FacebookID
- that.API.SendInterComMessageToUser(fbToken, id, msg, finished);
- }
- } else {
- return false;
- }
- })], false, function (content) {
- var input = $(content).find("textarea").on("scroll keyup", function () {
- $(this).height(0);
- var height = this.scrollHeight + 2;
- if (height < 80)
- height = 80;
- $(this).height(height);
- }).focus();
- input.height(0);
- var height = input[0].scrollHeight + 2;
- if (height < 80)
- height = 80;
- input.height(height);
- });
- }
- }
- this.API.SendInterComMessageAsUser = function (fbToken, message, fn) {
- if (fbToken && message && isJQload()) {
- $.ajax({
- url: "//chayns1.tobit.com/TappApi/User/SendInterComMessageAsUser",
- data: {
- SiteID: that.SiteID,
- AccessToken: fbToken,
- Message: message
- },
- cache: false,
- crossDomain: true,
- type: "GET"
- }).done(function (data) {
- if (typeof fn === "function") {
- fn(data.ResultCode == 0)
- }
- }).fail(function () {
- if (typeof fn === "function") {
- fn(false);
- }
- });
- }
- }
- this.API.SendInterComMessageToUser = function (fbToken, toFBID, message, fn) {
- if (fbToken && toFBID && message && isJQload()) {
- $.ajax({
- url: "//chayns1.tobit.com/TappApi/Tapp/SendIntercomMessageAsPage",
- data: {
- SiteID: that.SiteID,
- AccessToken: fbToken,
- ToFBID: toFBID,
- Message: message
- },
- cache: false,
- crossDomain: true,
- type: "GET"
- }).done(function (data) {
- if (typeof fn === "function") {
- fn(data.ResultCode == 0)
- }
- }).fail(function () {
- if (typeof fn === "function") {
- fn(false);
- }
- });
- }
- }
- this.API.SendInterComMessageToGroup = function (fbToken, toGroupID, message, fn) {
- if (fbToken && toGroupID !== undefined && message && isJQload()) {
- $.ajax({
- url: "//chayns1.tobit.com/TappApi/Tapp/SendIntercomMessageAsPageToGroup",
- data: {
- SiteID: that.SiteID,
- AccessToken: fbToken,
- ToGroupID: toGroupID,
- Message: message
- },
- cache: false,
- crossDomain: true,
- type: "GET"
- }).done(function (data) {
- if (typeof fn === "function") {
- fn(data.ResultCode == 0)
- }
- }).fail(function () {
- if (typeof fn === "function") {
- fn(false);
- }
- });
- }
- }
- //#endregion
- //#region Helper
- this.GetTimeStr = function (PrintDate, PrintDate2) {
- var retStr = "";
- if (PrintDate == null) {//Jetzt
- PrintDate = new Date();
- }
- if (PrintDate && PrintDate.getHours) {//DateObj
- retStr += PrintDate.getHours() + ":";
- retStr += (PrintDate.getMinutes() < 10) ? "0" + PrintDate.getMinutes() : PrintDate.getMinutes();
- if (PrintDate2 && PrintDate2.getHours) {
- retStr += " - ";
- retStr += PrintDate2.getHours() + ":";
- retStr += (PrintDate2.getMinutes() < 10) ? "0" + PrintDate2.getMinutes() : PrintDate2.getMinutes();
- }
- retStr += " Uhr";
- }
- return retStr;
- }
- this.GetDateStr = function (PrintDate, withTime, PrintDate2) {
- var retStr = "";
- if (PrintDate == null) {
- PrintDate = new Date();
- }
- if (PrintDate && PrintDate.getDay) {
- retStr += that.GetDayName(PrintDate, true) + ", ";
- retStr += PrintDate.getDate() + ". ";
- retStr += that.MonthNames[PrintDate.getMonth()];
- if (withTime) {
- if (!PrintDate2 || (PrintDate2.getDate && PrintDate.getFullYear() == PrintDate2.getFullYear() && PrintDate.getMonth() == PrintDate.getMonth() && PrintDate.getDate() == PrintDate2.getDate())) {
- retStr += ", ";
- retStr += that.GetTimeStr(PrintDate, PrintDate2);
- } else {
- retStr += ", ";
- retStr += that.GetTimeStr(PrintDate) + " - " + that.GetDateStr(PrintDate2, withTime);
- }
- } else if (PrintDate2 && PrintDate2.getDate) {
- retStr += " - " + that.GetDateStr(PrintDate2);
- }
- }
- return retStr;
- }
- this.GetDayName = function (date, camelCase) {
- var now = new Date();
- var yesterday = new Date(now.getTime() - 86400000);//ein Tag
- var tomorrow = new Date(now.getTime() + 86400000);
- var retval = "";
- if (date.getDate() == now.getDate() && date.getMonth() == now.getMonth() && date.getFullYear() == now.getFullYear())
- retval = getLang('$txt_default_TimeDiffArray', 'Gestern,Heute,Morgen').split(',')[1]; // "Heute";
- else if (date.getDate() == yesterday.getDate() && date.getMonth() == yesterday.getMonth() && date.getFullYear() == yesterday.getFullYear())
- retval = getLang('$txt_default_TimeDiffArray', 'Gestern,Heute,Morgen').split(',')[0]; // "Gestern";
- else if (date.getDate() == tomorrow.getDate() && date.getMonth() == tomorrow.getMonth() && date.getFullYear() == tomorrow.getFullYear())
- retval = getLang('$txt_default_TimeDiffArray', 'Gestern,Heute,Morgen').split(',')[2]; // "Morgen";
- else
- retval = that.DayNames[date.getDay()];
- if (!camelCase)
- retval = retval.toLowerCase();
- return retval;
- }
- this.StringReplace = function (string, replacements) {
- if (string && typeof replacements == "object") {
- for (var key in replacements) {
- string = string.replace(new RegExp(key, "gi"), replacements[key]);
- }
- }
- return string;
- }
- this.GetWindowMetrics = function (CallBack) {
- if (typeof CallBack === "function") {
- if (window != window.top) {
- var messageRecieved = false;
- $(window).on("message", function (e) {
- var data = e.originalEvent.data;
- if (data.match(/^chayns.customTab.getWindowMetrics:/i)) {
- messageRecieved = true;
- CallBack(JSON.parse(data.replace(/^chayns.customTab.getWindowMetrics:/i, "")));
- $(window).off("message");
- }
- });
- callWebshadowFunction("getWindowMetrics", '');
- //window.top.postMessage("slitte:" + JSON.stringify(sendData), "*");
- setTimeout(function () {
- if (!messageRecieved) {
- $(window).off("message");
- CallBack({ AvailHeight: window.innerHeight, WindowScrollTop: $(window).scrollTop() });
- }
- }, 300);
- } else {
- CallBack({ AvailHeight: window.innerHeight, WindowScrollTop: $(window).scrollTop() });
- }
- }
- }
- this.SetWebshadowHeight = function (Offset) {
- if (window != window.top) {
- lastSetHeightOffset = typeof Offset === "number" ? Offset : 0;
- if (setHeightInterval == null) {
- callWebshadowFunction('forceHeight', 500);
- var lastHeight = 0;
- setHeightInterval = setInterval(function () {
- var newHeight = $("body").height() + lastSetHeightOffset;
- if (newHeight != lastHeight) {
- lastHeight = newHeight;
- callWebshadowFunction("height", newHeight);
- }
- }, 100);
- }
- }
- }
- function createDomElement(type, attributes, innerHTML) {
- var DOMElement = document.createElement(type);
- if (innerHTML)
- DOMElement.innerHTML = innerHTML;
- if (attributes && typeof attributes == "object") {
- for (key in attributes) {
- DOMElement.setAttribute(key, attributes[key]);
- }
- }
- return DOMElement;
- }
- function getparams() {
- var keyVal, params, url = window.location.href.split("?");
- if (url.length > 1) {
- params = url[1].split("&");
- if (params.length > 0) {
- that.UrlParameter = {};
- for (var i = 0; i < params.length; i++) {
- keyVal = params[i].split("=");
- if (keyVal.length > 1) {
- that.UrlParameter[keyVal[0]] = decodeURI(keyVal[1]);
- }
- }
- }
- }
- if (that.UrlParameter) {
- if ("OS" in that.UrlParameter) {
- that.OS = that.UrlParameter.OS;
- } else if ("os" in that.UrlParameter) {
- that.OS = that.UrlParameter.os;
- }
- if ("AppVersion" in that.UrlParameter) {
- that.AppVersion = that.UrlParameter.AppVersion;
- } else if ("appversion" in that.UrlParameter) {
- that.AppVersion = that.UrlParameter.appversion;
- }
- if ("Colormode" in that.UrlParameter) {
- that.IsColorInverted = false;
- } else if ("colormode" in that.UrlParameter) {
- that.IsColorInverted = false;
- }
- if ("SiteID" in that.UrlParameter) {
- that.SiteID = that.UrlParameter.SiteID;
- } else if ("siteid" in that.UrlParameter) {
- that.SiteID = that.UrlParameter.siteid;
- }
- if ("LanguageID" in that.UrlParameter) {
- that.Language = languages[that.UrlParameter.LanguageID];
- } else if ("languageID" in that.UrlParameter) {
- that.Language = languages[that.UrlParameter.languageID];
- } else {
- var browserLanguage = navigator.language || navigator.userLanguage;
- if (typeof browserLanguage === "string") {
- if (browserLanguage.match(/de(-.{2})?/i)) {
- that.Language = languages[1];
- } else if (browserLanguage.match(/en(-.{2})?/i)) {
- that.Language = languages[2];
- } else if (browserLanguage.match(/nl(-.{2})?/i)) {
- that.Language = languages[5];
- }
- }
- }
- }
- if (!that.OS && window != window.top) {//in iFrame
- that.OS = 'WEBSHADOW';
- loadedInWebshadow = true;
- }
- var androidMatch = navigator.userAgent.match(/Android/i),
- iosMatch = navigator.userAgent.match(/iPhone|iPod|iPad/i),
- wpMatch = navigator.userAgent.match(/Windows Phone/i),
- bbMatch = navigator.userAgent.match(/BlackBerry|BB10|RIM /);
- if (androidMatch != null && androidMatch.length > 0) {
- that.OS = that.OS || "ANDROID";
- that.DeviceOS = "ANDROID";
- } else if (iosMatch != null && iosMatch.length > 0) {
- that.OS = that.OS || "IOS";
- that.DeviceOS = "IOS";
- } else if (wpMatch != null && wpMatch.length > 0) {
- that.OS = that.OS || "WP8";
- that.DeviceOS = "WP8";
- } else if (bbMatch != null && bbMatch.length > 0) {
- that.OS = that.OS || "BLACKBERRY";
- that.DeviceOS = "BLACKBERRY";
- }
- that.OS = that.OS.toUpperCase();
- loadedInWebshadow = loadedInWebshadow || that.OS.indexOf("WEBSHADOW") == 0;
- var v = null;
- if (that.OS == "ANDROID") {
- v = navigator.userAgent.match(/Android [0-9\.]*/);
- } else if (that.OS == "WP8") {
- v = navigator.userAgent.match(/Windows Phone OS [0-9.]*/);
- } else if (that.OS == "IOS") {
- v = navigator.userAgent.match(/OS [0-9_]*/);
- } else if (that.OS == "BLACKBERRY") {
- v = navigator.userAgent.match(/Version\/[0-9.]*/);
- }
- if (v && v.length > 0) {
- that.OSVersion = v[0].replace(/[a-z \/]/ig, "");
- }
- }
- function preLoadImg() {
- var IMGs = [];
- for (var i = 0; i < 5; i++) {
- IMGs.push(new Image());
- switch (i) {
- case 0:
- IMGs[i].src = "//chayns1.tobit.com/SlitteRessource/Images/Chayns/stripe.gif";
- break;
- case 1:
- IMGs[i].src = "//chayns1.tobit.com/SlitteRessource/Images/Chayns/checkbox.png";
- break;
- case 2:
- IMGs[i].src = "//chayns1.tobit.com/SlitteRessource/Images/Chayns/checkbox_aktiv.png";
- break;
- case 3:
- if (that.OS == "ANDROID")
- IMGs[i].src = "//chayns1.tobit.com/SlitteRessource/Images/Chayns/ListUp.png";
- break;
- case 4:
- if (that.OS == "ANDROID")
- IMGs[i].src = "//chayns1.tobit.com/SlitteRessource/Images/Chayns/ListDown.png";
- break;
- }
- IMGs[i].onload = function () {
- try {
- this.remove();
- } catch (e) { }
- }
- }
- }
- function createHeadTags() {
- if (chaynsApiRoot.match(/wm0[1-4].tobit.com\//i) == null) {
- chaynsApiRoot = "//chayns1.tobit.com/SlitteRessource/API/";
- }
- var anticache = '?_=' + cacheVersion;
- if ((window.applicationCache || {}).status > 0) {//hat application cache eingestellt
- anticache = '';
- }
- document.head.appendChild(createDomElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1, maximum-scale=1" }));
- document.head.appendChild(createDomElement("link", { href: chaynsApiRoot + "Styles/Mobile/V2/Global_" + cssVersion + ".css" + anticache, rel: "stylesheet", type: "text/css" }));
- document.head.appendChild(createDomElement("link", { href: "//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css", rel: "stylesheet", type: "text/css" }));
- if (that.OS == "WP8" || that.DeviceOS == 'WP8') {
- document.head.appendChild(createDomElement("meta", { name: "msapplication-tap-highlight", content: "no" }));
- }
- if (that.OS == "ANDROID" || that.DeviceOS == 'ANDROID') {
- document.head.appendChild(createDomElement("link", { href: chaynsApiRoot + "Styles/Mobile/V2/Mobile_Android_V2_100.css" + anticache, rel: "stylesheet", type: "text/css" }));
- }
- if (that.OS == "IOS" || that.DeviceOS == 'IOS') {
- document.head.appendChild(createDomElement("link", { href: chaynsApiRoot + "Styles/Mobile/V2/Mobile_IOS_V2_100.css" + anticache, rel: "stylesheet", type: "text/css" }));
- }
- if (that.OS == 'WEBSHADOW') {
- document.head.appendChild(createDomElement("link", { href: chaynsApiRoot + "Styles/Mobile/V2/Webshadow_" + webshadowCssVersion + ".css" + anticache, rel: "stylesheet", type: "text/css" }));
- }
- if (that.OS.indexOf('WEBSHADOW') == 0) {
- document.head.appendChild(createDomElement("link", { href: chaynsApiRoot + "Styles/Mobile/V2/Global_RobotoFont.css" + anticache, rel: "stylesheet", type: "text/css" }));
- }
- }
- function listenPostMessage() {
- if (isJQload()) {
- $(window).on('message', function (e) {
- var namespace = 'chayns.customTab.',
- data = e.originalEvent.data;
- if (typeof data == 'string') {
- data = data.substr(namespace.length, data.length - namespace.length);
- var method = data.match(/[^:]*:/);
- if (method != null && method.length > 0) {
- method = method[0];
- var params = data.substr(method.length, data.length - method.length);
- method = method.substr(0, method.length - 1);
- switch (method) {
- case 'getAppInfos':
- try {
- params = JSON.parse(params);
- handleNewAppInfos(params);
- } catch (e) {
- handleNewAppInfos(null);
- }
- break;
- default: break;
- }
- }
- }
- });
- }
- }
- function setupChaynsCallQueue() {
- setInterval(function () {
- if (chaynsCallQueue.length > 0) {
- if ('chaynsCall' in window && typeof window.chaynsCall.href == 'function') {
- window.chaynsCall.href(chaynsCallQueue[0]);
- } else {
- window.location.href = chaynsCallQueue[0];
- }
- chaynsCallQueue.shift();
- }
- }, 100);
- }
- function chaynsCall(chaynsCallStr) {
- chaynsCallQueue.push(chaynsCallStr);
- }
- function getShortDayName(i) {
- return that.DayNames[i].substr(0, 2);
- }
- function getShortMonthName(i) {
- return that.MonthNames[i].substr(0, 3);
- }
- function checkAppVersion(versions) {
- if (that.AppVersion && (typeof versions == "object")) {
- for (var item in versions) {
- if (that.OS == item && that.AppVersion >= versions[item]) {
- return true;
- }
- }
- }
- return false;
- }
- function useChaynsCall() {
- if (that.AppVersion) {
- return checkAppVersion({ ANDROID: 2510, IOS: 2483, WP8: 2469, BLACKBERRY: 118 });
- }
- return false;
- }
- function isJQload() {
- if (typeof $ == "undefined") {
- return false;
- } else {
- return true;
- }
- }
- function isLangResLoaded() {
- return typeof LangRes !== "undefined";
- }
- function getLang(name, defaultString) {
- if (isLangResLoaded())
- return LangRes.Get(name) || defaultString;
- else
- return defaultString;
- }
- this.Trim = function (str) {
- if (typeof str == "string") {
- return str.replace(/^\s+|\s+$/g, "");
- } else {
- return str;
- }
- }
- this.IsGUID = function (GUID) {
- if (typeof GUID == "string") {
- GUID = that.Trim(GUID);
- return GUID.match(/^[0-9a-f]{4}([0-9a-f]{4}-){4}[0-9a-z]{12}$/i) != null;
- }
- return false;
- }
- this.IsMacAdress = function (MacAdress) {
- if (typeof MacAdress == "string") {
- MacAdress = that.Trim(MacAdress);
- return MacAdress.match(/^([0-9a-f]{2}[-:]){5}[0-9a-f]{2}$/i) != null;
- }
- return false;
- }
- this.IsBLEAdress = function (Adress) {
- return that.IsGUID(Adress) || that.IsMacAdress(Adress);
- }
- this.GetSchemeColor = function (saturation, baseColor) {
- var colorsObj = that.Colors || {};
- var baseColor = colorsObj.TextColorCustom || colorsObj.C100 || baseColor || '#6E6E6E';//Altes ojb, neues obj, parameter oder default
- if (typeof saturation == 'number' && saturation > 0 && saturation < 100) {
- saturation = saturation / 100;
- saturation = 1 - saturation;
- var rgb = baseColor.match(/[0-9A-F]{2}/gi),
- retColor = '#';
- for (var i = 0; i < rgb.length; i++) {
- var colorPart = parseInt(rgb[i], 16);
- var diff = 255 - colorPart;
- diff = Math.floor(diff * saturation);//abrunden, sonst minimal falsches Ergebnis
- colorPart += diff;
- retColor += colorPart.toString(16);
- }
- return retColor;
- }
- return baseColor;
- };
- function handleBLEResponse(data) {
- if (typeof bleResponseCallback == "function") {
- try {
- $('#BLEResponse').html(JSON.stringify(data)).show();
- var errorVal = { Code: data.ErrorCode };
- switch (data.ErrorCode) {
- case -1: errorVal.Message = "Platform doesn't support Bluetooth Low Energy"; break;
- case -2: errorVal.Message = 'The App is not authorized to use Bluetooth Low Energy'; break;
- case -3: errorVal.Message = 'Bluetooth is curently powered off'; break;
- case 1: errorVal.Message = 'Connection failed'; break;
- case 2: errorVal.Message = 'Read Device information failed'; break;
- case 3: errorVal.Message = 'Write to Device failed'; break;
- case 20: errorVal.Message = 'Read successful'; errorVal.Code = 0; break;
- case 30: errorVal.Message = 'Write successful'; errorVal.Code = 0; break;
- case 31: errorVal.Message = 'Must connect to Device before writing'; break;
- }
- var retData = {};
- retData.Error = errorVal;
- if (retData.Error.Code == 0) {
- retData.Address = data.Address;
- if (data.Connected != undefined) retData.Connected = !!data.Connected;//int to Bool
- if (data.Connectable != undefined) retData.Connectable = !!data.Connectable;//int to Bool
- if (data.IsInReach != undefined) retData.InReach = !!data.IsInReach;//int to Bool
- if (data.Name != undefined) retData.Name = data.Name;
- if (data.RSSI != undefined) retData.SignalStrength = data.RSSI;
- if (data.ProximityUUID != undefined) retData.GroupUID = data.ProximityUUID;
- if (data.SubNumber != undefined) retData.SubID = data.SubNumber;
- if (data.LocationID != undefined) retData.LocationID = data.LocationID;
- if (data.SiteID != undefined) retData.SiteID = data.SiteID;
- if (data.MeasurePower != undefined) retData.MeasurePower = data.MeasurePower;
- if (data.TXPower != undefined) retData.SendStrength = data.TXPower;
- }
- if (typeof bleResponseCallback == "function") {
- setTimeout(function () {
- bleResponseCallback(retData);
- bleResponseCallback = null;
- }, 0);//CallBack nicht direkt hier ausführen, da für diese Zeit die App "hängt" (böse wenn z.B. ein alert geöffnet wird)
- }
- } catch (e) {
- }
- }
- }
- function handleNewAppInfos(obj, ignoreCallBacks) {
- if (obj) {
- appInfos = obj;
- if ("AppInfo" in obj) {
- if (obj.AppInfo.Version != null) {
- that.AppVersion = obj.AppInfo.Version;
- }
- that.IsColorInverted = false;
- that.SiteID = obj.AppInfo.SiteID || "";
- if ("SchemeColors" in obj.AppInfo && !that.Colors) {//mehrfachausführung nicht nötig
- setSchemeColors(obj.AppInfo.SchemeColors);
- }
- }
- if ("Device" in obj) {
- if (typeof obj.Device.SystemName === "string") {
- that.OS = obj.Device.SystemName.toUpperCase();
- if (that.OS == "IPHONE OS") that.OS = "IOS";//iOS App gibt os falsch zurück
- }
- if (obj.Device.SystemVersion != null) {
- that.OSVersion = obj.Device.SystemVersion;
- }
- if (typeof obj.Device.LanguageID != "undefined") {
- that.Language = languages[obj.Device.LanguageID];
- }
- if (typeof obj.Device.Metrics != 'undefined' && (checkAppVersion({ 'ANDROID': 4039, 'WP8': 4025, 'IOS': 4049 }) || loadedInWebshadow)) {
- setMetrics(obj.Device.Metrics);
- }
- }
- }
- if (!ignoreCallBacks) {
- for (var i = 0; i < getAppInfosUserCallBacks.length; i++) {
- getAppInfosUserCallBacks[i](obj);
- }
- getAppInfosUserCallBacks = [];
- }
- }
- function setSchemeColors(colors) {
- var baseColor = colors.TextColorCustom || colors.C100;
- if (baseColor) {
- that.Colors = {
- Background: '#FFFFFF',
- C10: that.GetSchemeColor(10, baseColor),
- C20: that.GetSchemeColor(20, baseColor),
- C30: that.GetSchemeColor(30, baseColor),
- C40: that.GetSchemeColor(40, baseColor),
- C50: that.GetSchemeColor(50, baseColor),
- C60: that.GetSchemeColor(60, baseColor),
- C70: that.GetSchemeColor(70, baseColor),
- C80: that.GetSchemeColor(80, baseColor),
- C90: that.GetSchemeColor(90, baseColor),
- C100: baseColor,
- Text: '#545454'
- };
- createColorSchemeCSS();
- }
- }
- function setMetrics(deviceMetrics) {
- function px(value) {
- return value + 'px';
- };
- var d = deviceMetrics;
- document.body.style.fontSize = px(d.BodyText.Size);
- document.body.style.lineHeight = px(d.BodyText.LineHeight);
- chaynsCSSRules.push({ selector: 'html > body', rules: 'font-family: "' + d.FontFace + '"' });
- chaynsCSSRules.push({ selector: 'body .p:not(:last-child), body p:not(:last-child)', rules: 'margin-bottom: ' + px(d.BodyText.Margin.Bottom) });
- chaynsCSSRules.push({ selector: 'body .BoxWrapper', rules: 'margin-left: ' + px(d.ContentTileMargin.Left) + '; margin-right: ' + px(d.ContentTileMargin.Right) + '; margin-top: ' + px(d.ContentTileMargin.Top) + '; margin-bottom: ' + px(d.ContentTileMargin.Bottom) });
- chaynsCSSRules.push({ selector: 'body h1, body .h1', rules: 'line-height: ' + px(d.H1.LineHeight) + '; font-size: ' + px(d.H1.Size) + '; margin-bottom: ' + px(d.H1.Margin.Bottom) });
- chaynsCSSRules.push({ selector: 'body h2, body .h2', rules: 'line-height: ' + px(d.H2.LineHeight) + '; font-size: ' + px(d.H2.Size) + '; margin-bottom: ' + px(d.H2.Margin.Bottom) });
- chaynsCSSRules.push({ selector: 'body h3, body .h3', rules: 'line-height: ' + px(d.Title.LineHeight) + '; font-size: ' + px(d.Title.Size) + '; margin-bottom: ' + px(d.Title.Margin.Bottom) });
- chaynsCSSRules.push({ selector: 'body h4, body .h4', rules: 'line-height: ' + px(d.Subtitle.LineHeight) + '; font-size: ' + px(d.Subtitle.Size) + '; margin-bottom: ' + px(d.Subtitle.Margin.Bottom) });
- chaynsCSSRules.push({ selector: 'body #IntroBox, body .IntroBox', rules: 'margin-left: ' + px(d.TappIntroMargin.Left) + '; margin-right: ' + px(d.TappIntroMargin.Right) + '; margin-bottom: ' + px(d.TappIntroMargin.Bottom) + '; margin-top: ' + px(d.TappIntroMargin.Top) });
- writeChaynsCSS();
- }
- function handleDateSelectResponse(ts) {
- setTimeout(function () {
- if (dateSelectCallBackOptions != null) {
- var retval = null;
- if (ts != -1) {
- ts = ts * 1000;
- var retval = new Date(ts);
- var preselectDate = null;
- if (dateSelectCallBackOptions.Preselect == -1) {
- preselectDate = new Date();
- } else {
- preselectDate = new Date(dateSelectCallBackOptions.Preselect * 1000);
- }
- retval.setMilliseconds(preselectDate.getMilliseconds());
- retval.setSeconds(preselectDate.getSeconds());
- if (dateSelectCallBackOptions.SelectType == Chayns.DateSelectTypes.Time) {
- retval.setDate(preselectDate.getDate());
- retval.setMonth(preselectDate.getMonth());
- retval.setFullYear(preselectDate.getFullYear());
- } else if (dateSelectCallBackOptions.SelectType == Chayns.DateSelectTypes.Date) {
- retval.setMinutes(preselectDate.getMinutes());
- retval.setHours(preselectDate.getHours());
- }
- }
- dateSelectCallBackOptions.Function(retval);
- dateSelectCallBackOptions = null;
- }
- }, 0);
- }
- function handleCreateQRCodeResponse(data) {
- if (typeof createQRCodeCallBack == 'function') {
- setTimeout(function () {
- createQRCodeCallBack("data:image/png;base64," + data);
- }, 0);
- }
- };
- function handleNewBeaconsResponse(beacons) {
- setTimeout(function () {
- if (beacons) {
- beaconList = beacons;
- beaconListCallBack(beaconList);
- } else {
- beaconListCallBack(null);
- }
- }, 0);
- }
- function handleLongLatCallBack(long, lat, speed) {
- if (singelGeoCoordinatesResponse) {
- setTimeout(Chayns.App.GetLongLat, 200);
- }
- if (typeof getLongLatCallBack == 'function') {
- getLongLatCallBack(long, lat, speed);
- }
- };
- function createColorSchemeCSS() {
- chaynsCSSRules.push({ selector: 'h1', rules: 'color: ' + that.GetSchemeColor(100) + ' !important;' });
- chaynsCSSRules.push({ selector: '.button, .button.gray:hover, .button.gray:focus, .button.gray:active', rules: 'background-color: ' + that.GetSchemeColor(100) + ' !important;' });
- chaynsCSSRules.push({ selector: 'h2, .h2, h4, .h4, .switch > div.inActive, .ChaynsAPIFoldOutTableContainer .FoldOutTableRowHeadline::after, a::before', rules: 'color: ' + that.GetSchemeColor(80) + ' !important;' });
- chaynsCSSRules.push({ selector: '.button:hover, .button:focus, .button:active, .switch > div.inActive', rules: 'background-color: ' + that.GetSchemeColor(80) + ' !important;' });
- chaynsCSSRules.push({ selector: '.choosebutton:not(.disabled):hover, .choosebutton:not(.disabled):active, .choosebutton:not(.disabled):focus', rules: 'background-color: ' + that.GetSchemeColor(30) + ' !important;' });
- chaynsCSSRules.push({ selector: '.ChaynsAPIFoldOutTableContainer .FoldOutTableMainHeadline, .FoldOutTableRow.WrappedEntries, .choosebutton, .switch, a:hover, a:focus, a:active', rules: 'background-color: ' + that.GetSchemeColor(20) + ' !important;' });
- for (var i = 10; i <= 100; i += 10) {
- var rule = 'background-color: ' + that.GetSchemeColor(i);
- if (i >= 70) {
- rule += '; color: #FFFFFF';
- }
- chaynsCSSRules.push({
- selector: '.colorScheme' + i + 'Percent',
- rules: rule
- });
- }
- writeChaynsCSS();
- }
- function writeChaynsCSS() {
- var existingElm = document.getElementById("ChaynsColorSchemeCSS");
- var styleElm = existingElm || document.createElement("style");
- if (existingElm) {
- styleElm.innerHTML = "";
- } else {
- styleElm.type = "text/css";
- styleElm.id = "ChaynsColorSchemeCSS";
- }
- for (var i = 0; i < chaynsCSSRules.length; i++) {
- if (chaynsCSSRules[i].rules) {
- styleElm.innerHTML += chaynsCSSRules[i].selector + '{' + chaynsCSSRules[i].rules + '}\n';
- }
- }
- if (!existingElm) {
- document.head.appendChild(styleElm);
- }
- }
- function callWebshadowFunction(functionName, params) {
- var namespace = "chayns.customTab.";
- params = params || '';
- try {
- window.parent.postMessage(namespace + functionName + ':' + params.toString(), '*');
- } catch (e) { }
- }
- //#endregion
- //#region Classes
- this.PopUpButton = function (Name, CallBack) {
- CallBack = CallBack || function () { };
- this.Name = Name;
- this.CallBack = CallBack;
- }
- this.SelectOption = function (Name, Value, Selected) {
- if (Name == undefined) Name = "";
- if (Value == undefined) Value = "";
- if (!Selected) Selected = false;
- this.Name = Name;
- this.Value = Value;
- this.Selected = Selected;
- }
- var FoldOutTableEntry = function (Parent, Headline, Description, Selected, InActive, Position) {
- if (Headline == undefined) Headline = "";
- if (Description == undefined) Description = "";
- if (!Selected) Selected = false;
- if (!InActive) InActive = false;
- //--private Fields
- var headline = Headline,
- description = Description,
- selected = Selected,
- inActive = InActive,
- collapsable = true,
- parent = Parent,
- element;
- //--public Methods
- this.Helper = {
- GetHeadline: function () {
- return headline;
- },
- SetHeadline: function (newHeadline) {
- newHeadline = (newHeadline == null ? "" : newHeadline);
- $($(element).find(".FoldOutTableRowHeadline")[0]).html(newHeadline);
- headline = newHeadline;
- },
- GetDescription: function () {
- return description;
- },
- SetDescription: function (newDescription) {
- newDescription = (newDescription == null ? "" : newDescription);
- $($(element).find(".FoldOutTableRowDescriptionContainer")[0]).children(".FoldOutTableRowDescription").html(newDescription);
- description = newDescription;
- },
- GetInActive: function () {
- return inActive;
- },
- SetInActive: function (newInActive) {
- newInActive = (newInActive == null ? false : newInActive);
- if (newInActive == inActive) {
- return;
- }
- if (newInActive) {
- $(element).find(".FoldOutTableRowHeadline").first().addClass("InActive");
- } else {
- $(element).find(".FoldOutTableRowHeadline").first().removeClass("InActive");
- }
- inActive = newInActive;
- },
- GetSelected: function () {
- return selected;
- },
- SetSelected: function (newSelected) {
- if (inActive || selected == newSelected || !collapsable) {
- return;
- }
- if (selected) {
- Chayns.AnimateHeight($(element).find(".FoldOutTableRowDescriptionContainer")[0], "0px");
- setTimeout(function () {
- $(element).find(".FoldOutTableRowHeadline").first().removeClass("Active");
- }, 20);
- selected = newSelected;
- } else {
- if (!parent.Multiple) {
- for (var i = 0; i < parent.Items.length; i++) {
- if (parent.Items[i].Collapsable) {
- if (parent.Items[i] != this && parent.Items[i].Selected) {
- parent.Items[i].Selected = false;
- }
- }
- }
- }
- var des = $(element).find(".FoldOutTableRowDescriptionContainer").first();
- that.AnimateHeight(des, (des.find(".FoldOutTableRowDescription").first().outerHeight() + parseInt($(des.find(".FoldOutTableRowDescription")[0]).css("margin-top").split('p')[0])) + "px", true);
- setTimeout(function () {
- $(element).find(".FoldOutTableRowHeadline").first().addClass("Active");
- }, 20);
- selected = newSelected;
- }
- },
- GetCollapsable: function () {
- return collapsable;
- },
- SetCollapsable: function (value) {
- collapsable = typeof value == 'boolean' ? value : true;
- if (collapsable) {
- element.find('.FoldOutTableRowHeadline').first().removeClass('HideCursor');
- } else {
- element.find('.FoldOutTableRowHeadline').first().addClass('HideCursor');
- }
- }
- };
- this.Remove = function (OnlyElement) {
- OnlyElement = OnlyElement ? OnlyElement : false;
- if (OnlyElement) {
- $(element).remove();
- }
- else {
- for (var i = 0; i < parent.Items.length - 1; i++) {
- if (parent.Items[i] == this) {
- var el = parent.Items[i + 1];
- parent.Items[i + 1] = parent.Items[i];
- parent.Items[i] = el;
- }
- }
- parent.Items.pop();
- }
- }
- //--public Fields
- this.Headline;
- this.Description;
- this.Selected;
- this.InActive;
- element = buildFoldOutTableEntry(this, parent);
- if (Position == null || Position >= parent.Items.length) {
- $(parent.Element).append(element);
- }
- else {
- $($(parent.Element).children()[Position + 1]).before(element);
- }
- }
- Object.defineProperties(FoldOutTableEntry.prototype, {
- "Headline": {
- get: function () { return this.Helper.GetHeadline(); },
- set: function (e) { this.Helper.SetHeadline(e); }
- },
- "Description": {
- get: function () { return this.Helper.GetDescription(); },
- set: function (e) { this.Helper.SetDescription(e); }
- },
- "Selected": {
- get: function () { return this.Helper.GetSelected(); },
- set: function (e) { this.Helper.SetSelected(e); }
- },
- "InActive": {
- get: function () { return this.Helper.GetInActive(); },
- set: function (e) { this.Helper.SetInActive(e); }
- },
- "Collapsable": {
- get: function () { return this.Helper.GetCollapsable(); },
- set: function (e) { this.Helper.SetCollapsable(e); }
- }
- });
- //#endregion
- }).apply(Chayns);
- //#region FixedCallBacks
- function NFCCallback(PersonID) {
- Chayns.NfcCallBack(PersonID);
- }
- function facebookLogin(FBID) {
- location.reload();
- }
- function FBLoginChanged(FBID, FBName, FBToken) {
- Chayns.FBChangedCallBack(FBID, FBName, FBToken);
- }
- function ChaynsDocumentReady(appInfos) {
- Chayns.GetAppInfosCallBack(appInfos, true);
- }
- //#endregion
Add Comment
Please, Sign In to add comment