// JavaScript Document
var aktual = '';
var car = '';
var noType = false;

function carCalculator() {

}



function setType(type) {
  if (!noType) {
    aktual = type;
    document.getElementById('car3').style.display = 'block';
    document.getElementById('car4').style.display = 'none';
    document.getElementById('car5').style.display = 'none';
    document.getElementById('carMotor').selectedIndex = 0;
    document.getElementById('carPrevod').selectedIndex = 0;
    document.getElementById('carKaroserie').selectedIndex = 0;
    if(aktual == 'e' || aktual == 'd' || aktual == 'f')
      document.getElementById('car2').style.display = 'none';
    else
      document.getElementById('car2').style.display = 'block';
    aktual = aktual + '|v|v|v|';
    showCar();
//    noType = true;
  }
}

function setParam(value,position){
  aktual = aktual.substring(0,position) + value.value + aktual.substring(position+1,8);
  document.getElementById('car4').style.display = 'none';
  document.getElementById('car5').style.display = 'none';
  showCar();
}

function showCar() {
  var show = false;
  var elements = document.getElementsByTagName('div');

  for (var i=0;i<elements.length;i++) {
    if(elements[i].className == 'car'){
      input = elements[i].getElementsByTagName('input');
      for (var j=0; j<4; j++){
        aktualSmall = aktual.substring((2*j),(2*j+1));
        elementSmall = input[0].value.substring((2*j),(2*j+1));
        if ((aktualSmall == 'v') || (aktualSmall == elementSmall) || (elementSmall == 'z'))
          show = true;
        else {
          show = false;
          break;
        }
      }
      if (show)
        elements[i].style.display = 'block';
      else
        elements[i].style.display = 'none';
    }
  }
}

function showOneCar() {
  var show = false;
  var elements = document.getElementsByTagName('div');
  for (var i=0;i<elements.length;i++) {
    if(elements[i].className == 'car'){
      input = elements[i].getElementsByTagName('input');
      if (input[0].checked)
        elements[i].style.display = 'block';
      else
        elements[i].style.display = 'none';
    }
  }
}

function setCar(car,textCar){
  document.getElementById('car4').style.display = 'block';
  document.getElementById('selectCar').value = textCar;
  document.getElementById('carDateStart').focus();
  day =  getDay(false);
  days = day/1;
  price = getPriceAfterDay(car.value.substr(8),day);
  document.getElementById('carPriceDay').value = price;
  document.getElementById('carPriceDayShow').value = price/1;
  if (day =='v') {
    document.getElementById('carPriceDayShow').value = Math.ceil(document.getElementById('carPriceDayShow').value/4);
    if (price == 0) {
       day =  getDay(true);
       price = getPriceAfterDay(car.value.substr(8),day);
       days = day/1;
    } else {
      days = 1;
    }
  }
  if (day == 0)
    days = 1;
  document.getElementById('carPrice').value = price*days;
  document.getElementById('carPriceDPH').value = Math.ceil(price*days*1.19);
  setPrice();
}

function setPrice() {
  var elements = document.getElementsByTagName('div');
  day = getDay(false);
  days = day/1;
  if (day == 0)
    days = 1;
  document.getElementById('aktualTarif').value = getPriceAfterDay(document.getElementById('tarif').value,day);
  for (var i=0;i<elements.length;i++) {
    if(elements[i].className == 'car'){
      input = elements[i].getElementsByTagName('input');
      price = getPriceAfterDay(input[0].value.substring(8),day);
      if (price == 0 && day == 0) {
        day=1;
        price = getPriceAfterDay(input[0].value.substring(8),day);
        document.getElementById('aktualTarif').value = getPriceAfterDay(document.getElementById('tarif').value,day);
      }
      if (price == 0 && day == 'v') {
        day=getDay(true);
        days = day/1;
        price = getPriceAfterDay(input[0].value.substring(8),day);
        document.getElementById('aktualTarif').value = getPriceAfterDay(document.getElementById('tarif').value,day);
      }

      if (input[0].checked) {
        document.getElementById('carPriceDay').value = price;
        document.getElementById('carPriceDayShow').value = price/1;
        if (day == 'v')
          document.getElementById('carPriceDayShow').value = Math.ceil(price/4);
        document.getElementById('carPriceDayShowDPH').value = Math.ceil(document.getElementById('carPriceDayShow').value*1.19);
      }
      priceDay = price;
      if (day == 'v') {
        days = 1;
        priceDay = Math.ceil(price/4);
      }
      if (day == 0)
        days = 1;

      input[1].value = price*days;
      input[2].value = priceDay;
    }
  }
  document.getElementById('carPrice').value = document.getElementById('carPriceDay').value * days;
  document.getElementById('carPriceDPH').value = Math.ceil(document.getElementById('carPrice').value * 1.19);
}

