/* Form Validator Author: Peter Tornstrand Homepage: http://www.tornstrand.com/scripts/javascript-form-validation/ Date: 2006-07-02 Version: 1.21 Set to false if you don't want the error messages */ var err = true; /* Set to true if you want modal javascript dialogues instead of DOM messages */ var modal = false; /* The type of container to create for the error message */ var errContainer = 'div'; var errorbgcolor = '#FF9999'; var validbgcolor = '#FFFFFF'; //#3399CC; var ValidatePersonalEmail = false; var theForm = getFormId(); /* Browser detect, need's a little work */ var ie; if (navigator.appVersion.indexOf("MSIE")!=-1) { ie = true; } else { ie = false; } function getFormId() { var frm = document.forms[0]; return frm; /* var totalforms = 0; var frms = document.getElementsByTagName('form'); for (var i=0; i 1) { alert('Too many forms to validate!'); } else { return document.getElementById(formtovalidate); } */ } function getElementId(type) { var frm = getFormId(); var total = 0; var el = frm.elements; for (var i=0; i"); return str1; } function showContactTimer () { var fieldArea = getFormId(); var msg = 'Sending Email...Loading...'; displayStatusmsg(fieldArea,msg,'none'); sentTimer = setTimeout("hideContactTimer()",6000); } function hideContactTimer () { var status = grabPosXML("status"); var fieldArea = getFormId(); var inputs = fieldArea.getElementsByTagName('input'); var inputsLen = inputs.length; var tAreas = fieldArea.getElementsByTagName('textarea'); var tAreasLen = tAreas.length; var msg = grabPosXML("confirmation"); if ( status == 'NOTOK' ) { displayStatusmsg(fieldArea,msg,'errorMessage'); } else if ( status == 'OK' ) { msg = 'Thank you! Your message has been sent.' displayStatusmsg(fieldArea,msg,'OK'); resetForm(); } } function hidemessage() { msg = 'Thank you! Your message has been sent.' displayStatusmsg(getFormId(),msg,'OK'); } function showmessage() { var fieldArea = getFormId(); var name = unCleanString(grabPosXML("name")); var email = unCleanString(grabPosXML("email")); var subject = unCleanString(grabPosXML("regarding")); var message = unCleanString(grabPosXML("message")); var msg = '

From: '+name+' ('+email+')


Subject: '+subject+'


Message:

'+message+'

