// Floor swapper //

// constants
var KIWI_METER_WIDTH = (1 / 3);
var KIWI_FEET_WIDTH = 1.0936;

var imageIndex = 0;
var tileType = "o";
var FLOOR_WIDTH = 25;
var FLOOR_LENGTH = 50;
var numImage = 0;
//var NUM_ALL = 17;
var NUM_OPEN = 11;
var NUM_CLOSED = 10;
var where = new Array(2);
var prevIndex = 1;

imageIndex = 0;
imageOpenArray = new Array(NUM_OPEN);
imageOpenArray[imageIndex++] = new imageItem("../images/floor_blank.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_blue_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_red_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_green_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_yellow_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_orange_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_purple_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_brown_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_black_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_grey_o.gif");
imageOpenArray[imageIndex++] = new imageItem("../images/floor_white_o.gif");

imageIndex = 0;
imageClosedArray = new Array(NUM_CLOSED);
imageClosedArray[imageIndex++] = new imageItem("../images/floor_blank.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_blue.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_red.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_green.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_yellow.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_orange.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_brown.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_black.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_grey.gif");
imageClosedArray[imageIndex++] = new imageItem("../images/floor_white.gif");

numImage = NUM_OPEN; // default to open
imageIndex = 0; // reset to zero

var orderArray = new Array(FLOOR_LENGTH);
for (i = 0; i < FLOOR_LENGTH; i++) { // make 3-D
  orderArray[i] = new Array(FLOOR_WIDTH);
  for (j = 0; j < FLOOR_WIDTH; j++) {
    orderArray[i][j] = new Array(2); // o or c
  }
}

for (i = 0; i < FLOOR_LENGTH; i++) {
  for (j = 0; j < FLOOR_WIDTH; j++) {
    orderArray[i][j][0] = 'c'; // default to closed
    orderArray[i][j][1] = 0;
  }
}

function setTileType(thisTileType) {
  prevIndex = 1;
  //imageIndex = 0; // reset color rotation when changing tile types
  tileType = thisTileType;
  if (tileType == 'c') {
    numImage = NUM_CLOSED;
  } else { // all
    numImage = NUM_OPEN;
  }
}

function imageItem(imageLocation) {
  this.imageItem = new Image();
  this.imageItem.src = imageLocation;
}

function getImageItemLocation(imageObj) {
  return(imageObj.imageItem.src)
}

function getNextImage() {
  imageIndex = imageIndex % numImage;
  var newImage;
  if (tileType == 'c') {
    newImage = getImageItemLocation(imageClosedArray[imageIndex]);
  } else {
    newImage = getImageItemLocation(imageOpenArray[imageIndex]);
  }
  return(newImage);
}

function swapFloorTile(place) {
  where = stringSplit(place, '_');
  if ((orderArray[where[1]][where[2]][1] % numImage) > 0) {
    imageIndex = ++orderArray[where[1]][where[2]][1] % numImage;
    prevIndex = imageIndex;
  } else {
    if (prevIndex == 0) prevIndex++; // allows looping
    imageIndex = prevIndex;
    orderArray[where[1]][where[2]][1] = prevIndex;
  }
  orderArray[where[1]][where[2]][0] = tileType;
  var newImage = getNextImage();
  document[place].src = newImage;
}

