/* 
 This file was generated by Dashcode.  
 You may edit this file to customize your widget or web page 
 according to the license.txt file included in the project.
 */

//
// Function: load()
// Called by HTML body element's onload event when the web application is ready to start
//
function load()
{
    dashcode.setupParts();
    preloader(); // preload images
    InitBasicSquare();
    strt = 2; // This is used to determine if a click is one of the first two clicks
    cmpr = 0; // This will be &&ed (ANDed) to determined which squares to highlight
    fnsh = 0; // This is used to determine if the magic square yes/no choices are done
    age = 0; // This is the person's age
    agerng = 30; // This is the range (agerng to agerng + 15) you think the person is
    swh = 0; // Should we highlight this number?
    ptrnSeen = 0; // Number of patterns already seen
}

// Sample Code Snippet
//
// This is a sample code snippet.

function preloader()
{
    greySquares=new Array("Images/0.png","Images/1.png","Images/2.png","Images/3.png","Images/4.png","Images/5.png","Images/6.png","Images/7.png","Images/8.png","Images/9.png","Images/10.png","Images/11.png","Images/12.png","Images/13.png","Images/14.png","Images/15.png","Images/16.png","Images/17.png","Images/18.png","Images/19.png","Images/20.png","Images/21.png","Images/22.png","Images/23.png","Images/24.png","Images/25.png","Images/26.png","Images/27.png","Images/28.png","Images/29.png","Images/30.png","Images/31.png","Images/32.png","Images/33.png","Images/34.png","Images/35.png","Images/36.png","Images/37.png","Images/38.png","Images/39.png","Images/40.png","Images/41.png","Images/42.png","Images/43.png","Images/44.png","Images/45.png","Images/46.png","Images/47.png","Images/48.png","Images/49.png","Images/50.png","Images/51.png","Images/52.png","Images/53.png","Images/54.png","Images/55.png","Images/56.png","Images/57.png","Images/58.png","Images/59.png","Images/60.png","Images/61.png","Images/62.png","Images/63.png","Images/64.png","Images/65.png","Images/66.png","Images/67.png","Images/68.png","Images/69.png","Images/70.png","Images/71.png","Images/72.png","Images/73.png","Images/74.png","Images/75.png","Images/76.png","Images/77.png","Images/78.png","Images/79.png","Images/80.png","Images/81.png","Images/82.png","Images/83.png","Images/84.png","Images/85.png","Images/Off.png");
    blueSquares=new Array("Images/0h.png","Images/1h.png","Images/2h.png","Images/3h.png","Images/4h.png","Images/5h.png","Images/6h.png","Images/7h.png","Images/8h.png","Images/9h.png","Images/10h.png","Images/11h.png","Images/12h.png","Images/13h.png","Images/14h.png","Images/15h.png","Images/16h.png","Images/17h.png","Images/18h.png","Images/19h.png","Images/20h.png","Images/21h.png","Images/22h.png","Images/23h.png","Images/24h.png","Images/25h.png","Images/26h.png","Images/27h.png","Images/28h.png","Images/29h.png","Images/30h.png","Images/31h.png","Images/32h.png","Images/33h.png","Images/34h.png","Images/35h.png","Images/36h.png","Images/37h.png","Images/38h.png","Images/39h.png","Images/40h.png","Images/41h.png","Images/42h.png","Images/43h.png","Images/44h.png","Images/45h.png","Images/46h.png","Images/47h.png","Images/48h.png","Images/49h.png","Images/50h.png","Images/51h.png","Images/52h.png","Images/53h.png","Images/54h.png","Images/55h.png","Images/56h.png","Images/57h.png","Images/58h.png","Images/59h.png","Images/60h.png","Images/61h.png","Images/62h.png","Images/63h.png","Images/64h.png","Images/65h.png","Images/66h.png","Images/67h.png","Images/68h.png","Images/69h.png","Images/70h.png","Images/71h.png","Images/72h.png","Images/73h.png","Images/74h.png","Images/75h.png","Images/76h.png","Images/77h.png","Images/78h.png","Images/79h.png","Images/80h.png","Images/81h.png","Images/82h.png","Images/83h.png","Images/84h.png","Images/85h.png");
    OffSq = new Array();
    OnSq = new Array();
    for (s=0; s<greySquares.length; s++){
        OffSq[s] = new Image();
        OffSq[s].src = greySquares[s];
    }
    for (s=0; s<blueSquares.length; s++){
        OnSq[s] = new Image();
        OnSq[s].src = blueSquares[s];
    }
}

// InitBasicSquare()
//
// This intializes the magic square that is used as the basis for all the others generated
// Variables are also initialized here as 0 to start

