function Init() {
  if (DOMFL.GetElm("fullname")) DOMFL.GetElm("fullname").focus();
	if (DOMFL.GetElm("form")) DOMFL.SetEvent(DOMFL.GetElm("form"), "submit", ValidateFields);
	InitTextCounters();
}

function ValidateFields(e) {

  var form = document.createElement("div");
  var fullname = DOMFL.GetElm("fullname");
  var email = DOMFL.GetElm("email");
  var message = DOMFL.GetElm("message");

  var email_regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

  if (fullname.value.length == 0) {
    DOMFL.StopEvent(e);
		form.appendChild(CustomMessage("You must provide your full name."));
		form.appendChild(CustomTextField(fullname));
    DOMFL.ShowModalWindow(CustomForm(form, false, SetTextField));
    return;
	}
	
	if (email.value.length == 0) {
    DOMFL.StopEvent(e);
		form.appendChild(CustomMessage("You must provide your e-mail address."));
		form.appendChild(CustomTextField(email));
    DOMFL.ShowModalWindow(CustomForm(form, false, SetTextField));
    return;
	} else if (!email.value.match(email_regex)) {
		DOMFL.StopEvent(e);
		form.appendChild(CustomMessage("You must verify your e-mail address."));
		form.appendChild(CustomTextField(email));
    DOMFL.ShowModalWindow(CustomForm(form, false, SetTextField));
    return;
	}
	
	if (message.value.length == 0) {
	  DOMFL.StopEvent(e);
		form.appendChild(CustomMessage("You must provide your message."));
		form.appendChild(CustomTextarea(message));
    DOMFL.ShowModalWindow(CustomForm(form, false, SetTextarea));
    return;
	} else if (message.value.length > 2000) {
    DOMFL.StopEvent(e);
		form.appendChild(CustomMessage("Your message must be less than 2000 characters long."));
		form.appendChild(CustomTextarea(message));
    DOMFL.ShowModalWindow(CustomForm(form, false, SetTextarea));
    return;
	}

}

function InitTextCounters() {
	var textareas = DOMFL.GetElmsByTag("textarea", DOMFL.GetElm("mainarea"));
	for (var i = textareas.length - 1; i >= 0; i--) {
		if (!isNaN(parseInt(textareas[i].className, 10))) {
	    var l = DOMFL.GetElmsByTag("label", textareas[i].parentNode)[0];
	    var count = document.createElement("span");
			count.id = textareas[i].id + "_count";
			count.appendChild(DOMFL.Text(" (" + textareas[i].value.length + "/" + textareas[i].className + " characters)"));
	    l.appendChild(count);
	    DOMFL.SetEvent(textareas[i], "keyup", TextCounter);

		}
	}
}

function TextCounter(e) {
	var textarea = DOMFL.GetEventElm(e);
	var count = DOMFL.GetElm(textarea.id + "_count");
	if (count) {
		count.replaceChild(DOMFL.Text(" (" + textarea.value.length + "/" + textarea.className + " characters)"), count.childNodes[0]);
	}
}

DOMFL.RunWhenReady(Init);