function expandQuestion(oLink, id) {
  var oShowHide = document.getElementById('question' + id);

  var oSpan = oLink.getElementsByTagName('span')[0];

  if (oSpan.innerHTML == '+') {
    oSpan.innerHTML = '-'; 
    oShowHide.style.display = 'block';
  }
  else {
    oSpan.innerHTML = '+';
    oShowHide.style.display = 'none';    
  }
 
}



function showTenThings(iNode) {
  var oContent = document.getElementById('tenThingsContent');

  var oText = document.getElementById('tenThingsItem' + iNode);

  if (oText) {
    oContent.innerHTML = oText.innerHTML;
  }
}

function showFileLibraryItem(oLink) {

//  var oImg = oLink.parentNode.getElementsByTagName('img')[0];
  var oHolder = document.getElementById('mainImage');
//  var iSize = oHolder.src.replace(/[^\?]*\?h=(\d)/, '$1');

//  oHolder.src = oImg.src.replace(/h=\d+/, 'h=' + iSize);


  iThumb = oLink.id.replace(/thumb/, '');

  oHolder.src = aImg[iThumb].src;

}

function preloadImages() {
  aImg = new Array();
  var oThumbHolder = document.getElementById('thumbnailHolder');
  var oHolder = document.getElementById('mainImage');
  var iSize = oHolder.src.replace(/[^\?]*\?h=(\d)/, '$1');

  var oImg = oThumbHolder.getElementsByTagName('img');

  for (var i=0; i<oImg.length; i++) {
    aImg[i] = new Image();
    aImg[i].src = oImg[i].src.replace(/h=\d+/, 'h=' + iSize);
  }


}






/*** LIFE CHECK **/

function nodePosition(iNode) {
  for (var i=0; i<aLifeCheck.length; i++) {
    if (iNode.toString() == aLifeCheck[i][0]) {
      return i;
    }
  }
}



function initLifecheckStatement(iNode) {

  var iStatement;
  if (!iNode) {
    iStatement = 0;
    iNode = aLifeCheck[0][0];
  }
  else {
    iStatement = nodePosition(iNode);
  }
  
  var oLifecheck = document.getElementById('lifecheck');
  var oForm = document.forms['lifecheck'];
  var oStatement = document.getElementById('lifecheckStatement');
  var oResponse = document.getElementById('lifecheckResponse');

  oStatement.innerHTML = document.getElementById('statementText' + iNode).innerHTML;

  oResponse.innerHTML = '';

  var oOption = aLifeCheck[iStatement][3];


  for (var i=0; i<oOption.length; i++) {

    oResponse.innerHTML += '<label>';
    oResponse.innerHTML += '<input type="radio" class="radio" name="response" value="' + i + '"/> '
    oResponse.innerHTML += oOption[i][0];
    oResponse.innerHTML += '</label><br/>';

  }


  var oPrevious = document.createElement('input');
      oPrevious.type = 'button';
      oPrevious.value = 'Previous Statement';
      oPrevious.name = 'previousStatement';
      oPrevious.className = 'button';
      oPrevious.setAttribute('iNode', iNode);
      if (oPrevious.attachEvent) {
        oPrevious.attachEvent('onclick', previousStatement);
      }
      else {
        oPrevious.addEventListener('click', previousStatement, false);
      }

      if (iStatement == 0) {
        oPrevious.disabled = true;
      }
  
  oResponse.appendChild(oPrevious);


  var oNext = document.createElement('input');
      oNext.type = 'button';
      oNext.value = 'Next Statement';
      oNext.name = 'nextStatement';
      oNext.className = 'button';
      oNext.setAttribute('iNode', iNode);
      if (oNext.attachEvent) {
        oNext.attachEvent('onclick', testStatement);
      }
      else {
        oNext.addEventListener('click', testStatement, false);
      }

  oResponse.appendChild(oNext);

  var oBreak = document.createElement('br');
      oBreak.className = 'clear';

  oResponse.appendChild(oBreak);

}


function previousStatement(evt) {
  var oBtn = evt.target || evt.srcElement;  
  var iNode = oBtn.getAttribute('iNode');
  var iPos = nodePosition(iNode);

  initLifecheckStatement(aLifeCheck[iPos-1][0]);
}