function InitBasicSquare()
{
    bsq = new Array(16);
    bsq[0] = 9;
    bsq[1] = 6;
    bsq[2] = 3;
    bsq[3] = 16;
    bsq[4] = 4;
    bsq[5] = 15;
    bsq[6] = 10;
    bsq[7] = 5;
    bsq[8] = 14;
    bsq[9] = 1;
    bsq[10] = 8;
    bsq[11] = 11;
    bsq[12] = 7;
    bsq[13] = 12;
    bsq[14] = 13;
    bsq[15] = 2;
    
    // usq is the basic square that is actually used, after the layout is chosen
    usq = new Array(16);
    usq[0] = bsq[0];
    usq[1] = bsq[1];
    usq[2] = bsq[2];
    usq[3] = bsq[3];
    usq[4] = bsq[4];
    usq[5] = bsq[5];
    usq[6] = bsq[6];
    usq[7] = bsq[7];
    usq[8] = bsq[8];
    usq[9] = bsq[9];
    usq[10] = bsq[10];
    usq[11] = bsq[11];
    usq[12] = bsq[12];
    usq[13] = bsq[13];
    usq[14] = bsq[14];
    usq[15] = bsq[15];
    
    dsq = new Array(16);
    dsq[0] = 0;
    dsq[1] = 0;
    dsq[2] = 0;
    dsq[3] = 0;
    dsq[4] = 0;
    dsq[5] = 0;
    dsq[6] = 0;
    dsq[7] = 0;
    dsq[8] = 0;
    dsq[9] = 0;
    dsq[10] = 0;
    dsq[11] = 0;
    dsq[12] = 0;
    dsq[13] = 0;
    dsq[14] = 0;
    dsq[15] = 0;
}

// thirty()
//
// This creates a square using all the numbers from 30-45

function thirty()
{
    if (strt == 1) {
        strt = 0;
        cmpr = 1;
        var bxToChange = document.getElementById("YES");
        bxToChange.style.opacity = 1;
        var bxToChange = document.getElementById("NO");
        bxToChange.style.opacity = 1;
        hilite();
    }
    if (strt == 2) {
        CreateSquare(150);
        agerng = 30;
        strt = 1;
    }
    if (fnsh == 1) {
        ptrnSeen = ptrnSeen + 1;
        if (ptrnSeen <= 24) {
            showways(ptrnSeen);
        }
        else {
            fnsh = 2;
        }
    }
    if (fnsh == 2) {
        for (i = 0; i <= 15; i++) {
            var bxToChange = document.getElementById("box" + i);
            bxToChange.style.backgroundImage = "url(" + OffSq[86].src + ")";
        }
        load();
    }
}

// forty()
//
// This creates a square using all the numbers from 40-55

function forty()
{
    if (strt == 1) {
        strt = 0;
        cmpr = 1;
        var bxToChange = document.getElementById("YES");
        bxToChange.style.opacity = 1;
        var bxToChange = document.getElementById("NO");
        bxToChange.style.opacity = 1;
        hilite();
    }
    if (strt == 2) {
        CreateSquare(190);
        agerng = 40;
        strt = 1;
    }
    if (fnsh == 1) {
        ptrnSeen = ptrnSeen + 1;
        if (ptrnSeen <= 24) {
            showways(ptrnSeen);
        }
        else {
            fnsh = 2;
        }
    }
    if (fnsh == 2) {
        for (i = 0; i <= 15; i++) {
            var bxToChange = document.getElementById("box" + i);
            bxToChange.style.backgroundImage = "url(" + OffSq[86].src + ")";
        }
        load();
    }
}

// fifty()
//
// This creates a square using all the numbers from 50-65

function fifty()
{
    if (strt == 1) {
        strt = 0;
        cmpr = 1;
        var bxToChange = document.getElementById("YES");
        bxToChange.style.opacity = 1;
        var bxToChange = document.getElementById("NO");
        bxToChange.style.opacity = 1;
        hilite();
    }
    if (strt == 2) {
        CreateSquare(230);
        agerng = 50;
        strt = 1;
    }
    if (fnsh != 0) {
        for (i = 0; i <= 15; i++) {
            var bxToChange = document.getElementById("box" + i);
            bxToChange.style.backgroundImage = "url(" + OffSq[86].src + ")";
        }
        load();
    }
}

// sixty()
//
// This creates a square using all the numbers from 60-75

