var checkUrlExists = function (url) {
var req = new XMLHttpRequest();
req.open('HEAD', url, false);
req.send();
if (req.status == "404")
return false;
return true;
}
var redirect = function (url) {
if (window.parent != null) {
window.parent.location = url;
}
else {
window.location = url;
}
}
var asyncAjax = async function (url, data, contentType) {
if (contentType == null)
contentType = "json";
var parms = data;
if (contentType == "json")
parms = JSON.stringify(data);
var params = {
method: 'POST',
body: parms,
headers: {
}
};
if (contentType != "?")
params.headers["Content-Type"] = 'application/' + contentType;
try {
const response = await fetch(url, params);
if (response.redirected) {
redirect(response.url);
return;
}
const data = await response.text();
var jdata;
if (typeof (data) == "string") {
if (data.startsWith("error:")) {
throw data;
}
else
try {
jdata = JSON.parse(data);
if (typeof (jdata) == "string") {
//repetimos asignacion en caso de que vengan dobles comillas al principio
jdata = JSON.parse(jdata);
}
}
catch {
jdata = data;
}
}
else
jdata = data;
if (response.status == 500) {
throw "El servidor ha retornado un error Codigo 500";
}
else if(response.status == 404) {
throw response.statusText;
}
else if (response.status == 401 || response.status == 301) {
redirect('/login.html');
return;
}
if (jdata) {
if (jdata.error) {
throw jdata.error;
}
else if (jdata.redirect) {
redirect(jdata.redirect);
return;
}
else
return (jdata);
}
else
return null;
}
catch (error) {
throw error;
}
}
var doAjax = function (url, json, onsuccess, onerror) {
$.ajax(url,
{
type: "POST",
dataType: 'text', // type of response data
timeout: 30000, // timeout milliseconds
data: JSON.stringify(json),
success: function (data, status, xhr) {
if (data.startsWith("error:")) {
onerror(data);
}
else if (data != "") {
jdata = JSON.parse(data);
if (jdata.error)
onerror(jdata.error)
else
onsuccess(jdata);
}
else onsuccess(data);
},
error: function (jqXhr, textStatus, errorMessage) {
onerror(errorMessage);
}
});
}
var download = async function (url, json) {
var options = {
method: 'POST',
body: JSON.stringify(json),
headers: {
'Content-Type': 'application/json'
}
}
const response = await fetch(url, options);
blob = await response.blob();
var file = window.URL.createObjectURL(blob);
window.location.assign(file);
}
var download = async function (url, json) {
var options = {
method: 'POST',
body: JSON.stringify(json),
headers: {
'Content-Type': 'application/json'
}
}
const response = await fetch(url, options);
blob = await response.blob();
var file = window.URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.href = url;
a.download = "export.zip";
a.click();
window.URL.revokeObjectURL(file);
}
var download = async function (url, json) {
var a = document.createElement("a");
document.body.appendChild(a);
a.href = url + "?json=" + escape(JSON.stringify(json));;
//a.download = "export.zip";
a.click();
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function stringtoHex(str) {
var arr1 = [];
for (var n = 0, l = str.length; n < l; n++) {
var hex = Number(str.charCodeAt(n)).toString(16);
arr1.push(hex);
}
return arr1.join('');
}
function hextoString(str1) {
var hex = str1.toString();
var str = '';
for (var n = 0; n < hex.length; n += 2) {
str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
}
return str;
}
function getParameter(key) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == key) {
return pair[1];
}
}
return null;
}
function getHeaders() {
var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
// associate array to store all values
var data = new Object();
// get all headers in one call and parse each item
var headers = req.getAllResponseHeaders().toLowerCase();
var aHeaders = headers.split('\n');
var i = 0;
for (i = 0; i < aHeaders.length; i++) {
var thisItem = aHeaders[i];
var key = thisItem.substring(0, thisItem.indexOf(':'));
var value = thisItem.substring(thisItem.indexOf(':') + 1);
data[key] = value;
}
// get referer
var referer = document.referrer;
data["Referer"] = referer;
//get useragent
var useragent = navigator.userAgent;
data["UserAgent"] = useragent;
//extra code to display the values in html
var display = "";
for (var key in data) {
if (key != "")
display += "" + key + " : " + data[key] + "
";
}
return display;
}
function hasValue(value) {
if (value != null && typeof value != "undefined" && value.toString() != "") {
return true;
}
return false;
}
function toStr(value) {
if (hasValue(value)) {
return value.toString();
}
return "";
}
function toNumber(value) {
if (hasValue(value)) {
return Number(value);
}
return 0;
}
function formatNumber(value, digits) {
if (!value) return null;
var d = (digits ? digits : 2);
return value.toLocaleString(undefined, {maximumFractionDigits: d, minimumFractionDigits: 0});
}
var locale = window.navigator.userLanguage || window.navigator.language;
function dateSeparator() {
return (new Date().toLocaleString().indexOf("-") > 0 ? "-" : "/");
}
function dateDiff(date1, date2, interval) {
var second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24, week = day * 7;
date1 = new Date(date1);
date2 = new Date(date2);
var timediff = date2 - date1;
if (isNaN(timediff)) return NaN;
switch (interval) {
case "years": return date2.getFullYear() - date1.getFullYear();
case "months": return (
(date2.getFullYear() * 12 + date2.getMonth())
-
(date1.getFullYear() * 12 + date1.getMonth())
);
case "weeks": return Math.floor(timediff / week);
case "days": return Math.floor(timediff / day);
case "hours": return Math.floor(timediff / hour);
case "minutes": return Math.floor(timediff / minute);
case "seconds": return Math.floor(timediff / second);
default: return undefined;
}
}
function ddmmyyyy(value) {
if (!value)
return null;
var d = value;
if (!(Object.prototype.toString.call(value) === "[object Date]"))
d = new Date(value);
var dd = d.getDate();
var mm = d.getMonth() + 1;
var yyyy = d.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
var sep = dateSeparator();
return dd + sep + mm + sep + yyyy;
}
function yyyymmdd(value) {
var d = value;
if (!Object.prototype.toString.call(value) === "[object Date]")
d = new Date(value);
var dd = d.getDate();
var mm = d.getMonth() + 1;
var yyyy = d.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
var sep = dateSeparator();
return yyyy + sep + mm + sep + dd;
}
function yearOfDate(d) {
var s = d.toISOString();
return s.substring(0, 4);
}
function monthOfDate(d) {
var s = d.toISOString();
return s.substring(5, 7);
}
function dayOfDate(d) {
var s = d.toISOString();
return s.substring(8, 10);
}
function getDateFormatString() {
const formatObj = new Intl.DateTimeFormat(locale).formatToParts(new Date());
return formatObj
.map(obj => {
switch (obj.type) {
case "day":
return "DD";
case "month":
return "MM";
case "year":
return "YYYY";
default:
return obj.value;
}
})
.join("");
}
function toDate(value, format) {
if (!format)
format = getDateFormatString();
var normalized = value.replace(/[^a-zA-Z0-9]/g, '-');
var normalizedFormat = format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
var formatItems = normalizedFormat.split('-');
var dateItems = normalized.split('-');
var monthIndex = formatItems.indexOf("mm");
var dayIndex = formatItems.indexOf("dd");
var yearIndex = formatItems.indexOf("yyyy");
var hourIndex = formatItems.indexOf("hh");
var minutesIndex = formatItems.indexOf("ii");
var secondsIndex = formatItems.indexOf("ss");
var today = new Date();
var year = yearIndex > -1 ? dateItems[yearIndex] : today.getFullYear();
var month = monthIndex > -1 ? dateItems[monthIndex] - 1 : today.getMonth() - 1;
var day = dayIndex > -1 ? dateItems[dayIndex] : today.getDate();
var hour = hourIndex > -1 ? dateItems[hourIndex] : today.getHours();
var minute = minutesIndex > -1 ? dateItems[minutesIndex] : today.getMinutes();
var second = secondsIndex > -1 ? dateItems[secondsIndex] : today.getSeconds();
return new Date(year, month, day, hour, minute, second);
}
function dateWithoutOffset(value) {
let d = new Date(value);
var userTimezoneOffset = d.getTimezoneOffset() * 60000;
return new Date(d.getTime() - userTimezoneOffset);
}
function dateWithoutTime(value) {
return new Date(value).setHours(0,0,0,0);
}
function Encode64(value) {
//return Base64.encode(value);
return btoa(value);
}
function Decode64(value) {
return atoa(value);
}
function isJsonArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]'
}
function jsonHasFields(obj) {
var result = false;
for(item in obj) {
result = true;
}
return result;
}
function resetJsonObject(obj) {
for (item in obj) {
if (isJsonArray(item))
obj[item] = [];
else
obj[item] = null;
}
}
function copyJsonFields(obj1, obj2) {
for (field in obj1) {
if (obj2.hasOwnProperty(field))
obj2[field] = obj1[field];
}
}
function copyAllJsonFields(obj1, obj2) {
for (field in obj1) {
obj2[field] = obj1[field];
}
}
function array_max_value(arr, column) {
var value = 0;
for (i = 0; i < arr.length; i++) {
value = Math.max(value, arr[i][column]);
}
return value;
}
function array_item_delete(arr, index) {
return arr.splice(index, 1)
}
function array_item_find(arr,column,value) {
for(i = 0;i < arr.length;i++) {
if(arr[i][column] == value) {
return arr[i];
}
}
return null;
}
function array_item_index(arr,column,value) {
for(i = 0;i < arr.length;i++) {
if(arr[i][column] == value) {
return i;
}
}
return -1;
}
function isNullOrEmpty(value) {
let str = JSON.stringify(value);
if (str == 'null' || str == '""' || str == '{}')
return true;
return false;
}
function isMobile() {
//return true;
return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
}