mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +01:00 
			
		
		
		
	add static files
This commit is contained in:
		
							
								
								
									
										212
									
								
								static/admin/js/core.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								static/admin/js/core.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,212 @@
 | 
			
		||||
// Core javascript helper functions
 | 
			
		||||
 | 
			
		||||
// basic browser identification & version
 | 
			
		||||
var isOpera = (navigator.userAgent.indexOf("Opera") >= 0) && parseFloat(navigator.appVersion);
 | 
			
		||||
var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]);
 | 
			
		||||
 | 
			
		||||
// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);
 | 
			
		||||
function quickElement() {
 | 
			
		||||
    'use strict';
 | 
			
		||||
    var obj = document.createElement(arguments[0]);
 | 
			
		||||
    if (arguments[2]) {
 | 
			
		||||
        var textNode = document.createTextNode(arguments[2]);
 | 
			
		||||
        obj.appendChild(textNode);
 | 
			
		||||
    }
 | 
			
		||||
    var len = arguments.length;
 | 
			
		||||
    for (var i = 3; i < len; i += 2) {
 | 
			
		||||
        obj.setAttribute(arguments[i], arguments[i + 1]);
 | 
			
		||||
    }
 | 
			
		||||
    arguments[1].appendChild(obj);
 | 
			
		||||
    return obj;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// "a" is reference to an object
 | 
			
		||||
function removeChildren(a) {
 | 
			
		||||
    'use strict';
 | 
			
		||||
    while (a.hasChildNodes()) {
 | 
			
		||||
        a.removeChild(a.lastChild);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
// Find-position functions by PPK
 | 
			
		||||
// See https://www.quirksmode.org/js/findpos.html
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
function findPosX(obj) {
 | 
			
		||||
    'use strict';
 | 
			
		||||
    var curleft = 0;
 | 
			
		||||
    if (obj.offsetParent) {
 | 
			
		||||
        while (obj.offsetParent) {
 | 
			
		||||
            curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);
 | 
			
		||||
            obj = obj.offsetParent;
 | 
			
		||||
        }
 | 
			
		||||
        // IE offsetParent does not include the top-level
 | 
			
		||||
        if (isIE && obj.parentElement) {
 | 
			
		||||
            curleft += obj.offsetLeft - obj.scrollLeft;
 | 
			
		||||
        }
 | 
			
		||||
    } else if (obj.x) {
 | 
			
		||||
        curleft += obj.x;
 | 
			
		||||
    }
 | 
			
		||||
    return curleft;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function findPosY(obj) {
 | 
			
		||||
    'use strict';
 | 
			
		||||
    var curtop = 0;
 | 
			
		||||
    if (obj.offsetParent) {
 | 
			
		||||
        while (obj.offsetParent) {
 | 
			
		||||
            curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);
 | 
			
		||||
            obj = obj.offsetParent;
 | 
			
		||||
        }
 | 
			
		||||
        // IE offsetParent does not include the top-level
 | 
			
		||||
        if (isIE && obj.parentElement) {
 | 
			
		||||
            curtop += obj.offsetTop - obj.scrollTop;
 | 
			
		||||
        }
 | 
			
		||||
    } else if (obj.y) {
 | 
			
		||||
        curtop += obj.y;
 | 
			
		||||
    }
 | 
			
		||||
    return curtop;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// Date object extensions
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
(function() {
 | 
			
		||||
    'use strict';
 | 
			
		||||
    Date.prototype.getTwelveHours = function() {
 | 
			
		||||
        var hours = this.getHours();
 | 
			
		||||
        if (hours === 0) {
 | 
			
		||||
            return 12;
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            return hours <= 12 ? hours : hours - 12;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getTwoDigitMonth = function() {
 | 
			
		||||
        return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getTwoDigitDate = function() {
 | 
			
		||||
        return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getTwoDigitTwelveHour = function() {
 | 
			
		||||
        return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getTwoDigitHour = function() {
 | 
			
		||||
        return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getTwoDigitMinute = function() {
 | 
			
		||||
        return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getTwoDigitSecond = function() {
 | 
			
		||||
        return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getHourMinute = function() {
 | 
			
		||||
        return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getHourMinuteSecond = function() {
 | 
			
		||||
        return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.getFullMonthName = function() {
 | 
			
		||||
        return typeof window.CalendarNamespace === "undefined"
 | 
			
		||||
            ? this.getTwoDigitMonth()
 | 
			
		||||
            : window.CalendarNamespace.monthsOfYear[this.getMonth()];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    Date.prototype.strftime = function(format) {
 | 
			
		||||
        var fields = {
 | 
			
		||||
            B: this.getFullMonthName(),
 | 
			
		||||
            c: this.toString(),
 | 
			
		||||
            d: this.getTwoDigitDate(),
 | 
			
		||||
            H: this.getTwoDigitHour(),
 | 
			
		||||
            I: this.getTwoDigitTwelveHour(),
 | 
			
		||||
            m: this.getTwoDigitMonth(),
 | 
			
		||||
            M: this.getTwoDigitMinute(),
 | 
			
		||||
            p: (this.getHours() >= 12) ? 'PM' : 'AM',
 | 
			
		||||
            S: this.getTwoDigitSecond(),
 | 
			
		||||
            w: '0' + this.getDay(),
 | 
			
		||||
            x: this.toLocaleDateString(),
 | 
			
		||||
            X: this.toLocaleTimeString(),
 | 
			
		||||
            y: ('' + this.getFullYear()).substr(2, 4),
 | 
			
		||||
            Y: '' + this.getFullYear(),
 | 
			
		||||
            '%': '%'
 | 
			
		||||
        };
 | 
			
		||||
        var result = '', i = 0;
 | 
			
		||||
        while (i < format.length) {
 | 
			
		||||
            if (format.charAt(i) === '%') {
 | 
			
		||||
                result = result + fields[format.charAt(i + 1)];
 | 
			
		||||
                ++i;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                result = result + format.charAt(i);
 | 
			
		||||
            }
 | 
			
		||||
            ++i;
 | 
			
		||||
        }
 | 
			
		||||
        return result;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------------------------------
 | 
			
		||||
    // String object extensions
 | 
			
		||||
    // ----------------------------------------------------------------------------
 | 
			
		||||
    String.prototype.pad_left = function(pad_length, pad_string) {
 | 
			
		||||
        var new_string = this;
 | 
			
		||||
        for (var i = 0; new_string.length < pad_length; i++) {
 | 
			
		||||
            new_string = pad_string + new_string;
 | 
			
		||||
        }
 | 
			
		||||
        return new_string;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    String.prototype.strptime = function(format) {
 | 
			
		||||
        var split_format = format.split(/[.\-/]/);
 | 
			
		||||
        var date = this.split(/[.\-/]/);
 | 
			
		||||
        var i = 0;
 | 
			
		||||
        var day, month, year;
 | 
			
		||||
        while (i < split_format.length) {
 | 
			
		||||
            switch (split_format[i]) {
 | 
			
		||||
            case "%d":
 | 
			
		||||
                day = date[i];
 | 
			
		||||
                break;
 | 
			
		||||
            case "%m":
 | 
			
		||||
                month = date[i] - 1;
 | 
			
		||||
                break;
 | 
			
		||||
            case "%Y":
 | 
			
		||||
                year = date[i];
 | 
			
		||||
                break;
 | 
			
		||||
            case "%y":
 | 
			
		||||
                year = date[i];
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            ++i;
 | 
			
		||||
        }
 | 
			
		||||
        // Create Date object from UTC since the parsed value is supposed to be
 | 
			
		||||
        // in UTC, not local time. Also, the calendar uses UTC functions for
 | 
			
		||||
        // date extraction.
 | 
			
		||||
        return new Date(Date.UTC(year, month, day));
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
})();
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
// Get the computed style for and element
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
function getStyle(oElm, strCssRule) {
 | 
			
		||||
    'use strict';
 | 
			
		||||
    var strValue = "";
 | 
			
		||||
    if(document.defaultView && document.defaultView.getComputedStyle) {
 | 
			
		||||
        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
 | 
			
		||||
    }
 | 
			
		||||
    else if(oElm.currentStyle) {
 | 
			
		||||
        strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) {
 | 
			
		||||
            return p1.toUpperCase();
 | 
			
		||||
        });
 | 
			
		||||
        strValue = oElm.currentStyle[strCssRule];
 | 
			
		||||
    }
 | 
			
		||||
    return strValue;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user