function getPriceAfterDay(price,day) {
  if (day>0) {
    price = price.substring(price.indexOf('|')+1);
//     alert(price);
  }
  if (day>1) {
    price = price.substring(price.indexOf('|')+1);
//     alert(price);
  }
  if (day>3) {
    price = price.substring(price.indexOf('|')+1);
//     alert(price);
  }
  if (day>10) {
    price = price.substring(price.indexOf('|')+1);
//     alert(price);
  }
  if (day>29) {
    price = price.substring(price.indexOf('|')+1);
//     alert(price);
  }
  if (day == 'v') {
    price = price.substring(price.lastIndexOf('|')+1);
    return (price);
  }
  price = price.substring(0,price.indexOf('|'));
  return price;
}

function setAll() {
    day = getDay(false);
    document.getElementById('car1').style.display = 'none';
    document.getElementById('car2').style.display = 'none';
    document.getElementById('car2next').style.display = 'none';
    showOneCar();
//     document.getElementById('car3').style.display = 'none';
//     document.getElementById('car4').style.display = 'none';
    document.getElementById('car5').style.display = 'block';
    return false;
}

function back() {
    document.getElementById('car1').style.display = 'block';
    document.getElementById('car2').style.display = 'block';
    document.getElementById('car3').style.display = 'block';
    document.getElementById('car4').style.display = 'block';
    document.getElementById('car5').style.display = 'none';
    document.getElementById('car2next').style.display = '';
    showCar();
    return false;
}

function rent() {
  var error4 = true;
  error1 = controlName(document.getElementById('carName'));
  error2 = controlPhone(document.getElementById('carPhone'));
  error3 = controlEmail(document.getElementById('carEmail'));
  error4 = controlAddress(document.getElementById('carAddress'));
  if (error1 && error2 && error3 && error4){
   document.getElementById('carCalculator').submit();
}
  return false;
}

function getDay(special) {
  dateText = document.getElementById('carDateStart').value;
  day = dateText.substring(0,dateText.indexOf('/'));
  month = dateText.substring(dateText.indexOf('/')+1);
  year = month.substring(dateText.indexOf('/'));
  month = month.substring(0,month.indexOf('/'));
  year = year.substring(0,year.indexOf(' '));
  hour = dateText.substring(dateText.indexOf('0'),dateText.indexOf(':'));
  dateStart = Date.parse(year + '/' + month + '/' + day + dateText.substring(dateText.indexOf(' ')));
  dateText = document.getElementById('carDateEnd').value;
  day = dateText.substring(0,dateText.indexOf('/'));
  month = dateText.substring(dateText.indexOf('/')+1);
  year = month.substring(dateText.indexOf('/'));
  month = month.substring(0,month.indexOf('/'));
  year = year.substring(0,year.indexOf(' '));
  dateEnd = Date.parse(year + '/' + month + '/' + day + dateText.substring(dateText.indexOf(' ')));
  day = Math.ceil((dateEnd - dateStart)/(1000*60*60*24));
  if (special==true)
     return(day);
  dateE = new Date();
  dateE.setTime(dateEnd);
  dateS = new Date();
  dateS.setTime(dateStart);
  if ((dateE.getDay()<1 || (dateE.getDay()==1 && dateE.getHours()<13)) && (dateS.getDay()>5 || (dateS.getDay()==5 && dateS.getHours()>7)) && day>2 && day<5) {
    return ('v');
  }
  if ((((dateEnd-dateStart)/(1000*60*60))<10) && dateE.getHours()<18)
      return(0);
  return(day);
}