function calculate() {
  // force redraw
  document.floor.open.value = "";
  document.floor.closed.value = "";
  document.floor.area.value = "";
  
  var totalNum = 0;
  var oNumBlue = 0; var oNumRed = 0; var oNumGreen = 0; var oNumYellow = 0; var oNumOrange = 0;
  var oNumPurple = 0; var oNumBrown = 0; var oNumBlack = 0; var oNumGrey = 0; var oNumWhite = 0;
  var cNumBlue = 0; var cNumRed = 0; var cNumGreen = 0; var cNumYellow = 0; var cNumOrange = 0;
  var cNumBrown = 0; var cNumBlack = 0; var cNumGrey = 0; var cNumWhite = 0;
  for (i = 0; i < FLOOR_LENGTH; i++) {
    for (j = 0; j < FLOOR_WIDTH; j++) {
      if (orderArray[i][j][1] > 0) { // tile selected
        if (orderArray[i][j][0] == 'c') {
          switch (orderArray[i][j][1]){
            case 1: cNumBlue++; totalNum++;
                    break;
            case 2: cNumRed++; totalNum++;
                    break;
            case 3: cNumGreen++; totalNum++;
                    break;
            case 4: cNumYellow++; totalNum++;
                    break;
            case 5: cNumOrange++; totalNum++;
                    break;
            case 6: cNumBrown++; totalNum++;
                    break;
            case 7: cNumBlack++; totalNum++;
                    break;
            case 8: cNumGrey++; totalNum++;
                    break;
            case 9: cNumWhite++; totalNum++;
          }
        } else {
          switch (orderArray[i][j][1]) {
            case 1: oNumBlue++; totalNum++;
                    break;
            case 2: oNumRed++; totalNum++;
                    break;
            case 3: oNumGreen++; totalNum++;
                    break;
            case 4: oNumYellow++; totalNum++;
                    break;
            case 5: oNumOrange++; totalNum++;
                    break;
            case 6: oNumPurple++; totalNum++;
                    break;
            case 7: oNumBrown++; totalNum++;
                    break;
            case 8: oNumBlack++; totalNum++;
                    break;
            case 9: oNumGrey++; totalNum++;
                    break;
            case 10: oNumWhite++; totalNum++;
          }
        }
      }
    }
  }
  // print
  var oOut = "";
  if (oNumBlue || oNumRed || oNumGreen || oNumYellow || oNumOrange || oNumPurple || oNumBrown || oNumBlack || oNumGrey || oNumWhite) {
    oOut = "Perforated Tiles";
    if (oNumBlue) {
      oOut += ", " + oNumBlue + " blue";
    }
    if (oNumRed) {
      oOut += ", " + oNumRed + " red";
    }
    if (oNumGreen) {
      oOut += ", " + oNumGreen + " green";
    }
    if (oNumYellow) {
      oOut += ", " + oNumYellow + " yellow";
    }
    if (oNumOrange) {
      oOut += ", " + oNumOrange + " orange";
    }
    if (oNumPurple) {
      oOut += ", " + oNumPurple + " purple";
    }
    if (oNumBrown) {
      oOut += ", " + oNumBrown + " brown";
    }
    if (oNumBlack) {
      oOut += ", " + oNumBlack + " black";
    }
    if (oNumGrey) {
      oOut += ", " + oNumGrey + " grey";
    }
    if (oNumWhite) {
      oOut += ", " + oNumWhite + " white";
    }
    document.floor.open.value = oOut;
  }

  var cOut = "";
  if (cNumBlue || cNumRed || cNumGreen || cNumYellow || cNumOrange || cNumBrown || cNumBlack || cNumGrey || cNumWhite) {
    cOut = "Diamond Grip Tiles";
    if (cNumBlue) {
      cOut += ", " + cNumBlue + " blue";
    }
    if (cNumRed) {
      cOut += ", " + cNumRed + " red";
    }
    if (cNumGreen) {
      cOut += ", " + cNumGreen + " green";
    }
    if (cNumYellow) {
      cOut += ", " + cNumYellow + " yellow";
    }
    if (cNumOrange) {
      cOut += ", " + cNumOrange + " orange";
    }
    if (cNumBrown) {
      cOut += ", " + cNumBrown + " brown";
    }
    if (cNumBlack) {
      cOut += ", " + cNumBlack + " black";
    }
    if (cNumGrey) {
      cOut += ", " + cNumGrey + " grey";
    }
    if (cNumWhite) {
      cOut += ", " + cNumWhite + " white";
    }
    document.floor.closed.value = cOut;
  }
  
  if (totalNum > 0) {
    var areaFeet;
    var areaMeters;
    areaMeters = Math.round(totalNum * KIWI_METER_WIDTH * KIWI_METER_WIDTH * 100) / 100; // round to hundredths
    areaFeet = Math.round(totalNum * KIWI_FEET_WIDTH * KIWI_FEET_WIDTH * 100) / 100; // round to hundredths
    document.floor.area.value = "Area covered by " + totalNum + " tiles: " + areaFeet + " sq. feet (" + areaMeters + " sq. meters)";
  }
  
  // add to cart
  document.floor.qty1.value = oNumBlue;
  document.floor.qty2.value = oNumRed;
  document.floor.qty3.value = oNumGreen;
  document.floor.qty4.value = oNumYellow;
  document.floor.qty5.value = oNumOrange;
  document.floor.qty6.value = oNumPurple;
  document.floor.qty7.value = oNumBrown;
  document.floor.qty8.value = oNumBlack;
  document.floor.qty9.value = oNumGrey;
  document.floor.qty10.value = oNumWhite;
  
  document.floor.qty11.value = cNumBlue;
  document.floor.qty12.value = cNumRed;
  document.floor.qty13.value = cNumGreen;
  document.floor.qty14.value = cNumYellow;
  document.floor.qty15.value = cNumOrange;
  document.floor.qty16.value = cNumBrown;
  document.floor.qty17.value = cNumBlack;
  document.floor.qty18.value = cNumGrey;
  document.floor.qty19.value = cNumWhite;
}
