var isIE =(navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin=(navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera=(navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function cbFlashDetect(){
// APRIL 2008,ControlVersion, GetSwfVer, DetectFlashVer can all be removed.
// uses SWFOBJECT detection method now.
var installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
if (installedVer.major < 8){
	document.location = "/getFlash";
}
}

function ControlVersion()
{var version;
var axo;
var e;

try {axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
version=axo.GetVariable("$version");} catch (e) {}
if (!version){try {axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");version="WIN 6,0,21,0";axo.AllowScriptAccess="always";version=axo.GetVariable("$version");} catch (e) {}}
if (!version){try {axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");version=axo.GetVariable("$version");} catch (e) {}}if (!version){try {axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");version="WIN 3,0,18,0";} catch (e) {}}if (!version){try {axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");version="WIN 2,0,0,11";} catch (e) {version=-1;}}return version;}
function GetSwfVer(){var flashVer=-1;

if (navigator.plugins != null && navigator.plugins.length > 0) {if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {var swVer2=navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
var flashDescription=navigator.plugins["Shockwave Flash" + swVer2].description;			
var descArray=flashDescription.split(" ");
var tempArrayMajor=descArray[2].split(".");
var versionMajor=tempArrayMajor[0];
var versionMinor=tempArrayMajor[1];
if ( descArray[3] != "" ) {tempArrayMinor=descArray[3].split("r");} else {tempArrayMinor=descArray[4].split("r");}var versionRevision=tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
var flashVer=versionMajor + "." + versionMinor + "." + versionRevision;}}else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer=4;
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer=3;
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer=2;
else if ( isIE && isWin && !isOpera ) {flashVer=ControlVersion();}	
return flashVer;}
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{versionStr=GetSwfVer();
if (versionStr==-1 ) {return false;} else if (versionStr != 0) {if(isIE && isWin && !isOpera) {tempArray=versionStr.split(" "); 
tempString=tempArray[1];			
versionArray=tempString.split(",");	} else {versionArray     =versionStr.split(".");}var versionMajor     =versionArray[0];
var versionMinor     =versionArray[1];
var versionRevision  =versionArray[2];
if (versionMajor > parseFloat(reqMajorVer)) {return true;} else if (versionMajor==parseFloat(reqMajorVer)) {if (versionMinor > parseFloat(reqMinorVer))
return true;
else if (versionMinor==parseFloat(reqMinorVer)) {if (versionRevision >= parseFloat(reqRevision))
return true;}}return false;}}
function MM_findObj(n, d) { //v4.01
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;}function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}}function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;}function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}function MM_openBrWindow(theURL,winName,features) { //v2.0
newwin=window.open(theURL,winName,features);
newwin.focus()}
// Marshill custom begin 
function isValidEmail(src) {var emailReg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/; 
var regex=new RegExp(emailReg); 
return regex.test(src); }function jumpError() {clearInterval(timerA); 
if (firstObject != "aa") {firstObject.focus(); }}function setError(mytext, errType) {newDesc=""; 
fullDesc=""; 
for (xx=0; xx < mytext.length; xx++) {newDesc=mytext.substr(xx, 1); 
newDescUpper=newDesc.toUpperCase(); 
if (newDesc==newDescUpper) {fullDesc += " " + newDesc; }else {if (xx==0) {fullDesc += newDescUpper; }else {fullDesc += newDesc; }}}if (errType != undefined) {fullDesc=fullDesc + " " + "( " + errType + " )"; }return '- ' + '' + fullDesc + '' + newLine; }function formChecker(myform) {tempRadio=new Object();
count=1;
firstObject="aa";
err='';
if (document.getElementById("formChecker_errorText")) {errMode=1; 
newLine="<BR>"; }else {errMode=0; 
newLine="\n"; }for (i=0; i < myform.elements.length; i++) {itemErr=0;
myform.elements[i].style.backgroundColor=''; 
myform.elements[i].style.borderColor=''; 


if (myform.elements[i].id=="email" && myform.elements[i].type=='text' ){if (isValidEmail(myform.elements[i].value)){}else{itemErr=1;
err=err + setError(myform.elements[i].id, 'not a valid e-mail');}}

if (myform.elements[i].id != "no" && myform.elements[i].id != "email" ){if (myform.elements[i].type=='text' || myform.elements[i].type=='textarea' || myform.elements[i].type=='select-one') {if(myform.elements[i].value==''){itemErr=1;
err=err + setError(myform.elements[i].id);}}
if (myform.elements[i].type=="radio" ) {radioName=myform.elements[i].name;
if (tempRadio[radioName]==undefined){tempRadio[radioName]=1;
isChecked=0; 
for(j=0; j < myform.elements[radioName].length;j++ ) {
	if (myform.elements[radioName][j].checked ){
 		myform.elements[radioName][j].style.backgroundColor='#FFFFD9'; 
		 //special case to check if Members of a M.B. Church in Canada is selected and name of church is empty
		 if(myform.elements[radioName][j].value == "Members of a M.B. Church in Canada"){
			myform.name_of_church.id = "name_of_church";
			}
		 //ends	
		isChecked=1;
		break;
	}
}
if (isChecked==0 )
{itemErr=1;
err=err + setError(myform.elements[i].id);
}}}}
if(itemErr){if ( firstObject=="aa"){firstObject=myform.elements[i];}myform.elements[i].style.backgroundColor='#FFFFD9'; 
myform.elements[i].style.borderColor='red'; }}document.returnValue=false; 
if (err) {
if (errMode==0 ) {alert('Please provide the following information:' + newLine + newLine + err); }if (errMode==1) {bigErr="<br><img src='/images/icon_caution.gif'><br>" + newLine + err + newLine + "</p>"; 
document.getElementById("formChecker_errorText").innerHTML=bigErr; 
document.location.href='#formCheckerError'; 
if (count==1) {timerA=setInterval('jumpError()', 2300); }else {jumpError(); }}}else {if (errMode==1) {document.getElementById("formChecker_errorText").innerHTML=""; }document.returnValue=true; }}function formatCurrency(num) {num=num.toString().replace(/\$|\,/g,'');
if(isNaN(num))num="0"; 
sign=(num==(num=Math.abs(num))); 
num=Math.floor(num * 100 + 0.50000000001); 
cents=num % 100; 
num=Math.floor(num / 100).toString(); 
if(cents < 10)cents="0" + cents; 
for (var i=0; i < Math.floor((num.length-(1 + i))/3); i++) num=num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
return (((sign) ? '':'-') + '$' + num + '.' + cents); }function formatCurrencyB(num) {num=num.toString().replace(/\$|\,/g,'');
if(isNaN(num))num="0"; 
sign=(num==(num=Math.abs(num))); 
num=Math.floor(num * 100 + 0.50000000001); 
cents=num % 100; 
num=Math.floor(num / 100).toString(); 
if(cents < 10)cents="0" + cents; 
for (var i=0; i < Math.floor((num.length-(1 + i))/3); i++) num=num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
cents="00"; 
return (((sign) ? '':'-') + '$' + num + '.' + cents); }function formatNumber(num, defaultvalue, maxVal) {num=num.toString().replace(/\$|\,/g,'');
if(isNaN(num)) {num=defaultvalue; }else {if (num > maxVal) {num=defaultvalue; }}return num; }function Trim(TRIM_VALUE) {if(TRIM_VALUE.length < 1) {return""; }TRIM_VALUE=RTrim(TRIM_VALUE); 
TRIM_VALUE=LTrim(TRIM_VALUE); 
if(TRIM_VALUE=="") {return ""; }else {return TRIM_VALUE; }}//End Function
function RTrim(VALUE) {var w_space=String.fromCharCode(32); 
var v_length=VALUE.length; 
var strTemp=""; 
if(v_length < 0) {return""; }var iTemp=v_length-1; 
while(iTemp >-1) {if(VALUE.charAt(iTemp)==w_space) {}else {strTemp=VALUE.substring(0, iTemp + 1); 
break; }iTemp=iTemp-1; }//End While
return strTemp; }//End Function
function LTrim(VALUE) {var w_space=String.fromCharCode(32); 
if(v_length < 1) {return""; }var v_length=VALUE.length; 
var strTemp=""; 
var iTemp=0; 
while(iTemp < v_length) {if(VALUE.charAt(iTemp)==w_space) {}else {strTemp=VALUE.substring(iTemp, v_length); 
break; }iTemp=iTemp + 1; }//End While
return strTemp; }

function ask(data, resultURL) {if (confirm(data)) {document.location=resultURL; }}function tellMePrice(myObj, idNum) {tellTempArray=new Array(); 
tellTempArray2=eval("array" + idNum); 
for (i=0; i < tellTempArray2.length; i++) {tellTempArray.push(document.getElementById(tellTempArray2[i]).value); }tellTempArray.sort(); 
tellTemp=""; 
for(i=0; i < tellTempArray.length; i ++ ) {tellTemp=tellTemp + "_" + tellTempArray[i]; }if ( eval("drop_" + idNum + tellTemp) ) {document.getElementById("myPrice_" + idNum).innerHTML=formatCurrency(eval("drop_" + idNum + tellTemp)); }}
function validatePhone(m, evt) {var n; 
var p; 
var p1; 
goodNumber=""; 
finalNumber=""; 
if ( typeof(eval('evt')) != 'undefined' ) {var charCode=(evt.which) ? evt.which : event.keyCode}else {charCode=1; }if (charCode != 8) {myNumber=m.value; 
myNumber=myNumber.replace(" ", ""); 
for (i=0; i < myNumber.length; i++) {currentNum=myNumber.substr(i, 1); 
if ( !isNaN(currentNum) ) {goodNumber=goodNumber + currentNum; }}finalNumber=goodNumber; 
if (goodNumber.length >= 3) {finalNumber="(" + goodNumber.substr(0, 3) + ") "; }if (goodNumber.length >= 4) {finalNumber=finalNumber + goodNumber.substr(3, 3); }if (goodNumber.length >= 6) {finalNumber=finalNumber + "-" + goodNumber.substr(6, 4); }m.value=finalNumber; }}function addLoadEvent(func) {var oldonload=window.onload; 
if (typeof window.onload != 'function') {window.onload=func; }else {window.onload=function() {if (oldonload) {oldonload(); }func(); }}}
//SWF OBJECT
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!document.getElementById){return;}this.DETECT_KEY=_b?_b:"detectflash";
this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
this.params=new Object();
this.variables=new Object();
this.attributes=new Array();
if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
if(c){this.addParam("bgcolor",c);}var q=_8?_8:"high";
this.addParam("quality",q);
this.setAttribute("useExpressInstall",_7);
this.setAttribute("doExpressInstall",false);
var _d=(_9)?_9:window.location;
this.setAttribute("xiRedirectUrl",_d);
this.setAttribute("redirectUrl","");
if(_a){this.setAttribute("redirectUrl",_a);}};
deconcept.SWFObject.prototype={setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();
var key;
var _18=this.getVariables();
for(key in _18){_16.push(key+"="+_18[key]);}return _16;},getSWFHTML:function(){var _19="";
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";
_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
var _1a=this.getParams();
for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");
if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";
_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
var _1d=this.getParams();
for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");
if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);
if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);
this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
document.title=document.title.slice(0,47)+"-Flash Player Installation";
this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;
n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};
deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);
if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];
if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}return _23;};
deconcept.PlayerVersion=function(_27){this.major=_27[0]!=null?parseInt(_27[0]):0;
this.minor=_27[1]!=null?parseInt(_27[1]):0;
this.rev=_27[2]!=null?parseInt(_27[2]):0;};
deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};
deconcept.util={getRequestParameter:function(_29){var q=document.location.search||document.location.hash;
if(q){var _2b=q.substring(1).split("&");
for(var i=0;i<_2b.length;i++){if(_2b[i].substring(0,_2b[i].indexOf("="))==_29){return _2b[i].substring((_2b[i].indexOf("=")+1));}}}return "";}};
deconcept.SWFObjectUtil.cleanupSWFs=function(){if(window.opera||!document.all){return;}var _2d=document.getElementsByTagName("OBJECT");
for(var i=0;i<_2d.length;i++){_2d[i].style.display="none";for(var x in _2d[i]){if(typeof _2d[i][x]=="function"){_2d[i][x]=function(){};}}}};
deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};
__flash_savedUnloadHandler=function(){};
if(typeof window.onunload=="function"){var _30=window.onunload;
window.onunload=function(){deconcept.SWFObjectUtil.cleanupSWFs();_30();};}else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}};
if(typeof window.onbeforeunload=="function"){var oldBeforeUnload=window.onbeforeunload;
window.onbeforeunload=function(){deconcept.SWFObjectUtil.prepUnload();
oldBeforeUnload();};}else{window.onbeforeunload=deconcept.SWFObjectUtil.prepUnload;}if(Array.prototype.push==null){Array.prototype.push=function(_31){this[this.length]=_31;
return this.length;};}var getQueryParamValue=deconcept.util.getRequestParameter;
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;