function testStatement(evt) {
  var oBtn = evt.target || evt.srcElement;
  var oForm = document.forms['lifecheck'];
  var oResponseFields = oForm.elements['response'];

  var iResponse;
  for (var i=0; i<oResponseFields.length; i++) {
    if (oResponseFields[i].checked) {
      iResponse = oResponseFields[i].value;
    }
  }

  if (!iResponse) {
    alert('Please select a response');
    return false;
  }

  var iNode = oBtn.getAttribute('iNode');
  var iStatement = nodePosition(iNode)
    

  if (oForm.elements['statement' + iNode]) {
    oForm.removeChild(oForm.elements['statement' + iNode]);
  }
  if (oForm.elements['pathway' + iNode]) {
    oForm.removeChild(oForm.elements['pathway' + iNode]);
  }


  if (parseInt(aLifeCheck[iStatement][2]) == 1) {  
    oForm.innerHTML += '<input type="hidden" name="statement' + iNode + '" value="' + iResponse + '"/>' ;
  }
  else {
    oForm.innerHTML += '<input type="hidden" name="pathway' + iNode + '" value="' + iResponse + '"/>' ;
  }

  var sRedirect = aLifeCheck[iStatement][3][parseInt(iResponse)][1];
  if (sRedirect !== '') {
    sRedirect = sRedirect.replace(/\D*/igm, '');
    iNode = sRedirect;
    iStatement = nodePosition(iNode);
  }
  else {
    iStatement += 1;
  }

    
  if (aLifeCheck.length > iStatement) {
    iNode = aLifeCheck[iStatement][0];
    initLifecheckStatement(iNode);
  }
  else {
    initLifecheckEnd();
  }
}



function initLifecheckEnd() {
  var oResponse = document.getElementById('lifecheckResponse');
  var oStatement = document.getElementById('lifecheckStatement');

  oResponse.innerHTML = '';
  oStatement.innerHTML = '<h2>Complete</h2>';
  oStatement.innerHTML += '<p>Please press the button below to see how you have done.</p>';


  var oNext = document.createElement('input');
      oNext.type = 'submit';
      oNext.value = 'Show Results';
      oNext.name = 'complete';
      oNext.className = 'button';

  oResponse.appendChild(oNext);

}


















function rightTrim(strString) {
    return strString.replace(/\s+$/gi, '');
}



function leftTrim(strString) {
    return strString.replace(/^\s*/gi, '');
}


function trim(strString) {
  strString = strString.replace(/^\s*/gi, '');
  strString = strString.replace(/\s+$/gi, '');
  return strString;
}

function escapeCommas(s) {
  return s.replace(',', '&#44;');
}



function openReferenceWindow(href) {
  var iNode = href.replace(/[^0-9]/ig, '');
  
  var newWin = window.open('cms' + iNode + '.asp', 'reference', 'height=300px, width=300px, title=no')
      newWin.focus();
  

}


function showSubNav(linkObj, objId) {
  var wrapper = linkObj.parentNode;
  var tempNode = wrapper.firstChild;
    

  while (tempNode) {
    if (tempNode.nodeName.toLowerCase() == 'div') {
     tempNode.style.display = 'none';
    }
    tempNode = tempNode.nextSibling;
  }

  document.getElementById(objId).style.display = 'block';
  
}




function clearValidationFlags(oElement) {

  var cSpan = oElement.getElementsByTagName('span')
  for (var i=cSpan.length-1; i>=0; i--) {
    if (cSpan[i].className == 'errorFlag') {
      cSpan[i].parentNode.removeChild(cSpan[i]);
    }
  }
}




function addValidationFlags(oField, aValidation) {

  var oWarning = document.createElement('span');
      oWarning.style.color = 'red';
      oWarning.className = 'errorFlag';
      oWarning.innerHTML = '[*]';

  var node = oField;


  
  while (node && (node.className !== 'label' && node.tagName.toLowerCase() !== 'label')) {
    node = node.parentNode;
  }

  clearValidationFlags(node);

  if (node.getElementsByTagName('p').length > 0) {
    oPara = node.getElementsByTagName('p');
  }
  else {
    oPara = node.getElementsByTagName('span');
  }



  if (oPara[0]) {
    if (oPara[0].getElementsByTagName('span').length > 0) {
        oPara[0].insertBefore(oWarning, oPara[0].getElementsByTagName('span')[0]);
    }
    else {
      oPara[0].appendChild(oWarning);

    }
  }
}



