/*Initialization code*/
/* +================ Start of user options ================+ */
//
// If all your buttons are not listed on startup you may need more than a four
// second delay before the button list is built. Try adding a couple of seconds.
var mywait = 4;
//
// When checking for possible duplicate button versions the button
// looks at the first nn% of button names. (see "Help" tab for more)
this.dupcheckpercent = 70;
//
// Menus should automatically refresh after being clicked on. If they don't
// and you have to click the archive button again to see a menu try
// increasing the time. First to any small non-zero single digit, and if that
// doesn't work start delay from 100 to perhaps 250 or even 500
var showmenudelay = 100
//
// You can see the icons at real size or at a standard size...
var realsize = true; // set to false for a standard 16x16
//
// You can see either colours, or ticks, or both
// just set one or both to true or false
var ticks = true;
var colours = false;
//
// set a standard folder to save your backips into.
// NOTE THAT you need TWO backslashes between folder steps in the path
// and the path must end with a double backslash.
var filepath = "c:\\RichardsDocs\\CustomButtonsBackup"
/* +================ End of user options ================+ */
//this.setAttribute( 'onclick', 'gQuot( event, this )' );
// MANY thanks to nicholas for help with this attribute
//this.setAttribute("style", "padding-left: 2px !important; padding-right: 2px !important; padding-top: 0px !important; padding-bottom: 0px !important; margin-top: 4px !important; margin-bottom: 4px !important;");
var nextlist = "data:image/gif;base64,R0lGODlhGAAYAIcAAAF4tAN5tQR5tQR6tQV6tQd8tgh8tgl8twt+twx+tw1+txCAuBCAuRGBuRKBuRKBuhiEuxiFuxmFvBqFvByGvB2HvSOKviOKvySKvieMvyOMwCuOwSuQwy2Qwi6QwTCRwzKTxTSUxTeVxTaXyDuXxTqYxzyYxz2Yxj+Zxj6ayEWdykadyEedyUaey0eeykieyUify0qfyU6hy0yhzEuk0F2pz1ao0Vup0Vuq0luq01yu1mGr0GGt1GWt0Wau02Wv1Wqv02Sx12qw02qx1mqy12yx022z1m2z126012643Xa32nm623q62nq93n683H+83H7C5X/D5fpU+IC72YC93IG93YjA3InA3IvB3YvE343C3Y/D3pDE3pPF35PG34DD5YHD5YLD5YLE5YPE5YPF5YXD4oTF5YXF5YXG5obG5YfG5YbG5ojG5YjH5YnH5YjH54nH5orH5YrH5ovI5ozI5o3J547J54/J547K54/K543K6I7K6I/K6JDJ55DK55HK55HL55LK55LL55XI4JfI4JTL55XM6JbM6JfN6JnN55jN6JnN6JjO6JnO6JrO6JvP6JvP6ZzP6Z3P6ZrQ6pzQ6pzQ657Q6Z/Q6aLO46fQ5aDR6qLR6qPS6qLT7KTS6aTS6qXS6qXT6qbV7KrS5q7U56jU6qrV66zW7K7W7K7X7K/X7K/a7rDU57DV6LDX7LDa7rLY7LLb77bY6crj78Pj88Xj88Xk88/p9dPr9tjs9tjt9tzu9+bz+ef0+e/2+u/3+u/3+/D3+vD3+/H3+/D4+/H4+vH4+/L4+/P4+/P5+/T5+/X5/PX6/Pb6/Pb7/Pf7/Pj7/Pj8/fn8/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAFIALAAAAAAYABgAAAj/AKUIHCjFygoFABICYCDDC8GHA7UsAGChRxdSo7bUoACAAiaIA18AOCHrGDJlKJUhO5bJA4AdIDMQmOLrV7Bix3IeM8bTVxEAKB7GIMDKmDBhw4zl5MkTWTJmhAAIGcgFABZmKE9mXWlSGbNmz4AAaCWQ4bOzCZs1w4qs7UlmzqAtw5BByhUCs6DpVQiAbc6TYJsZGwQgCwsS0hJH45vQrVdlxHrpsvWgRAK9mBkrxCqMVy5bqyiNKAAA817NCnPVelVJDxoaCaEdU/ZsMWq+e9aYMaMjNq5dvYDdZmwGTp0gCcuIikXr1vCEX4rnOZQDgIEkb/hM6jQcSpQwaegUy4qU4gAHDXjmsDmjOYr7L2DMsLmDSFMDEzYCNPFTRw7fMGGIMQYZu6kxhyCREAGAEokgAAIjhgCSUBxsqGFhG264AcccfiBiiQQVCMQDADhYAokihgTShx0s5uGHH38IcogkLQBAxUAhCLBEKJtcEokjiyjSiCOOPPJIJJf8AMAMD1UgwA2nmFJKKJxU+QkooYTiCQwAdACSCABc8AQsrqSCypmpqILEBAC4AJJARjAAQAQzHFGFE0Oo4AAAEDDxJkE+bMDYAB8YAVJAADs=";
var listred = "data:image/gif;base64,R0lGODlhEAAQAPcAAN5KUucQGOdSUudaUud7c+eEjO8QEO9SQu+EjO+UjPcIAPcIGPcYEPcxKfdrY/dra/eEhPelrffn1v8ACP8IAP8ICP9CUv+Ua/+9tf/e3v/n3v/3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEAAQAAAIVwA5XBhIsGBBDggTKlyY0KBDggwjLnz4UKJFgRQNXtzYsCJHhRIKRLBQACFFDgQcYDigoKRFAQ0eMFBQAaNDDggC0FwQ4GIGAAEqBCh5ckOGAgMSaLgYEAA7";
var listgreen = "data:image/gif;base64,R0lGODlhEAAQAPcAAAD3QgD/MQD/QgD/Sgj3KQj/QhDnORDvORD3Sin3Y0Lve0L/Wkrna0rnc1Lne2P3jGv3jGv/a3PnlITnlITvlIT3lIzvraX3rbX/1t731t7/597/7/f/9////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEAAQAAAIVwA7RBhIsGDBDggTKlyY0KBDggwjLnz4UKJFgRQNXtzYsCJHhRkmXFhgASHFDhIeYFAAoKTFBgkgIBhwAKPDDhQIAAiAwMBFDQwM9Cx5koOGCQ4saLgYEAA7";
var clipcopy = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAXCAMAAAAm/38fAAAAK3RFWHRDcmVhdGlvbiBUaW1lAFRodSAyIEp1biAyMDExIDAwOjQ4OjE0IC0wMDAwYjfkswAAAAd0SU1FB9sGARczE+ptRZIAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAEZ0FNQQAAsY8L/GEFAAAC+lBMVEX///+fn6KEhISHh4iAfoF8fH1yc3V3eXdwb3N2d3lqaW6Vk5iMi4zNzMzZ2dnd3d3NztDJx8fDw8O+v7y2tbK3uLW7vLu1trWwsLC5ur2urbKZmJ3d3+ClpamZmpemqKOkpKKqqaWgn5q0sayjoZ2ysrSLj5Di4uOSlI+eoZuqrqmssKuwrqq9ubWopaHBvbmvq6i5urqvsLSIh4uUlZKmq6udnJqqqqmrrK7l5ebFycK+xL/Ey8i4v769wcK+u7m4tLB1eHrq6Ozp6Ojd3trh4t3b4NrZ3tzc4uPW3uHX4ebW3ObW2+PW1tnW1dLc2tXg3Nja1tLZ3eDk4+Lm5uPU2tTH0NTU3uzN1uPDzd7X5PPJ0tza4urV0tDT0c3V1tW5t7vQ2eHF0eKTnbVKXXSfscO9yNTR1NrSz8qtra7l5+jw7+7T2tpdaodqgZ1Zcoqtv9LFytLS1NOZmpjz8/TR0NHn6OOkscpbaYlyhqpxjbJdep+yxNrM0Nfd29n09fXu8Om6zeZSa4xgf6tScqY4ZKBfiMBZgLF5lbjG2/XK2OnY3ubw8e/f6vFce6VWeqw2YJw1Z6pfhrxbfKmNpsTO3/Px8fHKysfs6+vm6u12hJluhqdvjLZMdKtCcbI9aqhjg65gd5Sot8fz9fh/iJVfb4mIn8Fxj7p9ntBojsVch8NkjMOEqNmIpcuEmbVdanu7wsri5uXAxM56got/jJl2h55heJloh7hylcpcg7l1m81zhZeDkqR4foWdoqmhpa+yucjEzda9zdiyx92TqcNqiblyk8Rukb+AoMlYcpapvMW5x9fByM24vMOcnJ7LzNDs7O3P0NLQ0dZOaZV0kLt/nslwj7V0jKrAwsjGx8pucn3t7vCQq9B4ka3FyM1wdodibIOwtsKWoLJpfp6Qp8aKosKPqMaEmrJtfZDn6et2gJSEkKd0haCImbSUqMOXrciYsMuKoblvgJDY2dxlc4qQobqSp794jqRjeIqyuMJUaoVjd45eeI7FzNHJAr4BAAAAAXRSTlMAQObYZgAAAgFJREFUeNpjYACBCz9//f7z9wIDOvj8ZevXbx+//8hCE/d99frN23fvP3z8JIMiLnP/wcMLjx4/efrs+YuXyBI3b3kDydvVdzqm3L2HLHH+gszF85c2Xb5y9VrH9RsXBQTqoBL1AvsPHDx0+MjRY8dPnDx1+szZc3xQGcb0TZu3bN22fcfOXQt279m7z1ACIq6eubhwydJly1esXLV6zdp16zdsNFEHS4hPnzEzetbsOe1z582fu2DhouiZhuIg8R6tsrLg3q6mvv4JEydOmjxlaoxnkco0oASfsGuDu1dUY1NzS2tbe0dnV7evqznQ+pLM0pAy95zo8PKKyqrqvJqI2vi6ACvGeoYsxux4F4+csIjI5Ny8/IK0Qt+ijMC4YneGBCEnl7hQd8/EiKTklNSktPS4uAw/10xTBm6n4BD/0FAPz7DwiMio6Bi+WP+4gJB4NQZjJ2cXV1c3dw9PTy9vHw9fP/+AQFe/ICYGHkshXisgsLaxtZW0E7LX19d1EJEQcmQw5jOU0zDRVJHX0tI2NTNQUVZRMTAzt2BjUFMXV2PSkNOU19LW1lHR1dM30BNRMDTiYGCWEZeVk1eQV5SXl1dUUlYSUVARYVSVZWPg4eXjF+AV4OUVFBISFhEWFROXkJSQkmZlYGRiYmZmZmJiYWFhZWVjZ+dgY+fk4OLgBgABaazyU/cipAAAAABJRU5ErkJggg==";
var backlist = "data:image/gif;base64,R0lGODlhGAAYAIcAAAF4tAN5tQR5tQR6tQV6tQd8tgh8tgl8twt+twx+tw1+txCAuBCAuRGBuRKBuRKBuhiEuxiFuxmFvBqFvByGvB2HvSOKviOKvySKvieMvyOMwCuOwSuQwy2Qwi6QwTCRwzKTxTSUxTeVxTaXyDuXxTqYxzyYxz2Yxj+Zxj6ayEWdykadyEedyUaey0eeykieyUify0qfyU6hy0yhzEuk0F2pz1ao0Vup0Vuq0luq01yu1mGr0GGt1GWt0Wau02Wv1Wqv02Sx12qw02qx1mqy12yx022z1m2z126012643Xa32nm623q62nq93n683H+83H7C5X/D5fpU+IC72YC93IG93YjA3InA3IvB3YvE343C3Y/D3pDE3pPF35PG34DD5YHD5YLD5YLE5YPE5YPF5YXD4oTF5YXF5YXG5obG5YfG5YbG5ojG5YjH5YnH5YjH54nH5orH5YrH5ovI5ozI5o3J547J54/J547K54/K543K6I7K6I/K6JDJ55DK55HK55HL55LK55LL55XI4JfI4JTL55XM6JbM6JfN6JnN55jN6JnN6JjO6JnO6JrO6JvP6JvP6ZzP6Z3P6ZrQ6pzQ6pzQ657Q6Z/Q6aLO46fQ5aDR6qLR6qPS6qLT7KTS6aTS6qXS6qXT6qbV7KrS5q7U56jU6qrV66zW7K7W7K7X7K/X7K/a7rDU57DV6LDX7LDa7rLY7LLb77bY6crj78Pj88Xj88Xk88/p9dPr9tjs9tjt9tzu9+bz+ef0+e/2+u/3+u/3+/D3+vD3+/H3+/D4+/H4+vH4+/L4+/P4+/P5+/T5+/X5/PX6/Pb6/Pb7/Pf7/Pj7/Pj8/fn8/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAFIALAAAAAAYABgAAAj/AKUIHCjFiwwGABICULDCCsGHAzFRAEChxpZRpLr0sABggRaIA3cA8JDpGDJlKJUhOybrBIAXIFEAKOLLmM1jOI8VC/bL1xQCGR4KAUCIWTJkNm8eMzZMmDBjrAjEGNgKAJBnzZipxInsJEqvzLAA4CIwA4Zl0Jxp7dpVGbNmzRI+m3tQShYAg4w1w7rVpFuFAKAJnkXgSokHtnT1IuZWZVfACaNJm0yCRYERlFbZysVL2F/ICQWLTgCABho9lV7VygUasGjBCXWYMbNmT2vI0Z4pOwYtYZA6cMzchgys1y5cvQHkOJQn+JfhCW/RiiWqDIADKSIVopMmTBQowztNzuLzJokBEw00IbrDxgyYL1Higz7DZg4eDRyUACASSdAcNbORMYYYYYQBmBx1+NFEADZIUYEEliDixxxwuOFGG2pkyEYcCQFiCCMgIJCIFFQA0IIkhwjyhx9+5GHHi30EYogikFiCAwA8DDQDAD9cEskjjzjiSCOKLOJIJJdsEsoSAoTwUAcAwOBJKKGA8gknWIZSiimn3CBABSC5AMAESKiSCipopuIKLE9cAIAIIAnEBAQAOKDCEE5UccQMEQDAgBFxEmTEBwNAtoEPIAUEADs=";
var tick = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAIAAAD9iXMrAAAAK3RFWHRDcmVhdGlvbiBUaW1lAFdlZCAxIEp1biAyMDExIDIyOjIwOjIwIC0wMDAwyHewuAAAAAd0SU1FB9sGARUZOsQwxbgAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAEZ0FNQQAAsY8L/GEFAAABHElEQVR42mMsXs3KQARgAeK2gA+YEkxMLIwMjP/+//3//1/VBgEWiOiNF0eQFQlwSrz9+uTd16eGcp48HMJQ8yBAiFsaxmQU4paZtN8EyJIXPsrLIYKiDqqEgYmLnf/xu8sQrhifAtBekDPgKliZObjZBViY2bjY+GcfcQSKZDuc/Pn7K9S5EApo+J9/v5+8vw50zdMPNyCCskLaf/79QvgXCPg4Rdu3KwMZpW7Xpx2wBDIy7Y8BbWRlYkcx79vPjzVeD4GM7l2aEBEFYX2gOmDooKj78+8nKwtniNFSCDfN9iDIT4xMzDB1cOXMX3++15CwASplYmQBGvbjz9f///8zoamTFFADhwqjqULAf4b/wGhgZWJDCS8i4xcAK0tYz+0sM7gAAAAASUVORK5CYII=";
var cross = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAIAAAD9iXMrAAAAK3RFWHRDcmVhdGlvbiBUaW1lAFdlZCAxIEp1biAyMDExIDIyOjE5OjEyIC0wMDAwtJDruQAAAAd0SU1FB9sGARUZKUCOhGYAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAEZ0FNQQAAsY8L/GEFAAAAxElEQVR42o2RMQoCMRBFM38mWcFmERuxsvEAnsS72HkAL2PjITyER9hGFITFbv1JREmKZcPsMmQeLz9EDmfvJizjd9o/x6HjpbXc3bprNRMngBn8Zrn7+vJazNe/HmKKWI+++59baoBEqBigKlpzImBBlGcRpRICRSi4NA78K7xpIMd83Pc2K7g4RlD1bFg05f2ApvQxisZYVBKCA3O4YaC49EnWJM7FoDmyVpxHeL3vHk28qQZe1qV8tW/VbsefRCa+7weXGRJUyemHsAAAAABJRU5ErkJggg==";
var limit=10;
var mPop;
var seePop;
var alertstring = "";
var btn = "";
var btnid = "";
var btnimage = "";
var btntip = "";
var button_count;
var btnhomepage = "";
var buttonhead = "";
var cb_count = 0;
var cb_total = 0;
var cbparent = "";
var checkdata = "";
var cliphead = "";
var clipreport = "";
var croplen = 28;
var dontpush = false;
var hidepadding = "#ffffff";
var idx = 0;
var indexstring = "";
var itemcolour = "";
var itemamber = "#A10048";
var itemgreen = "#87a705"
var itemred = "#f5cbcb";
//var itemgreen = "#CBCDB4"
//var itemred = "#E2E2DB";
var itemlight = "";
var itembrt = 0.99;
var itemmed = 0.75; // .75
var itemdim = 0.50; // .5
var listcomplete = false;
var makechange = false;
var mybuttons;
var mylabel = "";
var name = "";
var namecrop = "";
var nameLC = "";
var ontb = "";
var rExp = "";
var savefilename="";
var testreport = "";
var teststr = "";
var whilecount = 0;
//imagecheck vars
var imgstr = "";
var chopstr = "";
var mywidth = 0;
var menupad = "";
//use . _ l j at menupadarry[0][required pad width] to make the padding
// l=2px j=3px .=4px _=6px
var menupadarray = new Array();
menupadarray.push(["","","l","j",".","jl","_",".j","..","jjj","._","..j","...",".j_","._.","...j",".__","._.j","___",".__j","._._",".j.j.j",".___","._._j","____","___.j","._.__"]);
var mythis = this.getAttribute("id");
mythis = document.getElementById(mythis);
mywait = mywait * 1000;
this.setAttribute("mylistdone", "false");
mythis.setAttribute("seePopvisible", "false");
this.setAttribute("base64missing", "false");
this.tooltipText = "Button Archive List";
this.image = listred;
var btnarray = new Array();
var cliparray = new Array();
let nItem = function(label,value,name,img,btntip,namecrop,ontb,btn)
{
var mItem=document.createElement('menuitem');
mItem.setAttribute('label',label); // namecrop);
mItem.value = value;
mItem.tooltipText = "ID = " + btn + " " + name;
mItem.setAttribute('class','menuitem-iconic');
mItem.setAttribute('image',img);
mItem.setAttribute('name',name);
return mItem;
}
/* +==================================================================
L I S T A L E R T F U N C T I O N
==================================================================+ */
mythis.listalert = function(evt)
{
// make the menupopup
if(this.getAttribute("mylistdone") == "false")
{
mPop=document.createElement('menupopup');
mPop.maxHeight = 400; // screen.availHeight - 50;
mPop.maxWidth = 250;
// end of make menupopup
// reset btn array and cb_count
btnarray = new Array();
cb_count = 0;
cb_total = 0;
// Obtain list of available buttons
var buttons = document.getElementsByTagName("toolbarbutton");
button_count = buttons.length;
// For each button find name and id#.
var i = 0;
for ( i = 1; i < button_count; i++ )
{
mybuttons = buttons[i];
btnid = mybuttons.getAttribute("id");
// Do a test for "custombuttons-buttonxxx"
// IF this Button is custom collect its details
rExp = /custombuttons-button/;
if (rExp.test(btnid)) // Our kind of custom button (thanks SCClockDr)
{
name = mybuttons.getAttribute("label");
cb_total++ // full count of buttons
// get the toolbar that the button is on
ontb = mybuttons.parentNode.id;
// cut for digits only
btn = custombuttons.getNumber(btnid); // (thanks SCClockDr)
btntip = btn
// show button icons
btnimage = mybuttons.getAttribute("image");
checkdata = btnimage.substring(0,8);
// check to see if it is base 64
this.setAttribute("base64missing", "false");
var passimage = true ;
// set up for alert if not a base64 image
rExp = /base64/;
if (!rExp.test(btnimage)) // file on local computer
{
passimage = false;
}
// reset to allow for xbitmaps such as the clock button
rExp = /xbitmap/;
if (rExp.test(btnimage))
{
passimage = true;
}
if(passimage == false)
{
alertstring = "";
alertstring = "This button image is a local file on your computer.\n\n";
alertstring += "ID = " + btn + " . . . ";
alertstring += name + "\n\n";
alertstring += "On toolbar:- " + '"' + ontb + '"' + "\n\n";
alertstring += "Please edit the button and click on the ";
alertstring += "->Base64 button to the right of the image box \n";
alertstring += "and then click on " + '"' + "OK" + '"' + ". \n\n";
alertstring += "Then click this button again.\n\n";
alertstring += "SEE the HELP tab for why you need to do this.\n\n";
alertstring += "After correcting the button's image to base64\n";
alertstring += "Click on this button again to restart.";
var mytitle = "Button Archive List - missing =>base64";
var Msg = createMsg(mytitle);
Msg.aMsg(alertstring);
//alert(" " + alertstring);
this.setAttribute("base64missing", "true");
return;
}
// call the imagecheck function to create padding
// for the various image types and sizes
if(passimage == true)
{
imagecheck();
/*
rExp = /x-icon;base64/;
if (rExp.test(btnimage)) // it's an icon
{
teststr += btnimage.substring(25,85) + " " + mywidth + " " + name + "\n";
}
*/
// assume a nominal max image width is 32 and desired space = 38
// get the difference and create a pad string with . and _ and j
// which are four and six and three pixels wide
tmp = 38 - mywidth;
// if no width then image type not covered
if(mywidth == 0)
{
tmp = 4;
}
// correct for images larger than 38
if(tmp < 4)
{
tmp = 4;
}
if(realsize == false)
{
tmp = 10;
}
menupad = menupadarray[0][tmp];
//
//alert("name = " + name + "\n\nmywidth = " + mywidth);
//return;
}
// manipulate name for sorting and listing
nameLC = name.toLowerCase();
// check for the word 'test' in the name(in lower case)
rExp = / test /;
if (rExp.test(nameLC)) // probable test button
{
dontpush = true;
//alert("dontpush test = " + dontpush);
}
// check for complete duplicate names
var j = 0;
for ( j = 0; j < btnarray.length; j++ )
{
if(name == btnarray[j][1])
{
dontpush = true;
//alert("dontpush duplicate = " + dontpush);
}
} //end of duplicate names check
// check for 'possible' duplicate names by percentage
var tmpval = (nameLC.length * this.dupcheckpercent)/100; // length of compare string
var tmpstr = nameLC.substring(0, tmpval);
var k = 0;
for ( k = 0; k < btnarray.length; k++ )
{
var tmpcheckstr = btnarray[k][0];
var tmpcheckstrpc = tmpcheckstr.substring(0, tmpval);
if(tmpstr == tmpcheckstrpc)
{
dontpush = true;
}
} // end of percentage duplicate check
// find the homepage if there is one
btnhomepage = mybuttons.getAttribute("homepage");
// place in an array if all OK
btnarray.push([nameLC,name,btn,btnimage,idx,ontb,btnhomepage,dontpush,menupad]);
dontpush = false; // reset dontpush
}
} //end of find custom buttons for array
// sort on lower case name
btnarray.sort();
// add separator and "Click to see final list"
btnarray.push(['separator',,,,,,,"carp"]);
btnarray.push(["Попередній перегляд", "Попередній перегляд", "Попередній перегляд", nextlist, "", "", "", "carp"])
// populate the start list
makestartlist();
this.appendChild(mPop);
this.type = "menu";
this.setAttribute("mylistdone", "true");
mythis.setAttribute("seePopvisible", "false");
this.image = listgreen;
//this.hideDropmarker();
} // END of if my list done
} // End list alert menu making
/* +============= END OF MENU MAKING =============+ */
/* +==================================================================
I M A G E C H E C K F U N C T I O N
==================================================================+ */
function imagecheck()
{
mywidth = 0;
var mykeystr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
//ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
//01234567890123456789012345678901234567890123456789012345678901234
// 1 2 3 4 5 6
// to check for a gif
//
// data:image/gif;base64,R0lGODlh <--- then next four chars! i.e. FgAM
// 0123456789012345678901234567890123456789012345678
// 1 2 3 4
//
// FgAM width=Fg=22 height=AM=12
//
// F=5 g=32 5*4 + 32/16 = 22 = width
//
// A=0 M=12 0*16 + 12 = 12 = height
// is it a gif?
chopstr = "data:image/gif;base64,R0lGODlh";
imgstr = "";
rExp = /gif;base64/;
if (rExp.test(btnimage)) // it's a gif
{
// if it's a gif get the width (and height?) characters
imgstr = btnimage.substring(chopstr.length, chopstr.length + 4);
// use the key string index to get the value of the characters
// multiply the index value of the first char by four (my width)
var tmpchar = imgstr.substring(0,1);
var tmpidx = mykeystr.indexOf(tmpchar);
mywidth = tmpidx * 4;
// divide the index value of the second char by sixteen
tmpchar = imgstr.substring(1,2);
tmpidx = mykeystr.indexOf(tmpchar);
mywidth += tmpidx / 16;
} // END of check for gif
// to check for an icon
//
// data:image/x-icon;base64,AAABAA // use next four
// 0123456789012345678901234567890123456789012345678
// 1 2 3 4
//
//EAEB = 16 = E*4 = 16
//IAIC = 16 = I*4 /C = 16
//IAEB = 16 = E*4 /B = 16
//EAIC = 32 = I*4 = 32
//EAQE = 64 = Q*4 = 64
//
//if first is I then divide by fourth
// is it an icon?
chopstr = "data:image/x-icon;base64,AAABAA";
imgstr = "";
rExp = /x-icon;base64/;
if (rExp.test(btnimage)) // it's an icon
{
// if it's an icon get the width (and height?) characters
imgstr = btnimage.substring(chopstr.length, chopstr.length + 4);
// use the key string index to get the value of the characters
// multiply the index value of the third char by four (my width)
var tmpchar = imgstr.substring(2,3);
var tmpidx = mykeystr.indexOf(tmpchar);
mywidth = tmpidx * 4;
// if the first char is I then divide by fourth
tmpcharcheck = imgstr.substring(0,1);
if(tmpcharcheck == "I")
{
tmpchar = imgstr.substring(3,4);
tmpidx = mykeystr.indexOf(tmpchar);
mywidth = mywidth / tmpidx
}
//alert("tmpchar = " + imgstr + " mywidth = " + mywidth);
} // END of check for icon
// to check for a png
// data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAA <-- to here then next four
// 0123456789012345678901234567890123456789012345678901
// 1 2 3 4 5
//
//loo_AgCA Ag=0*(?)+32=32 CA=2*16+0=32
//cog_AgCA
//tls_APCA AP=0*(?)+15=15 CA=2*16+0=32 //15x32 height width
// is it a png?
/*
12x12 AwAAAAM_CAMAAABhq6zVAAAAB3RJTUUH2AQcFTAkJF
16x16 BAAAAAQ_CAMAAAAoLQ9TAAAAB3RJTUUH
24x24 BgAAAAY_CAMAAADXqc3KAAAAB3RJTUUH
32x32 CAAAAAg_CAMAAABEpIrGAAAAB3RJTUUH2A
32x16 CAAAAAQ_CAMAAABA3o1rAAAAB3RJTUUH2
32x24 CAAAAAY_CAMAAACsjQ8GAAAAB3RJTUUH2A
40x26 CgAAAAa_CAMAAADyku75AAAAB3RJTUUH2
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAaCAMAAADyku75AAAAB3RJTUUH2
1st*16 + 2nd/4 + 3rd // width
AwA = 12
BAA = 16
BgA = 24
AAg = 32
CAA = 32
CAA = 32
CgA = 32+8+0 = 40
*/
chopstr = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA"; // next seven
imgstr = "";
rExp = /png;base64/;
if (rExp.test(btnimage)) // it's a png
{
// if it's a png get the width (and height?) characters
imgstr = btnimage.substring(chopstr.length, chopstr.length + 7);
// use the key string index to get the value of the characters
// multiply the index value of the first char by sixteen
var tmpchar = imgstr.substring(0,1);
var tmpidx = mykeystr.indexOf(tmpchar);
mywidth = tmpidx * 16;
// divide the index value of the second char by four
tmpchar = imgstr.substring(1,2);
tmpidx = mykeystr.indexOf(tmpchar);
mywidth += tmpidx / 4;
// add the index value of the third char
tmpchar = imgstr.substring(2,3);
tmpidx = mykeystr.indexOf(tmpchar);
mywidth += tmpidx;
} // END of check for png
// to check for a bmp
//
// data:image/bmp;base64,Qk3GBAAAAAAAADYEAAAoAAAA <--- then next seven chars
// 0123456789012345678901234567890123456789012345678
// 1 2 3 4
//
//32x16 Qk02BgA_AAAAAADYEAAAoAAAAIA_AA_ABA_AAAABAAgAAAAAAAACAADCHgAAwh4AAAAAAA
//32x24 Qk02BwA_AAAAAADYEAAAoAAAAIA_AA_ABg_AAAABAAgAAAAAAAADAADCHgAAwh4AAA
//40x26 Qk1GCAA_AAAAAADYEAAAoAAAAKA_AA_ABo_AAAABAAgAAAAAABAEAADBHgAAwR4AAA
//31x17 Qk1WBgA_AAAAAADYEAAAoAAAAHw_AA_ABE_AAAABAAgAAAAAACACAADCHgAAwh4AAA
//
//31x17 Hw= 7*4 + 48/16 = 28+3 = 31
//31x17 BE= 1*16 + 4/4 = 16+1 = 17
// is it a bmp?
chopstr = "data:image/bmp;base64,Qk3GBAAAAAAAADYEAAAoAAAA";
imgstr = "";
rExp = /bmp;base64/;
if (rExp.test(btnimage)) // it's a bmp
{
// if it's a bmp get the width (and height?) characters
imgstr = btnimage.substring(chopstr.length, chopstr.length + 4);
// use the key string index to get the value of the characters
// multiply the index value of the first char by four (my width)
var tmpchar = imgstr.substring(0,1);
var tmpidx = mykeystr.indexOf(tmpchar);
mywidth = tmpidx * 4;
// divide the index value of the second char by sixteen
tmpchar = imgstr.substring(1,2);
tmpidx = mykeystr.indexOf(tmpchar);
mywidth += tmpidx / 16;
//alert("tmpchar = " + imgstr + " mywidth = " + mywidth);
} // END of check for bmp
// to check for a jpg
//
//data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCAA
// 0123456789012345678901234567890123456789012345678
// 1 2 3 4
//
//ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
//01234567890123456789012345678901234567890123456789012345678901234
// 1 2 3 4 5 6
//
// 16x16 QABA Q=16 + A = height B*16 + = width
// 20x20 UABQ
// 35x35 jACM
// 40x33 hACg h=33 + 0 = 40 C*16=32 + g/4=8 = 40
// 48x48 wADA
// first two = height
// is it a jpg?
chopstr = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCAA";
imgstr = "";
rExp = /jpeg;base64/;
if (rExp.test(btnimage)) // it's a jpg
{
// if it's a jpg get the width (and height?) characters
imgstr = btnimage.substring(chopstr.length, chopstr.length + 4);
// use the key string index to get the value of the characters
// multiply the index value of the third char by sixteen (my width)
var tmpchar = imgstr.substring(2,3);
var tmpidx = mykeystr.indexOf(tmpchar);
mywidth = tmpidx * 16;
// divide the index value of the fourth char by four
tmpchar = imgstr.substring(3,4);
tmpidx = mykeystr.indexOf(tmpchar);
mywidth += tmpidx / 4;
// alert("tmpchar = " + imgstr + " mywidth = " + mywidth);
} // END of check for jpg
} // END of image check
/* +==================================================================
M A K E C H E C K L I S T F U N C T I O N
==================================================================+ */
function makechecklist()
{
// used to turn OFF list changes for this menu in toggle check
mythis.setAttribute("seePopvisible", "true");
mythis.removeChild(mPop);
seePop=document.createElement('menupopup');
for(i=0; i