
today = new Date();

function ValidateSummary(form) {
  var summaxpax = 0;
  
  if (form["checkin[]"].length) {
    for (i = 0; i < form["checkin[]"].length; i++) {
      // quantity
      if (isNaN(parseInt(form["quantity[]"][i].value)) || parseInt(form["quantity[]"][i].value)<=0) {
        alert("Wrong quantity: "+form["quantity[]"][i].value);
        form["quantity[]"][i].focus();
        return false;   
      }
      else
        form["quantity[]"][i].value = parseInt(form["quantity[]"][i].value);
  
      if ( (qntarr) && (parseInt(form["quantity[]"][i].value) > qntarr[i]) ) {
        alert ("Maximum quantity is: "+qntarr[i]);
        form["quantity[]"][i].focus();
        return false;
      }

      if ( paxarr )
        summaxpax += parseInt(form["quantity[]"][i].value)*paxarr[i];

   //   if ( (trfarr) && (trfarr[i]==1) && (form["note[]"][i].value.length<1) ) {
      //  alert ("Please enter your flight number in the NOTE field!");
       // form["note[]"][i].focus();
       // return false;
     // }
  
      var dt = DateSplit(form["checkin[]"][i].value);
  
      // CHECKIN
      if (!dt || isNaN(dt[0]) || isNaN(dt[1]) || isNaN(dt[2])) {
        alert("Wrong date!");
        return false;
      }
  
  
      if (!Valid_date(dt[1], dt[0], dt[2])) {
        alert("Wrong checkin date: "+dt[1]+"/"+dt[0]+"/"+dt[2]);
        return false; 
      }
      
      if (isOutdated(dt[1], dt[0], dt[2])) {
        alert("checkin: "+dt[1]+"/"+dt[0]+"/"+dt[2]+" is out of date"); 	    
        return false; 
      }
  
      // jinak nastavuju na spravnou
      form["checkin[]"][i].value = dt[0]+"/"+dt[1]+"/"+(dt[2]<2000?dt[2]+2000:dt[2])
  
      // CHECKIN-TIME
      if (form["checkin_time[]"][i]) {
        var ret = Check_time(form["checkin_time[]"][i].value);
        if (!ret) {
          alert("Wrong time: "+form["checkin_time[]"][i].value);
          return false;   
        }
        else
          form["checkin_time[]"][i].value = ret; 
      }
  
      // CHECK-OUT
      if (form["checkout[]"][i].value!="0") {
        dto = DateSplit(form["checkout[]"][i].value);
  
        if (!dto || isNaN(dto[0]) || isNaN(dto[1]) || isNaN(dto[2])) {
          alert("Wrong date!");
          return false;
        }
  
   
        if (!Valid_date(dto[1], dto[0], dto[2])) {
          alert("Wrong checkout date: "+dto[1]+"/"+dto[0]+"/"+dto[2]);
          return false; 
        }
      
        if (isOutdated(dto[1], dto[0], dto[2])) {
          alert("checkout: "+dto[1]+"/"+dto[0]+"/"+dto[2]+" is out of date"); 	    
          return false; 
        }
  
        if (!Check_DateGtDate(dto[1], dto[0], dto[2], dt[1], dt[0], dt[2])) {
          alert("checkout: "+dto[1]+"/"+dto[0]+"/"+dto[2]+" is not greater than checkin: "+dt[1]+"/"+dt[0]+"/"+dt[2]); 	    
          return false; 
        }
  
        // jinak nastavuju na spravnou
        form["checkout[]"][i].value = dto[0]+"/"+dto[1]+"/"+(dto[2]<2000?dto[2]+2000:dto[2])
      }
   
    }
  }
  else {
    
      // quantity
      if (isNaN(parseInt(form["quantity[]"].value)) || parseInt(form["quantity[]"].value)<=0) {
        alert("Wrong quantity: "+form["quantity[]"].value);
        form["quantity[]"].focus();
        return false;   
      }
      else
        form["quantity[]"].value = parseInt(form["quantity[]"].value);

      if ( (qntarr) && (parseInt(form["quantity[]"].value) > qntarr[0]) ) {
        alert ("Maximum quantity is: "+qntarr[0]);
        form["quantity[]"].focus();
        return false;
      }

      if ( paxarr )
        summaxpax += parseInt(form["quantity[]"].value)*paxarr[0];

    
















      var dt = DateSplit(form["checkin[]"].value);
  
      // CHECKIN
      if (!dt || isNaN(dt[0]) || isNaN(dt[1]) || isNaN(dt[2])) {
        alert("Wrong number!");
        return false;
      }
  
  
      if (!Valid_date(dt[1], dt[0], dt[2])) {
        alert("Wrong checkin date: "+dt[1]+"/"+dt[0]+"/"+dt[2]);
        return false; 
      }
      
      if (isOutdated(dt[1], dt[0], dt[2])) {
        alert("checkin: "+dt[1]+"/"+dt[0]+"/"+dt[2]+" is out of date"); 	    
        return false; 
      }
  
      // jinak nastavuju na spravnou
      form["checkin[]"].value = dt[0]+"/"+dt[1]+"/"+(dt[2]<2000?dt[2]+2000:dt[2])
  
      // CHECKIN-TIME
      if (form["checkin_time[]"]) {
        var ret = Check_time(form["checkin_time[]"].value);
        if (!ret) {
          alert("Wrong time: "+form["checkin_time[]"].value);
          return false;   
        }
        else
          form["checkin_time[]"].value = ret; 
      }
  
      // CHECK-OUT
      if (form["checkout[]"].value!="0") {
        dto = DateSplit(form["checkout[]"].value);
  
        if (!dto || isNaN(dto[0]) || isNaN(dto[1]) || isNaN(dto[2])) {
          alert("Wrong number!");
          return false;
        }
  
   
        if (!Valid_date(dto[1], dto[0], dto[2])) {
          alert("Wrong checkout date: "+dto[1]+"/"+dto[0]+"/"+dto[2]);
          return false; 
        }
      
        if (isOutdated(dto[1], dto[0], dto[2])) {
          alert("checkout: "+dto[1]+"/"+dto[0]+"/"+dto[2]+" is out of date"); 	    
          return false; 
        }
  
        if (!Check_DateGtDate(dto[1], dto[0], dto[2], dt[1], dt[0], dt[2])) {
          alert("checkout: "+dto[1]+"/"+dto[0]+"/"+dto[2]+" is not greater than checkin: "+dt[1]+"/"+dt[0]+"/"+dt[2]); 	    
          return false; 
        }

        // jinak nastavuju na spravnou
        form["checkout[]"].value = dto[0]+"/"+dto[1]+"/"+(dto[2]<2000?dto[2]+2000:dto[2])
      }    
  }

  if (form.res_pax.value=="" || isNaN(parseInt(form.res_pax.value)) || parseInt(form.res_pax.value)<0) {
     alert("Wrong format of: PERSONS");	
     form.res_pax.focus();
     return false;
  }
  else
     form.res_pax.value = parseInt( form.res_pax.value);

  if (form.res_kids.value=="" || isNaN(parseInt(form.res_kids.value)) || parseInt(form.res_kids.value)<0) {
     alert("Wrong format of: KIDS");	
     form.res_kids.focus();
     return false;
  }
  else
     form.res_kids.value = parseInt( form.res_kids.value);

  var reqcap = parseInt(form.res_pax.value) + parseInt(form.res_kids.value);
  if (  reqcap > summaxpax ) {
    alert("Capacity of selected services is: "+summaxpax+", you required: "+reqcap+"\n Add supplement or change type of room by clicking on product name.");
    return false;
  }

  // vsechno OK
 // form.action = "http://www.travel.cz/cart/summary_en.html";

  return true;
}

