// String Manipulation Module // created by Volv // This file and contents can be reused and redistributed freely // // Functionality: // - randomString > Creates a random alphanumeric string // > Parameters: // - numChars - The number of characters in the random string. // // - str_reverse > Reverses a string // > Parameters: // - strString - The string to reverse. // // - base64_encode > Base64 encode a string // > Parameters: // - strInput - The string to be encoded. // // - base64_decode > Decodes a Base64 encoded string // > Parameters: // - strInput - The Base64 encoded string to be decoded. // // - StringToBinary > Converts an ascii string to binary data // > Parameters: // - strAscii - The ascii string data to be converted. // // - BinaryToString > Converts binary data to an ascii string // > Parameters: // - binData - The binary data to be converted. // // - AppendToBinary > Appends/Concatenates binary data // > Parameters: // - binData - The binary data to append. // - AppendTo - The binary data to be appended to. // // - LinearSearch > Finds the location of a string in an array // > Parameters: // - SearchFor - The string to search for. // - SearchIn - The array of strings to search in. // - boolFindLike (Optional) - False: Find an element in the array exactly matching, // True: Find an element in the array which contains the string to search for. //Creates a random alphanumeric string of length numChars function randomString(numChars) { var randString = ''; for(var i = 0; i < numChars; i++) { var rndInt = (Math.random()*3); if(rndInt >= 2) { //Uppercase randString += String.fromCharCode((Math.random()*26)+65); } else if(rndInt >= 1) { //Lowercase randString += String.fromCharCode((Math.random()*26)+97); } else { //Numbers randString += String.fromCharCode((Math.random()*10)+48); } } return randString; } function str_reverse(strString) { var revStr = ''; for (i = strString.length - 1; i >= 0; i--) { revStr += strString.charAt(i); } return revStr; } //Base64 encode a string //Thanks to http://rumkin.com/tools/compression/base64.php function base64_encode(strInput) { var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var strEnc = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; do { chr1 = strInput.charCodeAt(i++); chr2 = strInput.charCodeAt(i++); chr3 = strInput.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } strEnc = strEnc + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); } while (i < strInput.length); return strEnc; } //Decode a Base64 encoded string //Thanks to http://rumkin.com/tools/compression/base64.php function base64_decode(strInput) { var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var strDec = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = strInput = strInput.replace(/[^A-Za-z0-9\+\/\=]/g, ""); do { enc1 = keyStr.indexOf(strInput.charAt(i++)); enc2 = keyStr.indexOf(strInput.charAt(i++)); enc3 = keyStr.indexOf(strInput.charAt(i++)); enc4 = keyStr.indexOf(strInput.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; strDec = strDec + String.fromCharCode(chr1); if (enc3 != 64) { strDec = strDec + String.fromCharCode(chr2); } if (enc4 != 64) { strDec = strDec + String.fromCharCode(chr3); } } while (i < strInput.length); return strDec; } function StringToBinary(strAscii) { var fstream = new ActiveXObject("ADODB.Stream"); //Write ascii to stream fstream.Type = 2; //adTypeString fstream.CharSet = "ascii"; fstream.Open; fstream.WriteText(strAscii); //Read binary from stream fstream.Position = 0; fstream.Type = 1; //adTypeBinary return fstream.Read; } function BinaryToString(binData) { var fstream = new ActiveXObject("ADODB.Stream"); //Write binary to stream fstream.Type = 1; //adTypeBinary fstream.Open; fstream.Write(binData); //Read ascii from stream fstream.Position = 0; fstream.Type = 2; //adTypeString fstream.CharSet = "ascii"; return fstream.ReadText; } function AppendToBinary(binData, binAppendTo) { var fstream = new ActiveXObject("ADODB.Stream"); //Write binary to stream fstream.Type = 1; //adTypeBinary fstream.Open; fstream.Write(binAppendTo); fstream.Write(binData); fstream.Position = 0; return fstream.Read; } function LinearSearch(SearchFor, SearchIn, boolFindLike) { for(var i = 0; i < SearchIn.length; i++) { if(boolFindLike) { if(SearchIn[i].indexOf(SearchFor) >= 0) { return i; } } else if (SearchIn[i] == SearchFor) { return i; } } return -1; } function WriteMultiStringW (datablock, string) { var pos = 0; datablock.WriteString(0, string); pos = string.indexOf("|", pos); while (pos != -1) { datablock.WriteWORD(2 * pos, 0); pos = string.indexOf("|", pos + 1); } } function Space(number) { var i; var s = ""; for (i = 0; i < number; i++) { s += " "; } return s; }