var tog = "";
var resp1 = 0;
var tm1 = 0;
var ran = 0;
var t = 2;
var x = 0;
var trials = 0;
var hits = 0;
var clicks = 0;
var ends = 0;
var targets = new Array(0,0,0,0,0,0);
var responses = new Array(0,0,0,0,0,0);
var matches = new Array(0,0,0,0,0,0);
var back = new Image();
var backx = new Image();
var circle = new Image();
var cross = new Image();
var waves = new Image();
var square = new Image();
var star = new Image();
var startgif = new Image();
var complet = 0;
var totn = 50;
var mx = 10;
var blank = 0;
var started = 0;
var timeout=0;
var adds="";
var sig="";

var x1a = 0.31938153;
var x2 = -0.356563782;
var x3 = 1.781477937;
var x4 = -1.821255978;
var x5 = 1.330274429;
var z=0;
var p=0;
var p1=0;
var q1=0;

var a=0;
var b=0;
var c=0;
var m=0;
var v=0;

var topb=21; // LATEST DATA
var tops=22; // LATEST DATA
var topg=23; // LATEST DATA

back.src = "Images/ESPTest/cardback.gif";
backx.src = "Images/ESPTest/cardbackx.gif";
circle.src = "Images/ESPTest/circle.gif";
cross.src = "Images/ESPTest/cross.gif";
waves.src = "Images/ESPTest/waves.gif";
square.src = "Images/ESPTest/square.gif";
star.src = "Images/ESPTest/star.gif";
startgif.src = "Images/ESPTest/five.gif";

function begin() {
z=0;
p=0;
sig="";
ends = 0;
trials = 0;
hits = 0;
hitvalue();
trialvalue();
clicks = 0;
adds="";
for (x=0; x<=6; x++) {
targets[x] = 0;
responses[x] = 0;
matches[x] = 0;
}
document.forms.matrix.mess1.value="";
document.forms.matrix.Usern.value="";
document.forms.matrix.Usern.disabled=true;
document.forms.matrix.B2.value="";
document.forms.matrix.messages.value = "Welcome to ESP Championship";
}

function begin2() {
if (started==1){resetall();return;}
begin();
started=1;
document.forms.matrix.messages.value="Click symbols. Card shown after guess. Make 50 guesses";
document.forms.matrix.reset.value="Reset";
hitvalue();
trialvalue();
selecttarget();
}

function resetall() {
begin();
window.document.Cardshow.src = startgif.src;
document.forms.matrix.reset.value="Start";
document.forms.matrix.hit.value="";
document.forms.matrix.trial.value="";
started = 0;
}

function hitvalue() {
document.forms.matrix.hit.value = hits;
}

function trialvalue() {
document.forms.matrix.trial.value = trials;
if ((totn-trials)<9){adds=" "}else{adds="";}
document.forms.matrix.messages.value="Click symbols. Card shown after guess. Make "+adds+String(totn-trials+1)+ " guesses";

}

function ran5() {
ran = (Math.floor(Math.random()*5)+1);
blank=0;
}

function completed() {
window.document.Cardshow.src = startgif.src;
document.forms.matrix.messages.value="You scored "+String(hits)+" hits   -   Score of 17 or more suggests ESP";
complet=1;
critrat();
signif();
prntdata();
checkchamp();
document.forms.matrix.reset.value = "Reset";
}

function printtarget(callingField) {
if (started == 0) {return;}
if (ends == 1) {return;}
if (t == 0) {return;}
if (tog == "ready") {
tog = "";
clicks++;
responses[callingField]++;
resp1=eval(callingField);
if (eval(callingField) == ran) {
hits++;
matches[callingField]++;
hitvalue();
}
timeout = setTimeout('selecttarget()', 1000);
if (t == 1) {
window.document.Cardshow.src = backx.src;
return;
}
displaycard();
}
}

function displaycard() {
if (ran == 1) {
window.document.Cardshow.src = circle.src;
}
if (ran == 2) {
window.document.Cardshow.src = cross.src;
}
if (ran == 3) {
window.document.Cardshow.src = waves.src;
}
if (ran == 4) {
window.document.Cardshow.src = square.src;
}
if (ran == 5) {
window.document.Cardshow.src = star.src;
}
}

