//<![CDATA[
/******************************************************************************
 The Analogue Object Forms Module v1.1.06
 Copyright (c) 2005 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); }; }; elements = this.elements(forms[i]); for (var k=0; k<elements.length; k++) { var element = elements[k]; if (/repeat/.test(element.className)) this.repeat.onload(element); if (/toggle/.test(element.id) && typeof element.onclick != "function") { element.checked = false; element.onclick = function() { analogue.forms.toggle(this); }; }; }; }; this.focus(forms[0]); },
    onsubmit : function(form) { if (/required/.test(form.innerHTML)) { return this.validate.form(form); }; },
    validate : {
      alert : "/assets/images/alert.png",
      lookup : "/assets/vb/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)) { if (element.previousSibling && /img/i.test(element.previousSibling.nodeName)) { element.parentNode.removeChild(element.previousSibling); }; 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!"); this.error(element); return false; }; if (/email/.test(element.id)) { if (this.email(element.value) != "True") { alert("Please enter a valid email address!"); this.error(element); 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; },
      error : function(element) { var image = document.createElement("IMG"); image.src = this.alert; image.alt = "Required Field"; image.className = "error"; element.parentNode.insertBefore(image, element.nextSibling); element.focus(); }
    },
    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"); }; },
    repeat : {
      onload : function(element) { var anchor = document.getElementById(element.id + "-add"); if (!anchor) { anchor = document.createElement("A"); var text = document.createTextNode("Add another " + element.id); anchor.setAttribute("href", "#"); anchor.className = "repeat"; anchor.setAttribute("title", "Add another " + element.id); element.appendChild(anchor); anchor.appendChild(text); anchor.onclick = function() { analogue.forms.repeat.repeat(this); return false; }; }; var counter = document.getElementById(element.id + "-counter"); if (!counter) { counter = document.createElement("INPUT"); counter.setAttribute("type","hidden"); counter.setAttribute("value","1"); counter.setAttribute("id", element.id + "-counter"); counter.setAttribute("name", element.id + "-counter"); }; var form = element.parentNode; while (form && form.tagName.toUpperCase() != "FORM")  { form = form.parentNode; }; form.appendChild(counter); },
      repeat : function(element) { var sourceNode = element.parentNode; if (sourceNode && /repeat/.test(sourceNode.className)) { var counter = document.getElementById(sourceNode.id + "-counter"); if(!counter) return; count = parseInt(counter.value) + 1; var suffix = "-" + count; var newNode = sourceNode.cloneNode(true); newNode.id = sourceNode.id + suffix; newNode.className = sourceNode.className.replace("repeat","removable"); var newElements = analogue.forms.elements(newNode); for (var i=0; i<newElements.length; i++) { var newElement = newElements[i]; switch (newElement.nodeName) { case "A" : if (/repeat/.test(newElement.className)) newElement.parentNode.removeChild(newElement); break; case "INPUT" : case "SELECT" : case "TEXTAREA" : newElement.name += suffix; newElement.id += suffix; case "LABEL" : newElement.htmlFor += suffix; break; }; }; var anchor = document.createElement("A"); var text = document.createTextNode("Remove this " + sourceNode.id); anchor.setAttribute("href", "#"); anchor.className = "remove"; anchor.setAttribute("title", "Remove this " + sourceNode.id); newNode.appendChild(anchor); anchor.appendChild(text); anchor.onclick = function() { analogue.forms.repeat.remove(this); return false; }; var insertNode = sourceNode.nextSibling; sourceNode.parentNode.insertBefore(newNode, insertNode); counter.value = count; }; return false; },
      remove : function(element) { var removeNode = element.parentNode; while (removeNode && (!/removable/.test(removeNode.className))) { removeNode = removeNode.parentNode; }; removeNode.parentNode.removeChild(removeNode); return false; }
    },
    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; }; }; },
    elements : function(element, list) { if(!list) list = new Array(); if(element.nodeType == 1) { list[list.length] = element; for (var i=0; i<element.childNodes.length; i++) { this.elements(element.childNodes[i], list); }; return list; }; }
  }
});
function RefreshImage(valImageId) {
	var objImage = document.images[valImageId];
	if (objImage == undefined) {
		return;
	}
	var now = new Date();
	objImage.src = objImage.src.split('?')[0] + '?x=' + now.toUTCString();
}
//]]>