function sixty()
{
    if (strt == 1) {
        strt = 0;
        cmpr = 1;
        var bxToChange = document.getElementById("YES");
        bxToChange.style.opacity = 1;
        var bxToChange = document.getElementById("NO");
        bxToChange.style.opacity = 1;
        hilite();
    }
    if (strt == 2) {
        CreateSquare(270);
        agerng = 60;
        strt = 1;
    }
    if (fnsh != 0) {
        for (i = 0; i <= 15; i++) {
            var bxToChange = document.getElementById("box" + i);
            bxToChange.style.backgroundImage = "url(" + OffSq[86].src + ")";
        }
        load();
    }
}

// seventy()
//
// This creates a square using all the numbers from 70-85

function seventy()
{
    if (strt == 1) {
        strt = 0;
        cmpr = 1;
        var bxToChange = document.getElementById("YES");
        bxToChange.style.opacity = 1;
        var bxToChange = document.getElementById("NO");
        bxToChange.style.opacity = 1;
        hilite();
    }
    if (strt == 2) {
        CreateSquare(310);
        agerng = 70;
        strt = 1;
    }
    if (fnsh != 0) {
        for (i = 0; i <= 15; i++) {
            var bxToChange = document.getElementById("box" + i);
            bxToChange.style.backgroundImage = "url(" + OffSq[86].src + ")";
        }
        load();
    }
}

// CreateSquare(ttl)
//
// This generates and posts a magic square for a given total (ttl)

function CreateSquare(ttl)
{
    chslyout(); // Randomly choose magic square layout
    
    // Calculate adjustments to basic magic square - see InitBasicSquare()
    var x = ttl - 34;
	var y = Math.floor(x / 4);
	var z = y + (ttl - 34);
	var z = z - (y * 4);
    
    // apply adjustments to basic values for each square
    // z is added to numbers greater than 12, y to the others
    for (i = 0; i <= 15; i++) {
        if (usq[i] > 12) {
            dsq[i] = usq[i] + z;
        }
        else {
            dsq[i] = usq[i] + y;
        }
    }
    
    //Call display routine to show magic square
    for (i = 0; i <= 15; i++) {
        //DispOffSquare shows a number graphic with a grey background
        DispOffSquare(i,dsq[i])
    }
}

// hilite(rng)
//
// This highlights squares that have the same bits as cmpr
// 1, 2, 4, or 8

function hilite()
{
    if ((cmpr < 16) && (cmpr > 0)) {
        for (i = 0; i <= 15; i++) {
            swh = ((dsq[i] - (agerng - 1)) & (cmpr))
            if (swh == cmpr) {
                DispOnSquare(i,dsq[i])
            }
            else {
                DispOffSquare(i,dsq[i])
            }
        }
    }
}

// pstv()
//
// This is called when the YES button is hit

function pstv()
{
    if (fnsh == 1) {
        for (i = 0; i <= 15; i++) {
            var bxToChange = document.getElementById("box" + i);
            bxToChange.style.backgroundImage = "url(" + OffSq[86].src + ")";
        }
        load();
    }
    if ((cmpr > 0) && (cmpr < 16)) {
        age = age + cmpr;
        cmpr = cmpr * 2;
        if (cmpr == 16) {
            fnsh = 1;
            age = age + (agerng - 1);
            if (age < agerng) {
                age = age + 16;
            }
            CreateSquare(age);
            var bxToChange = document.getElementById("YES");
            bxToChange.style.opacity = 0;
            var bxToChange = document.getElementById("NO");
            bxToChange.style.opacity = 0;
        }
        else {
            hilite();
        }
    }
}

// ngtv()
//
// This is called when the NO button is hit

function ngtv()
{
    if (fnsh == 1) {
        for (i = 0; i <= 15; i++) {
            var bxToChange = document.getElementById("box" + i);
            bxToChange.style.backgroundImage = "url(" + OffSq[86].src + ")";
        }
        load();
    }
    if ((cmpr > 0) && (cmpr < 16)) {
        cmpr = cmpr * 2;
        if (cmpr == 16) {
            fnsh = 1;
            age = age + (agerng - 1);
            if (age < agerng) {
                age = age + 16;
            }
            CreateSquare(age);
            var bxToChange = document.getElementById("YES");
            bxToChange.style.opacity = 0;
            var bxToChange = document.getElementById("NO");
            bxToChange.style.opacity = 0;
        }
        else {
            hilite();
        }
    }
}

// DispOffSquare(sqr,nmbr)
//
// Puts the graphic of nmbr with a grey background at location sqr

function DispOffSquare(sqr,nmbr)
{
    var bxToChange = document.getElementById("box" + sqr);
    bxToChange.style.backgroundImage = "url(" + OffSq[nmbr].src + ")";
}

