
/* 
Author: Gabriel Comarita
Author's Website: http://www.bitrepository.com/

Copyright (c) BitRepository.com
*/



$(function() { // When DOM is ready

    // Important for JS validation
    var total_required_inputs = $(":input.required").length; /* (usually name, email, subject, message & security code) */

    // Are we using the basic form with no captcha? Then decrease the number of total required inputs
    if(($("#security_code").length == 0)) {
    total_required_inputs--;
    }

    // Preload Icons
	// This way they will show instantly without waiting for the browser to load them (for instance the 'ajax loading spinner')
	
	img1 = new Image(18, 15);
    img1.src = 'http://www.cocktailking.com.au/contact-contact-app/images/ajax-loader.gif';
    
	img2 = new Image(22, 22);
    img2.src = 'http://www.cocktailking.com.au/contact-contact-app/images/icon-dialog-error.png';
	
	img3 = new Image(22, 22);
    img3.src = 'http://www.cocktailking.com.au/contact-contact-app/images/icon-button-ok.png';

	img4 = new Image(16, 16);
    img4.src = 'http://www.cocktailking.com.au/contact-contact-app/images/icon-refresh.png';

    /*
    -------------------------------------------------
    Is the form (ID: 'ajax-contact-form') submitted?
    -------------------------------------------------
    */

    $('#ajax-contact-form').submit(function() {

    check_sender_name();
check_sender_email();
check_sender_message();

       check_security_code();
       check_status();

       if($(".ok").length < total_required_inputs) {
			  return false;
	   }
    
    
	// Hide 'Submit' Button
    $('#submit-button').hide();

    // Show GIF Spinning Rotator
    $('#ajax-loading').show();

    var formData = $(this).serialize(); // Serializes a set of input elements into a string data (example: first_name=John&last_name=Doe)

    $.ajax({
      type: "POST",
      url: 'http://www.cocktailking.com.au/contact-contact-app/parse.php',
      data: formData,
      success: function(response) {

	  //alert(response);

	   var possible_error = 'Could not instantiate mail function.';

	   if(response.indexOf(possible_error) != '-1') {
	   var result = '<div class="notification_error">The mail cannot be sent due to an internal error. Please retry later!<br /><br />'+ possible_error +'</div>';

	
	   } else {

        var status = $.evalJSON(response).status;

       if(status == 0) { // Message sent

        
          var result = '<div class="notification_ok">The message has been successfully sent. Thank you for writing to us!</div>';

          $('#success_sent').val(1);

          
			  
              $('#ajax-contact-form')[0].reset();
              $(':input:not(:hidden)').removeClass('ok');

			  
       }
       else if(status == 1) { // Errors found?

	          var result = '<div class="notification_error">Please correct the errors and re-submit the form!<br /><br />';
			  
			   result += '<em>'; 
			  // First, remove all errors to avoid adding the same errors twice in the page
			  // If any errors are found, the script will change the 'class' value(s) (error)

		      $('label.error').remove();

		      if($.evalJSON(response).sender_name_none) {
			       $('#sender_name').addClass('error').removeClass('ok');

		            result += 'Fill your name<br />';
			  
			     } else if($.evalJSON(response).sender_name_invalid) {
			 
			        result += '<br />';

			     } else if($.evalJSON(response).sender_name_min_chars) {
			 
			        result += '<br />';

			     } else  {
                    $('#sender_name').addClass('ok').removeClass('error');
                 }if($.evalJSON(response).sender_email_none) {
			       $('#sender_email').addClass('error').removeClass('ok');

		            result += 'Fill an e-mail address<br />';
			  
			     } else if($.evalJSON(response).sender_email_invalid) {
			 
			        result += 'Fill a valid e-mail address<br />';

			     } else if($.evalJSON(response).sender_email_min_chars) {
			 
			        result += '<br />';

			     } else  {
                    $('#sender_email').addClass('ok').removeClass('error');
                 }if($.evalJSON(response).sender_message_none) {
			       $('#sender_message').addClass('error').removeClass('ok');

		            result += 'Fill your message<br />';
			  
			     } else if($.evalJSON(response).sender_message_invalid) {
			 
			        result += '<br />';

			     } else if($.evalJSON(response).sender_message_min_chars) {
			 
			        result += 'Your message should have at least 1 characters.<br />';

			     } else  {
                    $('#sender_message').addClass('ok').removeClass('error');
                 }
			  if($.evalJSON(response).security_code == 1) {
			  $('#security_code').addClass('error').removeClass('ok');
			  
              result += 'Please enter the security code<br />';

			  } else if($.evalJSON(response).security_code == 2) {
			  $('#security_code').addClass('error').removeClass('ok');
			  
			  result += 'The security code is incorrect.<br />';

              } else {

			  $('#captcha_area').hide();
              $('#verified').show();

              $('#sc_error').remove();

              }

			   result += '</em>'; 			  
			  result += '</div>';

			  // Mail cannot be sent?
       } else if(status == 2) {
	         var result = '<div class="notification_error">The mail cannot be sent due to an internal error. Please retry later!</div>';

			 	   }

	   }

              // Hide GIF Spinning Rotator
	          $('#ajax-loading').hide();
	         
	          // Show 'Submit' Button
	          $('#submit-button').show();

			  // Could be notification error or a notification that the form has been submitted successfully / Show the notification with a "fade in" effect
	          $('#acf-note').html(result).slideDown();

}

});

return false; // prevent the form from being submitted in the classical way

        });

function new_captcha()
{
var c_currentTime = new Date();
var c_miliseconds = c_currentTime.getTime();

document.getElementById('captcha').src = 'http://www.cocktailking.com.au/contact-contact-app/captcha.php?x='+ c_miliseconds;

return false;
};

$('#captcha-refresh').bind('click', new_captcha);


/* [RealTime Validation] */



var check_sender_name = function() {




if($('#sender_name').val() == '') {

removeErrors('sender_name', 'none');

$('#sender_name').addClass('error').removeClass('ok');

$('#sender_name').after('<div id="sender_name_error" class="error"><i>Fill your name</i></div>');

check_status();

return false;
} 



else {

removeErrors('sender_name', 'slideUp');

$('#sender_name').addClass('ok').removeClass('error');
}



};

$('#sender_name').bind('change', check_sender_name);
$('#sender_name').bind('blur', function() { if($('#sender_name').val()) { check_sender_name(); } });




var check_sender_email = function() {


 var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; 

if($('#sender_email').val() == '') {

removeErrors('sender_email', 'none');

$('#sender_email').addClass('error').removeClass('ok');

$('#sender_email').after('<div id="sender_email_error" class="error"><i>Fill an e-mail address</i></div>');

check_status();

return false;
} 


if (!filter.test($('#sender_email').val())) {

removeErrors('sender_email', 'none');

$('#sender_email').addClass('error').removeClass('ok').after('<div id="sender_email_error_invalid" class="error"><i>Fill a valid e-mail address</i></div>');

check_status();

return false;
}



else {

removeErrors('sender_email', 'slideUp');

$('#sender_email').addClass('ok').removeClass('error');
}



};

$('#sender_email').bind('change', check_sender_email);
$('#sender_email').bind('blur', function() { if($('#sender_email').val()) { check_sender_email(); } });




var check_sender_message = function() {




if($('#sender_message').val() == '') {

removeErrors('sender_message', 'none');

$('#sender_message').addClass('error').removeClass('ok');

$('#sender_message').after('<div id="sender_message_error" class="error"><i>Fill your message</i></div>');

check_status();

return false;
} 



if ($('#sender_message').val().length < 1) { // if the message's legth is less than 15 characters

removeErrors('sender_message', 'none');

$('#sender_message').addClass('error').removeClass('ok').after('<div id="sender_message_error_min_chars" class="error"><i>Your message should have at least 1 characters.</i></div>');

check_status();

return false;
}


else {

removeErrors('sender_message', 'slideUp');

$('#sender_message').addClass('ok').removeClass('error');
}



};

$('#sender_message').bind('change', check_sender_message);
$('#sender_message').bind('blur', function() { if($('#sender_message').val()) { check_sender_message(); } });



/*
-----------------
Security Code
-----------------
*/

var check_security_code = function() {

if ($('#verified').is(':hidden')) {

$('#sc_error').remove();
	

if($('#security_code').val() == '') {

$('#security_code').addClass('error').removeClass('ok');
$('#captcha_area').after('<div id="sc_error" class="error"><i>Please enter the security code</i></div>');

check_status();

} else {

var c_currentTime = new Date();
var c_miliseconds = c_currentTime.getTime();

var validCode = $('#security_code').val();

/* [Start] AJAX Call */

$.ajax({ url: 'http://www.cocktailking.com.au/contact-contact-app/verify-code.php?x='+ c_miliseconds, 
	     data: "security_code="+ validCode,
	     type: 'post', 
	     datatype: 'html', 
	     success: function(outData) { 

	      	          if(outData != 1) {

	      	            if($("#sc_error.error").length == 0) {
	      	                $('#security_code').addClass('error').removeClass('ok');
	      	                $('#captcha_area').after('<div id="sc_error" class="error"><i>The security code is incorrect.</i></div>');

							check_status();
	      	            }

	      	          } else {

                      $('#security_code').remove();

                      $('#verified').fadeIn('fast', function() { 
					             $('#submit-button').before('<input class="ok" type="hidden" name="security_code" id="security_code" value="'+ validCode +'" />'); 
					  });
					  
					  }
					  
		              }, 

	     error: function(errorMsg) { alert('Error occured: ' + errorMsg); }});

/* [End] AJAX Call */

}

}

};

var checkSecurityCodeLive = function() {

//alert(1);

var c_currentTime = new Date();
var c_miliseconds = c_currentTime.getTime();

var validCode = $('#security_code').val();

/* [Start] AJAX Call */

$.ajax({ url: 'http://www.cocktailking.com.au/contact-contact-app/verify-code.php?x='+ c_miliseconds, 
	     data: "security_code="+ validCode,
	     type: 'post', 
	     datatype: 'html', 
	     success: function(outData) { 

	      	          if(outData == 1) {

					  $('#sc_error').remove();

                      $('#security_code').remove();
					  
					  $('#captcha_area').hide(); 

                      $('#verified').fadeIn('fast', function() { 
					             $('#submit-button').before('<input class="ok" type="hidden" name="security_code" id="security_code" value="'+ validCode +'" />'); 
					  });
					  
					  $('div').removeClass("highlighted");

					  check_status();

					  }
					  
		              }, 

	     error: function(errorMsg) { alert('Error occured: ' + errorMsg); }});

/* [End] AJAX Call */

};

var checkSecurityCodeIfNotNULL = function() {
if($('#security_code').val()) { check_security_code(); }
};

$('#security_code').change(check_security_code);
$('#security_code').blur(checkSecurityCodeIfNotNULL);
$('#security_code').keyup(checkSecurityCodeLive);

$(':input.required').bind('change blur keyup', check_status);

function check_status() {

// Necessary if the form was reseted

if($('#success_sent').val() == 1) { 
      $('#acf-note').slideUp('slow');
	  
      $('#acf-note').html('');

      $('#success_sent').val(0); 
	  return true; 
} 


$("label[id$='_error']").addClass('styled');


if($("label.error").length > 0) { 
	// Show the top notice error
	$('#acf-note').html('<div class="notification_error">Please correct the errors and re-submit the form!</div>').slideDown('slow');
}

if($("label.error").length == 0) { 
	$('#acf-note').slideUp('slow'); // Hide the top notice error using a 'slide' effect (if necessary)
}

return true;

};

function removeErrors(keyField, mode) {

if(mode == 'slideUp') {

$('#'+ keyField +'_error').slideUp("fast", function() { $(this).remove(); } );
$('#'+ keyField +'_error_invalid').slideUp("fast", function() { $(this).remove(); } );
$('#'+ keyField +'_error_min_chars').slideUp("fast", function() { $(this).remove(); } );

} else {

$('#'+ keyField +'_error').remove();
$('#'+ keyField +'_error_invalid').remove();
$('#'+ keyField +'_error_min_chars').remove();

}

};



 



$('#ajax-contact-form p :input').focus(function() { $(this).closest('p').addClass("highlighted"); })
								                          .blur(function() { $(this).closest('p').removeClass("highlighted"); });
	    
   
$("#ajax-contact-form p label").inFieldLabels({ fadeOpacity:0.3, fadeDuration:200 });

});