function controlName(name) {
  error = checkName(name);
  if (error){
    document.getElementById('carNameHelp').innerHTML = error;
    name.style.backgroundColor = '#FF4400';
    return false;
  }
  else {
    document.getElementById('carNameHelp').innerHTML = error;
    name.style.backgroundColor = '#FFFFFF';
    return true;
  }
}
function controlAddress(address) {
  if (document.getElementById('carPristav').checked){
    error = checkAddress(address);
    if (error){
      document.getElementById('carAddressHelp').innerHTML = error;
      address.style.backgroundColor = '#FF4400';
      return false;
    }
    else {
      document.getElementById('carAddressHelp').innerHTML = error;
      address.style.backgroundColor = '#FFFFFF';
      return true;
    }
  }
  else {
    document.getElementById('carAddressHelp').innerHTML = '';
    address.style.backgroundColor = '#FFFFFF';
    return true;
  }
}
function controlPhone(phone) {
  error = checkPhone(phone);
  if (error){
    document.getElementById('carPhoneHelp').innerHTML = error;
    phone.style.backgroundColor = '#FF4400';
    return false;
  }
  else {
    document.getElementById('carPhoneHelp').innerHTML = error;
    phone.style.backgroundColor = '#FFFFFF';
    return true;
  }
}
function controlEmail(email) {
  error = checkEmail(email);
  if (error){
    document.getElementById('carEmailHelp').innerHTML = error;
    email.style.backgroundColor = '#FF4400';
    return false;
  }
  else {
    document.getElementById('carEmailHelp').innerHTML = error;
    email.style.backgroundColor = '#FFFFFF';
 return true;
  }
}

function checkName(str) {
  if (str.value == "")
      return ("Musíte zadat jméno.\n");
  else {
    $RegExp = new RegExp("^[\x20-\x7E ěščřžýáíéĚŠČŘŽÝÁÍÉďĎňŇóÓťŤůŮúÚ0-9,;/]{2,}$","i");
    if (str.length > 80) {
      return ("Jméno nemá správnou délku.\nMusí obsahovat maximálně 80 znaků.\n");
    }
    else if (!str.value.match($RegExp)) {
      return ("Jméno obsahuje nepovolené znaky.\n");
    }
    return("");
  }
}

function checkAddress(str) {
  if (str.value == "")
      return ("Musíte zadat adresu.\n");
  else {
    $RegExp = new RegExp("^[a-zA-Z_ ěščřžýáíéĚŠČŘŽÝÁÍÉďĎňŇóÓťŤůŮúÚ0-9,;/]{1,}$","i");
    if (str.length > 250) {
      return ("Adresa nemá správnou délku.\nMusí obsahovat maximálně 250 znaků.\n");
    }
    else if (!str.value.match($RegExp)) {
      return ("Adresa obsahuje nepovolené znaky.\n");
    }
    return("");
  }
}

function checkPhone(str) {
  if (str.value == "")
      return ("Musíte zadat telefon.\n");
  else {
    $RegExp = new RegExp("^[+]{1}[0-9]{2,3}[0-9]{9}$","i");
    if (!str.value.match($RegExp)) {
      return ("Telefon nemá správný formát.\nTelefoní číslo musí být zadáno v mezinárodním formátu (+420999999999).\n");
    }
    return("");
  }
}

