/*
@USER REGISTRATION FORM [version 1.0][comfort-suites.ro]
©2009 World D3sign 

Requires files: 
- jquery [core, ui, dimensions, tooltip]
- creditcard.js [© John Gardner]
*/


//::Input RegEX data types
var digitsOnly  = /[1234567890\ ]/g;
var integerOnly = /[0-9\.]/g;
var alphaOnly   = /[A-Za-z]/g;
var email_regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

//::Disable form submit btn (ev.submit)
var disable_submit = false;

//Filter FORM input
function restrictCharacters(myfield, e, restrictionType) {
  if (!e) var e = window.event
  if (e.keyCode) code = e.keyCode;
  else if (e.which) code = e.which;
  var character = String.fromCharCode(code);

  //if they pressed esc... remove focus from field...
  if (code==27) { this.blur(); return false; }
	
	/* ignore if they are press other keys
	strange because code: 39 is the down key AND ' key...
	and DEL also equalsyy . */
  
  if (!e.ctrlKey && code!=9 && code!=8 && code!=36 && code!=37 && 
  code!=38 && (code!=39 || (code==39 && character=="'")) && code!=40) {
    if (character.match(restrictionType)) {
      return true;
    } else {
      return false;
    }
  }
}
  
//Validate FORM data
function invalid_fdata() {
  //::error header
  var err_header = '<strong><font color="#ff0000">Check input fields:</font></strong><br /><br />';
  var err = '';
  var cc_number = $("#reg_card_number").val();
  var cc_type   = $("#reg_card_type").val();
  
  if($("#reg_name").val() == '' || $("#reg_name").val().match(/name|nume|\*/gi)) {
    err += "*Name <br />";
  }

  if(!checkCreditCard(cc_number, cc_type)) {
    err += "*" + ccErrors[ccErrorNo] + "<br />";
  }
  if($("#reg_card_verify_code").val() == '' || $("#reg_card_verify_code").val().match(/card|verify|code|\*/gi)) {
    err += "*Card verify code <br />";
  }
  if($("#reg_card_owner").val() == "" || $("#reg_card_owner").val().match(/card|owner|\*/gi)) {
    err += "*Card owner <br />";
  }
  if($("#reg_card_expire_date").val() == "") {
    err += "*Card expire date <br />";
  }
  if($("#reg_country").val() == '') {
    err += "*Country <br />";
  }
  if($("#reg_phone").val() == '' || $("#reg_phone").val().match(/phone|\*/gi)) {
    err += "*Phone <br />";
  }
  if(!email_regEx.test($("#reg_email").val())) {
    err += "*Invalid Email Address <br />";
  }
  if($("#reg_begin_date").val() == '') {
    err += "*Check-In date <br />";
  }
  if($("#reg_end_date").val()== '') {
    err += "*Departure date <br />";
  }
  
  if(err != "") {
    return err_header + err;
  } else {
    return false;
  }
}


