18ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
28ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen/*
38ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen * Binary Ajax 0.1.5
48ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com, http://blog.nihilogic.dk/
58ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen * MIT License [http://www.opensource.org/licenses/mit-license.php]
68ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen */
78ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
88ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
98ae428e0fb7feea16d79853f29447469a93bedffKristian Monsenvar BinaryFile = function(strData, iDataOffset, iDataLength) {
108ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  var data = strData;
118ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  var dataOffset = iDataOffset || 0;
128ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  var dataLength = 0;
138ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
148ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getRawData = function() {
158ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return data;
168ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
178ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
188ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  if (typeof strData == "string") {
198ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    dataLength = iDataLength || data.length;
208ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
218ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    this.getByteAt = function(iOffset) {
228ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return data.charCodeAt(iOffset + dataOffset) & 0xFF;
238ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    }
248ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  } else if (typeof strData == "unknown") {
258ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    dataLength = iDataLength || IEBinary_getLength(data);
268ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
278ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    this.getByteAt = function(iOffset) {
288ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return IEBinary_getByteAt(data, iOffset + dataOffset);
298ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    }
308ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
318ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
328ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getLength = function() {
338ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return dataLength;
348ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
358ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
368ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getSByteAt = function(iOffset) {
378ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var iByte = this.getByteAt(iOffset);
388ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (iByte > 127)
398ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return iByte - 256;
408ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    else
418ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return iByte;
428ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
438ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
448ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getShortAt = function(iOffset, bBigEndian) {
458ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var iShort = bBigEndian ?
468ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      (this.getByteAt(iOffset) << 8) + this.getByteAt(iOffset + 1)
478ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      : (this.getByteAt(iOffset + 1) << 8) + this.getByteAt(iOffset)
488ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (iShort < 0) iShort += 65536;
498ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return iShort;
508ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
518ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getSShortAt = function(iOffset, bBigEndian) {
528ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var iUShort = this.getShortAt(iOffset, bBigEndian);
538ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (iUShort > 32767)
548ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return iUShort - 65536;
558ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    else
568ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return iUShort;
578ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
588ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getLongAt = function(iOffset, bBigEndian) {
598ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var iByte1 = this.getByteAt(iOffset),
608ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      iByte2 = this.getByteAt(iOffset + 1),
618ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      iByte3 = this.getByteAt(iOffset + 2),
628ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      iByte4 = this.getByteAt(iOffset + 3);
638ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
648ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var iLong = bBigEndian ?
658ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      (((((iByte1 << 8) + iByte2) << 8) + iByte3) << 8) + iByte4
668ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      : (((((iByte4 << 8) + iByte3) << 8) + iByte2) << 8) + iByte1;
678ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (iLong < 0) iLong += 4294967296;
688ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return iLong;
698ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
708ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getSLongAt = function(iOffset, bBigEndian) {
718ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var iULong = this.getLongAt(iOffset, bBigEndian);
728ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (iULong > 2147483647)
738ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return iULong - 4294967296;
748ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    else
758ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      return iULong;
768ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
778ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getStringAt = function(iOffset, iLength) {
788ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var aStr = [];
798ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    for (var i=iOffset,j=0;i<iOffset+iLength;i++,j++) {
808ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      aStr[j] = String.fromCharCode(this.getByteAt(i));
818ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    }
828ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return aStr.join("");
838ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
848ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
858ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.getCharAt = function(iOffset) {
868ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return String.fromCharCode(this.getByteAt(iOffset));
878ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
888ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.toBase64 = function() {
898ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return window.btoa(data);
908ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
918ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  this.fromBase64 = function(strBase64) {
928ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    data = window.atob(strBase64);
938ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
948ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen}
958ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
968ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
978ae428e0fb7feea16d79853f29447469a93bedffKristian Monsenvar BinaryAjax = (function() {
988ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
998ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  function createRequest() {
1008ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var oHTTP = null;
1018ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (window.XMLHttpRequest) {
1028ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      oHTTP = new XMLHttpRequest();
1038ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    } else if (window.ActiveXObject) {
1048ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
1058ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    }
1068ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    return oHTTP;
1078ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
1088ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1098ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  function getHead(strURL, fncCallback, fncError) {
1108ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var oHTTP = createRequest();
1118ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (oHTTP) {
1128ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (fncCallback) {
1138ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        if (typeof(oHTTP.onload) != "undefined") {
1148ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          oHTTP.onload = function() {
1158ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            if (oHTTP.status == "200") {
1168ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              fncCallback(this);
1178ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            } else {
1188ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              if (fncError) fncError();
1198ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            }
1208ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            oHTTP = null;
1218ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          };
1228ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        } else {
1238ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          oHTTP.onreadystatechange = function() {
1248ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            if (oHTTP.readyState == 4) {
1258ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              if (oHTTP.status == "200") {
1268ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen                fncCallback(this);
1278ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              } else {
1288ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen                if (fncError) fncError();
1298ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              }
1308ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              oHTTP = null;
1318ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            }
1328ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          };
1338ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        }
1348ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      }
1358ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      oHTTP.open("HEAD", strURL, true);
1368ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      oHTTP.send(null);
1378ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    } else {
1388ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (fncError) fncError();
1398ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    }
1408ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
1418ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1428ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  function sendRequest(strURL, fncCallback, fncError, aRange, bAcceptRanges, iFileSize) {
1438ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    var oHTTP = createRequest();
1448ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (oHTTP) {
1458ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1468ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      var iDataOffset = 0;
1478ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (aRange && !bAcceptRanges) {
1488ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        iDataOffset = aRange[0];
1498ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      }
1508ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      var iDataLen = 0;
1518ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (aRange) {
1528ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        iDataLen = aRange[1]-aRange[0]+1;
1538ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      }
1548ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1558ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (fncCallback) {
1568ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        if (typeof(oHTTP.onload) != "undefined") {
1578ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          oHTTP.onload = function() {
1588ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1598ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            if (oHTTP.status == "200" || oHTTP.status == "206") {
1608ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              this.binaryResponse = new BinaryFile(this.responseText, iDataOffset, iDataLen);
1618ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              this.fileSize = iFileSize || this.getResponseHeader("Content-Length");
1628ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              fncCallback(this);
1638ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            } else {
1648ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              if (fncError) fncError();
1658ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            }
1668ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            oHTTP = null;
1678ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          };
1688ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        } else {
1698ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          oHTTP.onreadystatechange = function() {
1708ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            if (oHTTP.readyState == 4) {
1718ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              if (oHTTP.status == "200" || oHTTP.status == "206") {
1728ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen                this.binaryResponse = new BinaryFile(oHTTP.responseBody, iDataOffset, iDataLen);
1738ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen                this.fileSize = iFileSize || this.getResponseHeader("Content-Length");
1748ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen                fncCallback(this);
1758ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              } else {
1768ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen                if (fncError) fncError();
1778ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              }
1788ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen              oHTTP = null;
1798ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            }
1808ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          };
1818ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        }
1828ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      }
1838ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      oHTTP.open("GET", strURL, true);
1848ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1858ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (oHTTP.overrideMimeType) oHTTP.overrideMimeType('text/plain; charset=x-user-defined');
1868ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1878ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (aRange && bAcceptRanges) {
1888ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        oHTTP.setRequestHeader("Range", "bytes=" + aRange[0] + "-" + aRange[1]);
1898ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      }
1908ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1918ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      oHTTP.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 1970 00:00:00 GMT");
1928ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1938ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      oHTTP.send(null);
1948ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    } else {
1958ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      if (fncError) fncError();
1968ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    }
1978ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
1988ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
1998ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  return function(strURL, fncCallback, fncError, aRange) {
2008ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
2018ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    if (aRange) {
2028ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      getHead(
2038ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        strURL,
2048ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        function(oHTTP) {
2058ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          var iLength = parseInt(oHTTP.getResponseHeader("Content-Length"),10);
2068ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          var strAcceptRanges = oHTTP.getResponseHeader("Accept-Ranges");
2078ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
2088ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          var iStart, iEnd;
2098ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          iStart = aRange[0];
2108ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          if (aRange[0] < 0)
2118ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen            iStart += iLength;
2128ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          iEnd = iStart + aRange[1] - 1;
2138ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
2148ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen          sendRequest(strURL, fncCallback, fncError, [iStart, iEnd], (strAcceptRanges == "bytes"), iLength);
2158ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen        }
2168ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      );
2178ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
2188ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    } else {
2198ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen      sendRequest(strURL, fncCallback, fncError);
2208ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen    }
2218ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  }
2228ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
2238ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen}());
2248ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
2258ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen
2268ae428e0fb7feea16d79853f29447469a93bedffKristian Monsendocument.write(
2278ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  "<script type='text/vbscript'>\r\n"
2288ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  + "Function IEBinary_getByteAt(strBinary, iOffset)\r\n"
2298ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  + "	IEBinary_getByteAt = AscB(MidB(strBinary,iOffset+1,1))\r\n"
2308ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  + "End Function\r\n"
2318ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  + "Function IEBinary_getLength(strBinary)\r\n"
2328ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  + "	IEBinary_getLength = LenB(strBinary)\r\n"
2338ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  + "End Function\r\n"
2348ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen  + "</script>\r\n"
2358ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen);
236