// JavaScript Document


// Field Focus on Label Click - Jeremy Keith's script as described in "DOM Scripting"

function focusLabels() {
  if (!document.getElementsByTagName) return false;
  var labels = document.getElementsByTagName("label");
  for (var i=0; i<labels.length; i++) {
    if (!labels[i].getAttribute("for")) continue;
    labels[i].onclick = function() {
      var id = this.getAttribute("for");
      if (!document.getElementById(id)) return false;
      var element = document.getElementById(id);
      element.focus();
    }
  }
}

// Form Validator -- Modified from Jeremy Keith's script as described in "DOM Scripting"
				  
function validateForm(whichform) {
	for (var i=0; i<whichform.elements.length; i++) {
			var element = whichform.elements[i];
			if (element.className.indexOf("required") != -1) {
				if (!isFilled(element)) {
						element.className = element.className + "mf";
						document.getElementById("mf_err").style.display = "list-item";
						document.getElementById("alert").style.display = "block";
						return false;
				}
			}
			if (element.className.indexOf("email") != -1) {
				if (!isEmail(element)) {
					document.getElementById("email_err").style.display = "list-item";
					document.getElementById("alert").style.display = "block";
					return false;
				}
			}
	}
	return true;
}
	
function isFilled(field) {
  if (field.value.length < 1) {
    return false;
  } else {
    return true;
  }
}

function isEmail(field) {
  if (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
    return false;
  } else {
    return true;
  }
}

// Reset Form Fields

function resetFields(whichform) {
        for (var i=0; i<whichform.elements.length; i++) {
          var element = whichform.elements[i];
          if (element.type == "submit") continue;
          if (!element.defaultValue) continue;
          element.onfocus = function() {
             if (this.value == this.defaultValue) {
                this.value = "";
             }
          }
          element.onblur  = function() {
             if (this.value == "") {
                this.value = this.defaultValue;
             }
          }
        }
}

// Prepare Forms -- Jeremy Keith's script as described in "DOM Scripting"

function prepareForms() {
	for (var i=0; i<document.forms.length; i++) {
		var thisform = document.forms[i];
		resetFields(thisform)
	}
}


addLoadEvent(focusLabels);
addLoadEvent(prepareForms);
addLoadEvent(setMaxLength);

// Set maxlength on textfields

function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength)
		this.relatedElement.className = 'toomuch';
	else
		this.relatedElement.className = '';
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

