/*
 * Setting JQuery non conflict mode
 */
var $j = jQuery.noConflict();
		
$j(document).ready(function() { 
	
	/*
	 * Add class to input on focus
	 */
	  $j('input').focus(
		  function() {
			  $j(this).addClass('focus');
		  }
	  );
	
	/*
	 * Hover effect for send button
	 */
	$j('#submitContactForm').hover(function(){
	       $j(this).attr('src', '/templates/public/pujcky/img/zazadat_hover.png');
	}, function(){
	       $j(this).attr('src', '/templates/public/pujcky/img/zazadat_pasiv.png');
	});

	/*
	 * Setting calendar
	 */
	$j.datepicker.setDefaults($j.extend({showMonthAfterYear: false}, $j.datepicker.regional['cs']));
	$j("#date").datepicker({minDate: 0});
    
	/*
	 * Setting timepicker
	 */
	$j("#time1").timePicker({
			startTime: "07:00",
			endTime: "20:00",
			separator: ":",
			step: 60
	});
	
	$j("#time2").timePicker({
		startTime: "08:00",
		endTime: "21:00",
		separator: ":",
		step: 60
});
	
	// Store time used by duration.
	var oldTime = $j.timePicker("#time1").getTime();

	// Keep the duration between the two inputs.
	$j("#time1").change(function() {
	  if ($j("#time2").val()) { // Only update when second input has a value.
	    // Calculate duration.
	    var duration = ($j.timePicker("#time2").getTime() - oldTime);
	    var time = $j.timePicker("#time1").getTime();
	    // Calculate and update the time in the second input.
	    $j.timePicker("#time2").setTime(new Date(new Date(time.getTime() + duration)));
	    oldTime = time;
	  }
	});
	// Validate.
	$j("#time2").change(function() {
	  if($j.timePicker("#time1").getTime() > $j.timePicker(this).getTime()) {
	    $j(this).addClass("err");
	  }
	  else {
	    $j(this).removeClass("err");
	  }
	});
	
	//sms Verification preparation
	  $j('#smsCode-label').hide();
	  $j('#smsVerificationCode-label').hide();
	  $j('#smsVerificationCode-element').hide();
	
	/*
	   * Add custom validator on czech personal identification number
	   */
	  $j.validator.addMethod('pin', function(value, age) {

		  var pinOne = $j('#nativeNumberPartOne').val();
		  var pinTwo = $j('#nativeNumberPartTwo').val();
		  var pin = pinOne + pinTwo;
		  
		  if (!age) age=0;
		  try
		  {
			  //if(x.length == 0) return true;
			  	if(pin.length < 9) throw 1;
			  
				var year = parseInt(pin.substr(0, 2), 10);
				var month = parseInt(pin.substr(2, 2), 10);
				var day = parseInt(pin.substr(4, 2), 10);
				var ext = parseInt(pin.substr(6, 3), 10);
				if((pin.length == 9) && (year < 54)) return true;
				var c = 0;
				if(pin.length == 10) c = parseInt(pin.substr(9, 1));
				var m = parseInt(pin.substr(0, 9)) % 11;
				if(m == 10) m = 0;
				if(m != c) throw 1;
				year += (year < 54) ? 2000 : 1900;
				if((month > 70) && (year > 2003)) month -= 70;
				else if (month > 50) month -= 50;
				else if ((month > 20) && (year > 2003)) month -= 20;
				var d = new Date();
				if((year + age) > d.getFullYear()) throw 1;
				if(month == 0) throw 1;
				if(month > 12) throw 1;
				if(day == 0) throw 1;
				if(day > 31) throw 1
		  }
		  catch(e)
		  {
			  return false;
		  }
		  
		  return true;
		   }, 'Please enter a valid pin.');
	  
	  /*
	   * Add custom validator on phone number
	   */
	  $j.validator.addMethod('phone', function(value) {
		  //var numbers = value.split(/\d/).length - 1;
		  return (value.match(/^(\+420)? ?\d{3} ?\d{3} ?\d{3}$/)); }, 'Please enter a valid phone number');
	  
	  /*
	   * Add custom validator on phone number fakes
	   */
	  $j.validator.addMethod('phoneFake', function(value) {
		  var phoneVal = $j('#tel').val();
		  var fakes = new Array('234567', '345678', '456789', '567890', '012345', '123456');
		  var phoneLength = phoneVal.length;
		  if (phoneLength == 9)
		  {
			  var phoneStr = phoneVal.substr(3, 6);
		  }
		  else
		  {
			  var phoneStr = phoneVal.substr(7, 6);
		  }
		  try
		  {
			  
			  for (var i=0;i<fakes.length;i++){
				 var re = new RegExp(fakes[i]);
				 var res = phoneVal.search(re);
				 //alert("Nalezeno na pozici: "+res+"!");
				 if (res != -1) throw 1;
				 delete re;
				 delete res;
			  }
			  
			  var res = phoneStr.search(/(\d)\1\1(\d)\2\2/);
			  if (res != -1) throw 1;
		  }
		  catch(e)
		  {
			  return false;
		  }
		  return true; }, 'Please enter a valid phone number');
	  
	  /*
	   *  Add custom validator on Czech psc
	   */
	  $j.validator.addMethod('psc', function(value, element) {
			  if (value.length == 5){
				  return true;
			  }
			  else {
				  return false
			  }
	  }, 'Lenght must be accurate 5 characters.');
	  
	  
	  /*
	   * Add custom validator on mobile phone extension
	   */
	  
	  $j.validator.addMethod('checkMob', function(value) {
		  if (value.length == 9)
		  {
			  if (value.match(/^[6-7]/)){
				  return true;
			  }else{
				  return false;
			  }
		  }
		  if (value.length == 13){
			  var p = value.substr(4,13);
			  if (p.match(/^[6-7]/)){
				  return true;
			  }else{
				  return false;
			  }
		  }
	  }, 'Please enter valid mobil phone number.'	  
	  );
	  
	  /*
	   * Add custom validator for timepicker
	   */
	  
	  $j.validator.addMethod('tDiff', function(value) {
		  if($j.timePicker("#time1").getTime() >= $j.timePicker("#time2").getTime()) {
			    return false;
			  }
			  else {
			   return true;
			  }
	  }, 'Time 2 cannot be smaller than Time 1');
	  
	  /*
	   * Add custom validator for check label
	   */
	  $j.validator.addMethod('isChecked', function(value){
		  return ($j("#check").is(':checked'))
	  }, 'Element not checked');
	  
	  /*
	   * Add custom validator for letter only
	   */
	  
	  $j.validator.addMethod("lettersonly", function(value, element) {
          return value.match(/^[a-žA-Ž., ]*$/);
      }, "Letters only please");

	  
	  /*
	   * Validate form
	   */
	  
	  $j("#ProvidentForm").validate({ 
		  
    		  rules: { 
    		  jmeno: {
		  		required: true,
		  		lettersonly: true
	          },
    		  prijmeni: {
		  		required: true,
		  		lettersonly: true
	          },
    		  phone: {
		  		required: true,
		  		phone: true
	  		  },
	  		  nativeNumberPartOne: {
	  			  required: true,
	  			  digits: true,
	  			  minlength: 6
	  		  },
	  		  nativeNumberPartTwo: {
	  			  required: true,
	  			  digits: true,
	  			  pin: true,
	  			  minlength: 3
	  		  },
	  		  vyse_pujcky: {
	  			  required: true,
	  			  digits: true,
	  			  min: 3000,
	  			  max: 50000
	  		  },
	  		  town: {
	  			  required: true,
	  			  lettersonly: true
	  		  },
	  		  psc: {
	  			  required: true,
	  			  digits: true,
	  			  psc: true
	  		  },
	  		  ulice: {
	  			  required: true
	  		  },
	  		  popisne: {
	  			  required: true
	  		  },
	  		  email: {
	  			  required: true,
	  			  email: true
	  		  },
	  		  tel: {
	  			  required: true,
	  			  phone: true,
	  			  checkMob: true,
	  			  phoneFake: true
	  		  },
	  		  ciste: {
	  			  required: true,
	  			  digits: true
	  		  },
	  		  check: {
	  			  isChecked: true
	  		  },
    		  date: {
	  			  required: true,
	  			  dateDE: true
	  		  },
	  		  time2: {
	  			  required: true,
	  			  tDiff: true
	  		  },
    		  time1: "required"
    		  
    		  
    		},
    		messages: { 
    			  jmeno: {
    					required: "Prosím vyplňte Vaše jméno.",
    					lettersonly: "Povolena jsou pouze písmena, nikoliv číslice."
    		      },
    			  prijmeni: {
  					required: "Prosím vyplňte Vaše příjmení.",
					lettersonly: "Povolena jsou pouze písmena, nikoliv číslice."
		          },
    			  nativeNumberPartOne: {
    				  required: "Prosím<br/>vyplňte<br/>rodné číslo.",
    				  digits: "Prosím<br/>zadejte<br/>rodné číslo<br/>ve správném<br/>formátu -<br/>pouze čísla.",
    				  minlength: "Prosím<br/>zadejte<br/>rodné číslo<br/>ve správném<br/>formátu -<br/>min. 6 čísel."
    			  },
    			  nativeNumberPartTwo: {
    				  required: "Prosím<br/>vyplňte rodné číslo.",
    				  digits: "Prosím<br/>zadejte rodné číslo<br/>ve správném formátu -<br/>pouze čísla.",
    				  minlength: "Prosím<br/>zadejte rodné číslo<br/>ve správném formátu -<br/>min.3 čísla.",
    				  pin: "Zadaný údaj není korektní."
    			  },
    			  date: {
    				  required: "Prosím vyplňte datum.",
    				  dateDE: "Prosím zadejte datum ve správném formátu xx.xx.xxxx."
    			  },
    			  vyse_pujcky: {
    				  required: "Prosím vyplňte výši půjčky.",
    				  digits: "Prosím zadejte pouze číslice.",
    				  min: "Prosím zadejte<br/>hodnotu větší nebo rovno 3000.",
    				  max: "Prosím zadejte<br/>hodnotu menší nebo rovno 50000."
    			  },
    			  town: {
    				  required: "Prosím vyplňte město.",
    				  lettersonly: "Povolena jsou pouze písmena, nikoliv číslice."
    			  },
    			  psc: {
    				  required: "Prosím vyplňte PSČ.",
    				  digits: "Prosím zadejte pouze číslice.",
    				  psc: "PSČ musí mít přesně 5 znaků bez mezer."
    			  },
    			  ulice: {
    				  required: "Prosím vyplňte ulici."
    			  },
    			  popisne: {
    				  required: "Prosím<br/> zadejte číslo<br/>popisné."
    			  },
    			  email: {
    				  required: "Prosím vyplňte email.",
    				  email: "Email musí být ve správném<br/>formátu 'neco@domena.tld'."
    			  },
    			  tel: {
    				  required: "Prosím zadejte Váš telefon.",
    				  phone: "Prosím zadejte telefon<br/>ve správném formátu 603123456.",
    				  checkMob: "Prosím zadejte číslo<br/>mobilního telefonu.",
    				  phoneFake: "Zadaný údaj není korektní."
    			  },
    			  ciste: {
    				  required: "Prosím vyplňte výši čistých příjmů.",
    				  digits: "Prosím zadejte pouze číslice."
    			  },
    			  check: {
    				  isChecked: "Zatrhněte, pokud souhlasíte s podmínkami o použití osobních údajů."
    			  },
    			  time1: "Prosím<br/>vyplňte čas.",
    			  time2: {
    				  required: "Prosím<br/>vyplňte čas.",
    				  tDiff: "Chybně<br/>zadané rozmezí.<br/>Hodnota 'od'<br/>nesmí být<br/>menší nebo<br/>rovna hodnotě<br/>'do'."
    			  },
    			  phone: {
    				  required: "Prosím zadejte Váš telefon.",
    				  phone: "Prosím zadejte telefon ve správném formátu 603123456.",
    				  checkMob: "Prosím zadejte číslo<br/>mobilního telefonu.",
    				  phoneFake: "Zadaný údaj není korektní."
    				}
    			    }, 
    		submitHandler: function(form) {
    			    	var smsCode = $j('#smsCode').val();
    		    		   var ph = $j('#tel').val();
    		    		   var smsVer = $j('#smsVerificationCode').val()
    		   		   if (smsVer == ''){
    			    		   $j.ajax({
    			    			   
    			    			   type: 'get',
    			    		       url: '/ws/sendSms.php',
    			    		       data: 'ajax=1&send=1&phone='+ph+'&code='+smsCode,
    			    		       success: function() {
    			    			       $j('dt#vyse_pujcky-label').hide();
    			    			       $j('dd#vyse_pujcky-element').hide();
    			    			       $j('dt#jmeno-label').hide();
    			    			       $j('dd#jmeno-element').hide();
    			    			       $j('dt#prijmeni-label').hide();
    			    			       $j('dd#prijmeni-element').hide();
    			    			       $j('dt#nativeNumberPartOne-label').hide();
    			    			       $j('dd#nativeNumberPartOne-element').hide();
    			    			       $j('dt#nativeNumberPartTwo-label').hide();
    			    			       $j('dd#nativeNumberPartTwo-element').hide();
    			    			       $j('dt#psc-label').hide();
    			    			       $j('dd#psc-element').hide();
    			    			       $j('dt#town-label').hide();
    			    			       $j('dd#town-element').hide();
    			    			       $j('dt#ulice-label').hide();
    			    			       $j('dd#ulice-element').hide();
    			    			       $j('dt#popisne-label').hide();
    			    			       $j('dd#popisne-element').hide();
    			    			       $j('dt#tel-label').hide();
    			    			       $j('dd#tel-element').hide();
    			    			       $j('dt#email-label').hide();
    			    			       $j('dd#email-element').hide();
    			    			       $j('dt#ciste-label').hide();
    			    			       $j('dd#ciste-element').hide();
    			    			       $j('dt#date-label').hide();
    			    			       $j('dd#date-element').hide();
    			    			       $j('dt#time1-label').hide();
    			    			       $j('dd#time1-element').hide();
    			    			       $j('dt#time2-label').hide();
    			    			       $j('dd#time2-element').hide();
    			    			       $j('dt#podminky-label').hide();
    			    			       $j('dd#podminky-element').hide();
    			    			       $j('dt#check-label').hide();
    			    			       $j('dd#check-element').hide();
    				    			   $j('#smsCode-label').fadeIn();
    				    			   $j('#smsVerificationCode-label').fadeIn();
    				    			   $j('#smsVerificationCode-element').fadeIn();
    				    			   
    				    			   
    			    		   }
    			    		   });
    		    			    }
    		    		  
    		    		   if (smsVer != '')
    		    		   {
    			    		   if (smsCode == smsVer)
    			    		   {
    			    			  var i=1;
    			    			  //alert ('code='+smsCode+'\ncode2='+smsVer);
    			    		   }else{
    			    			    $j("#smsVerificationCode-element").append("<label for='smsVerificationCode' generated='true' class='error'>Chybně zadaný ověřovací kód.</label>");
    						  	    var i=0;
    						  	    //alert('i='+i+'\ncode='+smsCode+'\ncode2='+smsVer);
    			    		   }
    		    		   }
    		    		   if (i==1){
    		    			   form.submit();
    		    		   }
 			 }
	  });
	   
	 
});

