// smooth scrolling effect
function scroll(divId) {
  if($.browser.opera) {
    $('html').animate({scrollTop: $('#' + divId).offset().top}, 1000);
  } else {
    $('html,body').animate({scrollTop: $('#' + divId).offset().top}, 1000);
  }
} // scroll()

// validate email address
function isValidEmailAddress(emailAddress) {
  var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

  return pattern.test(emailAddress);
} // isValidEmailAddress()
  
// validate input and highlight if not validated properly
function validateInput(inputType, selector, validationType, errorCSSClass) {
  var validated = true;
  if(validationType != '') {
    $(inputType + '[' + selector + ']').removeClass(errorCSSClass);
    var validationTypeArray = validationType.split('|');
    
    for(var i = 0; i < validationTypeArray.length; i++) {
      var value = $.trim($(inputType + '[' + selector + ']').val());
      var inputValidated = true;
      
      switch(validationTypeArray[i]) {
        case 'req'  :
          inputValidated = (value == '') ? false : true;
          break;
          
        case 'email'  :
          inputValidated = (!isValidEmailAddress(value)) ? false : true;
          break;
      }
      
      if(!inputValidated)
        $(inputType + '[' + selector + ']').addClass(errorCSSClass);
      validated = inputValidated && validated;
    }
  }
  return validated;
} // validateInput()

// load when document is ready
$(document).ready(function() {
  $('.map-it').click(function() {
    var mapDivId = $(this).attr('alt');
    scroll(mapDivId);
  });
  
  $('form[name=feedback-form]').submit(function() {
    var validated = validateInput('select', 'name=subject', 'req', 'input-error') & 
      validateInput('input', 'name=name', 'req', 'input-error') & 
      validateInput('input', 'name=email', 'email', 'input-error') & 
      validateInput('textarea', 'name=message', 'req', 'input-error') & 
      validateInput('input', 'name=code', 'req', 'input-error');
    
    if(!validated) {
      alert('Please check the highlighted field(s).');
      return false;
    }
    return true;
  });
  
  $('form[name=login-form]').submit(function() {
   var validated = validateInput('input', 'name=username', 'req', 'input-error') & 
      validateInput('input', 'name=password', 'req', 'input-error');
    
    if(!validated) {
      alert('Please check the highlighted field(s).');
      return false;
    }
    return true;
  });
  
  $('form[name=forgot-password-form]').submit(function() {
   var validated = validateInput('input', 'name=username', 'email', 'input-error');
    
    if(!validated) {
      alert('Please enter a valid e-mail address.');
      return false;
    }
    return true;
  });
  
  $('form[name=change-password-form]').submit(function() {
   var validated = validateInput('input', 'name=password', 'req', 'input-error') & 
      validateInput('input', 'name=newPassword', 'req', 'input-error') & 
      validateInput('input', 'name=newPasswordConfirm', 'req', 'input-error');
    
    if(!validated) {
      alert('Please check the highlighted field(s).');
      return false;
    }
    return true;
  });
});
