
	/*

			   Auther Graham Vincent for Zenosis.com
			   ----------------------------------------------------------------------
		Usage: # The script you want to protect has to be an ASP page.
		       # Include this file into the script you want to protect from bots using <script src="/include/botsecurity.js"></script>
		       # Include the include/security.asp file into the script you want to protect from bots using <!-- #include virtual="/include/security.asp" -->
			   # In the script you want to proect add the following javascript.
			   ------------------------------------------------------------------
			   # In the script you want to protec from bots, where you want to code to show, add the following lines.
			   # These lines must be included before the next piece of code in listing (1b)
			   ------------------------------------------------------------------
			   listing (1a)
			   <div id="grid" name="grid"></div>                                <!--// this div holds the security code -->
			   <input type="text" id="abc" name="abc"/>                         <!--// this field the users types the code into -->
			   <input type="hidden" id="efg" name="efg" value="<%=seccode2%>"/> <!--// this field holds a hidden value -->
			   -----------------------------------------------------------------
				listing (1b)
				<%
				Dim seccode,seccode2
				seccode = retrive_security_code
				seccode2 = retrive_security_code
				addToLog seccode,seccode2
				%>
			   <script type="text/javascript">
				var word = "<%=seccode%>";
				display(word);
			   </script>
			   ------------------------------------------------------------------
			   # At the part where your form is comming in and you need to do the test to see if the user got the code right, type...
			   ------------------------------------------------------------------
			    listing (1c)
				<%
				s1 = UCase(Trim(Request.Form("abc")))
			    s2 = UCase(Trim(Request.Form("efg")))
				If checkEntry(s1,s2) Then
					'it's ok
				Else
				%>
					<script language="javascript" type='text/javascript'>
						alert("Sorry, the security code does not match the one you entered");
						document.location ="yourformpage.asp";
					</script>
				<%
				End If
			   ----------------------------------------------------------------------
			   # To change the colours on the output see the 'getColour()' function.
			   # For added security you can change three colours.
					1. One is used for the background colour
					2. One is used for the text colour
					3. One is used for stripes going from left to right.  
					Make this one the same as the background to make it as easy as possible for your users.  
					Otherwise make this coulor as close as possible to the text colour with making it the same so that user can still distinguies the letters form the stripes.
			   ----------------------------------------------------------------------
			   # If you would like to perform client side checking aswell to reduce the load on the server, add the following code in a function that checks your form data
			   ----------------------------------------------------------------------
				if(trim(document.getElementById("abc").value.toUpperCase()) == "<%=seccode%>")
				{
					sMsg += ("The security code does not match the code you entered, please check and try again");
					//or
					return false;
					//or what ever your standard is.
				}
			   ----------------------------------------------------------------------
       Mothod: # This works by using ASP to generate two random numbers.  
			   # The first number is used to make a new entry in a type of log file on the server as a parameter.
			   # The second random number is written to that file as a value of the parameter. e.g. [randomNumber1]=[randomNumber2]
			   # The file that is used for these entries will be written to the same folder as the script your protecting and is called "requestLogFile.txt"
			   # The first randome number is also placed in the form as a hidden input which will be sent to the server
			   # The second number is used to generate the HTML Table to display the number.
			   # The user types in the number they see which is sent to the server
			   # The server then searches the log file for these two parameters.
			   # If they were found then the form is allowed to run the request
			   # If not an alert will popup and warn the user of the failure and go back in history for a second, third ,etc, attempt.
			   # This file will get bigger over time but it will never get big enough to make any tiny difference in performace,
			     let alone a noticeable difference.

	*/

var A = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("2","2","1","1","1","2","2"),
new Array ("*","1","*","*","*","1","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","1","1","1","1","1","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","*","*","*","*","*","*")
);

var B = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","2","2"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","2","2","2","2","1","2"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","1","1","1","1","2","2"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","1","1","1","1","1","1"),
new Array ("*","*","*","*","*","*","*")
);

var C = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("2","2","1","1","1","1","1"),
new Array ("*","1","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("*","1","*","*","*","*","*"),
new Array ("2","2","1","1","1","1","1"),
new Array ("*","*","*","*","*","*","*")
);

var D = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","2","2"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","1","1","1","1","2","2"),
new Array ("*","*","*","*","*","*","*")
);

var E = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","1","1"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","1","*"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","1","1"),
new Array ("*","*","*","*","*","*","*")
);

var F = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","1","1"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("*","*","*","*","*","*","*")
);

var G = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("*","1","1","1","1","1","1"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","1","2","2"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","1","*","*","*","*","1"),
new Array ("*","2","1","1","1","1","1"),
new Array ("*","*","*","*","*","*","*")
);
var H = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","1","1","1","1","1","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","*","*","*","*","*","*")
);

