var accountsPublicKeyURL = "/getPayloadEncryptionPublicKey";
var encWithTimeStamp = Boolean("");
var CurrentTime;
var difference_time;
var encryptData = {
	isValidData : function(instr){
		return instr != null && instr != "" && instr != "null";
	},
	loadFile : function(url){
		var docHead = document.head || document.getElementsByTagName("head" )[0] || document.documentElement; 
		var script = document.createElement("script"); 
		script.src = url;
		docHead.appendChild(script); 
	},
	enabled : Boolean(""),
	encrypt : function(encDataArray,Base64decodeNeed){
		return new Promise(function(resolve, reject) {
			var OnlyValidData = [];
			var i=0;
			if(encryptData.isValidData(encDataArray)){
				encDataArray.forEach(function(validData){
					if(encryptData.isValidData(validData)){
						OnlyValidData[i] = validData;
						i++;
					}
				});
			}
			if(!encryptData.enabled || typeof ZASEC  == "undefined" || !encryptData.isValidData(encDataArray)){
				resolve(OnlyValidData);
				return (encryptData.isValidData(OnlyValidData.length) ? OnlyValidData : encDataArray);
			}
			var promises = [];
			promises.push(ZASEC.Encryption.encryptData(OnlyValidData,"common",ZASEC.configuration.setCSRF({paramName: "iamcsrcoo",cookieName: "iamcsr"})));
	        checkDefine();
        	Promise.allSettled(promises).then(function(encDataArray){
				if(encryptData.isValidData(encDataArray[0].value) && Base64decodeNeed){
					encDataArray[0].value = window.btoa(encDataArray[0].value);
				}
				resolve(encDataArray);
			}).catch(function(error) {
				reject(error);
			});
		});
	}
}
function xhr() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
	xmlhttp=new XMLHttpRequest();
    }
    else if(window.ActiveXObject) {
		try {
		    xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
		    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
    }
    return xmlhttp;
}
function checkDefine(){
	if (!Promise.allSettled) {
	    Promise.allSettled = function (promises) {
	        return Promise.all(promises.map(function (p) {
	            return p.then(function (value) {
	                return {
	                    status: "fulfilled",
	                    value: value
	                };
	            }).catch(function (reason) {
	                return {
	                    status: "rejected",
	                    reason: reason
	                };
	            });
	        }));
	    };
	}
}
function isValid(instr) {
	return instr != null && instr != "" && instr != "null";
}
