﻿//<![CDATA[
/******************************************************************************
 Analogue Forms v1.1205
 Copyright (c) 2006 Randall Lee Spence <http://www.analogueweb.com>
 This script is licensed under the CC-GNU Lesser General Public License
 <http://creativecommons.org/licenses/LGPL/2.1/>
******************************************************************************/
Object.extend(analogue, {
  forms : {
    onload : function() { var forms = document.getElementsByTagName("FORM"); for (var i=0; i<forms.length; i++) { if (typeof forms[i].onsubmit != "function") { forms[i].onsubmit = function() { return analogue.forms.onsubmit(this); }; }; }; this.focus(forms[0]); var inputs = document.getElementsByTagName("INPUT"); for (var k=0; k<inputs.length; k++) { if (/toggle/.test(inputs[k].id) && typeof inputs[k].onclick != "function") { nputs[k].checked = false; inputs[k].onclick = function() { analogue.forms.toggle(this); }; }; }; },
    onsubmit : function(form) { if (/required/.test(form.innerHTML)) { return this.validate.form(form); }; },
    validate : {
      alert : "/assets/images/alert.png",
      lookup : "/assets/vbs/mxlookup.asp",
      form : function(form) { var elements = form.elements; for (var i=0; i<elements.length; i++) { var element = elements[i]; if (/required/.test(element.className)) { var valid = true; switch (element.tagName.toLowerCase()) { case "input" : switch (element.type.toLowerCase()) { case "checkbox" : case "radio" : valid = element.checked; break; default : valid = !this.empty((element.value)); }; break; case "select" : valid = !this.empty(element.options[element.selectedIndex].value); if (valid) valid = !element.selectedIndex == "0"; break; case "textarea" : valid = !this.empty(element.value); break; case "fieldset" : valid = this.group(element); break; }; if (!valid) { (element.title != "") ? alert(element.title) : alert("Please enter the required field!"); element.focus(); return false; }; if (/email/.test(element.id)) { if (this.email(element.value) != "True") { alert("Please enter a valid email address!"); element.focus(); return false; }; }; }; }; return true; },
      empty : function(string) { var expression = /^\s+$/; return ((string == null) || (string.length == 0) || expression.test(string)); },
      email : function(string) { var xmlhttp = null; var expression = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/; var response = expression.test(string) ? "True" : "False"; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { return response; }; }; } else { return response; }; xmlhttp.open ("GET", this.lookup + "?email=" + string, false); xmlhttp.send (null); xmlhttp.status == 200 ? response = xmlhttp.responseText : response; return response; },
      group : function(element) { var valid = null; if (element.nodeType != 1) return false; if (element.tagName.toLowerCase() == "input") { switch (element.type.toLowerCase()) { case "checkbox" : case "radio" : valid = element.checked; break; default : valid = element.value; }; } else { valid = element.value; }; if (valid && !this.empty(valid)) return true; for (var i=0; i<element.childNodes.length; i++) { if (this.group(element.childNodes[i])) return true; }; return false; }
    },
    toggle : function(element) {  var target = document.getElementById(element.id.split("-")[1]); if (element.checked) { target.className = target.className.replace("hide","show"); } else { target.className = target.className.replace("show","hide"); }; },
    focus : function(form) { var elements = form.elements; for (var i=0; i<elements.length; i++) { element = elements[i]; if (element.type != "hidden" && element.nodeName != "FIELDSET" && !element.disabled) { element.focus(); element.select(); break; }; }; }
  }
});
//]]>