// DispOnSquare(sqr,nmbr)
//
// Puts the graphic of nmbr with a blue background at location sqr

function DispOnSquare(sqr,nmbr)
{
    var bxToChange = document.getElementById("box" + sqr);
    bxToChange.style.backgroundImage = "url(" + OnSq[nmbr].src + ")";
}

// chslyout()
//
// Randomly choose magic square layout

// 13 (o), 14 (i), 15 (f), 16 (d) need extra adjustment

function chslyout() 
{
    q = random(32);
    // original square
    if (q == 0) {
        usq[0] = bsq[0];
        usq[1] = bsq[1];
        usq[2] = bsq[2];
        usq[3] = bsq[3];
        usq[4] = bsq[4];
        usq[5] = bsq[5];
        usq[6] = bsq[6];
        usq[7] = bsq[7];
        usq[8] = bsq[8];
        usq[9] = bsq[9];
        usq[10] = bsq[10];
        usq[11] = bsq[11];
        usq[12] = bsq[12];
        usq[13] = bsq[13];
        usq[14] = bsq[14];
        usq[15] = bsq[15];
    }
    // rotated 90 degrees to the left
    if (q == 1) {
        usq[0] = bsq[3];
        usq[1] = bsq[7];
        usq[2] = bsq[11];
        usq[3] = bsq[15];
        usq[4] = bsq[2];
        usq[5] = bsq[6];
        usq[6] = bsq[10];
        usq[7] = bsq[14];
        usq[8] = bsq[1];
        usq[9] = bsq[5];
        usq[10] = bsq[9];
        usq[11] = bsq[13];
        usq[12] = bsq[0];
        usq[13] = bsq[4];
        usq[14] = bsq[8];
        usq[15] = bsq[12];
    }
    // rotated 180 degrees
    if (q == 2) {
        usq[0] = bsq[15];
        usq[1] = bsq[14];
        usq[2] = bsq[13];
        usq[3] = bsq[12];
        usq[4] = bsq[11];
        usq[5] = bsq[10];
        usq[6] = bsq[9];
        usq[7] = bsq[8];
        usq[8] = bsq[7];
        usq[9] = bsq[6];
        usq[10] = bsq[5];
        usq[11] = bsq[4];
        usq[12] = bsq[3];
        usq[13] = bsq[2];
        usq[14] = bsq[1];
        usq[15] = bsq[0];
    }
    // rotated 90 degrees to the right
    if (q == 3) {
        usq[0] = bsq[12];
        usq[1] = bsq[8];
        usq[2] = bsq[4];
        usq[3] = bsq[0];
        usq[4] = bsq[13];
        usq[5] = bsq[9];
        usq[6] = bsq[5];
        usq[7] = bsq[1];
        usq[8] = bsq[14];
        usq[9] = bsq[10];
        usq[10] = bsq[6];
        usq[11] = bsq[2];
        usq[12] = bsq[15];
        usq[13] = bsq[11];
        usq[14] = bsq[7];
        usq[15] = bsq[3];
    }
    // flipped top to bottom
    if (q == 4) {
        usq[0] = bsq[12];
        usq[1] = bsq[13];
        usq[2] = bsq[14];
        usq[3] = bsq[15];
        usq[4] = bsq[8];
        usq[5] = bsq[9];
        usq[6] = bsq[10];
        usq[7] = bsq[11];
        usq[8] = bsq[4];
        usq[9] = bsq[5];
        usq[10] = bsq[6];
        usq[11] = bsq[7];
        usq[12] = bsq[0];
        usq[13] = bsq[1];
        usq[14] = bsq[2];
        usq[15] = bsq[3];
    }
    // flipped left to right
    if (q == 5) {
        usq[0] = bsq[3];
        usq[1] = bsq[2];
        usq[2] = bsq[1];
        usq[3] = bsq[0];
        usq[4] = bsq[7];
        usq[5] = bsq[6];
        usq[6] = bsq[5];
        usq[7] = bsq[4];
        usq[8] = bsq[11];
        usq[9] = bsq[10];
        usq[10] = bsq[9];
        usq[11] = bsq[8];
        usq[12] = bsq[15];
        usq[13] = bsq[14];
        usq[14] = bsq[13];
        usq[15] = bsq[12];
    }
    // flipped left to right, then rotated 90 degrees to the left
    if (q == 6) {
        usq[0] = bsq[0];
        usq[1] = bsq[4];
        usq[2] = bsq[8];
        usq[3] = bsq[12];
        usq[4] = bsq[1];
        usq[5] = bsq[5];
        usq[6] = bsq[9];
        usq[7] = bsq[13];
        usq[8] = bsq[2];
        usq[9] = bsq[6];
        usq[10] = bsq[10];
        usq[11] = bsq[14];
        usq[12] = bsq[3];
        usq[13] = bsq[7];
        usq[14] = bsq[11];
        usq[15] = bsq[15];
    }
    // flipped left to right, then rotated 90 degrees to the right
    if (q == 7) {
        usq[0] = bsq[15];
        usq[1] = bsq[11];
        usq[2] = bsq[7];
        usq[3] = bsq[3];
        usq[4] = bsq[14];
        usq[5] = bsq[10];
        usq[6] = bsq[6];
        usq[7] = bsq[2];
        usq[8] = bsq[13];
        usq[9] = bsq[9];
        usq[10] = bsq[5];
        usq[11] = bsq[1];
        usq[12] = bsq[12];
        usq[13] = bsq[8];
        usq[14] = bsq[4];
        usq[15] = bsq[0];
    }
    // two center rows exchanged and two center columns exchanged
    if (q == 8) {
        usq[0] = bsq[0];
        usq[1] = bsq[2];
        usq[2] = bsq[1];
        usq[3] = bsq[3];
        usq[4] = bsq[8];
        usq[5] = bsq[10];
        usq[6] = bsq[9];
        usq[7] = bsq[11];
        usq[8] = bsq[4];
        usq[9] = bsq[6];
        usq[10] = bsq[5];
        usq[11] = bsq[7];
        usq[12] = bsq[12];
        usq[13] = bsq[14];
        usq[14] = bsq[13];
        usq[15] = bsq[15];
    }
    // two center rows exchanged and two center columns exchanged
    // then rotated 90 degrees to the left
    if (q == 9) {
        usq[0] = bsq[3];
        usq[1] = bsq[11];
        usq[2] = bsq[7];
        usq[3] = bsq[15];
        usq[4] = bsq[1];
        usq[5] = bsq[9];
        usq[6] = bsq[5];
        usq[7] = bsq[13];
        usq[8] = bsq[2];
        usq[9] = bsq[10];
        usq[10] = bsq[6];
        usq[11] = bsq[14];
        usq[12] = bsq[0];
        usq[13] = bsq[8];
        usq[14] = bsq[4];
        usq[15] = bsq[12];
    }
    // two center rows exchanged and two center columns exchanged
    // then rotated 180 degrees
    if (q == 10) {
        usq[0] = bsq[15];
        usq[1] = bsq[13];
        usq[2] = bsq[14];
        usq[3] = bsq[12];
        usq[4] = bsq[7];
        usq[5] = bsq[5];
        usq[6] = bsq[6];
        usq[7] = bsq[4];
        usq[8] = bsq[11];
        usq[9] = bsq[9];
        usq[10] = bsq[10];
        usq[11] = bsq[8];
        usq[12] = bsq[3];
        usq[13] = bsq[1];
        usq[14] = bsq[2];
        usq[15] = bsq[0];
    }
    // two center rows exchanged and two center columns exchanged
    // then rotated 90 degrees to the right
    if (q == 11) {
        usq[0] = bsq[12];
        usq[1] = bsq[4];
        usq[2] = bsq[8];
        usq[3] = bsq[0];
        usq[4] = bsq[14];
        usq[5] = bsq[6];
        usq[6] = bsq[10];
        usq[7] = bsq[2];
        usq[8] = bsq[13];
        usq[9] = bsq[5];
        usq[10] = bsq[9];
        usq[11] = bsq[1];
        usq[12] = bsq[15];
        usq[13] = bsq[7];
        usq[14] = bsq[11];
        usq[15] = bsq[3];
    }
    // two center rows exchanged and two center columns exchanged
    // then rotated 180 degress and flipped from left to right
    if (q == 12) {
        usq[0] = bsq[12];
        usq[1] = bsq[14];
        usq[2] = bsq[13];
        usq[3] = bsq[15];
        usq[4] = bsq[4];
        usq[5] = bsq[6];
        usq[6] = bsq[5];
        usq[7] = bsq[7];
        usq[8] = bsq[8];
        usq[9] = bsq[10];
        usq[10] = bsq[9];
        usq[11] = bsq[11];
        usq[12] = bsq[0];
        usq[13] = bsq[2];
        usq[14] = bsq[1];
        usq[15] = bsq[3];
    }
    // two center rows exchanged and two center columns exchanged
    // then flipped from left to right
    if (q == 13) {
        usq[0] = bsq[3];
        usq[1] = bsq[1];
        usq[2] = bsq[2];
        usq[3] = bsq[0];
        usq[4] = bsq[11];
        usq[5] = bsq[9];
        usq[6] = bsq[10];
        usq[7] = bsq[8];
        usq[8] = bsq[7];
        usq[9] = bsq[5];
        usq[10] = bsq[6];
        usq[11] = bsq[4];
        usq[12] = bsq[15];
        usq[13] = bsq[13];
        usq[14] = bsq[14];
        usq[15] = bsq[12];
    }
    // two center rows exchanged and two center columns exchanged
    // then flipped from left to right and rotated 90 degrees to the left
    if (q == 14) {
        usq[0] = bsq[0];
        usq[1] = bsq[8];
        usq[2] = bsq[4];
        usq[3] = bsq[12];
        usq[4] = bsq[2];
        usq[5] = bsq[10];
        usq[6] = bsq[6];
        usq[7] = bsq[14];
        usq[8] = bsq[1];
        usq[9] = bsq[9];
        usq[10] = bsq[5];
        usq[11] = bsq[13];
        usq[12] = bsq[3];
        usq[13] = bsq[11];
        usq[14] = bsq[7];
        usq[15] = bsq[15];
    }
    // two center rows exchanged and two center columns exchanged
    // then flipped from left to right and rotated 90 degrees to the right
    if (q == 15) {
        usq[0] = bsq[15];
        usq[1] = bsq[7];
        usq[2] = bsq[11];
        usq[3] = bsq[3];
        usq[4] = bsq[13];
        usq[5] = bsq[5];
        usq[6] = bsq[9];
        usq[7] = bsq[1];
        usq[8] = bsq[14];
        usq[9] = bsq[6];
        usq[10] = bsq[10];
        usq[11] = bsq[2];
        usq[12] = bsq[12];
        usq[13] = bsq[4];
        usq[14] = bsq[8];
        usq[15] = bsq[0];
    }
    if (q == 16) {
        usq[0] = bsq[10];
        usq[1] = bsq[8];
        usq[2] = bsq[11];
        usq[3] = bsq[9];
        usq[4] = bsq[2];
        usq[5] = bsq[0];
        usq[6] = bsq[3];
        usq[7] = bsq[1];
        usq[8] = bsq[14];
        usq[9] = bsq[12];
        usq[10] = bsq[15];
        usq[11] = bsq[13];
        usq[12] = bsq[6];
        usq[13] = bsq[4];
        usq[14] = bsq[7];
        usq[15] = bsq[5];
    }
    if (q == 17) {
        usq[0] = bsq[9];
        usq[1] = bsq[1];
        usq[2] = bsq[13];
        usq[3] = bsq[5];
        usq[4] = bsq[11];
        usq[5] = bsq[3];
        usq[6] = bsq[15];
        usq[7] = bsq[7];
        usq[8] = bsq[8];
        usq[9] = bsq[0];
        usq[10] = bsq[12];
        usq[11] = bsq[4];
        usq[12] = bsq[10];
        usq[13] = bsq[2];
        usq[14] = bsq[14];
        usq[15] = bsq[6];
    }
    if (q == 18) {
        usq[0] = bsq[5];
        usq[1] = bsq[7];
        usq[2] = bsq[4];
        usq[3] = bsq[6];
        usq[4] = bsq[13];
        usq[5] = bsq[15];
        usq[6] = bsq[12];
        usq[7] = bsq[14];
        usq[8] = bsq[1];
        usq[9] = bsq[3];
        usq[10] = bsq[0];
        usq[11] = bsq[2];
        usq[12] = bsq[9];
        usq[13] = bsq[11];
        usq[14] = bsq[8];
        usq[15] = bsq[10];
    }
    if (q == 19) {
        usq[0] = bsq[6];
        usq[1] = bsq[14];
        usq[2] = bsq[2];
        usq[3] = bsq[10];
        usq[4] = bsq[4];
        usq[5] = bsq[12];
        usq[6] = bsq[0];
        usq[7] = bsq[8];
        usq[8] = bsq[7];
        usq[9] = bsq[15];
        usq[10] = bsq[3];
        usq[11] = bsq[11];
        usq[12] = bsq[5];
        usq[13] = bsq[13];
        usq[14] = bsq[1];
        usq[15] = bsq[9];
    }
    if (q == 20) {
        usq[0] = bsq[6];
        usq[1] = bsq[4];
        usq[2] = bsq[7];
        usq[3] = bsq[5];
        usq[4] = bsq[14];
        usq[5] = bsq[12];
        usq[6] = bsq[15];
        usq[7] = bsq[13];
        usq[8] = bsq[2];
        usq[9] = bsq[0];
        usq[10] = bsq[3];
        usq[11] = bsq[1];
        usq[12] = bsq[10];
        usq[13] = bsq[8];
        usq[14] = bsq[11];
        usq[15] = bsq[9];
    }
    if (q == 21) {
        usq[0] = bsq[9];
        usq[1] = bsq[11];
        usq[2] = bsq[8];
        usq[3] = bsq[10];
        usq[4] = bsq[1];
        usq[5] = bsq[3];
        usq[6] = bsq[0];
        usq[7] = bsq[2];
        usq[8] = bsq[13];
        usq[9] = bsq[15];
        usq[10] = bsq[12];
        usq[11] = bsq[14];
        usq[12] = bsq[5];
        usq[13] = bsq[7];
        usq[14] = bsq[4];
        usq[15] = bsq[6];
    }
    if (q == 22) {
        usq[0] = bsq[10];
        usq[1] = bsq[2];
        usq[2] = bsq[14];
        usq[3] = bsq[6];
        usq[4] = bsq[8];
        usq[5] = bsq[0];
        usq[6] = bsq[12];
        usq[7] = bsq[4];
        usq[8] = bsq[11];
        usq[9] = bsq[3];
        usq[10] = bsq[15];
        usq[11] = bsq[7];
        usq[12] = bsq[9];
        usq[13] = bsq[1];
        usq[14] = bsq[13];
        usq[15] = bsq[5];
    }
    if (q == 23) {
        usq[0] = bsq[5];
        usq[1] = bsq[13];
        usq[2] = bsq[1];
        usq[3] = bsq[9];
        usq[4] = bsq[7];
        usq[5] = bsq[15];
        usq[6] = bsq[3];
        usq[7] = bsq[11];
        usq[8] = bsq[4];
        usq[9] = bsq[12];
        usq[10] = bsq[0];
        usq[11] = bsq[8];
        usq[12] = bsq[6];
        usq[13] = bsq[14];
        usq[14] = bsq[2];
        usq[15] = bsq[10];
    }
    if (q == 24) {
        usq[0] = bsq[5];
        usq[1] = bsq[4];
        usq[2] = bsq[7];
        usq[3] = bsq[6];
        usq[4] = bsq[1];
        usq[5] = bsq[0];
        usq[6] = bsq[3];
        usq[7] = bsq[2];
        usq[8] = bsq[13];
        usq[9] = bsq[12];
        usq[10] = bsq[15];
        usq[11] = bsq[14];
        usq[12] = bsq[9];
        usq[13] = bsq[8];
        usq[14] = bsq[11];
        usq[15] = bsq[10];
    }
    if (q == 25) {
        usq[0] = bsq[6];
        usq[1] = bsq[2];
        usq[2] = bsq[14];
        usq[3] = bsq[10];
        usq[4] = bsq[7];
        usq[5] = bsq[3];
        usq[6] = bsq[15];
        usq[7] = bsq[11];
        usq[8] = bsq[4];
        usq[9] = bsq[0];
        usq[10] = bsq[12];
        usq[11] = bsq[8];
        usq[12] = bsq[5];
        usq[13] = bsq[1];
        usq[14] = bsq[13];
        usq[15] = bsq[9];
    }
    if (q == 26) {
        usq[0] = bsq[10];
        usq[1] = bsq[11];
        usq[2] = bsq[8];
        usq[3] = bsq[9];
        usq[4] = bsq[14];
        usq[5] = bsq[15];
        usq[6] = bsq[12];
        usq[7] = bsq[13];
        usq[8] = bsq[2];
        usq[9] = bsq[3];
        usq[10] = bsq[0];
        usq[11] = bsq[1];
        usq[12] = bsq[6];
        usq[13] = bsq[7];
        usq[14] = bsq[4];
        usq[15] = bsq[5];
    }
    if (q == 27) {
        usq[0] = bsq[9];
        usq[1] = bsq[13];
        usq[2] = bsq[1];
        usq[3] = bsq[5];
        usq[4] = bsq[8];
        usq[5] = bsq[12];
        usq[6] = bsq[0];
        usq[7] = bsq[4];
        usq[8] = bsq[11];
        usq[9] = bsq[15];
        usq[10] = bsq[3];
        usq[11] = bsq[7];
        usq[12] = bsq[10];
        usq[13] = bsq[14];
        usq[14] = bsq[2];
        usq[15] = bsq[6];
    }
    if (q == 28) {
        usq[0] = bsq[9];
        usq[1] = bsq[8];
        usq[2] = bsq[11];
        usq[3] = bsq[10];
        usq[4] = bsq[13];
        usq[5] = bsq[12];
        usq[6] = bsq[15];
        usq[7] = bsq[14];
        usq[8] = bsq[1];
        usq[9] = bsq[0];
        usq[10] = bsq[3];
        usq[11] = bsq[2];
        usq[12] = bsq[5];
        usq[13] = bsq[4];
        usq[14] = bsq[7];
        usq[15] = bsq[6];
    }
    if (q == 29) {
        usq[0] = bsq[6];
        usq[1] = bsq[7];
        usq[2] = bsq[4];
        usq[3] = bsq[5];
        usq[4] = bsq[2];
        usq[5] = bsq[3];
        usq[6] = bsq[0];
        usq[7] = bsq[1];
        usq[8] = bsq[14];
        usq[9] = bsq[15];
        usq[10] = bsq[12];
        usq[11] = bsq[13];
        usq[12] = bsq[10];
        usq[13] = bsq[11];
        usq[14] = bsq[8];
        usq[15] = bsq[9];
    }
    if (q == 30) {
        usq[0] = bsq[5];
        usq[1] = bsq[1];
        usq[2] = bsq[13];
        usq[3] = bsq[9];
        usq[4] = bsq[4];
        usq[5] = bsq[0];
        usq[6] = bsq[12];
        usq[7] = bsq[8];
        usq[8] = bsq[7];
        usq[9] = bsq[3];
        usq[10] = bsq[15];
        usq[11] = bsq[11];
        usq[12] = bsq[6];
        usq[13] = bsq[2];
        usq[14] = bsq[14];
        usq[15] = bsq[10];
    }
    if (q == 31) {
        usq[0] = bsq[10];
        usq[1] = bsq[14];
        usq[2] = bsq[2];
        usq[3] = bsq[6];
        usq[4] = bsq[11];
        usq[5] = bsq[15];
        usq[6] = bsq[3];
        usq[7] = bsq[7];
        usq[8] = bsq[8];
        usq[9] = bsq[12];
        usq[10] = bsq[0];
        usq[11] = bsq[4];
        usq[12] = bsq[9];
        usq[13] = bsq[13];
        usq[14] = bsq[1];
        usq[15] = bsq[5];
    }
}