Hide'; displayStatusmsg(fieldArea,msg,'none'); } function ajaxFunction(){ var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } return ajaxRequest; } var pos; // variable for posting information function loadXMLPosDoc(url,posData) { // branch for native XMLHttpRequest object pos = ajaxFunction(); if (pos) { pos.onreadystatechange = processPosChange; pos.open("POST", url, false); pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); pos.send(posData); } } function grabPosXML(tagName) { if (pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0]) { var resp = pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue; return resp; } else { displayStatusmsg(getFormId(),'Error submitting form, please try again.','errorMessage'); return false; } } function processPosChange() { // page loaded "complete" if (pos.readyState == 4) { // page is "OK" if (pos.status == 200) { if ( grabPosXML("status") == 'NOTOK' ) { displayStatusmsg(getFormId(),'There were problems Sending Email. Please check back in a couple minutes','errorMessage'); } } } } function addEvent(elm, evType, fn, useCapture) { if (ie) { /* var r = elm.attachEvent('on' + evType, fn); EventCache.add(elm, evType, fn); return r; */ elm.attachEvent('on' + evType, fn, false); } else { elm.addEventListener(evType, fn, useCapture); } } function getEventSrc(e) { if (!e) e = window.event; if (e.originalTarget) return e.originalTarget; else if (e.srcElement) return e.srcElement; } var EventCache = function(){ var listEvents = []; return { listEvents : listEvents, add : function(node, sEventName, fHandler, bCapture){ listEvents.push(arguments); }, flush : function(){ var i, item; for(i = listEvents.length - 1; i >= 0; i = i - 1){ item = listEvents[i]; if(item[0].removeEventListener){ item[0].removeEventListener(item[1], item[2], item[3]); }; /* From this point on we need the event names to be prefixed with 'on" */ if(item[1].substring(0, 2) != "on"){ item[1] = "on" + item[1]; }; if(item[0].detachEvent){ item[0].detachEvent(item[1], item[2]); }; item[0][item[1]] = null; }; } }; }(); /* Add onLoad events to start the whole thing */ function ajaxContact() { var frmEl = getFormId(); addEvent(frmEl, 'submit', validateFields, false); addEvent(frmEl, 'reset', resetForm, false); frmEl.onsubmit = function() { return false; } } if (ie) { window.attachEvent("onload", addBlursandHighlights, false); window.attachEvent("onload", attachConditions, false); //window.attachEvent("onload", validate, false); } else { window.addEventListener("load", addBlursandHighlights, false); window.addEventListener("load", attachConditions, false); } /*addEvent(window, 'load',ajaxContact, false); addEvent(window,'unload',EventCache.flush, false);*/ function doLtrim( value ) { var re = /\s*((\S+\s*)*)/; return value.replace(re, "$1"); } // Removes ending whitespaces function doRtrim( value ) { var re = /((\s*\S+)*)\s*/; return value.replace(re, "$1"); } // Removes leading and ending whitespaces function doTrim( value ) { return doLtrim(doRtrim(value)); } // ***********************************************Validate zipcode *************************************************************************************** function ValidateZipCode(StrValue, StrCountry) { if (doTrim(StrValue)== "") { return false; } if (StrCountry =="USA") { if (StrValue.length != 5) { return false; } else if (isInteger(StrValue) == false) { return false; } } return true; } // ***********************************************Validate phone Number *************************************************************************************** var digits = "0123456789"; var validWorldPhoneChars = "()-. "; var minDigitsInIPhoneNumber = 10; function isInteger(s) { var i; for (i = 0; i < s.length; i++) { // Check that current character is number. var c = s.charAt(i); if (((c < "0") || (c > "9"))) return false; } return true; } function stripCharsInBag(s, bag) { var i; var returnString = ""; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c; } return returnString; } function ValidatePhoneNumber(strPhone) { s = stripCharsInBag(strPhone, validWorldPhoneChars); return (isInteger(s) && s.length >= minDigitsInIPhoneNumber); } function CheckPersonalEmail(StrEmail) { var frm = document.forms[0]; var PersonalEmailFlag = false; var DotIndex = StrEmail.lastIndexOf("."); var AtIndex = StrEmail.indexOf("@") + 1; var DomainName = StrEmail.substring(AtIndex, DotIndex).toLowerCase(); var StrPersonalEmails = frm.PersonalEmailsLkp.value.toLowerCase(); var ArrPersonalEmails = StrPersonalEmails.split("~"); for(i = 0; i < ArrPersonalEmails.length; i++) { if (doTrim(DomainName) == doTrim(ArrPersonalEmails[i])) { PersonalEmailFlag = true; break; } } return PersonalEmailFlag; } // **********************************************************CustomFade.js******************************************************************************************** // @name The Fade Anything Technique // @namespace http://www.axentric.com/aside/fat/ // @version 1.0-RC1 // @author Adam Michela var Fat = { make_hex : function (r,g,b) { r = r.toString(16); if (r.length == 1) r = '0' + r; g = g.toString(16); if (g.length == 1) g = '0' + g; b = b.toString(16); if (b.length == 1) b = '0' + b; return "#" + r + g + b; }, fade_all : function () { var a = document.getElementsByTagName("*"); for (var i = 0; i < a.length; i++) { var o = a[i]; var r = /fade-?(\w{3,6})?/.exec(o.className); if (r) { if (!r[1]) r[1] = ""; if (o.id) Fat.fade_element(o.id,null,1000,"#"+r[1]); } } }, fade_element : function (id, fps, duration, from, to) { if (!fps) fps = 30; if (!duration) duration = 3000; if (!from || from=="#") from = "#CCCCCC"; if (!to) to = this.get_bgcolor(id); var frames = Math.round(fps * (duration / 1000)); var interval = duration / frames; var delay = interval; var frame = 0; if (from.length < 7) from += from.substr(1,3); if (to.length < 7) to += to.substr(1,3); var rf = parseInt(from.substr(1,2),16); var gf = parseInt(from.substr(3,2),16); var bf = parseInt(from.substr(5,2),16); var rt = parseInt(to.substr(1,2),16); var gt = parseInt(to.substr(3,2),16); var bt = parseInt(to.substr(5,2),16); var r,g,b,h; while (frame < frames) { r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames)); g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames)); b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames)); h = this.make_hex(r,g,b); setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay); frame++; delay = interval * frame; } // setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay); setTimeout("Fat.set_bgcolor('"+id+"','')", delay); }, fade_error_out : function (id, fps, duration, from, to) { if (!fps) fps = 30; if (!duration) duration = 3000; if (!from || from=="#") from = "#CCCCCC"; if (!to) to = this.get_bgcolor(id); var frames = Math.round(fps * (duration / 1000)); var interval = duration / frames; var delay = interval; var frame = 0; if (from.length < 7) from += from.substr(1,3); if (to.length < 7) to += to.substr(1,3); var rf = parseInt(from.substr(1,2),16); var gf = parseInt(from.substr(3,2),16); var bf = parseInt(from.substr(5,2),16); var rt = parseInt(to.substr(1,2),16); var gt = parseInt(to.substr(3,2),16); var bt = parseInt(to.substr(5,2),16); var r,g,b,h; while (frame < frames) { r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames)); g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames)); b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames)); h = this.make_hex(r,g,b); setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay); frame++; delay = interval * frame; } // setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay); // setTimeout("Fat.set_bgcolor('"+id+"','')", delay); var el = document.getElementById(id); setTimeout("Fat.replace_class('"+id+"')", delay); }, replace_class : function (id) { var el = document.getElementById(id); el.className = el.className.replace('error',''); }, set_bgcolor : function (id, c) { var o = document.getElementById(id); o.style.backgroundColor = c; }, get_bgcolor : function (id) { var o = document.getElementById(id); while(o) { var c; if (window.getComputedStyle) c = window.getComputedStyle(o,null).getPropertyValue("background-color"); if (o.currentStyle) c = o.currentStyle.backgroundColor; if ((c != "" && c != "transparent") || o.tagName == "BODY") { break; } o = o.parentNode; } if (c == undefined || c == "" || c == "transparent") c = "#FFFFFF"; var rgb = c.match(/rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/); if (rgb) c = this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3])); return c; } }