//LIVEVALIDATION
var LiveValidation=function(B,A){this.initialize(B,A)};LiveValidation.TEXTAREA=1;LiveValidation.TEXT=2;LiveValidation.PASSWORD=3;LiveValidation.CHECKBOX=4;LiveValidation.SELECT=5;LiveValidation.massValidate=function(C){var D=true;for(var B=0,A=C.length;B<A;++B){var E=C[B].validate();if(D){D=E}}return D};LiveValidation.prototype={validClass:"LV_valid",invalidClass:"LV_invalid",messageClass:"LV_validation_message",validFieldClass:"LV_valid_field",invalidFieldClass:"LV_invalid_field",initialize:function(D,C){var A=this;if(!D){throw new Error("LiveValidation::initialize-No element reference or element id has been provided!")}this.element=D.nodeName?D:document.getElementById(D);if(!this.element){throw new Error("LiveValidation::initialize-No element with reference or id of '"+D+"' exists!")}this.validations=[];this.elementType=this.getElementType();this.form=this.element.form;var B=C||{};this.validMessage=B.validMessage||"Thankyou!";this.insertAfterWhatNode=B.insertAfterWhatNode||this.element;this.onValid=B.onValid||function(){this.insertMessage(this.createMessageSpan());this.addFieldClass()};this.onInvalid=B.onInvalid||function(){this.insertMessage(this.createMessageSpan());this.addFieldClass()};this.onlyOnBlur=B.onlyOnBlur||false;this.wait=B.wait||0;this.onlyOnSubmit=B.onlyOnSubmit||false;if(this.form){this.formObj=LiveValidationForm.getInstance(this.form);this.formObj.addField(this)}this.element.onfocus=function(E){A.doOnFocus()};if(!this.onlyOnSubmit){switch(this.elementType){case LiveValidation.CHECKBOX:this.element.onclick=function(E){A.validate()};case LiveValidation.SELECT:this.element.onchange=function(E){A.validate()};break;default:if(!this.onlyOnBlur){this.element.onkeyup=function(E){A.deferValidation()}}this.element.onblur=function(E){A.doOnBlur()}}}},add:function(A,B){this.validations.push({type:A,params:B||{}});return this},deferValidation:function(B){if(this.wait>=300){this.removeMessageAndFieldClass()}var A=this;if(this.timeout){clearTimeout(A.timeout)}this.timeout=setTimeout(function(){A.validate()},A.wait)},doOnBlur:function(A){this.focused=false;this.validate(A)},doOnFocus:function(A){this.focused=true;this.removeMessageAndFieldClass()},getElementType:function(){switch(true){case (this.element.nodeName=="TEXTAREA"):return LiveValidation.TEXTAREA;case (this.element.nodeName=="INPUT"&&this.element.type=="text"):return LiveValidation.TEXT;case (this.element.nodeName=="INPUT"&&this.element.type=="password"):return LiveValidation.PASSWORD;case (this.element.nodeName=="INPUT"&&this.element.type=="checkbox"):return LiveValidation.CHECKBOX;case (this.element.nodeName=="SELECT"):return LiveValidation.SELECT;case (this.element.nodeName=="INPUT"):throw new Error("LiveValidation::getElementType-Cannot use LiveValidation on an "+this.element.type+" input!");default:throw new Error("LiveValidation::getElementType-Element must be an input, select, or textarea!")}},doValidations:function(){this.validationFailed=false;for(var C=0,A=this.validations.length;C<A;++C){var B=this.validations[C];switch(B.type){case Validate.Presence:case Validate.Confirmation:case Validate.Acceptance:this.displayMessageWhenEmpty=true;this.validationFailed=!this.validateElement(B.type,B.params);break;default:this.validationFailed=!this.validateElement(B.type,B.params);break}if(this.validationFailed){return false}}this.message=this.validMessage;return true},validateElement:function(A,C){var D=(this.elementType==LiveValidation.SELECT)?this.element.options[this.element.selectedIndex].value:this.element.value;if(A==Validate.Acceptance){if(this.elementType!=LiveValidation.CHECKBOX){throw new Error("LiveValidation::validateElement-Element to validate acceptance must be a checkbox!")}D=this.element.checked}var E=true;try{A(D,C)}catch(B){if(B instanceof Validate.Error){if(D!==""||(D===""&&this.displayMessageWhenEmpty)){this.validationFailed=true;this.message=B.message;E=false}}else{throw B}}finally{return E}},validate:function(){var A=this.doValidations();if(A){this.onValid();return true}else{this.onInvalid();return false}},createMessageSpan:function(){var A=document.createElement("span");var B=document.createTextNode(this.message);A.appendChild(B);return A},insertMessage:function(B){this.removeMessage();if((this.displayMessageWhenEmpty&&(this.elementType==LiveValidation.CHECKBOX||this.element.value==""))||this.element.value!=""){var A=this.validationFailed?this.invalidClass:this.validClass;B.className+=" "+this.messageClass+" "+A;if(this.insertAfterWhatNode.nextSibling){this.insertAfterWhatNode.parentNode.insertBefore(B,this.insertAfterWhatNode.nextSibling)}else{this.insertAfterWhatNode.parentNode.appendChild(B)}}},addFieldClass:function(){this.removeFieldClass();if(!this.validationFailed){if(this.displayMessageWhenEmpty||this.element.value!=""){if(this.element.className.indexOf(this.validFieldClass)==-1){this.element.className+=" "+this.validFieldClass}}}else{if(this.element.className.indexOf(this.invalidFieldClass)==-1){this.element.className+=" "+this.invalidFieldClass}}},removeMessage:function(){var A;var B=this.insertAfterWhatNode;while(B.nextSibling){if(B.nextSibling.nodeType===1){A=B.nextSibling;break}B=B.nextSibling}if(A&&A.className.indexOf(this.messageClass)!=-1){this.insertAfterWhatNode.parentNode.removeChild(A)}},removeFieldClass:function(){if(this.element.className.indexOf(this.invalidFieldClass)!=-1){this.element.className=this.element.className.split(this.invalidFieldClass).join("")}if(this.element.className.indexOf(this.validFieldClass)!=-1){this.element.className=this.element.className.split(this.validFieldClass).join(" ")}},removeMessageAndFieldClass:function(){this.removeMessage();this.removeFieldClass()}};var LiveValidationForm=function(A){this.initialize(A)};LiveValidationForm.getInstance=function(A){if(!A.id){A.id="formId_"+new Date().valueOf()}if(!window["LiveValidationForm_"+A.id]){window["LiveValidationForm_"+A.id]=new LiveValidationForm(A)}return window["LiveValidationForm_"+A.id]};LiveValidationForm.prototype={initialize:function(B){this.element=B;this.fields=[];var A=this;this.element.onsubmit=function(){return LiveValidation.massValidate(A.fields)}},addField:function(A){this.fields.push(A)}};var Validate={Presence:function(B,C){var C=C||{};var A=C.failureMessage||"Can't be empty!";if(B===""||B===null||B===undefined){Validate.fail(A)}return true},Numericality:function(J,E){var A=J;var J=Number(J);var E=E||{};var F=((E.minimum)||(E.minimum==0))?E.minimum:null;var C=((E.maximum)||(E.maximum==0))?E.maximum:null;var D=((E.is)||(E.is==0))?E.is:null;var G=E.notANumberMessage||"Must be a number!";var H=E.notAnIntegerMessage||"Must be an integer!";var I=E.wrongNumberMessage||"Must be "+D+"!";var B=E.tooLowMessage||"Must not be less than "+F+"!";var K=E.tooHighMessage||"Must not be more than "+C+"!";if(!isFinite(J)){Validate.fail(G)}if(E.onlyInteger&&(/\.0+$|\.$/.test(String(A))||J!=parseInt(J))){Validate.fail(H)}switch(true){case (D!==null):if(J!=Number(D)){Validate.fail(I)}break;case (F!==null&&C!==null):Validate.Numericality(J,{tooLowMessage:B,minimum:F});Validate.Numericality(J,{tooHighMessage:K,maximum:C});break;case (F!==null):if(J<Number(F)){Validate.fail(B)}break;case (C!==null):if(J>Number(C)){Validate.fail(K)}break}return true},Format:function(C,D){var C=String(C);var D=D||{};var A=D.failureMessage||"Not valid!";var B=D.pattern||/./;if(!B.test(C)){Validate.fail(A)}return true},Email:function(B,C){var C=C||{};var A=C.failureMessage||"Must be a valid email address!";Validate.Format(B,{failureMessage:A,pattern:/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i});return true},Length:function(F,G){var F=String(F);var G=G||{};var E=((G.minimum)||(G.minimum==0))?G.minimum:null;var H=((G.maximum)||(G.maximum==0))?G.maximum:null;var C=((G.is)||(G.is==0))?G.is:null;var A=G.wrongLengthMessage||"Must be "+C+" characters long!";var B=G.tooShortMessage||"Must not be less than "+E+" characters long!";var D=G.tooLongMessage||"Must not be more than "+H+" characters long!";switch(true){case (C!==null):if(F.length!=Number(C)){Validate.fail(A)}break;case (E!==null&&H!==null):Validate.Length(F,{tooShortMessage:B,minimum:E});Validate.Length(F,{tooLongMessage:D,maximum:H});break;case (E!==null):if(F.length<Number(E)){Validate.fail(B)}break;case (H!==null):if(F.length>Number(H)){Validate.fail(D)}break;default:throw new Error("Validate::Length-Length(s) to validate against must be provided!")}return true},Inclusion:function(F,G){var G=G||{};var C=G.failureMessage||"Must be included in the list!";if(G.allowNull&&F==null){return true}if(!G.allowNull&&F==null){Validate.fail(C)}var E=G.within||[];var D=false;for(var A=0,B=E.length;A<B;++A){if(E[A]==F){D=true}if(G.partialMatch){if(F.indexOf(E[A])!=-1){D=true}}}if((!G.exclusion&&!D)||(G.exclusion&&D)){Validate.fail(C)}return true},Exclusion:function(A,B){var B=B||{};B.failureMessage=B.failureMessage||"Must not be included in the list!";B.exclusion=true;Validate.Inclusion(A,B);return true},Confirmation:function(C,D){if(!D.match){throw new Error("Validate::Confirmation-Error validating confirmation: Id of element to match must be provided!")}var D=D||{};var B=D.failureMessage||"Does not match!";var A=D.match.nodeName?D.match:document.getElementById(D.match);if(!A){throw new Error("Validate::Confirmation-There is no reference with name of, or element with id of '"+D.match+"'!")}if(C!=A.value){Validate.fail(B)}return true},Acceptance:function(B,C){var C=C||{};var A=C.failureMessage||"Must be accepted!";if(!B){Validate.fail(A)}return true},now:function(A,D,C){if(!A){throw new Error("Validate::now-Validation function must be provided!")}var E=true;try{A(D,C||{})}catch(B){if(B instanceof Validate.Error){E=false}else{throw B}}finally{return E}},fail:function(A){throw new Validate.Error(A)},Error:function(A){this.message=A;this.name="ValidationError"}}