function checkEmail(str) {
  if (str.value == "")
     return ("Musíte zadat e-mail.\n");
  else {
    $RegExp = new RegExp("^[a-zA-Z0-9_.]{1,}[@]{1}[a-zA-Z_]{1,}[.]{1}[a-zA-Z_]{0,}[.]{0,1}[a-zA-Z_]{2,3}$","i");
    if (!str.value.match($RegExp)) {
      return ("E-mail nemá správný formát.\n");
    }
    return("");
  }
}

/*
function checkName(str,lang='cz') {
  if (str.value == "")
      return (setText(1,lang));
  else {
    $RegExp = new RegExp("^[\x20-\x7E ěščřžýáíéĚŠČŘŽÝÁÍÉďĎňŇóÓťŤůŮúÚ0-9,;/]{2,}$","i");
    if (str.length > 80) {
      return (setText(2,lang));
    }
    else if (!str.value.match($RegExp)) {
      return (setText(3,lang));
    }
    return("");
  }
}

function checkAddress(str,lang='cz') {
  if (str.value == "")
      return (setText(4,lang));
  else {
    $RegExp = new RegExp("^[a-zA-Z_ ěščřžýáíéĚŠČŘŽÝÁÍÉďĎňŇóÓťŤůŮúÚ0-9,;/]{1,}$","i");
    if (str.length > 250) {
      return (setText(5,lang));
    }
    else if (!str.value.match($RegExp)) {
      return (setText(6,lang));
    }
    return("");
  }
}

function checkPhone(str,lang='cz') {
  if (str.value == "")
      return (setText(7,lang));
  else {
    $RegExp = new RegExp("^[+]{1}[0-9]{2,3}[0-9]{9}$","i");
    if (!str.value.match($RegExp)) {
      return (setText(8,lang));
    }
    return(setText(9,lang));
  }
}

function checkEmail(str,lang='cz') {
  if (str.value == "")
     return (setText(10,lang));
  else {
    $RegExp = new RegExp("^[a-zA-Z0-9_.]{1,}[@]{1}[a-zA-Z_]{1,}[.]{1}[a-zA-Z_]{0,}[.]{0,1}[a-zA-Z_]{2,3}$","i");
    if (!str.value.match($RegExp)) {
      return (setText(11,lang));
    }
    return(setText(12,lang));
  }
}

function setText($type,$lang) {
  switch($type) {
      case 1:
        if ($lang == cz)
           return("Musíte zadat jméno.\n");
        else
           return("");
      break;
      case 2:
        if ($lang == cz)
           return("Jméno nemá správnou délku.\nMusí obsahovat maximálně 80 znaků.\n");
        else
           return("");
      break;
      case 3:
        if ($lang == cz)
           return("Jméno obsahuje nepovolené znaky.\n");
        else
           return("");
      break;
      case 4:
        if ($lang == cz)
           return("Musíte zadat adresu.\n");
        else
           return("");
      break;
      case 5:
        if ($lang == cz)
           return("Adresa nemá správnou délku.\nMusí obsahovat maximálně 250 znaků.\n");
        else
           return("");
      break;
      case 6:
        if ($lang == cz)
           return("Adresa obsahuje nepovolené znaky.\n");
        else
           return("");
      break;
      case 7:
        if ($lang == cz)
           return("Musíte zadat telefon.\n");
        else
           return("");
      break;
      case 8:
        if ($lang == cz)
           return("Telefon nemá správný formát.\nTelefoní číslo musí být zadáno v mezinárodním formátu (+420999999999).\n");
        else
           return("");
      break;
      case 9:
          if ($lang == cz)
           return("");
        else
           return("");
      break;
      case 10:
          if ($lang == cz)
           return("Musíte zadat e-mail.\n");
        else
           return("");
      break;
      case 11:
          if ($lang == cz)
           return("E-mail nemá správný formát.\n");
        else
           return("");
      break;
      case 12:
          if ($lang == cz)
           return("");
        else
           return("");
      break;
      default:
           return("Není chybové hlášení.");
  }
}*/

