/**
 * @author Tom
 */

// Declare a flag to help determine whether to allow form submission or not.
var inputIsGood = false;
// alert( 'Value of inputIsGood = ' + inputIsGood );

$(document).ready(function(){
     var options = {
          url: '/lib/submit_contact.php',
          type: 'post',
          target: '#message',
          dataType: 'json',
          beforeSubmit: showRequest,
          success: showResponse
     };
     
     $('#ajax-contact-form').ajaxForm( options ); 
     
	$('#first-name').blur(function() {
          if ( $.trim( $('#first-name').val() ) == '' )
          {
               $('#validate-first-name').html('Please specify.');               
          }
          else if ( $.trim( $('#first-name').val() ).length < 2 )
          {
               $('#validate-first-name').html('Less than 2 characters.');
          }
          else if ( $.trim( $('#first-name').val() ).match( /\d+/g ) )
          {
               $('#validate-first-name').html('Must contain letters only.');
          }          
          else
          {
               $('#validate-first-name').html('<img src="/images/checkmark.png" height="18" width="18" border="0" />');
          }
     });                
     
     $('#last-name').blur(function() {
          if ( $.trim( $('#last-name').val() ) == '' )
          {
               $('#validate-last-name').html('Please specify.');
          }
          else if ( $.trim( $('#last-name').val() ).length < 2 )
          {
               $('#validate-last-name').html('Less than 2 characters');
          }
          else if ( $.trim( $('#last-name').val() ).match( /\d+/g ) )
          {
               $('#validate-last-name').html('Must contain letters only.');
          }
          else
          {
               $('#validate-last-name').html('<img src="/images/checkmark.png" height="18" width="18" border="0" />');
          }
     });
     
     $('#email').blur(function() {          
          if ( $.trim( $('#email').val() ) == '' )
          {
               $('#validate-email').html('Please specify.');
          }
          else if ( ! $.trim( $('#email').val() ).match( /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i ) )
          {
               $('#validate-email').html('Invalid email address.');
          }
          else
          {
               $('#validate-email').html('<img src="/images/checkmark.png" height="18" width="18" border="0" />');
          }
     });
     
     $('#comments').blur(function() {          
          if ( $.trim( $('#comments').val() ) == '' )
          {
               $('#validate-comments').html('Please specify.');
          }
          else if ( $.trim( $('#comments').val() ).length < 3 )
          {
               $('#validate-comments').html('Less than 3 characters.');
          }
          else if ( $.trim( $('#comments').val() ).match( /\d+/g ) )
          {
               $('#validate-comments').html('Must contain letters only.');
          }              
          else
          {
               $('#validate-comments').html('<img src="/images/checkmark.png" height="18" width="18" border="0" />');
          }
     });
     
     $('#code').blur(function() {
          $('#validate-code').html('<img src="/images/spinner.gif" height="32" width="32" border="0" />');
          $.ajax({
               url: '/lib/ajax_validation.php',
               type: 'get',
               data: 'action=check_captcha&code=' + this.value,
               dataType: 'json',
               success: function(j) {
                    $('#validate-code').html(j.msg);
                    //Don't forget to move this to the new validation function that gets called upon format submit.
                    if ( j.msg == '<img src="/images/checkmark.png" width="18" height="18" border="0" />' )
                    {
                         setFlagTrue();
                    }
                    else
                    {
                         setFlagFalse();
                    }
               },
               error: function() {
                    setFlagFalse();
                    $('#validate-code').html('Could not communicate with validator.');                    
               }
          });
     });
     
     $(window).resize(function() {
          $('#message').css({
               left: eval( $(document).width() / 2 - 200 )
          });
     });
     
     /* $('#ajax-contact-form').submit(function() {
          $(this).ajaxSubmit();
          
          // Must always return false
          return false;
     }); */   
     
     /* $('#submit').click(function() {     
          if ( inputIsGood == true )
          {
               $('#ajax-contact-form').submit(function() {
                    $(this).ajaxSubmit(options);
                    
                    // Must always return false
                    return false;
               });
          }
          else
          {
               $('#message').html('<p>We were unable to send your message.</p>');
               $('#message').append('<p>Value of inputIsGood = ' + inputIsGood + '</p>');
               $('#message').append('<p><a id="closeMessage" href="javascript:void(0);">Close</a></p>');
               $('#message').fadeIn(600);
               $('#closeMessage').click(function() {
                  $('#message').fadeOut(700);  
               });
               return false;
          }
     }); */
});