function Validate1(form) {
  var d = form.ch_d.options[form.ch_d.selectedIndex].value;
  var my = form.ch_my.options[form.ch_my.selectedIndex].value;
  
  var dt = my.split("/");

  if (!Valid_date(d, dt[0], dt[2])) {
    alert("Wrong date: "+d+"/"+dt[0]+"/"+dt[2]);
    form.ch_d.focus();
    return false; 
  }
    
  if (isOutdated(d, dt[0], dt[2])) {
    alert(d+"/"+dt[0]+"/"+dt[2]+" is out of date"); 	    
    form.ch_d.focus();
    return false; 
  }

  if (form.nights && (isNaN(parseInt(form.nights.value)) || parseInt(form.nights.value)<=0)) {
    alert("Wrong number - nights");
    form.nights.focus();
    return false;
  }
  else
     form.nights.value = parseInt(form.nights.value);
    
  if (form.pers && form.pers.value!="") {
    if ((isNaN(parseInt(form.pers.value)) || parseInt(form.pers.value)<=0)) {
      alert("Wrong number - persons");
      form.pers.focus();
      return false;
    }
    else
       form.pers.value = parseInt(form.pers.value);
  }

  if (form.pr_range && form.pr_range.value!="") {
    if ((isNaN(parseInt(form.pr_range.value)) || parseInt(form.pr_range.value)<=0)) {
      alert("Wrong number - price");
      form.pr_range.focus();
      return false;
    }
    else
       form.pr_range.value = parseInt(form.pr_range.value);
  }

  return true;
}