function selecttarget() {
if (trials > (totn-1)) {completed();return;}
window.document.Cardshow.src = back.src;
trials++;
trialvalue();
blank = 1;
tm1=ran;
while(blank==1){ran5();}
targets[ran]++;
tog = "ready";
}

function checkchamp(){
if (hits<1){return;}
if (totn!=50){return;}
if (hits<topb){return;}
document.forms.matrix.Usern.disabled=false;
document.forms.matrix.Usern.value="Enter a Username (Optional)";
document.forms.matrix.B2.value="Submit";
document.forms.matrix.H1.value=hits;
document.forms.matrix.H2.value=z;
document.forms.matrix.H3.value=p;
if (hits>topg){topnew();return;}
if (hits>=topg){topgold();return;}
if (hits>=tops){topsilv();return;}
if (hits>=topb){topbron();return;}
}

function topnew(){
alert("MANY CONGRATULATIONS!\n\nYou are our NEW BEST EVER SCORER!\n\nPlease enter a Username and\nclick Submit to send us your data\n\n(We do not collect any other information about you)\n\n\nOr you can click Reset to keep your score private.\n\n\nBy submitting your data, you agree to allow us\nto publish your Username and score on our website.");
}

function topgold(){
alert("CONGRATULATIONS!\n\nYou are one of our GOLD MEDAL SCORERS!\n\nPlease enter a Username and\nclick Submit to send us your data\n\n(We do not collect any other information about you)\n\n\nOr you can click Reset to keep your score private.\n\n\nBy submitting your data, you agree to allow us\nto publish your Username and score on our website.");
}

function topsilv(){
alert("CONGRATULATIONS!\n\nYou are one of our SILVER MEDAL SCORERS!\n\nPlease enter a Username and\nclick Submit to send us your data\n\n(We do not collect any other information about you)\n\n\nOr you can click Reset to keep your score private.\n\n\nBy submitting your data, you agree to allow us\nto publish your Username and score on our website.");
}


function topbron(){
alert("CONGRATULATIONS!\n\nYou are one of our BRONZE MEDAL SCORERS!\n\nPlease enter a Username and\nclick Submit to send us your data\n\n(We do not collect any other information about you)\n\n\nOr you can click Reset to keep your score private.\n\n\nBy submitting your data, you agree to allow us\nto publish your Username and score on our website.");
}

function submt(){
if(document.forms.matrix.B2.value!="Submit"){return;}
document.forms.matrix.submit();
}

function user(){
if(document.forms.matrix.Usern.value=="Enter a Username (Optional)"){document.forms.matrix.Usern.value="";}
}


function critrat(){
p1= 0.2;
q1 = 0.8;
m = mx;
with (Math) {
v = sqrt(totn*p1*q1);
if (hits >= m) {
z = (hits-m-0.5)/v;
} else {
z = ((hits-m+0.5)/v);
}
}
ndist();
}

function ndist() {
a=Math.abs(z)
b=1/(1+a*0.2316419)
c=(1/Math.sqrt((2*Math.PI)))*Math.exp(-Math.pow(a,2)/2)
p=1-c*(parseFloat(x1a*b+x2*Math.pow(b,2))+parseFloat(x3*Math.pow(b,3))+parseFloat(x4*Math.pow(b,4))+parseFloat(x5*Math.pow(b,5)))
p=2*(1-p);
}

function signif(){
if (p>0.10){sig="None";return;}
if (p<=0.10){sig="Marginal";}
if (p<=0.05){sig="Fair";}
if (p<=0.01){sig="Good";}
if (p<=0.005){sig="Very Good";}
if (p<=0.001){sig="Excellent";}
if (p<=0.0001){sig="Amazing!";}
if (hits<10){sig=sig+" (Misses)"}
}

function prntdata(){
document.forms.matrix.mess1.value="Statistical Analysis: z="+String(z.toFixed(5))+"    p="+String(p.toFixed(6))+"    Evidence for ESP:  "+sig;
}