var I = new Array(
new Array ("*","*","*","*","*"),
new Array ("1","1","1","1","1"),
new Array ("*","*","1","*","*"),
new Array ("2","2","1","2","2"),
new Array ("*","*","1","*","*"),
new Array ("2","2","1","2","2"),
new Array ("*","*","1","*","*"),
new Array ("2","2","1","2","2"),
new Array ("*","*","1","*","*"),
new Array ("1","1","1","1","1"),
new Array ("*","*","*","*","*")
);

var J = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("2","1","1","1","1","1","1"),
new Array ("*","1","*","*","*","*","1"),
new Array ("2","2","2","2","2","2","1"),
new Array ("*","*","*","*","*","*","1"),
new Array ("2","2","2","2","2","2","1"),
new Array ("*","*","*","*","*","*","1"),
new Array ("2","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","1","2"),
new Array ("*","1","1","1","1","*","*"),
new Array ("*","*","*","*","*","*","*")
);

var K = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","2","2","2","1","2","2"),
new Array ("1","*","*","1","*","*","*"),
new Array ("1","1","1","1","1","2","2"),
new Array ("1","*","*","*","*","1","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","*","*","*","*","*","*")
);

var L = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","1","1"),
new Array ("*","*","*","*","*","*","*")
);

var M = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","1","1","2","1","1","*"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","1","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","1","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","1","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","1","2","2","1"),
new Array ("*","*","*","*","*","*","*")
);

var N = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","1","*","*","*","*","1"),
new Array ("1","2","1","2","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","2","1","2","1"),
new Array ("1","*","*","*","*","1","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","*","*","*","*","*","*")
);

var O = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("2","2","1","1","1","2","2"),
new Array ("*","1","*","*","*","1","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","1","*","*","*","1","*"),
new Array ("*","2","1","1","1","2","2"),
new Array ("*","*","*","*","*","*","*")
);

var P = new Array(
new Array ("*","*","*","*","*","*"),
new Array ("1","1","1","1","1","2"),
new Array ("1","*","*","*","1","*"),
new Array ("1","2","2","2","2","1"),
new Array ("1","*","*","*","1","*"),
new Array ("1","1","1","1","1","2"),
new Array ("1","*","*","*","*","*"),
new Array ("1","2","2","2","2","2"),
new Array ("1","*","*","*","*","*"),
new Array ("1","2","2","2","2","2"),
new Array ("*","*","*","*","*","*")
);

var Q = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("2","2","1","1","1","2","2"),
new Array ("*","1","*","*","*","1","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","2","1","2","1"),
new Array ("*","1","*","*","*","1","1"),
new Array ("2","2","1","1","1","2","1"),
new Array ("*","*","*","*","*","*","*")
);

var R = new Array(
new Array ("*","*","*","*","*","*"),
new Array ("1","1","1","1","1","2"),
new Array ("1","*","*","*","1","*"),
new Array ("1","2","2","2","2","1"),
new Array ("1","*","*","*","1","*"),
new Array ("1","1","1","1","1","2"),
new Array ("1","*","*","*","1","*"),
new Array ("1","2","2","2","2","1"),
new Array ("1","*","*","*","*","1"),
new Array ("1","2","2","2","2","1"),
new Array ("*","*","*","*","*","*")
);

var S = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("2","1","1","1","1","1","2"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","*"),
new Array ("*","1","1","1","1","2","2"),
new Array ("*","*","*","*","*","1","*"),
new Array ("2","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("2","1","1","1","1","1","2"),
new Array ("*","*","*","*","*","*","*")
);

var T = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","1","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","*","1","*","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","*","1","*","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","*","1","*","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","*","*","*","*","*")
);

var U = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","1","*","*","*","1","*"),
new Array ("2","2","1","1","1","2","2"),
new Array ("*","*","*","*","*","*","*")
);

var V = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("2","1","2","2","2","1","2"),
new Array ("*","*","1","*","1","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","*","*","*","*","*")
);


var W = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","1","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","1","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","1","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("1","2","2","1","2","2","1"),
new Array ("1","*","*","1","*","*","1"),
new Array ("2","1","1","2","1","1","1"),
new Array ("*","*","*","*","*","*","*")
);

var X = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("2","1","2","2","2","1","2"),
new Array ("*","*","1","*","1","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","1","*","1","*","*"),
new Array ("2","1","2","2","2","1","2"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","*","*","*","*","*","*")
);

var Y = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","2","2","2","2","2","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","2","2","2","2","2","1"),
new Array ("*","1","*","*","*","1","*"),
new Array ("2","2","1","2","1","2","2"),
new Array ("*","*","*","1","*","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","*","1","*","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","*","*","*","*","*")
);

