function CAdvFormStatus(a_cValidateForm, a_szSubmitID, a_szoptErrorMessageID)
{ var m_cValidateForm = a_cValidateForm; this.m_cValidateForm = m_cValidateForm; var m_szSubmitID = a_szSubmitID; this.m_szSubmitID = m_szSubmitID; var m_szSubmitID = a_szSubmitID; this.m_szSubmitID = m_szSubmitID; var m_szoptErrorMessageID = a_szoptErrorMessageID; this.m_szoptErrorMessageID = m_szoptErrorMessageID; var m_arrImageStore = { good: "url('images/formstatus/form_item_good.gif')", warning: "url('images/formstatus/form_item_warning.gif')", bad: "url('images/formstatus/form_item_bad.gif')", busy: "url('images/formstatus/form_item_busy.gif')", required: "url('images/formstatus/form_item_required.gif')"
}; this.m_arrImageStore = m_arrImageStore; var m_arrItemStore = new Array(); var m_szResponseText; var m_oSubmit = ei(m_szSubmitID); var m_oErrorMessage = ei(m_szoptErrorMessageID); var m_bValid = false; if(isDef(m_cValidateForm,m_arrItemStore,m_oErrorMessage) )
{ if(isDef(m_oSubmit) && isDef(m_oSubmit.disabled))
{ m_oSubmit.disabled = true; m_oSubmit.onclick = checkValidSubmit;}
for(szImageSrc in m_arrImageStore)
{ preloadImage(szImageSrc);}
m_bValid = true;}
function addItem(a_szType, a_szNameID, a_bRequired, a_szDependantID, a_bState)
{ if(!m_bValid) return; var oe = ei(a_szNameID); if(!oe) return; var szNameID; var szModifier; var arrPair = a_szNameID.split('-', 2); if(2 == arrPair.length)
{ szModifier = arrPair[0]; szNameID = arrPair[1];}
else
{ szNameID = a_szNameID;}
if('phonenumber' == a_szType)
{ oe.oAreacode = ei(szNameID + "areacode"); oe.oLocalnumberprefix = ei(szNameID + "localnumberprefix"); oe.oLocalnumbersuffix = ei(szNameID + "localnumbersuffix"); oe.oExt = ei(szNameID + "ext");}
if('emailaddress')
{ oe.oValidateStatus = ei(szNameID + 'verified');}
oe.oStatus = ei(oe.id + '_status'); oe.isItemValid = false; oe.isItemRequired = (a_bRequired) ? true : false; oe.isItemblured = false; oe.disabled = false; if(a_szDependantID)
{ oe.oDependant = ei(a_szDependantID); oe.isValidState = (a_bState) ? true : false;}
switch(a_szType)
{ case 'websiteurl':
oe.onkeyup = itemWebsiteURLKeyUp; oe.onblur = itemWebsiteURLBlur; break; case 'name':
oe.onkeyup = itemNameKeyUp; oe.onblur = itemNameBlur; break; case 'emailaddress':
oe.onkeyup = itemEmailAddressKeyUp; oe.onblur = itemEmailAddressBlur; break; case 'phonenumber':
oe.onkeyup = itemPhoneNumberKeyUp; oe.onblur = itemPhoneNumberBlur; break; case 'domainname':
oe.onkeyup = itemDomainNameKeyUp; oe.onblur = itemDomainNameBlur; break; default:
oe = null;}
if(oe)
{ m_arrItemStore.push(oe);}
}
this.addItem = addItem; function updateSubmitStatus()
{ var bInvalid = false; for(var i = 0; i < m_arrItemStore.length; i++)
{ var oItem = m_arrItemStore[i]; if(oItem)
{ if(oItem.isItemRequired)
{ if(oItem.oDependant)
{ if(oItem.isValidState == oItem.oDependant.checked)
{ if(!oItem.isItemValid)
{ bInvalid = true; break;}
}
}
else
{ if(!oItem.isItemValid)
{ bInvalid = true; break;}
}
}
}
}
if(isDef(m_oSubmit) && isDef(m_oSubmit.disabled))
{ m_oSubmit.disabled = bInvalid;}
return !bInvalid;}
this.updateSubmitStatus = updateSubmitStatus; function setErrorMessage(a_szState, a_szErrorMessage)
{ if(!m_oErrorMessage) return; switch(a_szState)
{ case 'bad':
m_oErrorMessage.style.color = "#ff0000"; m_oErrorMessage.innerHTML = a_szErrorMessage; break; case 'busy':
m_oErrorMessage.style.color = "#000000"; m_oErrorMessage.innerHTML = a_szErrorMessage; break; case 'warning':
case 'good':
case 'required':
m_oErrorMessage.style.color = "#000000"; m_oErrorMessage.innerHTML = a_szErrorMessage; break; default:
m_oErrorMessage.innerHTML = '_Illegal State_'; break;}
}
this.setErrorMessage = setErrorMessage; function itemDomainNameBlur(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; oe.isItemblured = true; itemDomainNameKeyUp(a_e);}
function itemDomainNameKeyUp(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; if(!oe.isItemblured) return; oe.isItemblured = false; if('' == trim(oe.value))
{ if(oe.isItemRequired)
{ setStatus(oe, 'required', '');}
else
{ setStatus(oe);}
return;}
if(m_cValidateForm.isHostValid(oe) && m_cValidateForm.isDimention(oe, 6, 30) )
{ setStatus(oe, 'good', '');}
else
{ setStatus(oe, 'bad', 'Malformed Domain Name');}
}
function itemWebsiteURLBlur(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; oe.isItemblured = true; itemWebsiteURLKeyUp(a_e);}
function itemWebsiteURLKeyUp(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; if(!oe.isItemblured) return; oe.isItemblured = false; if('' == trim(oe.value))
{ if(oe.isItemRequired)
{ setStatus(oe, 'required', '');}
else
{ setStatus(oe);}
return;}
if(m_cValidateForm.isHttpURLValid(oe) && m_cValidateForm.isDimention(oe, 10, 80) )
{ if( m_cValidateForm.isHttpURLDomainNameLegal(oe) )
{ var szStatus = checkHttpURLValidHost(oe); if( null == szStatus )
{ setStatus(oe, 'busy', 'Verifying Website Address...');}
else if ( 'good' == szStatus )
{ setStatus(oe, 'good', '');}
else
{ setStatus(oe, 'bad', 'Invalid Website Address');}
}
else
{ setStatus(oe, 'bad', 'Illegal Website Address');}
}
else
{ setStatus(oe, 'bad', 'Malformed Website Address');}
}
function itemNameBlur(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; oe.isItemblured = true; itemNameKeyUp(a_e);}
function itemNameKeyUp(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; if(!oe.isItemblured) return; oe.isItemblured = false; if('' == trim(oe.value))
{ if(oe.isItemRequired)
{ setStatus(oe, 'required', '');}
else
{ setStatus(oe);}
return;}
if(m_cValidateForm.isNameValid(oe) && m_cValidateForm.isDimention(oe, 3, 40) )
{ setStatus(oe, 'good', '');}
else
{ setStatus(oe, 'bad', 'Invalid Name');}
}
function itemEmailAddressBlur(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; oe.isItemblured = true; itemEmailAddressKeyUp(a_e);}
function itemEmailAddressKeyUp(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; if(!oe.isItemblured) return; oe.isItemblured = false; if('' == trim(oe.value))
{ if(oe.isItemRequired)
{ setStatus(oe, 'required', '');}
else
{ setStatus(oe);}
return;}
if(m_cValidateForm.isEmailValid(oe) && m_cValidateForm.isDimention(oe, 9, 40) )
{ if( m_cValidateForm.isEmailAddressDomainNameLegal(oe) )
{ var szStatus = checkUserExistOnEmailAddressHost(oe); if(null == szStatus)
{ setStatus(oe, 'busy', 'Verifying user...'); return;}
else if( 'good' == szStatus )
{ if(oe.oValidateStatus)
{ oe.oValidateStatus.value = 'Exist';}
setStatus(oe, 'good', ''); return;}
else if ( 'warning' == szStatus )
{ if(oe.oValidateStatus)
{ oe.oValidateStatus.value = 'Failed';}
setStatus(oe, 'warning', 'Warning: Unable to verify email account'); return;}
else
{ if(oe.oValidateStatus)
{ oe.oValidateStatus.value = 'Illegal';}
setStatus(oe, 'bad', 'Illegal Email Address');}
}
}
setStatus(oe, 'bad', 'Malformed Email Address');}
function itemPhoneNumberBlur(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; oe.isItemblured = true; itemPhoneNumberKeyUp(a_e);}
function itemPhoneNumberKeyUp(a_e)
{ var oe = getElementFromEvent(a_e); if(!oe) return; if(null == oe.oStatus) return; if(!oe.isItemblured) return; oe.isItemblured = false; if('' == trim(oe.value))
{ if(oe.isItemRequired)
{ setStatus(oe, 'required', '');}
else
{ setStatus(oe);}
return;}
if( m_cValidateForm.isUSPhoneNumberFormatValid(oe) )
{ if( m_cValidateForm.isUSPhoneNumberLegal(oe) )
{ var szUSAreaCodeRegion = m_cValidateForm.getUSAreaCodeRegion(oe); if(szUSAreaCodeRegion)
{ if(oe.oAreacode)
{ oe.oAreacode.value = m_cValidateForm.getUSAreaCode(oe);}
if(oe.oLocalnumberprefix)
{ oe.oLocalnumberprefix.value = m_cValidateForm.getUSLocalNumberHi(oe);}
if(oe.oLocalnumbersuffix)
{ oe.oLocalnumbersuffix.value = m_cValidateForm.getUSLocalNumberLow(oe);}
if(oe.oExt)
{ oe.oExt.value = m_cValidateForm.getUSPhoneExt(oe);}
setStatus(oe, 'good', 'Area Code Region: ' + szUSAreaCodeRegion);}
else
{ setStatus(oe, 'bad', 'Invalid Area Code Region');}
}
else
{ setStatus(oe, 'bad', 'Illegal Phone Number');}
}
else
{ setStatus(oe, 'bad', 'Invalid Phone Number');}
}
function setStatus(a_oe, a_szState, a_szErrorMessage)
{ if(!a_oe) return; if(!a_oe.oStatus) return; var szImageSrc = m_arrImageStore[a_szState]; if(null == szImageSrc)
{ a_oe.oStatus.style.backgroundImage = ''; return;}
a_oe.oStatus.style.backgroundImage = szImageSrc; a_oe.isItemValid = ('good' == a_szState) ? true : ('warning' == a_szState) ? true : false; a_oe.disabled = ('busy' == a_szState) ? true : false; updateSubmitStatus(); setErrorMessage(a_szState, a_szErrorMessage);}
function checkHttpURLValidHost(a_oInput)
{ if(!a_oInput) return null; if(!m_cValidateForm) return null; var szHttpURLHost = m_cValidateForm.getHttpURLFullHost(a_oInput); if(szHttpURLHost)
{ var szStatus = checkCache(a_oInput,szHttpURLHost); if(null == szStatus)
{ a_oInput.oSendFormData = new AJAX(a_oInput.form.action); a_oInput.oSendFormData.postHost(szHttpURLHost,recieveHttpURLValidHostResponse,a_oInput); return null;}
else
{ return szStatus;}
}
return false;}
function checkUserExistOnEmailAddressHost(a_oInput)
{ if(!a_oInput) return null; if(!m_cValidateForm) return null; var szEmailAddress = a_oInput.value; if(szEmailAddress)
{ var szStatus = checkCache(a_oInput,szEmailAddress); if(null == szStatus)
{ a_oInput.oSendFormData = new AJAX(a_oInput.form.action); a_oInput.oSendFormData.postEmailAddress(szEmailAddress,recieveUserExistOnEmailAddressHostResponse,a_oInput); return null;}
else
{ return szStatus;}
}
return false;}
function checkValidSubmit()
{ for(var szItem in m_arrItemStore)
{ var oe = m_arrItemStore[szItem]; if(oe)
{ if(oe.isItemValid)
{ }
else
{ return false;}
}
}
if(isDef(m_oSubmit) && isDef(m_oSubmit.disabled))
{ m_oSubmit.disabled = true; m_oSubmit.value = "Processing..."
m_oSubmit.oSendFormData = new AJAX(m_oSubmit.form.action); m_oSubmit.oSendFormData.postForm(m_oSubmit.form, recieveFormResponce);}
return false;}
function recieveFormResponce(a_szResponseText)
{ m_szResponseText = a_szResponseText; if(!m_szResponseText) return; if(!m_oSubmit) return; if(!m_oSubmit.form) return; var oResponse = ei(m_oSubmit.form.id + '_response'); if(!oResponse) return; m_oSubmit.form.style.display = 'none'; if("404" == m_szResponseText)
{ oResponse.innerHTML = "Internal error, please contact Webmaster.  Sorry for the inconvenience, but we are unable to process your request at this time.";}
else
{ oResponse.innerHTML = m_szResponseText;}
oResponse.style.display = 'block'; m_oSubmit.oSendFormData.abort(); m_oSubmit.oSendFormData = null;}
function recieveUserExistOnEmailAddressHostResponse(a_szResponseText,a_oInput)
{ m_szResponseText = a_szResponseText; if(!m_szResponseText) return; if(!a_oInput) return; if('404' == m_szResponseText)
{ if(a_oInput.oValidateStatus)
{ a_oInput.oValidateStatus.value = 'Failed';}
addToWarningCache(a_oInput); setStatus(a_oInput, 'warning', 'Warning: Unable to verify email account');}
else
{ if(a_oInput.oValidateStatus)
{ a_oInput.oValidateStatus.value = 'Exists';}
addToGoodCache(a_oInput); setStatus(a_oInput, 'good', '');}
a_oInput.oSendFormData.abort(); a_oInput.oSendFormData = null;}
function recieveHttpURLValidHostResponse(a_szResponseText,a_oInput)
{ m_szResponseText = a_szResponseText; if(!m_szResponseText) return; if(!a_oInput) return; if('404' == m_szResponseText)
{ addToBadCache(a_oInput); setStatus(a_oInput, 'bad', 'Invalid Website Host Address'); return;}
else
{ addToGoodCache(a_oInput); setStatus(a_oInput, 'good', '');}
a_oInput.oSendFormData.abort(); a_oInput.oSendFormData = null;}
function checkCache(a_oInput, a_szValue)
{ if(!a_oInput) return null; if(!a_szValue) return null; if(a_oInput.goodCache)
{ if( a_oInput.goodCache[a_szValue.toLowerCase()] )
{ return 'good';}
}
if(a_oInput.badCache)
{ if( a_oInput.badCache[a_szValue.toLowerCase()] )
{ return 'bad';}
}
if(a_oInput.warningCache)
{ if( a_oInput.warningCache[a_szValue.toLowerCase()] )
{ return 'warning';}
}
return null;}
function addToBadCache(a_oInput)
{ if(null == a_oInput.badCache)
{ a_oInput.badCache = new Array();}
a_oInput.badCache[a_oInput.value.toLowerCase()] = true;}
function addToWarningCache(a_oInput)
{ if(null == a_oInput.warningCache)
{ a_oInput.warningCache = new Array();}
a_oInput.warningCache[a_oInput.value.toLowerCase()] = true;}
function addToGoodCache(a_oInput)
{ if(null == a_oInput.goodCache)
{ a_oInput.goodCache = new Array();}
a_oInput.goodCache[a_oInput.value.toLowerCase()] = true;}
}
