/*
 * File           : $Header: //depot/RELEASE/widget-framework-1.0/src/main/webapp/template/widgets/comments/skin/js/formValidator.js#2 $
 * Last edited by : $Author: erkr $ $Date: 2009/12/15 $
 * Version        : $Revision: #2 $
 *
 */

var emailAddressFilter = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
var bylineFieldErrorId = "comment-form-byline-error";
var emailFieldErrorId = "comment-form-email-error";
var titleFieldErrorId = "comment-form-title-error";
var bodyFieldErrorId = "comment-form-body-error";
var bylineFieldErrorMessage = "You must enter your name!";
var emailFieldErrorMessage = "Email address is not valid!";
var titleFieldErrorMessage = "Title field cannot be empty!";
var bodyFieldErrorMessage = "Body field cannot be empty!";

function isEmpty(form, fieldName) {
  var value = form[fieldName].value;
  return value == null || value == "";
}

function validateEmailAddress(form, fieldName, errorElementId, emailFieldErrorMessage) {
  return validateField(form, fieldName, errorElementId, emailFieldErrorMessage, emailAddressFilter);
}

function validateField(form, fieldName, errorElementId, errorMessage, filter) {
  var field = form[fieldName];
  var value = field.value;

  if (filter.test(value)) {
    return true;
  }

  field.focus();
  var errorElement = getElementById(errorElementId);
  errorElement.innerHTML = errorMessage;
  errorElement.style.display = 'block';
  field.style.border = '1px solid red';

  return false;
}

function validateEmptyField(form, fieldName, errorElementId, errorMessage) {
  var field = form[fieldName];
  var errorElement = getElementById(errorElementId);

  if (isEmpty(form,fieldName)) {
    field.focus();
    errorElement.innerHTML = errorMessage;    
    errorElement.style.display = 'block';
    field.style.border = '1px solid red';
    return false;
  }
  else {
    return true;
  }
}

function revertToNormalField(form, fieldName, errorElementId) {
  var field = form[fieldName];
  var errorElement = getElementById(errorElementId);
  if (errorElement) {
    errorElement.innerHTML = "";
    errorElement.style.display = 'none';
    field.style.border = '1px solid #999';
  }
}

function validateCommentForm(form) {
  var titleFieldSuccess = true;
  var bodyFieldSuccess = true;
  var emailFieldSuccess = true;
  var bylineFieldSuccess = true;

  if (validateEmptyField(form, 'body', bodyFieldErrorId, bodyFieldErrorMessage)) {
    revertToNormalField(form, 'body', bodyFieldErrorId);
    bodyFieldSuccess = true;
  }
  else {
    bodyFieldSuccess = false;
  }

  if (form['title'].type == 'hidden') {
    titleFieldSuccess = true;
  }
  else if(validateEmptyField(form, 'title', titleFieldErrorId, titleFieldErrorMessage)) {
    revertToNormalField(form, 'title', titleFieldErrorId);
    titleFieldSuccess = true;
  }
  else {
    titleFieldSuccess = false;
  }

  if (form['email'].type == 'hidden') {
    emailFieldSuccess = true;
  }
  else if(validateEmailAddress(form, 'email', emailFieldErrorId, emailFieldErrorMessage)) {
    revertToNormalField(form, 'email', emailFieldErrorId);
    emailFieldSuccess = true;
  }
  else {
    emailFieldSuccess = false;
  }

  if (form['field(byline)'].type == 'hidden') {
    bylineFieldSuccess = true;
  }
  else if(validateEmptyField(form, 'field(byline)', bylineFieldErrorId, bylineFieldErrorMessage)) {
    revertToNormalField(form, 'field(byline)', bylineFieldErrorId);
    bylineFieldSuccess = true;
  }
  else {
    bylineFieldSuccess = false;
  }

  return (titleFieldSuccess && bodyFieldSuccess && emailFieldSuccess && bylineFieldSuccess);
}