//[ev:document.ready]
$(document).ready(function() {
  //Init JQuery UI Dialog
  var $dialog = $('<div style="text-align:left"></div>')
			.dialog({autoOpen: false, modal: true, title: 'Validation error'});
  
  //JQ.UI Datepickers
  $(function() {
    $("#reg_card_expire_date").datepicker();
	  $("#reg_begin_date").datepicker();
	  $("#reg_end_date").datepicker();
  });
  
  //FORM SUBMIT EV.
  $('#reg_submit').click(function() {
    if(!disable_submit) {
      var v_message = "";
          v_message = invalid_fdata();
      if(v_message) { //data validation error exists
        $dialog.html(v_message);
        $dialog.dialog('open');
        v_message = "";
      } else { //valid data -> process registration
        $("#registration_form").fadeOut(300, reg_process);
        disable_submit = true;
      }
    }
  });
  function reg_process() {
    $("#form_message").html("Sending registration request...");
    $("#form_message").fadeIn(300);
    
    if($("#reg_message").val() == "Message (optional)") {
      $("#reg_message").val("");
    }

    $.post("user_registration/registration_process.php", { 
      name:              $("#reg_name").val(), 
      card_type:         $("#reg_card_type :selected").text(),
      card_number:       $("#reg_card_number").val(),
      card_verify_code:  $("#reg_card_verify_code").val(),
      card_owner:        $("#reg_card_owner").val(),
      card_expire_date:  $("#reg_card_expire_date").val(),
      country:           $("#reg_country :selected").text() + ", " + $("#reg_country").val(),
      phone:             $("#reg_phone").val(),
      email:             $("#reg_email").val(),
      message:           $("#reg_message").val(),
      accomodation_date: $("#reg_begin_date").val(),
      departure_date:    $("#reg_end_date").val(),
      room_type:         $("#reg_rooms").val(),
      num_persons:       $("#reg_persons").val()
      }, function(data) {
        $("#form_message").html(data);
        setTimeout(function() {
          $("#form_message").fadeOut(300, reset_form);
        }, 1000);
      }
    );
  }
  function reset_form() {
    //reset form data
    $("#form_message").css("display", "none");
    $("#reg_name").val("Name *");
    $('#reg_card_type').val("Visa");
    $("#reg_card_number").val("Card number *");
    $("#reg_card_verify_code").val("Card verify code *");
    $("#reg_card_owner").val("Card owner *");
    $("#reg_card_expire_date").val("");
    $('#reg_country').val("RO");
    $("#reg_phone").val("Phone *");
    $("#reg_email").val("Email *");
    $("#reg_message").val("Message (optional)");
    $("#reg_begin_date").val("");
    $("#reg_end_date").val("");
    $("#reg_rooms").val("Single suites");
    $("#reg_persons").val("1");
    
    //display & activate form
    $("#registration_form").fadeIn(300);
    disable_submit = false;
  }
  
  //:::::FOCUS EV.:::::
  $("#reg_name").focus(function () {
    if($("#reg_name").val().match(/name|nume|\*/gi)) {$("#reg_name").val("");}
  });
  $("#reg_card_number").focus(function () {
    if($("#reg_card_number").val() == "Card number *") {$("#reg_card_number").val("");}
  });
  $("#reg_card_verify_code").focus(function () {
    if($("#reg_card_verify_code").val().match(/card|verify|code|\*/gi)) {$("#reg_card_verify_code").val("");}
  });
  $("#reg_card_owner").focus(function () {
    if($("#reg_card_owner").val().match(/card|owner|\*/gi)) {$("#reg_card_owner").val("");}
  });
  $("#reg_phone").focus(function () {
    if($("#reg_phone").val().match(/phone|\*/gi)) {$("#reg_phone").val("");}
  });
  $("#reg_email").focus(function () {
    if($("#reg_email").val() == "Email *") {$("#reg_email").val("");}
  });
  $("#reg_message").focus(function () {
    if($("#reg_message").val() == "Message (optional)") {$("#reg_message").val("");}
  });
  
  //:::::BLUR EV.:::::
   $("#reg_name").blur(function () {
    if($("#reg_name").val() == "") {$("#reg_name").val("Name *");}
  });
  $("#reg_card_number").blur(function () {
    if($("#reg_card_number").val() == "") {$("#reg_card_number").val("Card number *");}
  });
  $("#reg_card_verify_code").blur(function () {
    if($("#reg_card_verify_code").val() == "") {$("#reg_card_verify_code").val("Card verify code *");}
  });
  $("#reg_card_owner").blur(function () {
    if($("#reg_card_owner").val() == "") {$("#reg_card_owner").val("Card owner *");}
  });
  $("#reg_phone").blur(function () {
    if($("#reg_phone").val() == "") {$("#reg_phone").val("Phone *");}
  });
  $("#reg_email").blur(function () {
    if($("#reg_email").val() == "") {$("#reg_email").val("Email *");}
  });
  $("#reg_message").blur(function () {
    if($("#reg_message").val() == "") {$("#reg_message").val("Message (optional)");}
  }); 
});
