File: /python/moda/public_html/tech/old/assets/js/whmcs/utils.js
/**
* General utilities module
*
* @copyright Copyright (c) WHMCS Limited 2005-2017
* @license http://www.whmcs.com/license/ WHMCS Eula
*/
(function(module) {
if (!WHMCS.hasModule('utils')) {
WHMCS.loadModule('utils', module);
}
})(
function () {
/**
* Not crypto strong; server-side must discard for
* something with more entropy; the value is sufficient
* for strong client-side validation check
*/
this.simpleRNG = function () {
var chars = './$_-#!,^*()|';
var r = 0;
for (var i = 0; r < 3; i++) {
r += Math.floor((Math.random() * 10) / 2);
}
r = Math.floor(r);
var s = '';
for (var x = 0; x < r; x++) {
v = (Math.random() + 1).toString(24).split('.')[1];
if ((Math.random()) > 0.5) {
s += btoa(v).substr(0,4)
} else {
s += v
}
if ((Math.random()) > 0.5) {
s += chars.substr(
Math.floor(Math.random() * 13),
1
);
}
}
return s;
};
this.getRouteUrl = function (path) {
return whmcsBaseUrl + "/index.php?rp=" + path;
};
this.validateBaseUrl = function() {
if (typeof window.whmcsBaseUrl === 'undefined') {
console.log('Warning: The WHMCS Base URL definition is missing '
+ 'from your active template. Please refer to '
+ 'https://go.whmcs.com/1961/base-url '
+ 'for more information and details of how to resolve this '
+ 'warning.');
window.whmcsBaseUrl = this.autoDetermineBaseUrl();
window.whmcsBaseUrlAutoSet = true;
} else if (window.whmcsBaseUrl === ''
&& typeof window.whmcsBaseUrlAutoSet !== 'undefined'
&& window.whmcsBaseUrlAutoSet === true
) {
window.whmcsBaseUrl = this.autoDetermineBaseUrl();
}
};
this.autoDetermineBaseUrl = function() {
var windowLocation = window.location.href;
var phpExtensionLocation = -1;
if (typeof windowLocation !== 'undefined') {
phpExtensionLocation = windowLocation.indexOf('.php');
}
if (phpExtensionLocation === -1) {
windowLocation = jQuery('#Primary_Navbar-Home a').attr('href');
if (typeof windowLocation !== 'undefined') {
phpExtensionLocation = windowLocation.indexOf('.php');
}
}
if (phpExtensionLocation !== -1) {
windowLocation = windowLocation.substring(0, phpExtensionLocation);
var lastTrailingSlash = windowLocation.lastIndexOf('/');
if (lastTrailingSlash !== false) {
return windowLocation.substring(0, lastTrailingSlash);
}
}
return '';
};
this.normaliseStringValue = function(status) {
return status ? status.toLowerCase().replace(/\s/g, '-') : '';
};
this.generatePassword = function(len) {
var charset = this.getPasswordCharacterSet();
var result = "";
for (var i = 0; len > i; i++)
result += charset[this.randomInt(charset.length)];
return result;
};
this.getPasswordCharacterSet = function() {
var rawCharset = '0123456789'
+ 'abcdefghijklmnopqrstuvwxyz'
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ '!#$%()*+,-.:;=@_|{ldelim}{rdelim}~';
// Parse UTF-16, remove duplicates, convert to array of strings
var charset = [];
for (var i = 0; rawCharset.length > i; i++) {
var c = rawCharset.charCodeAt(i);
if (0xD800 > c || c >= 0xE000) { // Regular UTF-16 character
var s = rawCharset.charAt(i);
if (charset.indexOf(s) == -1)
charset.push(s);
continue;
}
if (0xDC00 > c ? rawCharset.length > i + 1 : false) { // High surrogate
var d = rawCharset.charCodeAt(i + 1);
if (d >= 0xDC00 ? 0xE000 > d : false) { // Low surrogate
var s = rawCharset.substring(i, i + 2);
i++;
if (charset.indexOf(s) == -1)
charset.push(s);
continue;
}
}
throw "Invalid UTF-16";
}
return charset;
};
this.randomInt = function(n) {
var x = this.randomIntMathRandom(n);
x = (x + this.randomIntBrowserCrypto(n)) % n;
return x;
};
this.randomIntMathRandom = function(n) {
var x = Math.floor(Math.random() * n);
if (0 > x || x >= n)
throw "Arithmetic exception";
return x;
};
this.randomIntBrowserCrypto = function(n) {
var cryptoObject = null;
if ("crypto" in window)
cryptoObject = crypto;
else if ("msCrypto" in window)
cryptoObject = msCrypto;
else
return 0;
if (!("getRandomValues" in cryptoObject) || !("Uint32Array" in window) || typeof Uint32Array != "function")
cryptoObject = null;
if (cryptoObject == null)
return 0;
// Generate an unbiased sample
var x = new Uint32Array(1);
do cryptoObject.getRandomValues(x);
while (x[0] - x[0] % n > 4294967296 - n);
return x[0] % n;
};
return this;
});
WHMCS.utils.validateBaseUrl();