
var APT_METER_WIDTH = 0.4921;  //(1 / 3);
var APT_FEET_WIDTH = 1.6146;  // 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 = 12;
var NUM_CLOSED = 12;
var where = new Array(2);
var prevIndex = 1;

imageIndex = 0;
imageOpenArray = new Array(NUM_OPEN);
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_blank.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_blue_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_green_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_yellow_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_orange_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_red_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_brown_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_black_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_darkgray_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_gray_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_tan_o.gif");
imageOpenArray[imageIndex++] = new imageItem("pics/agt/floor_white_o.gif");

imageIndex = 0;
imageClosedArray = new Array(NUM_CLOSED);
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_blank.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_blue.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_green.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_yellow.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_orange.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_red.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_brown.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_black.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_darkgray.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_gray.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/floor_tan.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/agt/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 oNumGreen = 0; var oNumYellow = 0; var oNumOrange = 0; var oNumRed = 0;
  var oNumBrown = 0; var oNumBlack = 0; var oNumDarkGray = 0; var oNumGray = 0; var oNumTan = 0; var oNumWhite = 0;
  var cNumBlue = 0; var cNumGreen = 0; var cNumYellow = 0; var cNumOrange = 0; var cNumRed = 0;
  var cNumBrown = 0; var cNumBlack = 0; var cNumDarkGray = 0; var cNumGray = 0; var cNumTan = 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: cNumGreen++; totalNum++;
                    break;
            case 3: cNumYellow++; totalNum++;
                    break;
            case 4: cNumOrange++; totalNum++;
                    break;
            case 5: cNumRed++; totalNum++;
                    break;
            case 6: cNumBrown++; totalNum++;
                    break;
            case 7: cNumBlack++; totalNum++;
                    break;
            case 8: cNumDarkGray++; totalNum++;
                    break;
            case 9: cNumGray++; totalNum++;
                    break;
            case 10: cNumTan++; totalNum++;
                    break;
            case 11: cNumWhite++; totalNum++;
          }
        } else {
          switch (orderArray[i][j][1]) {
            case 1: oNumBlue++; totalNum++;
                    break;
            case 2: oNumGreen++; totalNum++;
                    break;
            case 3: oNumYellow++; totalNum++;
                    break;
            case 4: oNumOrange++; totalNum++;
                    break;
            case 5: oNumRed++; totalNum++;
                    break;
            case 6: oNumBrown++; totalNum++;
                    break;
            case 7: oNumBlack++; totalNum++;
                    break;
            case 8: oNumDarkGray++; totalNum++;
                    break;
            case 9: oNumGray++; totalNum++;
                    break;
            case 10: oNumTan++; totalNum++;
                    break;
            case 11: oNumWhite++; totalNum++;
          }
        }
      }
    }
  }
  // print
  var oOut = "";
  if (oNumBlue || oNumGreen || oNumYellow || oNumOrange || oNumRed || oNumBrown || oNumBlack || oNumDarkGray || oNumGray || oNumTan || oNumWhite) {
    oOut = "Coin Pattern Tiles";
    if (oNumBlue) {
      oOut += ", " + oNumBlue + " blue";
    }
    if (oNumGreen) {
      oOut += ", " + oNumGreen + " green";
    }
    if (oNumYellow) {
      oOut += ", " + oNumYellow + " yellow";
    }
    if (oNumOrange) {
      oOut += ", " + oNumOrange + " orange";
    }
    if (oNumRed) {
      oOut += ", " + oNumRed + " red";
    }
    if (oNumBrown) {
      oOut += ", " + oNumBrown + " brown";
    }
    if (oNumBlack) {
      oOut += ", " + oNumBlack + " black";
    }
    if (oNumDarkGray) {
      oOut += ", " + oNumDarkGray + " dark gray";
    }
    if (oNumGray) {
      oOut += ", " + oNumGray + " gray";
    }
    if (oNumTan) {
      oOut += ", " + oNumTan + " tan";
    }
    if (oNumWhite) {
      oOut += ", " + oNumWhite + " white";
    }
    document.floor.open.value = oOut;
  }

  var cOut = "";
  if (cNumBlue || cNumGreen || cNumYellow || cNumOrange || cNumRed || cNumBrown || cNumBlack || cNumDarkGray || cNumGray || cNumTan || cNumWhite) {
    cOut = "Smooth Pattern Tiles";
    if (cNumBlue) {
      cOut += ", " + cNumBlue + " blue";
    }
    if (cNumGreen) {
      cOut += ", " + cNumGreen + " green";
    }
    if (cNumYellow) {
      cOut += ", " + cNumYellow + " yellow";
    }
    if (cNumOrange) {
      cOut += ", " + cNumOrange + " orange";
    }
    if (cNumRed) {
      cOut += ", " + cNumRed + " red";
    }
    if (cNumBrown) {
      cOut += ", " + cNumBrown + " brown";
    }
    if (cNumBlack) {
      cOut += ", " + cNumBlack + " black";
    }
    if (cNumDarkGray) {
      cOut += ", " + cNumDarkGray + " dark gray";
    }
    if (cNumGray) {
      cOut += ", " + cNumGray + " gray";
    }
    if (cNumTan) {
      cOut += ", " + cNumTan + " tan";
    }
    if (cNumWhite) {
      cOut += ", " + cNumWhite + " white";
    }
    document.floor.closed.value = cOut;
  }
  
  if (totalNum > 0) {
    var areaFeet;
    var areaMeters;
    areaMeters = Math.round(totalNum * APT_METER_WIDTH * APT_METER_WIDTH * 100) / 100; // round to hundredths
    areaFeet = Math.round(totalNum * APT_FEET_WIDTH * APT_FEET_WIDTH * 100) / 100; // round to hundredths
    document.floor.area.value = "Area covered by " + totalNum + " tiles:       " + areaFeet + " sq. feet (" + areaMeters + " sq. meters)" +  "          Cost: $" + Math.round(totalNum * 10.85*100)/100;
  }
}

function stringSplit(string, delimiter) { 
    if (string == null || string == "") { 
        return null; 
    } else if (string.split != null) { 
        return string.split (delimiter); 
    } else { 
        var ar = new Array(); 
        var i = 0; 
        var start = 0; 
        while(start >= 0 && start < string.length) { 
             var end = string.indexOf (delimiter, start) ; 
             if(end >= 0) { 
                 ar[i++] = string.substring (start, end); 
                 start = end+1; 
             } else { 
                 ar[i++] = string.substring (start, string.length); 
                 start = -1; 
             } 
        } 
        return ar; 
    } 
} 