var Z = new Array(
new Array ("*","*","*","*","*","*","*"),
new Array ("1","1","1","1","1","1","1"),
new Array ("1","*","*","*","*","*","1"),
new Array ("2","2","2","2","2","1","2"),
new Array ("*","*","*","*","1","*","*"),
new Array ("2","2","2","1","2","2","2"),
new Array ("*","*","1","*","*","*","*"),
new Array ("2","1","2","2","2","2","2"),
new Array ("1","*","*","*","*","*","1"),
new Array ("1","1","1","1","1","1","1"),
new Array ("*","*","*","*","*","*","*")
);
var SEP = new Array(
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*"),
new Array ("*","*")
);

function getColour(col)
{
	if(col=="*")
		return "#efe7de";
	else if(col=="1")
		return "#94849c";
	else
		return "#efe7de";
}

function display(word)
{
	
	var local = 0;
	word = word.toUpperCase();
	var words = Array();
	var word_sep = 0;

	for(x = 0 ; x <word.length; x++)
	{

		switch(word.charAt(x))
		{
			case 'A':words[x + word_sep] = A;break;
			case 'B':words[x + word_sep] = B;break;
			case 'C':words[x + word_sep] = C;break;
			case 'D':words[x + word_sep] = D;break;
			case 'E':words[x + word_sep] = E;break;
			case 'F':words[x + word_sep] = F;break;
			case 'G':words[x + word_sep] = G;break;
			case 'H':words[x + word_sep] = H;break;
			case 'I':words[x + word_sep] = I;break;
			case 'J':words[x + word_sep] = J;break;
			case 'K':words[x + word_sep] = K;break;
			case 'L':words[x + word_sep] = L;break;
			case 'M':words[x + word_sep] = M;break;
			case 'N':words[x + word_sep] = N;break;
			case 'O':words[x + word_sep] = O;break;
			case 'P':words[x + word_sep] = P;break;
			case 'Q':words[x + word_sep] = Q;break;
			case 'R':words[x + word_sep] = R;break;
			case 'T':words[x + word_sep] = T;break;
			case 'S':words[x + word_sep] = S;break;
			case 'Y':words[x + word_sep] = Y;break;
			case 'U':words[x + word_sep] = U;break;
			case 'V':words[x + word_sep] = V;break;
			case 'W':words[x + word_sep] = W;break;
			case 'X':words[x + word_sep] = X;break;
			case 'Y':words[x + word_sep] = Y;break;
			case 'Z':words[x + word_sep] = Z;break;
			case ' ':words[x + word_sep] = SPC;break;
			case '.':words[x + word_sep] = STP;break;
			case '(':words[x + word_sep] = LCRL;break;
			case ')':words[x + word_sep] = RCRL;break;
			case '[':words[x + word_sep] = LSQ;break;
			case ']':words[x + word_sep] = RSQ;break;
			case '\\':words[x + word_sep] = BKS;break;
			case '/':words[x + word_sep] = FS;break;
			case '\'':words[x + word_sep] = SQ;break;
			case '\"':words[x + word_sep] = DQ;break;
			case '*':words[x + word_sep] = MLTPL;break;
			case '!':words[x + word_sep] = XCLM;break;
			case '%':words[x + word_sep] = PCNT;break;
			case '&':words[x + word_sep] = AMP;break;
			case '@':words[x + word_sep] = XCLM;break;
			case '£':words[x + word_sep] = PND;break;
			case ':':words[x + word_sep] = DDOT;break;
			case '=':words[x + word_sep] = EQS;break;
			case '+':words[x + word_sep] = PLS;break;
			case '-':words[x + word_sep] = MIN;break;
			case '?':words[x + word_sep] = QST;break;/////////
			case '#':words[x + word_sep] = HSH;break;
			case '1':words[x + word_sep] = C1;break;
			case '2':words[x + word_sep] = C2;break;
			case '3':words[x + word_sep] = C3;break;
			case '4':words[x + word_sep] = C4;break;
			case '5':words[x + word_sep] = C5;break;
			case '6':words[x + word_sep] = C6;break;
			case '7':words[x + word_sep] = C7;break;
			case '8':words[x + word_sep] = C8;break;
			case '9':words[x + word_sep] = C9;break;
			case '0':words[x + word_sep] = C0;break;
			case 'x':words[x + word_sep] = KISS;break;
			case '©':words[x + word_sep] = CPY;break;
			default:break;
		}
		word_sep++;
		words[x + word_sep] = SEP;

	}
	var table = "<table  bgcolor=\"#efe7de\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#FF0000\"><tr>";
	var y = 0;

	for(x = 0 ; x < 12; x++)
	{
		table += "<td><table  border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#FF0000\">";
		for(y = 0 ; y < words[x].length; y++)
		{
			table += "<tr>";

			for(z = 0 ; z < words[x][y].length; z++)
			{
				table += "<td height=\"2px\" width=\"2px\" bgcolor=\""+getColour(words[x][y][z])+"\"></td>";
			}
			table += "</tr>";
		}
		table += "</table></td>";
	}
	table += "</tr></table>";
	document.getElementById("grid").innerHTML = table;

}