function showResponse(j)
{
     $('body').append( '<div id="message"></div>' );
     $('#message').css({
          zIndex: 9999,
          backgroundColor: "#222",
          border: "5px solid #000",
          opacity: 0.85,
          position: "absolute",
          top: 250,
          left: eval( $(document).width() / 2 - 200 ),
          width: 400,
          color: "#fff",
          padding: 25,
          textAlign: "center",
          display: "none"
     });
     $('#message').html('<p>' + j.msg + '</p>');
     $('#message').append('<p>Value of inputIsGood = ' + inputIsGood + '</p>');
     $('#message').append('<p><a id="closeMessage" href="javascript:void(0);" onmouseover="window.status=\'Close This\';return true;" onmouseout="window.status=\'\';return true;">Close</a></p>');
     $('#message').fadeIn(600);
     $('#closeMessage').click(function() {
          $('#message').fadeOut(600);
          if ( j.msg == 'Your message has been sent. Thank you!' )
          {
               $('#contact-form-container').animate({
                    height: 'toggle'
               }, {
                    duration: 950,
                    easing: 'easeInOutCirc'
               });
               $('#validate-first-name').html('');
               $('#validate-last-name').html('');
               $('#validate-email').html('');
               $('#validate-comments').html('');
               $('#validate-code').html('');
               $('#ajax-contact-form').clearForm();                         
          }
     });
}

function showRequest (formData, jqForm, options)
{                    
     var formIsGood;
     
     if ( $('#first-name').val() == '' )
     {
          $('#validate-first-name').html('Please specify.');
          $('#first-name').focus();
          formIsGood = false;
          return false;
     }
     
     if ( $('#first-name').val().length < 2 )
     {
          $('#validate-first-name').html('Must be at least 2 characters.');
          $('#first-name').focus();
          formIsGood = false;
          return false;
     }
     
     if ( $('#first-name').match( /\d+/g ) )
     {
          $('#validate-first-name').html('Must contain letters only.');
          $('#first-name').focus();
          formIsGood = false;
          return false;
     } 
     
     if ( $('#last-name').val() == '' )
     {
          $('#validate-last-name').html('Please specify.');
          $('#last-name').focus();
          formIsGood = false;
          return false;
     }
     
     if ( $('#last-name').length < 2 )
     {
          $('#validate-last-name').html('Must be at least 2 characters.');
          $('#last-name').focus();
          formIsGood = false;
          return false;
     }
     
     if ( $('#last-name').match( /\d+/g ) )
     {
          $('#validate-last-name').html('Must contain letters only.');
          $('#last-name').focus();
          formIsGood = false;
          return false;
     }    
     
     if ( $('#email').val() == '' )
     {
          $('#validate-email').html('Please specify.');
          $('#email').focus();
          formIsGood = false;
          return false;
     }      
     
     if ( ! $.trim( $('#email') ).match( /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i ) )
     {
          $('#validate-email').html('Invalid email address.');
          $('#email').focus();
          formIsGood = false;
          return false;
     } 
     
     if ( $('#comments').val() == '' )
     {
          $('#validate-comments').html('Please specify.');
          $('#comments').focus();
          formIsGood = false;
          return false;
     }
     
     if ( $('#comments').length < 2 )
     {
          $('#validate-comments').html('Must be at least 2 characters.');
          $('#comments').focus();
          formIsGood = false;
          return false;
     }
     
     if ( $('#comments').match( /\d+/g ) )
     {
          $('#validate-comments').html('Must contain letters only.');
          $('#comments').focus();
          formIsGood = false;
          return false;
     }                                              
     
     if ( formIsGood == false )
     {
          return false;
     }
     else
     {
          return true;
     }
}

function setFlagFalse()
{
     inputIsGood = false;
}

function setFlagTrue()
{
     inputIsGood = true;
}

function getFlag()
{
     return inputIsGood;
}

function validateText( field, validationField )
{
     if ( $.trim( field ).value == '' )
     {
          alert( field );
          validationField.html('Please specify.');
          return false;
     }
     else if ( $.trim( field ).length < 2 )
     {
          validationField.html('Less than 2 characters.');
          return false;
     }
     else if ( $.trim( field ).match( /\d+/g ) )
     {
          validationField.html('Must contain letters only.');
          return false;
     }
     else
     {
          return true;
     }
} 

function validateEmail( field, validationField )
{
     if ( $.trim( field ).value == '' )
     {
          validationField.html('Please specify.');
          return false;
     }
     else if ( ! $.trim( field ).match( /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i ) )
     {
          validationField.html('Invalid email address.');
          return false;
     }
     else
     {
          return true;
     }
}