function validateField(oField) {


  if (oField.getAttribute('validation') !== null) {

    aValidation = oField.getAttribute('validation').split(',')

    var blnContinue = true;

    for (var iInt=0; iInt<aValidation.length; iInt++) {


      if (oField.type.toLowerCase() == 'file') {
        if (aValidation[iInt] == 'validateNotEmpty') {
          if (trim(oField.value) == '') {
            if (oField.getAttribute('fileExists') == 'true') {
              return true;
            }
            else {
              return false;
            }
          }
          else {
            return true;
          }
        }
        else {
          return true;
        }
      }

      else if (oField.type.toLowerCase() == 'select-one') {

        if (aValidation[iInt] == 'validateNotEmpty') {


          if (oField.selectedIndex == -1 || oField.options[oField.selectedIndex].value == '') {
            return false;
          }
          else {

            return true;
          }
        }
        else {
          return true;
        }

      }

      else if (oField.type.toLowerCase() == 'radio') {

        if (aValidation[iInt] == 'validateNotEmpty') {
          var blnChecked = false;
          for(var i=0; i<oField.form[oField.name].length; i++) {
            if (oField.form[oField.name][i].checked) {
              blnChecked = true;
            }
          }

          if (blnChecked) {
            return true;
          }
          else {
            return false;
          }
        }
        else {
          return true;
        }
      }
      else if (oField.type.toLowerCase() == 'checkbox') {

        if (aValidation[iInt] == 'validateNotEmpty') {
          if (oField.checked) {
            return true;
          }
          else {
            return false;
          }
        }
        else {
          return true;
        }
      }
      else {
        if (aValidation[iInt] == 'validateEmail') {
          var regEx = new RegExp('\\w+(.|\\w+)*\\@+(-|\\w)+\\.\\w+', 'igm');
        }
        else if (aValidation[iInt] == 'validateNotEmpty') {
          var regEx = new RegExp('.+', 'igm');
        }
        else if (aValidation[iInt] == 'validatePassword') {
          var regEx = new RegExp('^[\\w\\d]{6,21}$', 'igm');
        }
        else {
          var regEx = new RegExp('', 'igm');
        }

        if (!regEx.test(oField.value)) {
          return aValidation;
          break;
        }
        else {
          return true;
        }
      }

    }
  }
  else {
    return true;
  }

}



function validateForm(oForm) {

  var blnMasterContinue = true  

  clearValidationFlags(oForm);


  for (var i=0; i<oForm.length; i++) {

    var validated = validateField(oForm[i]);

    if (validated !== true) {
      blnMasterContinue = false;
      addValidationFlags(oForm[i], validated);
    }
     
  }

  if (blnMasterContinue) {
    return true;
  }
  else {
    alert('Some fields within the form are incomplete.\nPlease review the fields marked with an asterix [*]')
    return false;
  }
}










function triathlonFormCheck(iForm) {
  var blnSubmit = true;
  var regEx = new RegExp('[^\\d\\., ]+', 'igm');

  var oAmount = iForm.amount;
  var oGiftAid = iForm.MC_giftAid;

  var oDiv = iForm.getElementsByTagName('div');

  for (var i=oDiv.length-1; i>=0; i--) {
    oDiv[i].parentNode.removeChild(oDiv[i]);
  }

  if (regEx.test(oAmount.value) || oAmount.value.replace(/\s+/, '') == '') {
    var s = '<div class="error">Please ensure the box with your donation amount contains only numbers and the \'.\' charater</div>';
    oAmount.parentNode.innerHTML = s + oAmount.parentNode.innerHTML;    

    blnSubmit = false;
  }  

//  if (oGiftAid.checked == false) {
//    var s = '<div class="error">If you are a UK taxpayer, please don\'t forget to check the Gift Aid box. If you would prefer not to Gift Aid your donation, please click the \'Make donation\' button again.</div>';
//    oGiftAid.parentNode.innerHTML = s + oGiftAid.parentNode.innerHTML;    
//    blnSubmit = false;
//  }

  if (blnSubmit) {
    iForm.submit();
  }

}
