


/* 

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.pasadenavilla.com/miniform/contact-app/images/ajax-loader.gif';

    

	img2 = new Image(22, 22);

    img2.src = 'http://www.pasadenavilla.com/miniform/contact-app/images/icon-dialog-error.png';

	

	img3 = new Image(22, 22);

    img3.src = 'http://www.pasadenavilla.com/miniform/contact-app/images/icon-button-ok.png';



	img4 = new Image(16, 16);

    img4.src = 'http://www.pasadenavilla.com/miniform/contact-app/images/icon-refresh.png';



    /*

    -------------------------------------------------

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

    -------------------------------------------------

    */



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



    check_sender_name();
check_sender_phone();
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.pasadenavilla.com/miniform/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



window.location.replace("http://pasadenavilla.com/contact-thankyou-side.html");


       }

       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) {

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



		            result += 'Enter 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_phone_none) {

			       $j('#sender_phone').addClass('error').removeClass('ok');



		            result += 'Enter your phone<br />';

			  

			     } else if($.evalJSON(response).sender_phone_invalid) {

			 

			        result += '<br />';



			     } else if($.evalJSON(response).sender_phone_min_chars) {

			 

			        result += '<br />';



			     } else  {

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

                 }if($.evalJSON(response).sender_email_none) {

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



		            result += 'Enter an e-mail address<br />';

			  

			     } else if($.evalJSON(response).sender_email_invalid) {

			 

			        result += 'Enter 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) {

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



		            result += 'Enter 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 15 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 shown below<br />';



			  } else if($.evalJSON(response).security_code == 2) {

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

			  

			  result += 'The security code is incorrect.<br />';



              } else {



              $('#sec_div_one').hide();

			  $('#sec_div_two').show();



			  $('#captcha_div').hide();

              $('#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

	          $('#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.pasadenavilla.com/miniform/contact-app/captcha/image.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('<label id="sender_name_error" class="error"><i>Enter your name</i></label>');



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_phone = function() {











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



removeErrors('sender_phone', 'none');



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



$('#sender_phone').after('<label id="sender_phone_error" class="error"><i>Enter your phone</i></label>');



check_status();



return false;

} 










else {



removeErrors('sender_phone', 'slideUp');



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

}







};



$('#sender_phone').bind('change', check_sender_phone);

$('#sender_phone').bind('blur', function() { if($('#sender_phone').val()) { check_sender_phone(); } });












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('<label id="sender_email_error" class="error"><i>Enter an e-mail address</i></label>');



check_status();



return false;

} 







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



removeErrors('sender_email', 'none');



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



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('<label id="sender_message_error" class="error"><i>Enter your message</i></label>');



check_status();



return false;

} 










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



removeErrors('sender_message', 'none');



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



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 ($('#captcha_div').is(':visible')) {



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

	



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



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

$('#sec_div_one').after('<label id="sc_error" class="error">Please enter the security code shown below</label>');



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.pasadenavilla.com/miniform/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');

	      	                $('#sec_div_one').after('<label id="sc_error" class="error">The security code is incorrect.</label>');



							check_status();

	      	            }



	      	          } else {



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



					  $('#sec_div_one').hide(); 

					  $('#captcha_div').hide(); 



                      $('#sec_div_two').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.pasadenavilla.com/miniform/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();

					  

					  $('#sec_div_one').hide(); 

					  $('#captcha_div').hide(); 



                      $('#sec_div_two').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) { 

      $('#note').slideUp('slow');

	  

      $('#note').html('');



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

	  return true; 

} 






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






if($("label.error").length > 0) { 

	// Show the top notice error

	$('#note').html('<div class="notification_error">Please correct the errors and re-submit the form!</div>').slideDown('slow');

}



if($("label.error").length == 0) { 

	$('#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();



}



}



   


    var fields = ["sender_name", "sender_phone", "sender_email", "sender_message", "security_code"];



    $.each(fields, function() {



	    if(this == 'security_code') {

	

	      $('#' + this).focus(function() { $(this).parent('div').parent('div').addClass("highlighted"); })

				        .blur(function() { $(this).parent('div').parent('div').removeClass("highlighted"); });

        } else {

          $('#' + this).focus(function() { $(this).closest('div').addClass("highlighted"); })

				        .blur(function() { $(this).closest('div').removeClass("highlighted"); });

	    }



    });



   





});
