function changeElementsStyleByClass(node,cls) {
  for(var j = 0; j < node.attributes.length; j++) {
    if(node.attributes.item(j).nodeName == 'class') {
     node.attributes.item(j).nodeValue = cls;
    }
  }
}

function prepareTable(tableNode) {
  if(tableNode.nodeName.toLowerCase() == 'tbody') {
    return;
  }
  nodeList = tableNode.childNodes;
  found = false;
  removeList = new Array();
  for(i = 0; i < nodeList.length; i++ ) {
    node = nodeList.item(i);
    if(node.nodeName.toLowerCase() != 'tbody') {
      removeList[removeList.length] = node;
    } else {
      found = true;
    }
  }

  for(i = 0; i < removeList.length; i++) {
    tableNode.removeChild(removeList[i]);
  }
}

function addTitleTextRow() {
  tableNode = document.getElementById('titleTextList');
  prepareTable(tableNode);

  tbodyNode = document.createElement('tbody');
  tableNode.appendChild(tbodyNode);

  trNode = document.createElement('tr');
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement('td');
  textNode = document.createTextNode('Title: ');
  trNode.appendChild(tdNode);
  tdNode.appendChild(textNode);

  tdNode = document.createElement('td');
  inputNode = document.createElement('input');
  inputNode.setAttribute('name', 'titleTextTitle');
  trNode.appendChild(tdNode);
  tdNode.appendChild(inputNode);

  tdNode = document.createElement('td');
  textNode = document.createTextNode('Text: ');
  trNode.appendChild(tdNode);
  tdNode.appendChild(textNode);

  tdNode = document.createElement('td');
  inputNode = document.createElement('input');
  inputNode.setAttribute('name', 'titleTextText');
  trNode.appendChild(tdNode);
  tdNode.appendChild(inputNode);

  tdNode = document.createElement('td');
  inputNode = document.createElement('input');
  inputNode.setAttribute('type', 'checkbox');
  inputNode.setAttribute('name', 'titleTextRemove');
  trNode.appendChild(tdNode);
  tdNode.appendChild(inputNode);
}

function addPictureRow() {
  tableNode = document.getElementById('pictureList');
  prepareTable(tableNode);
  var count = document.getElementsByName("pictureFileName").length;
  tbodyNode = document.createElement('tbody');
  tableNode.appendChild(tbodyNode);

  trNode = document.createElement("tr");
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);
  textNode = document.createTextNode("Title: ");
  tdNode.appendChild(textNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);
  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "text");
  inputNode.setAttribute("name", "pictureTitle");
  tdNode.appendChild(inputNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);
  textNode = document.createTextNode("Picture: ");
  tdNode.appendChild(textNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);
  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "file");
  inputNode.setAttribute("name", "projectPicture[" + count + "]");
  tdNode.appendChild(inputNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);
  textNode = document.createTextNode("Remove: ");
  tdNode.appendChild(textNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);
  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "checkbox");
  inputNode.setAttribute("name", "pictureRemove");
  tdNode.appendChild(inputNode);
}

function addTitleTextRow() {
  tableNode = document.getElementById('titleTextList');
  prepareTable(tableNode);

  tbodyNode = document.createElement('tbody');
  tableNode.appendChild(tbodyNode);

  trNode = document.createElement('tr');
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement('td');
  textNode = document.createTextNode('Title: ');
  trNode.appendChild(tdNode);
  tdNode.appendChild(textNode);

  tdNode = document.createElement('td');
  inputNode = document.createElement('input');
  inputNode.setAttribute('name', 'titleTextTitle');
  trNode.appendChild(tdNode);
  tdNode.appendChild(inputNode);

  tdNode = document.createElement('td');
  textNode = document.createTextNode('Text: ');
  trNode.appendChild(tdNode);
  tdNode.appendChild(textNode);

  tdNode = document.createElement('td');
  inputNode = document.createElement('input');
  inputNode.setAttribute('name', 'titleTextText');
  trNode.appendChild(tdNode);
  tdNode.appendChild(inputNode);

  tdNode = document.createElement('td');
  textNode = document.createTextNode('Remove: ');
  trNode.appendChild(tdNode);
  tdNode.appendChild(textNode);

  tdNode = document.createElement('td');
  inputNode = document.createElement('input');
  inputNode.setAttribute('type', 'checkbox');
  inputNode.setAttribute('name', 'titleTextRemove');
  trNode.appendChild(tdNode);
  tdNode.appendChild(inputNode);
}

function addContactRow(pictureEnabled) {
  tableNode = document.getElementById('contactList');
  var count = tableNode.getElementsByTagName("tbody").length;
  var contactNameCount = document.getElementsByName('contactName').length;
  
  if (contactNameCount == 0) {
  	count--;
  }

  tbodyNode = document.createElement('tbody');
  tableNode.appendChild(tbodyNode);

  trNode = document.createElement("tr");
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);

  textNode = document.createTextNode("Name: ");
  tdNode.appendChild(textNode);

  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "hidden");
  inputNode.setAttribute("name", "contactId");
  tdNode.appendChild(inputNode);

  tdNode = document.createElement("td");
  tdNode.setAttribute("align", "left");
  trNode.appendChild(tdNode);

  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "text");
  inputNode.setAttribute("name", "contactName");
  tdNode.appendChild(inputNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);

  textNode = document.createTextNode("Remove: ");
  tdNode.appendChild(textNode);

  tdNode = document.createElement("td");
  tdNode.setAttribute("align", "left");
  trNode.appendChild(tdNode);

  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "checkbox");
  inputNode.setAttribute("name", "contactRemove");
  tdNode.appendChild(inputNode);

  trNode = document.createElement("tr");
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);

  textNode = document.createTextNode("Title: ");
  tdNode.appendChild(textNode);

  tdNode = document.createElement("td");
  tdNode.setAttribute("align", "left");
  trNode.appendChild(tdNode);

  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "text");
  inputNode.setAttribute("name", "contactTitle");
  tdNode.appendChild(inputNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);

  textNode = document.createTextNode("Email: ");
  tdNode.appendChild(textNode);

  tdNode = document.createElement("td");
  tdNode.setAttribute("align", "left");
  trNode.appendChild(tdNode);

  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "text");
  inputNode.setAttribute("name", "contactEmail");
  tdNode.appendChild(inputNode);

  trNode = document.createElement("tr");
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement("td");
  trNode.appendChild(tdNode);

  textNode = document.createTextNode("Phone: ");
  tdNode.appendChild(textNode);

  tdNode = document.createElement("td");
  tdNode.setAttribute("align", "left");
  trNode.appendChild(tdNode);

  inputNode = document.createElement("input");
  inputNode.setAttribute("type", "text");
  inputNode.setAttribute("name", "contactPhone");
  tdNode.appendChild(inputNode);

  if(pictureEnabled) {
    tdNode = document.createElement("td");
    trNode.appendChild(tdNode);

    textNode = document.createTextNode("Picture: ");
    tdNode.appendChild(textNode);

    tdNode = document.createElement("td");
    tdNode.setAttribute("align", "left");
    trNode.appendChild(tdNode);

    inputNode = document.createElement("input");
    inputNode.setAttribute("type", "file");
    inputNode.setAttribute("name", "contactPicture[" + count + "]");
    tdNode.appendChild(inputNode);
  }

  trNode = document.createElement("tr");
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement('td');
  colspanAttr = document.createAttribute('colspan');
  colspanAttr.value = '5';
  tdNode.setAttributeNode(colspanAttr);
  trNode.appendChild(tdNode);

  hrNode = document.createElement("hr");
  tdNode.appendChild(hrNode);
}

function addAreaRow() {
  tbodyNode = document.getElementById('areaList');
  trNode = document.createElement('tr');
  tbodyNode.appendChild(trNode);

  tdNode = document.createElement('td');
  trNode.appendChild(tdNode);
  stateNode = document.createTextNode('State: ');
  tdNode.appendChild(stateNode);

  tdNode = document.createElement('td');
  trNode.appendChild(tdNode);
  selectNode = document.createElement("select");
  selectNode.setAttribute('name', 'areaIds');
  populateStateSelect(selectNode);
  tdNode.appendChild(selectNode);

  tdNode = document.createElement('td');
  trNode.appendChild(tdNode);
  areaNode = document.createTextNode(' Area: ');
  tdNode.appendChild(areaNode);

  tdNode = document.createElement('td');
  trNode.appendChild(tdNode);
  inputNode = document.createElement('input');
  inputNode.setAttribute('name', 'areas');
  tdNode.appendChild(inputNode);

  tdNode = document.createElement('td');
  trNode.appendChild(tdNode);
  removeNode = document.createTextNode(' Remove: ');
  tdNode.appendChild(removeNode);

  tdNode = document.createElement('td');
  trNode.appendChild(tdNode);
  inputNode = document.createElement('input');
  inputNode.setAttribute('type', 'checkbox');
  inputNode.setAttribute('name', 'areaRemove');
  tdNode.appendChild(inputNode);
}

