Skip to content

Instantly share code, notes, and snippets.

@jdeerhake
Created January 28, 2013 21:36
Show Gist options
  • Save jdeerhake/4659302 to your computer and use it in GitHub Desktop.
Save jdeerhake/4659302 to your computer and use it in GitHub Desktop.
Download all surepayroll paystubs
var JSZip=function(e,t){this.files={};this.root="";if(e){this.load(e,t)}};JSZip.signature={LOCAL_FILE_HEADER:"PK",CENTRAL_FILE_HEADER:"PK",CENTRAL_DIRECTORY_END:"PK",ZIP64_CENTRAL_DIRECTORY_LOCATOR:"PK",ZIP64_CENTRAL_DIRECTORY_END:"PK",DATA_DESCRIPTOR:"PK\b"};JSZip.defaults={base64:false,binary:false,dir:false,date:null};JSZip.prototype=function(){var e=function(e,t,n){this.name=e;this.data=t;this.options=n};e.prototype={asText:function(){var e=this.data;if(this.options.base64){e=JSZipBase64.decode(e)}if(this.options.binary){e=JSZip.prototype.utf8decode(e)}return e},asBinary:function(){var e=this.data;if(this.options.base64){e=JSZipBase64.decode(e)}if(!this.options.binary){e=JSZip.prototype.utf8encode(e)}return e},asUint8Array:function(){return JSZip.utils.string2Uint8Array(this.asBinary())},asArrayBuffer:function(){return JSZip.utils.string2Uint8Array(this.asBinary()).buffer}};var t=function(e,t){var n="",r;for(r=0;r<t;r++){n+=String.fromCharCode(e&255);e=e>>>8}return n};var n=function(){var e={},t,n;for(t=0;t<arguments.length;t++){for(n in arguments[t]){if(arguments[t].hasOwnProperty(n)&&typeof e[n]==="undefined"){e[n]=arguments[t][n]}}}return e};var r=function(e){e=e||{};if(e.base64===true&&e.binary==null){e.binary=true}e=n(e,JSZip.defaults);e.date=e.date||new Date;return e};var i=function(t,n,i){var u=s(t);if(u){o.call(this,u)}i=r(i);if(JSZip.support.uint8array&&n instanceof Uint8Array){i.base64=false;i.binary=true;n=JSZip.utils.uint8Array2String(n)}else if(JSZip.support.arraybuffer&&n instanceof ArrayBuffer){i.base64=false;i.binary=true;var a=new Uint8Array(n);n=JSZip.utils.uint8Array2String(a)}else if(i.binary&&!i.base64){if(i.optimizedBinaryString!==true){n=JSZip.utils.string2binary(n)}delete i.optimizedBinaryString}return this.files[t]=new e(t,n,i)};var s=function(e){if(e.slice(-1)=="/"){e=e.substring(0,e.length-1)}var t=e.lastIndexOf("/");return t>0?e.substring(0,t):""};var o=function(e){if(e.slice(-1)!="/"){e+="/"}if(!this.files[e]){var t=s(e);if(t){o.call(this,t)}i.call(this,e,"",{dir:true})}return this.files[e]};var u=function(e,n,r){var i=n!==e.name,s=e.asBinary(),o=e.options,u,a;u=o.date.getHours();u=u<<6;u=u|o.date.getMinutes();u=u<<5;u=u|o.date.getSeconds()/2;a=o.date.getFullYear()-1980;a=a<<4;a=a|o.date.getMonth()+1;a=a<<5;a=a|o.date.getDate();var f=JSZip.compressions[r];var l=f.compress(s);var c="";c+="\n\0";c+=i?"\0\b":"\0\0";c+=f.magic;c+=t(u,2);c+=t(a,2);c+=t(this.crc32(s),4);c+=t(l.length,4);c+=t(s.length,4);c+=t(n.length,2);c+="\0\0";return{header:c,compressedData:l}};return{load:function(e,t){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(t){var r=[],i,s,o,u;for(i in this.files){if(!this.files.hasOwnProperty(i)){continue}o=this.files[i];u=new e(o.name,o.data,n(o.options));s=i.slice(this.root.length,i.length);if(i.slice(0,this.root.length)===this.root&&t(s,u)){r.push(u)}}return r},file:function(e,t,n){if(arguments.length===1){if(e instanceof RegExp){var r=e;return this.filter(function(e,t){return!t.options.dir&&r.test(e)})}else{return this.filter(function(t,n){return!n.options.dir&&t===e})[0]||null}}else{e=this.root+e;i.call(this,e,t,n)}return this},folder:function(e){if(!e){throw new Error("folder : wrong argument")}if(e instanceof RegExp){return this.filter(function(t,n){return n.options.dir&&e.test(t)})}var t=this.root+e;var n=o.call(this,t);var r=this.clone();r.root=n.name;return r},remove:function(e){e=this.root+e;var t=this.files[e];if(!t){if(e.slice(-1)!="/"){e+="/"}t=this.files[e]}if(t){if(!t.options.dir){delete this.files[e]}else{var n=this.filter(function(t,n){return n.name.slice(0,e.length)===e});for(var r=0;r<n.length;r++){delete this.files[n[r].name]}}}return this},generate:function(e){e=n(e||{},{base64:true,compression:"STORE",type:"base64"});var r=e.compression.toUpperCase();var i=[],s=[],o=0;if(!JSZip.compressions[r]){throw r+" is not a valid compression method !"}for(var a in this.files){if(!this.files.hasOwnProperty(a)){continue}var f=this.files[a];var l=this.utf8encode(f.name);var c="",h="",p=u.call(this,f,l,r);c=JSZip.signature.LOCAL_FILE_HEADER+p.header+l+p.compressedData;h=JSZip.signature.CENTRAL_FILE_HEADER+"\0"+p.header+"\0\0"+"\0\0"+"\0\0"+(this.files[a].dir===true?"\0\0\0":"\0\0\0\0")+t(o,4)+l;o+=c.length;s.push(c);i.push(h)}var d=s.join("");var v=i.join("");var m="";m=JSZip.signature.CENTRAL_DIRECTORY_END+"\0\0"+"\0\0"+t(s.length,2)+t(s.length,2)+t(v.length,4)+t(d.length,4)+"\0\0";var g=d+v+m;switch(e.type.toLowerCase()){case"uint8array":return JSZip.utils.string2Uint8Array(g);case"arraybuffer":return JSZip.utils.string2Uint8Array(g).buffer;case"blob":return JSZip.utils.string2Blob(g);case"base64":return e.base64?JSZipBase64.encode(g):g;default:return g}},crc32:function(e,t){if(e===""||typeof e==="undefined"){return 0}var n=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];if(typeof t=="undefined"){t=0}var r=0;var i=0;t=t^-1;for(var s=0,o=e.length;s<o;s++){i=(t^e.charCodeAt(s))&255;r=n[i];t=t>>>8^r}return t^-1},clone:function(){var e=new JSZip;for(var t in this){if(typeof this[t]!=="function"){e[t]=this[t]}}return e},utf8encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},utf8decode:function(e){var t="";var n=0;var r=0,i=0,s=0,o=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){s=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|s&63);n+=2}else{s=e.charCodeAt(n+1);o=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(s&63)<<6|o&63);n+=3}}return t}}}();JSZip.compressions={STORE:{magic:"\0\0",compress:function(e){return e},uncompress:function(e){return e}}};JSZip.support={arraybuffer:function(){return typeof ArrayBuffer!=="undefined"&&typeof Uint8Array!=="undefined"}(),uint8array:function(){return typeof Uint8Array!=="undefined"}(),blob:function(){if(typeof ArrayBuffer==="undefined"){return false}var e=new ArrayBuffer(0);try{return(new Blob([e],{type:"application/zip"})).size===0}catch(t){}try{var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder);n.append(e);return n.getBlob("application/zip").size===0}catch(t){}return false}()};JSZip.utils={string2binary:function(e){var t="";for(var n=0;n<e.length;n++){t+=String.fromCharCode(e.charCodeAt(n)&255)}return t},string2Uint8Array:function(e){if(!JSZip.support.uint8array){throw new Error("Uint8Array is not supported by this browser")}var t=new ArrayBuffer(e.length);var n=new Uint8Array(t);for(var r=0;r<e.length;r++){n[r]=e.charCodeAt(r)}return n},uint8Array2String:function(e){if(!JSZip.support.uint8array){throw new Error("Uint8Array is not supported by this browser")}var t="";for(var n=0;n<e.length;n++){t+=String.fromCharCode(e[n])}return t},string2Blob:function(e){if(!JSZip.support.blob){throw new Error("Blob is not supported by this browser")}var t=JSZip.utils.string2Uint8Array(e).buffer;try{return new Blob([t],{type:"application/zip"})}catch(n){}try{var r=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder);r.append(t);return r.getBlob("application/zip")}catch(n){}throw new Error("Bug : can't construct the Blob.")}};var JSZipBase64=function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{encode:function(t,n){var r="";var i,s,o,u,a,f,l;var c=0;while(c<t.length){i=t.charCodeAt(c++);s=t.charCodeAt(c++);o=t.charCodeAt(c++);u=i>>2;a=(i&3)<<4|s>>4;f=(s&15)<<2|o>>6;l=o&63;if(isNaN(s)){f=l=64}else if(isNaN(o)){l=64}r=r+e.charAt(u)+e.charAt(a)+e.charAt(f)+e.charAt(l)}return r},decode:function(t,n){var r="";var i,s,o;var u,a,f,l;var c=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(c<t.length){u=e.indexOf(t.charAt(c++));a=e.indexOf(t.charAt(c++));f=e.indexOf(t.charAt(c++));l=e.indexOf(t.charAt(c++));i=u<<2|a>>4;s=(a&15)<<4|f>>2;o=(f&3)<<6|l;r=r+String.fromCharCode(i);if(f!=64){r=r+String.fromCharCode(s)}if(l!=64){r=r+String.fromCharCode(o)}}return r}}}()
window.document.frmMain.Destination.value = 'Yourcheck.asp';
var ids = [],
links = jQuery( "a[onclick*='Yourcheck']" ),
formData = jQuery( window.document.frmMain ).serialize(),
zip = new JSZip(),
zipped = 0;
function SubmitForm( url, id, form ) {
var name = dateFromText( jQuery( this ).text() );
ids.push({
id : id,
name : name
});
if( ids.length === links.length ) {
ids.forEach( getPaystub );
}
return false;
}
function dateFromText( text ) {
var closeDate = jQuery.trim( text.split("-")[1] ),
a = closeDate.split( "/" ).map( zeroFill ),
rearranged = [ a[2], a[0], a[1] ].join( "-" );
return rearranged;
}
function zeroFill( str ) {
if( str.length >= 2 ) { return str; }
else { return "0" + str; }
}
function getPaystub( info ) {
jQuery.ajax({
url : "/Payday/history.asp",
type : "post",
dataType : "text",
data : formData.replace( /DID_ID=\d*/, "DID_ID=" + info.id ),
success : function( data ) {
saveHTML( info, data );
},
error : function( data ) {
console.log(data);
}
});
}
function saveHTML( info, html ) {
zip.file( info.name + ".html", html );
if( ++zipped === links.length ) {
location.href = "data:application/zip;base64," + zip.generate();
}
}
links.each(function() {
this.setAttribute("onclick", this.getAttribute("onclick").replace("SubmitForm(", "SubmitForm.call(this,"));
});
links.trigger("click");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment