﻿function getColor(strFacelet)
{
    var strFace = strFacelet.substr(0, 1);
    var strLet = strFacelet.substr(1, 1);
    var strColor;
    var strColorInit = "";
    switch (strFace)
    {
        case "U":
            strColor = document.getElementById("mainUp" + strLet).src;
            strColorInit = strColor.substr(strColor.lastIndexOf("_")+1, 1);
            break;
        case "F":
            strColor = document.getElementById("mainFront" + strLet).src;
            strColorInit = strColor.substr(strColor.lastIndexOf("_")+1, 1);
            break;
        case "R":
            strColor = document.getElementById("mainRight" + strLet).src;
            strColorInit = strColor.substr(strColor.lastIndexOf("_")+1, 1);
            break;
        case "L":
            strColor = document.getElementById("refLLeft" + strLet).src;
            strColorInit = strColor.substr(strColor.lastIndexOf("_")+1, 1);
            break;
        case "B":
            strColor = document.getElementById("refRBack" + strLet).src;
            strColorInit = strColor.substr(strColor.lastIndexOf("_")+1, 1);
            break;
        case "D":
            strColor = document.getElementById("refDDown" + strLet).src;
            strColorInit = strColor.substr(strColor.lastIndexOf("_")+1, 1);
            break;
    }
    return strColorInit.toUpperCase();
}

function setColor(strFacelet, strColorInit)
{
    var strFace = strFacelet.substr(0, 1);
    var strLet = strFacelet.substr(1, 1);
    var strColor;
    switch (strColorInit)
    {
        case "B":
            strColor = "blue";
            break;
        case "G":
            strColor = "green";
            break;
        case "O":
            strColor = "orange";
            break;
        case "R":
            strColor = "red";
            break;
        case "W":
            strColor = "white";
            break;
        case "Y":
            strColor = "yellow";
            break;
    }
    switch (strFace)
    {
        case "U":
            document.getElementById("mainUp" + strLet).src = "rubikimages/flat_lg_" + strColor + ".png";
            document.getElementById("refLUp" + strLet).src = "rubikimages/flat_sm_" + strColor + ".png";
            document.getElementById("refRUp" + strLet).src = "rubikimages/flat_sm_" + strColor + ".png";
            break;
        case "F":
            document.getElementById("mainFront" + strLet).src = "rubikimages/left_lg_" + strColor + ".png";
            document.getElementById("refLFront" + strLet).src = "rubikimages/left_sm_" + strColor + ".png";
            document.getElementById("refDFront" + strLet).src = "rubikimages/left_sm_" + strColor + ".png";
            break;
        case "R":
            document.getElementById("mainRight" + strLet).src = "rubikimages/right_lg_" + strColor + ".png";
            document.getElementById("refRRight" + strLet).src = "rubikimages/right_sm_" + strColor + ".png";
            document.getElementById("refDRight" + strLet).src = "rubikimages/right_sm_" + strColor + ".png";
            break;
        case "L":
            document.getElementById("refLLeft" + strLet).src = "rubikimages/right_sm_" + strColor + ".png";
            break;
        case "B":
            document.getElementById("refRBack" + strLet).src = "rubikimages/left_sm_" + strColor + ".png";
            break;
        case "D":
            document.getElementById("refDDown" + strLet).src = "rubikimages/flat_sm_" + strColor + ".png";
            break;
    }
    return;
}

function LeftClock()
{
    var strMem = getColor("L1");
    setColor("L1", getColor("L7"));
    setColor("L7", getColor("L9"));
    setColor("L9", getColor("L3"));
    setColor("L3", strMem);
    
    strMem = getColor("L2");
    setColor("L2", getColor("L4"));
    setColor("L4", getColor("L8"));
    setColor("L8", getColor("L6"));
    setColor("L6", strMem);
    
    strMem = getColor("U1");
    setColor("U1", getColor("B9"));
    setColor("B9", getColor("D1"));
    setColor("D1", getColor("F1"));
    setColor("F1", strMem);
    
    strMem = getColor("U4");
    setColor("U4", getColor("B6"));
    setColor("B6", getColor("D4"));
    setColor("D4", getColor("F4"));
    setColor("F4", strMem);
    
    strMem = getColor("U7");
    setColor("U7", getColor("B3"));
    setColor("B3", getColor("D7"));
    setColor("D7", getColor("F7"));
    setColor("F7", strMem);
}

function LeftCounter()
{
    var strMem = getColor("L1");
    setColor("L1", getColor("L3"));
    setColor("L3", getColor("L9"));
    setColor("L9", getColor("L7"));
    setColor("L7", strMem);
    
    strMem = getColor("L2");
    setColor("L2", getColor("L6"));
    setColor("L6", getColor("L8"));
    setColor("L8", getColor("L4"));
    setColor("L4", strMem);
    
    strMem = getColor("U1");
    setColor("U1", getColor("F1"));
    setColor("F1", getColor("D1"));
    setColor("D1", getColor("B9"));
    setColor("B9", strMem);
    
    strMem = getColor("U4");
    setColor("U4", getColor("F4"));
    setColor("F4", getColor("D4"));
    setColor("D4", getColor("B6"));
    setColor("B6", strMem);
    
    strMem = getColor("U7");
    setColor("U7", getColor("F7"));
    setColor("F7", getColor("D7"));
    setColor("D7", getColor("B3"));
    setColor("B3", strMem);
}

function FrontClock()
{
    var strMem = getColor("F1");
    setColor("F1", getColor("F7"));
    setColor("F7", getColor("F9"));
    setColor("F9", getColor("F3"));
    setColor("F3", strMem);
    
    strMem = getColor("F2");
    setColor("F2", getColor("F4"));
    setColor("F4", getColor("F8"));
    setColor("F8", getColor("F6"));
    setColor("F6", strMem);
    
    strMem = getColor("U7");
    setColor("U7", getColor("L9"));
    setColor("L9", getColor("D3"));
    setColor("D3", getColor("R1"));
    setColor("R1", strMem);
    
    strMem = getColor("U8");
    setColor("U8", getColor("L6"));
    setColor("L6", getColor("D2"));
    setColor("D2", getColor("R4"));
    setColor("R4", strMem);
    
    strMem = getColor("U9");
    setColor("U9", getColor("L3"));
    setColor("L3", getColor("D1"));
    setColor("D1", getColor("R7"));
    setColor("R7", strMem);
}

function FrontCounter()
{
    var strMem = getColor("F1");
    setColor("F1", getColor("F3"));
    setColor("F3", getColor("F9"));
    setColor("F9", getColor("F7"));
    setColor("F7", strMem);
    
    strMem = getColor("F2");
    setColor("F2", getColor("F6"));
    setColor("F6", getColor("F8"));
    setColor("F8", getColor("F4"));
    setColor("F4", strMem);
    
    strMem = getColor("U7");
    setColor("U7", getColor("R1"));
    setColor("R1", getColor("D3"));
    setColor("D3", getColor("L9"));
    setColor("L9", strMem);
    
    strMem = getColor("U8");
    setColor("U8", getColor("R4"));
    setColor("R4", getColor("D2"));
    setColor("D2", getColor("L6"));
    setColor("L6", strMem);
    
    strMem = getColor("U9");
    setColor("U9", getColor("R7"));
    setColor("R7", getColor("D1"));
    setColor("D1", getColor("L3"));
    setColor("L3", strMem);
}

function RightClock()
{
    var strMem = getColor("R1");
    setColor("R1", getColor("R7"));
    setColor("R7", getColor("R9"));
    setColor("R9", getColor("R3"));
    setColor("R3", strMem);
    
    strMem = getColor("R2");
    setColor("R2", getColor("R4"));
    setColor("R4", getColor("R8"));
    setColor("R8", getColor("R6"));
    setColor("R6", strMem);
    
    strMem = getColor("U9");
    setColor("U9", getColor("F9"));
    setColor("F9", getColor("D9"));
    setColor("D9", getColor("B1"));
    setColor("B1", strMem);
    
    strMem = getColor("U6");
    setColor("U6", getColor("F6"));
    setColor("F6", getColor("D6"));
    setColor("D6", getColor("B4"));
    setColor("B4", strMem);
    
    strMem = getColor("U3");
    setColor("U3", getColor("F3"));
    setColor("F3", getColor("D3"));
    setColor("D3", getColor("B7"));
    setColor("B7", strMem);
}

function RightCounter()
{
    var strMem = getColor("R1");
    setColor("R1", getColor("R3"));
    setColor("R3", getColor("R9"));
    setColor("R9", getColor("R7"));
    setColor("R7", strMem);
    
    strMem = getColor("R2");
    setColor("R2", getColor("R6"));
    setColor("R6", getColor("R8"));
    setColor("R8", getColor("R4"));
    setColor("R4", strMem);
    
    strMem = getColor("U9");
    setColor("U9", getColor("B1"));
    setColor("B1", getColor("D9"));
    setColor("D9", getColor("F9"));
    setColor("F9", strMem);
    
    strMem = getColor("U6");
    setColor("U6", getColor("B4"));
    setColor("B4", getColor("D6"));
    setColor("D6", getColor("F6"));
    setColor("F6", strMem);
    
    strMem = getColor("U3");
    setColor("U3", getColor("B7"));
    setColor("B7", getColor("D3"));
    setColor("D3", getColor("F3"));
    setColor("F3", strMem);
}

function BackClock()
{
    var strMem = getColor("B1");
    setColor("B1", getColor("B7"));
    setColor("B7", getColor("B9"));
    setColor("B9", getColor("B3"));
    setColor("B3", strMem);
    
    strMem = getColor("B2");
    setColor("B2", getColor("B4"));
    setColor("B4", getColor("B8"));
    setColor("B8", getColor("B6"));
    setColor("B6", strMem);
    
    strMem = getColor("U3");
    setColor("U3", getColor("R9"));
    setColor("R9", getColor("D7"));
    setColor("D7", getColor("L1"));
    setColor("L1", strMem);
    
    strMem = getColor("U2");
    setColor("U2", getColor("R6"));
    setColor("R6", getColor("D8"));
    setColor("D8", getColor("L4"));
    setColor("L4", strMem);
    
    strMem = getColor("U1");
    setColor("U1", getColor("R3"));
    setColor("R3", getColor("D9"));
    setColor("D9", getColor("L7"));
    setColor("L7", strMem);
}

function BackCounter()
{
    var strMem = getColor("B1");
    setColor("B1", getColor("B3"));
    setColor("B3", getColor("B9"));
    setColor("B9", getColor("B7"));
    setColor("B7", strMem);
    
    strMem = getColor("B2");
    setColor("B2", getColor("B6"));
    setColor("B6", getColor("B8"));
    setColor("B8", getColor("B4"));
    setColor("B4", strMem);
    
    strMem = getColor("U3");
    setColor("U3", getColor("L1"));
    setColor("L1", getColor("D7"));
    setColor("D7", getColor("R9"));
    setColor("R9", strMem);
    
    strMem = getColor("U2");
    setColor("U2", getColor("L4"));
    setColor("L4", getColor("D8"));
    setColor("D8", getColor("R6"));
    setColor("R6", strMem);
    
    strMem = getColor("U1");
    setColor("U1", getColor("L7"));
    setColor("L7", getColor("D9"));
    setColor("D9", getColor("R3"));
    setColor("R3", strMem);
}

function UpClock()
{
    var strMem = getColor("U1");
    setColor("U1", getColor("U7"));
    setColor("U7", getColor("U9"));
    setColor("U9", getColor("U3"));
    setColor("U3", strMem);
    
    strMem = getColor("U2");
    setColor("U2", getColor("U4"));
    setColor("U4", getColor("U8"));
    setColor("U8", getColor("U6"));
    setColor("U6", strMem);
    
    strMem = getColor("B3");
    setColor("B3", getColor("L3"));
    setColor("L3", getColor("F3"));
    setColor("F3", getColor("R3"));
    setColor("R3", strMem);
    
    strMem = getColor("B2");
    setColor("B2", getColor("L2"));
    setColor("L2", getColor("F2"));
    setColor("F2", getColor("R2"));
    setColor("R2", strMem);
    
    strMem = getColor("B1");
    setColor("B1", getColor("L1"));
    setColor("L1", getColor("F1"));
    setColor("F1", getColor("R1"));
    setColor("R1", strMem);
}

function UpCounter()
{
    var strMem = getColor("U1");
    setColor("U1", getColor("U3"));
    setColor("U3", getColor("U9"));
    setColor("U9", getColor("U7"));
    setColor("U7", strMem);
    
    strMem = getColor("U2");
    setColor("U2", getColor("U6"));
    setColor("U6", getColor("U8"));
    setColor("U8", getColor("U4"));
    setColor("U4", strMem);
    
    strMem = getColor("B3");
    setColor("B3", getColor("R3"));
    setColor("R3", getColor("F3"));
    setColor("F3", getColor("L3"));
    setColor("L3", strMem);
    
    strMem = getColor("B2");
    setColor("B2", getColor("R2"));
    setColor("R2", getColor("F2"));
    setColor("F2", getColor("L2"));
    setColor("L2", strMem);
    
    strMem = getColor("B1");
    setColor("B1", getColor("R1"));
    setColor("R1", getColor("F1"));
    setColor("F1", getColor("L1"));
    setColor("L1", strMem);
}

function DownClock()
{
    var strMem = getColor("D1");
    setColor("D1", getColor("D7"));
    setColor("D7", getColor("D9"));
    setColor("D9", getColor("D3"));
    setColor("D3", strMem);
    
    strMem = getColor("D2");
    setColor("D2", getColor("D4"));
    setColor("D4", getColor("D8"));
    setColor("D8", getColor("D6"));
    setColor("D6", strMem);
    
    strMem = getColor("F7");
    setColor("F7", getColor("L7"));
    setColor("L7", getColor("B7"));
    setColor("B7", getColor("R7"));
    setColor("R7", strMem);
    
    strMem = getColor("F8");
    setColor("F8", getColor("L8"));
    setColor("L8", getColor("B8"));
    setColor("B8", getColor("R8"));
    setColor("R8", strMem);
    
    strMem = getColor("F9");
    setColor("F9", getColor("L9"));
    setColor("L9", getColor("B9"));
    setColor("B9", getColor("R9"));
    setColor("R9", strMem);
}

function DownCounter()
{
    var strMem = getColor("D1");
    setColor("D1", getColor("D3"));
    setColor("D3", getColor("D9"));
    setColor("D9", getColor("D7"));
    setColor("D7", strMem);
    
    strMem = getColor("D2");
    setColor("D2", getColor("D6"));
    setColor("D6", getColor("D8"));
    setColor("D8", getColor("D4"));
    setColor("D4", strMem);
    
    strMem = getColor("F7");
    setColor("F7", getColor("R7"));
    setColor("R7", getColor("B7"));
    setColor("B7", getColor("L7"));
    setColor("L7", strMem);
    
    strMem = getColor("F8");
    setColor("F8", getColor("R8"));
    setColor("R8", getColor("B8"));
    setColor("B8", getColor("L8"));
    setColor("L8", strMem);
    
    strMem = getColor("F9");
    setColor("F9", getColor("R9"));
    setColor("R9", getColor("B9"));
    setColor("B9", getColor("L9"));
    setColor("L9", strMem);
}

function RotateRight()
{
    var strMem = getColor("U1");
    setColor("U1", getColor("U3"));
    setColor("U3", getColor("U9"));
    setColor("U9", getColor("U7"));
    setColor("U7", strMem);
    
    strMem = getColor("U2");
    setColor("U2", getColor("U6"));
    setColor("U6", getColor("U8"));
    setColor("U8", getColor("U4"));
    setColor("U4", strMem);
    
    strMem = getColor("B1");
    setColor("B1", getColor("R1"));
    setColor("R1", getColor("F1"));
    setColor("F1", getColor("L1"));
    setColor("L1", strMem);
    
    strMem = getColor("B2");
    setColor("B2", getColor("R2"));
    setColor("R2", getColor("F2"));
    setColor("F2", getColor("L2"));
    setColor("L2", strMem);
    
    strMem = getColor("B3");
    setColor("B3", getColor("R3"));
    setColor("R3", getColor("F3"));
    setColor("F3", getColor("L3"));
    setColor("L3", strMem);
    
    strMem = getColor("B4");
    setColor("B4", getColor("R4"));
    setColor("R4", getColor("F4"));
    setColor("F4", getColor("L4"));
    setColor("L4", strMem);
    
    strMem = getColor("B5");
    setColor("B5", getColor("R5"));
    setColor("R5", getColor("F5"));
    setColor("F5", getColor("L5"));
    setColor("L5", strMem);
    
    strMem = getColor("B6");
    setColor("B6", getColor("R6"));
    setColor("R6", getColor("F6"));
    setColor("F6", getColor("L6"));
    setColor("L6", strMem);
    
    strMem = getColor("B7");
    setColor("B7", getColor("R7"));
    setColor("R7", getColor("F7"));
    setColor("F7", getColor("L7"));
    setColor("L7", strMem);
    
    strMem = getColor("B8");
    setColor("B8", getColor("R8"));
    setColor("R8", getColor("F8"));
    setColor("F8", getColor("L8"));
    setColor("L8", strMem);
    
    strMem = getColor("B9");
    setColor("B9", getColor("R9"));
    setColor("R9", getColor("F9"));
    setColor("F9", getColor("L9"));
    setColor("L9", strMem);

    strMem = getColor("D1");
    setColor("D1", getColor("D7"));
    setColor("D7", getColor("D9"));
    setColor("D9", getColor("D3"));
    setColor("D3", strMem);
    
    strMem = getColor("D2");
    setColor("D2", getColor("D4"));
    setColor("D4", getColor("D8"));
    setColor("D8", getColor("D6"));
    setColor("D6", strMem);
}

function RotateLeft()
{
    var strMem = getColor("U1");
    setColor("U1", getColor("U7"));
    setColor("U7", getColor("U9"));
    setColor("U9", getColor("U3"));
    setColor("U3", strMem);
    
    strMem = getColor("U2");
    setColor("U2", getColor("U4"));
    setColor("U4", getColor("U8"));
    setColor("U8", getColor("U6"));
    setColor("U6", strMem);
    
    strMem = getColor("B1");
    setColor("B1", getColor("L1"));
    setColor("L1", getColor("F1"));
    setColor("F1", getColor("R1"));
    setColor("R1", strMem);
    
    strMem = getColor("B2");
    setColor("B2", getColor("L2"));
    setColor("L2", getColor("F2"));
    setColor("F2", getColor("R2"));
    setColor("R2", strMem);
    
    strMem = getColor("B3");
    setColor("B3", getColor("L3"));
    setColor("L3", getColor("F3"));
    setColor("F3", getColor("R3"));
    setColor("R3", strMem);
    
    strMem = getColor("B4");
    setColor("B4", getColor("L4"));
    setColor("L4", getColor("F4"));
    setColor("F4", getColor("R4"));
    setColor("R4", strMem);
    
    strMem = getColor("B5");
    setColor("B5", getColor("L5"));
    setColor("L5", getColor("F5"));
    setColor("F5", getColor("R5"));
    setColor("R5", strMem);
    
    strMem = getColor("B6");
    setColor("B6", getColor("L6"));
    setColor("L6", getColor("F6"));
    setColor("F6", getColor("R6"));
    setColor("R6", strMem);
    
    strMem = getColor("B7");
    setColor("B7", getColor("L7"));
    setColor("L7", getColor("F7"));
    setColor("F7", getColor("R7"));
    setColor("R7", strMem);
    
    strMem = getColor("B8");
    setColor("B8", getColor("L8"));
    setColor("L8", getColor("F8"));
    setColor("F8", getColor("R8"));
    setColor("R8", strMem);
    
    strMem = getColor("B9");
    setColor("B9", getColor("L9"));
    setColor("L9", getColor("F9"));
    setColor("F9", getColor("R9"));
    setColor("R9", strMem);

    strMem = getColor("D1");
    setColor("D1", getColor("D3"));
    setColor("D3", getColor("D9"));
    setColor("D9", getColor("D7"));
    setColor("D7", strMem);
    
    strMem = getColor("D2");
    setColor("D2", getColor("D6"));
    setColor("D6", getColor("D8"));
    setColor("D8", getColor("D4"));
    setColor("D4", strMem);
}

function ShowArrows(strFace)
{
    document.getElementById(strFace + "Arrows").style.display = "block";
}

function HideArrows(strFace)
{
    document.getElementById(strFace + "Arrows").style.display = "none";
}