function populateStateSelect(selectNode) {
  states = new Array();
  states[states.length] = 'AL';
  states[states.length] = 'Alabama';
  states[states.length] = 'AR';
  states[states.length] = 'Arkansas';
  states[states.length] = 'AZ';
  states[states.length] = 'Arizona';
  states[states.length] = 'CA';
  states[states.length] = 'California';
  states[states.length] = 'CO';
  states[states.length] = 'Colorado';
  states[states.length] = 'CT';
  states[states.length] = 'Connecticut';
  states[states.length] = 'DC';
  states[states.length] = 'D.C.';
  states[states.length] = 'DE';
  states[states.length] = 'Delaware';
  states[states.length] = 'FL';
  states[states.length] = 'Florida';
  states[states.length] = 'GA';
  states[states.length] = 'Georgia';
  states[states.length] = 'HI';
  states[states.length] = 'Hawaii';
  states[states.length] = 'IA';
  states[states.length] = 'Iowa';
  states[states.length] = 'ID';
  states[states.length] = 'Idaho';
  states[states.length] = 'IL';
  states[states.length] = 'Illinois';
  states[states.length] = 'IN';
  states[states.length] = 'Indiana';
  states[states.length] = 'KS';
  states[states.length] = 'Kansas';
  states[states.length] = 'KY';
  states[states.length] = 'Kentucky';
  states[states.length] = 'LA';
  states[states.length] = 'Louisiana';
  states[states.length] = 'MA';
  states[states.length] = 'Massachusetts';
  states[states.length] = 'MD';
  states[states.length] = 'Maryland';
  states[states.length] = 'ME';
  states[states.length] = 'Maine';
  states[states.length] = 'MI';
  states[states.length] = 'Michigan';
  states[states.length] = 'MN';
  states[states.length] = 'Minnesota';
  states[states.length] = 'MO';
  states[states.length] = 'Missouri';
  states[states.length] = 'MS';
  states[states.length] = 'Mississippi';
  states[states.length] = 'MT';
  states[states.length] = 'Montana';
  states[states.length] = 'NC';
  states[states.length] = 'North Carolina';
  states[states.length] = 'ND';
  states[states.length] = 'North Dakota';
  states[states.length] = 'NE';
  states[states.length] = 'Nebraska';
  states[states.length] = 'NH';
  states[states.length] = 'New Hampshire';
  states[states.length] = 'NJ';
  states[states.length] = 'New Jersey';
  states[states.length] = 'NM';
  states[states.length] = 'New Mexico';
  states[states.length] = 'NV';
  states[states.length] = 'Nevada';
  states[states.length] = 'NY';
  states[states.length] = 'New York';
  states[states.length] = 'OH';
  states[states.length] = 'Ohio';
  states[states.length] = 'OK';
  states[states.length] = 'Oklahoma';
  states[states.length] = 'OR';
  states[states.length] = 'Oregon';
  states[states.length] = 'PA';
  states[states.length] = 'Pennsylvania';
  states[states.length] = 'RI';
  states[states.length] = 'Rhode Island';
  states[states.length] = 'SC';
  states[states.length] = 'South Carolina';
  states[states.length] = 'SD';
  states[states.length] = 'South Dakota';
  states[states.length] = 'TN';
  states[states.length] = 'Tennessee';
  states[states.length] = 'TX';
  states[states.length] = 'Texas';
  states[states.length] = 'UT';
  states[states.length] = 'Utah';
  states[states.length] = 'VA';
  states[states.length] = 'Virginia';
  states[states.length] = 'VT';
  states[states.length] = 'Vermont';
  states[states.length] = 'WA';
  states[states.length] = 'Washington';
  states[states.length] = 'WI';
  states[states.length] = 'Wisconsin';
  states[states.length] = 'WV';
  states[states.length] = 'West Virginia';
  states[states.length] = 'WY';
  states[states.length] = 'Wyoming';

  for(i = 0; i < states.length; i +=2) {
    optionNode = document.createElement('option');
    optionNode.setAttribute('value', states[i]);
    stateNameNode = document.createTextNode(states[i + 1]);
    optionNode.appendChild(stateNameNode);
    selectNode.appendChild(optionNode);
  }
}

function removeRows(tableNodeName, attrName) {
  var tableNode = document.getElementById(tableNodeName);
  var nodeList = tableNode.childNodes;
  var toRemove = new Array();
  for(var i = 0; i < nodeList.length; i++) {
    if(nodeList[i].nodeType != 1) {
      toRemove[toRemove.length] = nodeList[i];
    }
  }
  for(var i = 0; i < toRemove.length; i++) {
    tableNode.removeChild(toRemove[i]);
  }

  toRemove = new Array();
  nodeList = tableNode.childNodes;
  for(var i = 0; i < nodeList.length; i++) {
    if(isRemovable(nodeList[i], attrName)) {
      toRemove[toRemove.length] = nodeList[i];
    }
  }
  for(var i = 0; i < toRemove.length; i++) {
    tableNode.removeChild(toRemove[i]);
  }
}

function isRemovable(node, attrName) {
  var nodeList = node.getElementsByTagName('input');
  for(i = 0; i < nodeList.length; i++) {
    var inputNode = nodeList.item(i);
    if(inputNode.getAttribute('name') == attrName && inputNode.checked) {
      return true;
    }
  }
  return false;
}
