// Main Javascript Library

/* ----------------------------------------------- [ ADD SHOWS FORM ] */

function addBand() {
  var container = document.getElementById('band-container');

  var newRow = document.createElement('div');
  newRow.className = 'band';

  var randomNum = generateRandomNumber(8);

  newRow.innerHTML = '\
    <span class="add-remove-controls">\
      <img class="band-add" src="/images/add.png" onclick="addBand();" alt="" />\
      <img class="band-remove" src="/images/delete.png" onclick="removeBand(event);" alt="" />\
    </span>\
    <span class="band-asterisk">*</span>\
    <span class="band-input-controls">\
      <input class="band-name" name="band-'+randomNum+'[band-name]" type="text" value="Band Name" />\
      \
      <input class="band-short-description" name="band-'+randomNum+'[band-short-description]" type="text" value="Short Description"/>\
      \
      <input id="band-headliner-'+randomNum+'" class="band-headliner" name="band-'+randomNum+'[band-headliner]" type="checkbox" />\
      <label for="band-headliner-'+randomNum+'">Headliner</label>\
      \
      <input class="band-url" name="band-'+randomNum+'[band-url]" type="text" value="URL"/>\
    </span>\
  ';

  registerFormField(newRow.getElementsByClassName('band-name')[0]);
  registerFormField(newRow.getElementsByClassName('band-short-description')[0]);
  registerFormField(newRow.getElementsByClassName('band-url')[0]);

  container.appendChild(newRow);
}

function removeBand(event) {
  var container = document.getElementById('band-container');

  if(container.getElementsByTagName('div').length == 1) {
    alert('All shows must have at least one band');
    return;
  }

  var currentRow = event.target.parentNode.parentNode;
  container.removeChild(currentRow);
}

function toggleTicketTypeControls(selectElem) {
  var controls = document.getElementById("ticket-controls");

  switch(parseInt(selectElem.value)) {
    case 1:
      controls.innerHTML = '\
        <label for="price-door"><span>*</span>Door Price:</label>\
        <input id="price-door" name="price-door" type="text" />\
        \
        <label for="price-advance">Advance Price:</label>\
        <input id="price-advance" name="price-advance" type="text" />\
      ';
    break;
    case 2:
      controls.innerHTML = '\
        <label for="suggested-price">Suggested Price:</label>\
        <input id="suggested-price" name="suggested-price" type="text" />\
      ';
    break;
    case 3:
      // No controls required.
      controls.innerHTML = '';
    break;
  }
}

function selectVenue(selectElem) {
  var container = document.getElementById('venue-controls');
  var alternateVenueControls = container.getElementById('alt-venue-controls');

  if(selectElem.value == "Other") {
    alternateVenueControls.innerHTML = '\
      <div style="position: relative;">\
        <span id="alt-venue-name-asterisk">*</span>\
        <label for="alt-venue-name">Venue Name:</label>\
        <input id="alt-venue-name" name="alt-venue-name" type="text" />\
      </div>\
      \
      <div>\
        <label for="alt-venue-address">Address:</label>\
        <input id="alt-venue-address" name="alt-venue-address" type="text" />\
      </div>\
      \
      <div>\
        <label for="alt-venue-map">Map Link:</label>\
        <input id="alt-venue-map" name="alt-venue-map" type="text" />\
      </div>\
    ';
  } else {
    alternateVenueControls.innerHTML = "";
  }
}

function registerFormField(formField) {
  formField.onfocus = focusTextBox;
  formField.defaultText = formField.value;
  formField.onblur = blurTextBox;
}

function focusTextBox() {
  //console.log("called focusTextBox");
  this.value = "";
  this.style.color = "#000";
}

function blurTextBox() {
  //console.log("called blurTextBox");
  if(this.value == "") {
    this.value = this.defaultText;
    this.style.color = "#999";
  }
}

/* ------------------------------------------------------ [ GENERAL ] */

// Javascript version of the PHP function generate_random_number() in
// the main PHP library.
function generateRandomNumber(length) {
  var randomNum = "";

  for(var i=0;i<length;i++) {
    var singleNum = Math.round(Math.random() * 9);
    randomNum += singleNum.toString();
  }

  // Return as string so we can create large numbers.
  return(randomNum);
}

// accept a keyPress event and allow for the typing of only numeric
// (0-9) characters as well as comma and period. For keeping users
// from typing non-prices in price fields.
function validateKeyPress(event) {
  switch(event.keyCode) {
    case 48:
    case 49:
    case 50:
    case 51:
    case 52:
    case 53:
    case 54:
    case 55:
    case 56:
    case 57:
    case 44:
    case 46:
      return(true)
    break;
    default:
      return(false);
    break;
  };
};