function ValidateEasyForm(form, summaxpax) {
  if (form.user_firstname.value.length<1) {
     alert("User first name is required to fill!");	
     form.user_firstname.focus();
     return false;
  }

  if (form.user_surname.value.length<1) {
     alert("User surname is required to fill!");	
     form.user_surname.focus();
     return false;
  }
  	
  if (form.user_geoid.selectedIndex<=0) {
     alert("User country is required to choose!");	
     form.user_geoid.focus();
     return false;
  }

  if (form.user_city.value.length<1) {
     alert("User city is required to fill!");	
     form.user_city.focus();
     return false;
  }

  if (form.user_mail.value.length<1 && form.user_fax.value.length<1 && form.user_phone.value.length<1) {
     alert("User mail or fax or phone or gsm is required to fill!");	
     form.user_mail.focus();
     return false;
  }

  if (form.res_pax.value=="" || isNaN(parseInt(form.res_pax.value)) || parseInt(form.res_pax.value)<0) {
     alert("Wrong format of: PERSONS");	
     form.res_pax.focus();
     return false;
  }
  else
     form.res_pax.value = parseInt( form.res_pax.value);

  if (form.res_kids.value=="" || isNaN(parseInt(form.res_kids.value)) || parseInt(form.res_kids.value)<0) {
     alert("Wrong format of: KIDS");	
     form.res_kids.focus();
     return false;
  }
  else
     form.res_kids.value = parseInt( form.res_kids.value);

  var reqcap = parseInt(form.res_pax.value) + parseInt(form.res_kids.value);
  if (  reqcap > summaxpax ) {
    alert("Capacity of selected services is: "+summaxpax+", you required: "+reqcap+"\nAdd supplement or choose bigger room.");
    return false;
  }

  return true;
}

// funkce overuje platnost data
function Valid_date(d,m,y) {
  month_length = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

  if ( ((y % 4)==0) && ((y % 100)!=0) || ((y % 400)==0) )
    month_length[1] = 29; //prestupny rok

  if (isNaN(y))
    return false;

  if ( (m<1) || (m>12) || isNaN(m) )
    return false;

  if ( (d>month_length[m-1]) || (d<1) || isNaN(d) )
    return false;

  return true;
}

function isOutdated(d, m, y) {
  var dt = new Date(y, m-1, d, 23, 59, 59);

  //alert(dt.getDate()+"/"+dt.getMonth()+"/"+dt.getFullYear()+" vs "+today.getDate()+"/"+today.getMonth()+"/"+today.getFullYear()+"\n"+dt.getTime()+" vs"+today.getTime());
  if (dt.getTime()<today.getTime())
    return true;
  else
    return false;
}


function Check_time(str) {
  var t_arr = Array();
  if (str.indexOf(":")==-1) {
    t_arr[0] = str;
    t_arr[1] = 0;
  }
  else
    t_arr = str.split(":");

  var hh = parseInt(t_arr[0]);
  var mm = parseInt(t_arr[1]);
  //alert(hh+":"+mm);
  if (isNaN(hh) || (hh<0) || (hh>23) || isNaN(mm) || (mm<0) || (mm>59)) {
    return false;
  }
  else {
    if (hh<10)
      hh = "0"+hh;
    if (mm<10)
      mm = "0"+mm;
    return hh+":"+mm;
  }
}

function DateSplit(d) {
  if ( (d == -1) || (d == "") )
      return false;
  
  var d_arr = d.split("/");
  // IE bug, 09->0, musi se kontrolovat
  if (d_arr[0].substr(0,1) == '0')
    d_arr[0] = d_arr[0].substr(1,1);
  if (d_arr[1].substr(0,1) == '0')
    d_arr[1] = d_arr[1].substr(1,1);
  if (d_arr[2].substr(0,1) == '0')
    d_arr[2] = d_arr[2].substr(1,1); 
    
  d_arr[2] = parseInt(d_arr[2])<2000?2000+parseInt(d_arr[2]):parseInt(d_arr[2]);	
  d_arr[0] = parseInt(d_arr[0]);
  d_arr[1] = parseInt(d_arr[1]);
    
  return d_arr;
}

function Check_DateGtDate(d1, m1, y1, d2, m2, y2) {

  var d1 = new Date(y1, m1-1, d1, 0, 0, 0);
  var d2 = new Date(y2, m2-1, d2, 0, 0, 0);
  //alert(d1.getDate()+"."+d1.getMonth()+"."+d1.getFullYear()+" = "+d1.getTime());
  //alert(d2.getDate()+"."+d2.getMonth()+"."+d2.getFullYear()+" = "+d2.getTime());
  
  if (d1.getTime()<=d2.getTime())
    return false;
  else
    return true;
}
