var ugcFormObj=function(_formId,_acceptCheckboxId,_clearButtonId,_submitButtonId){var _form=document.getElementById(_formId),_formErrorMessages="",_formErrorFirstElement=null,_clearButton=document.getElementById(_clearButtonId),_submitButton=document.getElementById(_submitButtonId),_acceptCheckbox=document.getElementById(_acceptCheckboxId);this.addError=function(elementNum,msg){var errorElement=document.getElementById("element_"+elementNum);this.setElementErrorLabel(elementNum);if(_formErrorFirstElement==null){if(msg!="")_formErrorMessages+=msg+"\n";_formErrorFirstElement=errorElement}};this.setElementErrorLabel=function(elementNum){var labelElement=document.getElementById("elementDisplayLabel_"+elementNum.split("|")[0]);if(labelElement)labelElement.style.color="#FF0000"};this.clearElementErrorLabel=function(elementNum){var element=document.getElementById("element_"+elementNum),labelElement=document.getElementById("elementDisplayLabel_"+elementNum.split("|")[0]);if(labelElement){var labelElementNumRoot=labelElement.id.split("_")[1],errorElementNumRoot;if(_formErrorFirstElement)errorElementNumRoot=_formErrorFirstElement.id.split("_")[1].split("|")[0];if(labelElementNumRoot!=errorElementNumRoot||labelElementNumRoot==null)labelElement.style.color=""}};this.validateRequired=function(elementNum){var element=document.getElementById("element_"+elementNum),requiredError=document.getElementById("requiredError").value,elementType=element.type;if(typeof elementType=="undefined")elementType=element.firstChild.firstChild.type;switch(elementType){case "text":case "textarea":case "file":if(element.value.trim()=="")this.addError(elementNum,requiredError);break;case "checkbox":if(!element.checked)this.addError(elementNum,requiredError);break;case "select":case "select-one":var otherElement=document.getElementById("elementOther_"+elementNum);if(element.options[element.selectedIndex].value==""&&!otherElement)this.addError(elementNum,requiredError);else if(element.options[element.selectedIndex].value==""&&otherElement)if(otherElement.value=="")this.addError(elementNum,requiredError);break;case "radio":radioGroup=document.getElementsByName(element.id);radioSelected=false;for(var i=0;i<radioGroup.length;i++)if(radioGroup[i].checked)radioSelected=true;if(!radioSelected)this.addError(elementNum,requiredError);break}};this.validateTextBox=function(elementNum,isRequired){this.clearElementErrorLabel(elementNum);if(isRequired)this.validateRequired(elementNum)};this.validateDropDown=function(elementNum,isRequired){this.clearElementErrorLabel(elementNum);if(isRequired)this.validateRequired(elementNum)};this.validateRadioButton=function(elementNum,isRequired){this.clearElementErrorLabel(elementNum);if(isRequired)this.validateRequired(elementNum)};this.validateImage=function(elementNum,isRequired,maxImageSize,imageTypes){this.clearElementErrorLabel(elementNum);if(isRequired)this.validateRequired(elementNum);if(!_formErrorMessages&&document.getElementById("element_"+elementNum).value!=""){var imagePath=document.getElementById("element_"+elementNum).value.toLowerCase().trim();if(navigator.appName=="Internet Explorer"){var newImage=document.createElement("IMG");newImage.src=imagePath;if(parseInt(newImage.fileSize)>parseInt(maxImageSize)){var imageSizeError=document.getElementById("imageSizeError").value;imageSizeError=imageSizeError.replace(/\%image\s*max\s*bytes\%/gi,maxImageSize);this.addError(elementNum,imageSizeError)}}if(imageTypes){var imageTypeError=document.getElementById("imageTypeError").value;imageTypeError=imageTypeError.replace(/\%image\s*types\s*allowed\%/gi,imageTypes);imageTypes=imageTypes.replace(/\s*/gi,"");var imagePathArray=imagePath.split(".");if(imageTypes.search(imagePathArray[imagePathArray.length-1])==-1)this.addError(elementNum,imageTypeError)}}};this.validateNumber=function(elementNum,isRequired,min,max){this.clearElementErrorLabel(elementNum);var numberError=document.getElementById("numericError").value,rangeError=document.getElementById("rangeError").value,rangeErrorSplit=rangeError.split("%");rangeError=rangeErrorSplit[0]+min+rangeErrorSplit[2]+max;var elementValue=document.getElementById("element_"+elementNum).value.trim(),numericValidation=/(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;if(isRequired)this.validateRequired(elementNum);if(!_formErrorMessages)if(numericValidation.test(elementValue)){if(min!=""&&min!=null||max!=""&&max!=null)if(parseInt(elementValue)<parseInt(min))this.addError(elementNum,rangeError);else if(parseInt(elementValue)>parseInt(max))this.addError(elementNum,rangeError)}else if(elementValue!=""&&elementValue!=null)this.addError(elementNum,numberError)};this.validateEmail=function(elementNum,isRequired){this.clearElementErrorLabel(elementNum);var emailValue=document.getElementById("element_"+elementNum).value.trim();if(!isRequired&&emailValue=="")return;var emailRegEx=/^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;if(isRequired)this.validateRequired(elementNum);if(!_formErrorMessages&&!emailRegEx.test(emailValue)){var emailError=document.getElementById("emailError").value;this.addError(elementNum,emailError)}};this.validateDate=function(elementNum,isRequired,dateFormat){this.clearElementErrorLabel(elementNum);var dateValue=document.getElementById("element_"+elementNum).value.trim(),dateError=document.getElementById("dateError").value.replace(/\%date\s*format\%/i,dateFormat);if(isRequired)this.validateRequired(elementNum);if(!_formErrorMessages&&dateValue!=""){var dateRegExString=dateFormat;dateRegExString=dateRegExString.replace(/\s/gi,"\\s");dateRegExString=dateRegExString.replace(/\W/gi,"\\W");dateRegExString=dateRegExString.replace("dd","((0[1-9])|([1-3][0-9]))").replace("d","(([1-3][0-9])|[1-9])");dateRegExString=dateRegExString.replace("mm","((0[1-9])|(1[0-9]))").replace("m","((0?[1-9])|([1|2][0-9]))");dateRegExString=dateRegExString.replace("yyyy","([1|2][0-9]{3})").replace("yy","([0-9][0-9])");var dateRegEx=new RegExp(dateRegExString,"i");if(!dateRegEx.test(dateValue))this.addError(elementNum,dateError);else{var month=dateValue.substring(dateFormat.search("m"),dateFormat.search("m")+2)-0,day=dateValue.substring(dateFormat.search("d"),dateFormat.search("d")+2)-0,year=dateValue.substring(dateFormat.search("y"),dateFormat.search("y")+4)-0,date=new Date(year,month-1,day);if(date.getDate()!=day||date.getMonth()+1!=month||date.getFullYear().toString().substring(2)-0!=year.toString().substring(year.toString().length-2,year.toString().length)-0)this.addError(elementNum,dateError)}}};this.htmlEncode=function(str){var div=document.createElement("div"),text=document.createTextNode(str);div.appendChild(text);return div.innerHTML};this.getForm=function(){return _form};this.submit=function(){_form.submit()};this.isAcceptCheckboxChecked=function(){return _acceptCheckbox.checked};this.disableSubmit=function(){_submitButton.disabled=true};this.enableSubmit=function(){_submitButton.disabled=false};this.clearValidationErrors=function(){_formErrorMessages="";_formErrorFirstElement=null};this.validateForm=function(){this.clearValidationErrors();for(var i=0;i<_form.elements.length;i++){var element=_form.elements[i];if(element.id.split("_")[0]=="elementValidation"){var elementNum=element.id.split("_")[1],elementValidationFieldName="elementValidation_"+elementNum,elementValidationFunction=document.getElementById(elementValidationFieldName).value;eval(elementValidationFunction)}}};this.isValidationError=function(){if(_formErrorFirstElement!=null)return true;return false};this.getErrorMessages=function(){return _formErrorMessages};this.getErrorFirstElement=function(){return _formErrorFirstElement};this.clearErrorElement=function(){_formErrorFirstElement=null;_formErrorMessages=null};this.toggleSubmit=function(thisUgcForm){return function(){if(thisUgcForm.isAcceptCheckboxChecked())thisUgcForm.enableSubmit();else thisUgcForm.disableSubmit()}};this.onSubmit=function(thisUgcForm){return function(){thisUgcForm.disableSubmit();if(thisUgcForm.isAcceptCheckboxChecked()){thisUgcForm.validateForm();if(thisUgcForm.isValidationError()){alert(thisUgcForm.getErrorMessages());thisUgcForm.getErrorFirstElement().focus();thisUgcForm.enableSubmit()}else thisUgcForm.submit()}}};this.clearForm=function(thisUgcForm){return function(){var clearError=document.getElementById("clearError").value;if(_form!=null&&confirm(clearError)){_form.reset();_acceptCheckbox.checked=false;_submitButton.disabled=true;thisUgcForm.clearErrorElement();for(var i=0;i<_form.elements.length;i++){var element=_form.elements[i],elementName=element.id.split("_")[0],elementNum=element.id.split("_")[1];if(elementName=="elementOther")element.style.visibility="hidden";else if(elementName=="element")thisUgcForm.clearElementErrorLabel(elementNum);if(element.type=="textarea")element.onchange()}}}};this.select_onchange=function(){return function(){var elementNum=this.id.split("_")[1],otherElement=document.getElementById("elementOther_"+elementNum);if(otherElement)if(this.selectedIndex==this.options.length-1)otherElement.style.visibility="";else otherElement.style.visibility="hidden"}};this.textarea_onkeyup=function(){return function(){var elementNum=this.id.split("_")[1],elementLength=this.value.length,maxLength=this.attributes["maxlength"].value;if(maxLength){var charsRemaining=maxLength-elementLength;if(charsRemaining<=0){this.value=this.value.substr(0,maxLength);charsRemaining=0}document.getElementById("elementCountMessage_"+elementNum).innerHTML="You have "+charsRemaining+" characters remaining."}}};this.bindElementEvents=function(){_submitButton.disabled=true;_acceptCheckbox.onclick=this.toggleSubmit(this);_submitButton.onclick=this.onSubmit(this);_clearButton.onclick=this.clearForm(this);for(var i=0;i<_form.elements.length;i++){var element=_form.elements[i];if(element.tagName=="SELECT")element.onchange=this.select_onchange();else if(element.type=="textarea")element.onkeyup=element.onchange=this.textarea_onkeyup();else if(element.type=="file")element.onkeypress=function(e){var intKeyCode;if(!e)e=window.event;if(e.keyCode)intKeyCode=e.keyCode;else intKeyCode=e.which;switch(intKeyCode){case 9:break;case 13:case 32:this.click();default:e.returnValue=false;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();break}}}};this.bindElementEvents()}