// random number generator used by other functions
function random(maxValue) {
	day = new Date();
	hour = day.getHours();
	min = day.getMinutes();
	sec = day.getSeconds();
	mili = day.getTime();
	return(((hour*3600)+(min*60)+(sec)+mili) % maxValue);
}

// showways()
//
// This function shows all the ways that total the divined age

function showways(nom)
{
    if (nom == 1) {
        hiltAge(0,1,2,3);
    }
    if (nom == 2) {
        hiltAge(4,5,6,7);
    }
    if (nom == 3) {
        hiltAge(8,9,10,11);
    }
    if (nom == 4) {
        hiltAge(12,13,14,15);
    }
    if (nom == 5) {
        hiltAge(0,4,8,12);
    }
    if (nom == 6) {
        hiltAge(1,5,9,13);
    }
    if (nom == 7) {
        hiltAge(2,6,10,14);
    }
    if (nom == 8) {
        hiltAge(3,7,11,15);
    }
    if (nom == 9) {
        hiltAge(0,5,10,15);
    }
    if (nom == 10) {
        hiltAge(3,6,9,12);
    }
    if (nom == 11) {
        hiltAge(1,4,11,14);
    }
    if (nom == 12) {
        hiltAge(2,7,8,13);
    }
    if (nom == 13) {
        hiltAge(0,1,4,5);
    }
    if (nom == 14) {
        hiltAge(2,3,6,7);
    }
    if (nom == 15) {
        hiltAge(8,9,12,13);
    }
    if (nom == 16) {
        hiltAge(10,11,14,15);
    }
    if (nom == 17) {
        hiltAge(5,6,9,10);
    }
    if (nom == 18) {
        hiltAge(0,2,8,10);
    }
    if (nom == 19) {
        hiltAge(1,3,9,11);
    }
    if (nom == 20) {
        hiltAge(4,6,12,14);
    }
    if (nom == 21) {
        hiltAge(5,7,13,15);
    }
    if (nom == 22) {
        hiltAge(0,3,12,15);
    }
    if (nom == 23) {
        hiltAge(4,7,8,11);
    }
    if (nom == 24) {
        hiltAge(1,2,13,14);
    }
}

// hiltAge
//
// Highlights the 4 squares requested by showways()

function hiltAge(m,n,o,p)
{
    for (q = 0; q <= 15; q++) {
        if ((q == m) || (q == n) || (q == o) || (q == p)) {
            DispOnSquare(q,dsq[q]);
        }
        else {
            DispOffSquare(q,dsq[q]);
        }
    }
}