function ClientSideErrors() {} ClientSideErrors.errorHighlightColor = "#ff2000"; ClientSideErrors.errorMessageWasShown = false; ClientSideErrors.canSetInvalidFieldInFocus = true; ClientSideErrors.isFocusingFirstFieldOnErrorEnabled = false; ClientSideErrors.markTextFieldAsInvalid = function(field, errorTitle) { ClientSideErrors.paintElementAsInvalid(field, errorTitle); ClientSideErrors.registerFieldError(field.name); ClientSideErrors.setInvalidFieldInFocus(field); } /* * Marks the specified select control as invalid. To do it the select should be nested in SPAN tag. Function adds red * border to this SPAN and adds error tooltip to the select control. */ ClientSideErrors.markSelectFieldAsInvalid = function(field, errorTitle, dontChangeParentWidth) { if (!dontChangeParentWidth) field.parentNode.style.width = field.clientWidth + 4; ClientSideErrors.paintElementAsInvalid(field.parentNode, errorTitle); ClientSideErrors.registerFieldError(field.name); ClientSideErrors.setInvalidFieldInFocus(field); } ClientSideErrors.paintElementAsInvalid = function(field, errorTitle) { if(field) { field.style.borderColor = ClientSideErrors.errorHighlightColor; field.style.borderStyle = "solid"; field.style.borderWidth = "2px"; field.title = errorTitle; field.style.color = ''; } } /** * @param keepBorder - specifies color to set at element border. */ ClientSideErrors.paintElementAsValid = function(field, keepBorderColor) { if(field) { if (keepBorderColor != undefined) { field.style.borderColor = keepBorderColor; } else { field.style.borderColor = ""; field.style.borderStyle = ""; field.style.borderWidth = ""; } field.title = ''; } } ClientSideErrors.markTextFieldAsValid = function(field) { if(field) { if(!fieldErrors[field.name]) return; ClientSideErrors.paintElementAsValid(field); ClientSideErrors.unregisterFieldError(field.name); } } /* * Marks the specified select control as valid. For additional information see ClientSideErrors.markSelectFieldAsInvalid. * * @param keepBorder - specifies color to set at element border. */ ClientSideErrors.markSelectFieldAsValid = function(field, keepBorderColor) { if(field) { if(!fieldErrors[field.name]) return; ClientSideErrors.paintElementAsValid(field.parentNode, keepBorderColor); ClientSideErrors.unregisterFieldError(field.name); } } ClientSideErrors.registerFieldError = function(fieldName) { fieldErrors[fieldName] = true; } ClientSideErrors.unregisterFieldError = function(fieldName) { if(fieldErrors[fieldName]) delete fieldErrors[fieldName]; } ClientSideErrors.showClientSideErrorMessage = function() { ClientSideErrors.hideClientSideErrorMessage(); window.setTimeout(ClientSideErrors.displayClientSideErrorMessage, 200); window.scrollTo(0, 0); } ClientSideErrors.getElement = function() { return document.getElementById("ClientSideErrorMessage"); } ClientSideErrors.displayClientSideErrorMessage = function() { if(ClientSideErrors.errorMessageWasShown) { ClientSideErrors.getElement().style.visibility = "visible"; } else { ClientSideErrors.getElement().style.display = "block"; ClientSideErrors.getElement().style.visibility = "visible"; ClientSideErrors.errorMessageWasShown = true; } if(ClientSideErrors.onDisplay) { ClientSideErrors.onDisplay(); } } ClientSideErrors.hideClientSideErrorMessage = function() { if(ClientSideErrors.errorMessageWasShown) ClientSideErrors.getElement().style.visibility = "hidden"; ClientSideErrors.canSetInvalidFieldInFocus = true; } ClientSideErrors.hideClientSideErrorMessageIfNoErrors = function() { if(!ClientSideErrors.hasErrors()) ClientSideErrors.hideClientSideErrorMessage(); } ClientSideErrors.hasErrors = function() { var count = 0; for(var i in fieldErrors) count++; return count > 0; } /* * Marks the specified fieldLabelNode as invalid. It means that label will has red bold font (as determined in errormsg * style) and it will has errorTitle title. */ ClientSideErrors.markFieldLabelsAsInvalid = function(fieldLabelNode, errorTitle) { if (fieldLabelNode != null && typeof (fieldLabelNode) != typeof undefined) { fieldLabelNode.className = "errormsg"; fieldLabelNode.title = errorTitle; } } /* * Marks the specified fieldLabelNode as valid. */ ClientSideErrors.markFieldLabelsAsValid = function(fieldLabelNode) { if (fieldLabelNode != null && typeof (fieldLabelNode) != typeof undefined) { fieldLabelNode.className = ""; fieldLabelNode.title = ""; } } ClientSideErrors.setInvalidFieldInFocus = function(field) { if (!ClientSideErrors.isFocusingFirstFieldOnErrorEnabled) { return; } if (ClientSideErrors.canSetInvalidFieldInFocus) { field.focus(); ClientSideErrors.canSetInvalidFieldInFocus = false; } }