//
// Obsluga skryptu zamowienia
// Jaroslaw Danielski (c) TELVINET 2006
// Kodowanie: UTF-8
// zmiany Marcin Fila 

var language = "PL";
var currency = "Zl";

function getParams() {
  var index = document.URL.indexOf('?');
  var params = new Array();
  if ( index != -1 ) {
    var nameValuePairs = document.URL.substring(index+1,document.URL.length).split('&');
    for ( var i=0; i < nameValuePairs.length; i++ ) {
      nameVal = nameValuePairs[i].split('=');
      params[nameVal[0]] = unescape(nameVal[1]);
    }
  } 
  return params;
}

function isLeapYear (Year) {
  // Original:  Rob Patrick (rpatrick@mit.edu) 
  if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
    return (true);
  } else { 
    return (false); }
}

function getDaysInMonth(month,year)  {
  // Original:  Rob Patrick (rpatrick@mit.edu) 
  var days;
  if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)  days=31;
  else if (month==4 || month==6 || month==9 || month==11) days=30;
  else if (month==2)  {
    if (isLeapYear(year)) { days=29; } else { days=28; }
  }
  return (days);
}

function roundNumber(rnum) {
	var rlength = 2;
	var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
	return newnumber;
}

function formatPrice(price) {
    var sprice = price.toString();
    var len    = sprice.length;
    var pos    = sprice.indexOf('.');
    if(pos < 0) {
      sprice = sprice + '.00';
    }else if(pos + 3 > len) {
      sprice = sprice + '0';
    }
    return sprice;
}


function getKindOfCarIndex( kindCode ) {
  var index = 0;
  for(var i=0; i < carList.length; i++) {
    if(kindCode == carList[i].code) {
      index = i;
    }
  }
  return index;
}
function getCarIndex( kindIndex, carCode ) {
  var index = 0;
  var list = carList[kindIndex].list;
  for(var i=0; i < list.length; i++) {
    if(carCode == list[i].code) {
      index = i;
    }
  }
  return index;
}

function setSelectKindOfCarOptions( options, index, objPool ) {
  options.length = 0;
  if(index >= carList.length) {
    index = 0;
  }
  for(var i=0; i < carList.length; i++) {
    options.length += 1;
    if(language == "PL") {
	options[i].text = carList[i].name;
    }
    if(language == "DE") {
	options[i].text = carList[i].name_de;
    }
    if(language == "EN") {
	options[i].text = carList[i].name_en;
    };
    options[i].value = i;
    if(i == index) {
      if(objPool) {
        objPool.value = options[i].text;
      }
    }
  }
  options.selectedIndex = index;
}

function setSelectCarOptions( options, kindIndex, index, objPool ) {
  var list = carList[kindIndex].list;
  options.length = 0;
  if(index >= list.length) {	
     index = 0;
  }
  for(var i=0; i < list.length; i++) {
    options.length += 1;
    if(language == "PL") {
	options[i].text = list[i].car;
    }
    if(language == "DE") {
	options[i].text = list[i].car;
    }
    if(language == "EN") {
	options[i].text = list[i].car;
    };
    options[i].value = i;
    if(i == index) {
      if(objPool) {
        objPool.value = options[i].text;
      }
    }
	 
  }
  options.selectedIndex = index;
  if (list[index].img1)	{
    document.getElementById('thumbImg').src = '/upload/icon-'+list[index].img1;
    document.getElementById('thumbImg').style.display = "block";
  }else{	
    document.getElementById('thumbImg').src = '';
    document.getElementById('thumbImg').style.display = "none";	
  }					
}
	

function setSelectLendPlaceOptions( options, code, objPool ) {
  options.length = 0;
  var tel = ''	;	
  for(var i=0; i < rentPostList.length; i++) {
    options.length += 1;
	 //zmienna tel dodanie " tel."+rentPostList[i].phone dla elementow listy oprocz pierwszego - zawierajacego teskt "wybierz"
    if (i>0) tel = " tel."+rentPostList[i].phone;
    options[i].text = rentPostList[i].city+" "+rentPostList[i].keypost+" "+rentPostList[i].street+tel;
    options[i].value = rentPostList[i].code;
    if(code == rentPostList[i].code) {
      options.selectedIndex = i;
      if(objPool) {
        objPool.value = options[i].text;
      }
    }
  }
}
function setSelectReturnPlaceOptions( options, code, objPool ) {
  options.length = 0;
  var tel = ''	;
  for(var i=0; i < rentPostList.length; i++) {
    options.length += 1;
	 //zmienna tel dodanie " tel."+rentPostList[i].phone dla elementow listy oprocz pierwszego - zawierajacego teskt "wybierz"
	 if (i>0) tel = " tel."+rentPostList[i].phone;
    options[i].text = rentPostList[i].city+" "+rentPostList[i].keypost+" "+rentPostList[i].street+tel;
    options[i].value = rentPostList[i].code;
    if(code == rentPostList[i].code) {
      options.selectedIndex = i;
      if(objPool) {
        objPool.value = options[i].text ;
      }
    }
  }
}
function getPlaceCity( code ) {
  var city = "";
  for(var i=0; i < rentPostList.length; i++) {
    if(code == rentPostList[i].code) {
      city = rentPostList[i].city;
    }
  }
  return (city);  
}
function getExtraChargeZlOtherPlace (fromCity, toCity) {
  var extra = 0;
  for(var i=0; i < extraChargeOtherPlaceList.length; i++) {
    if(fromCity == extraChargeOtherPlaceList[i].fromCity &&
       toCity == extraChargeOtherPlaceList[i].toCity) {
       extra = extraChargeOtherPlaceList[i].priceZl / 1.22;
    }
  }
  return extra;
}
function getExtraChargeEuOtherPlace (fromCity, toCity) {
  var extra = 0;
  for(var i=0; i < extraChargeOtherPlaceList.length; i++) {
    if(fromCity == extraChargeOtherPlaceList[i].fromCity &&
       toCity == extraChargeOtherPlaceList[i].toCity) {
       extra = extraChargeOtherPlaceList[i].priceEu / 1.22;
    }
  }
  return extra;
}

function setSelectYearOptions( options, selYear, objPool ) {
  options.length = 0;
  for(var i=0; i < yearList.length; i++) {
    options.length += 1;
    options[i].text = yearList[i].name;
    options[i].value = yearList[i].year;
    if(selYear == yearList[i].year) {
      options.selectedIndex = i;
      if(objPool) {
        objPool.value = yearList[i].name;
      }
    }
  }
}
function setSelectMonthOptions( options, selYear, selMonth, objPool ) {
  options.length = 0;
  for(var i=0; i < monthList.length; i++) {
    options.length += 1;
	 if (language == "PL") options[i].text = monthList[i].name;
	 if (language == "EN") options[i].text = monthList[i].nameEn;
	 if (language == "DE") options[i].text = monthList[i].nameDe;
    options[i].value = monthList[i].number;
  }
  if(selMonth <= 12) {
    options.selectedIndex = selMonth-1;
      if(objPool) {
        objPool.value = options[selMonth-1].text;
      }
  }else{
      if(objPool) {
        objPool.value = '';
      }
  }
}

function setSelectDayOptions( options, selYear, selMonth, selDay, objPool ) {
  var dayes = getDaysInMonth(selMonth, selYear);
  options.length = 0;
  for(var i=0; i < dayes; i++) {
    options.length += 1;
    options[i].text = i+1;
    options[i].value = i+1;
  }
  if(selDay <= dayes) {
    options.selectedIndex = selDay-1;
      if(objPool) {
	objPool.value = options[selDay-1].text;
      }
  }
}

function setSelectHourOptions( options, hour, objPool ) {
  options.length = 0;
  for(var i=0; i < hourList.length; i++) {
    options.length += 1;
    options[i].text = hourList[i];
    options[i].value = i;
    if(hour == hourList[i]) {
      options.selectedIndex = i;
      if(objPool) {
        objPool.value = options[i].text;
      }
    }
  }
}

function setSelectMinuteOptions( options, hour, minute, objPool ) {
  options.length = 0;
  for(var i=0; i < minuteList.length; i++) {
    options.length += 1;
    options[i].text = minuteList[i];
    options[i].value = i;
    if(minute == minuteList[i]) {
      options.selectedIndex = i;
      if(objPool) {
        objPool.value = options[i].text;
      }
    }
  }
}

//Zmienna setChangeReturnPlace (dodana w reinitForm) - wlaczenie/wylaczenie automatycznej zmiany wartosci pola zwrot na wartosc pola odbior

function reinitForm( object, setChangeReturnPlace ) {
  
  var now = new Date();
  var day   = now.getDate();
  var month = now.getMonth()+1;
  var year  = now.getYear();
  if (year < 200) { year += 1900; }	
  var objSelectLendYear = document.getElementById('selectLendYear');
  var objLendYear = document.getElementById('lendYear');
  var objSelectLendMonth = document.getElementById('selectLendMonth');
  var objLendMonth = document.getElementById('lendMonth');
  var objSelectLendDay = document.getElementById('selectLendDay');  
  var objLendDay = document.getElementById('lendDay');  
  var objSelectLendHour = document.getElementById('selectLendHour');  
  var objLendHour = document.getElementById('lendHour');  
  var objSelectLendMinute = document.getElementById('selectLendMinute');  
  var objLendMinute = document.getElementById('lendMinute');	  
  var lendYear = objSelectLendYear.value;
  var lendMonth = objSelectLendMonth.value;
  if (lendMonth < month && lendYear == year) lendMonth =  month;	
  var lendDay = objSelectLendDay.value;
  if (lendDay < day && lendMonth == month) lendDay =  day;		
  var lendHour = hourList[objSelectLendHour.value];	
  var lendMinute = minuteList[objSelectLendMinute.value];
  var lendDate = new Date(lendYear-1900,lendMonth-1,lendDay,lendHour,lendMinute);
  var objSelectReturnYear = document.getElementById('selectReturnYear');
  var objReturnYear = document.getElementById('returnYear');
  var objSelectReturnMonth = document.getElementById('selectReturnMonth');
  var objReturnMonth = document.getElementById('returnMonth');
  var objSelectReturnDay = document.getElementById('selectReturnDay');  
  var objReturnDay = document.getElementById('returnDay');  
  var objSelectReturnHour = document.getElementById('selectReturnHour');  
  var objReturnHour = document.getElementById('returnHour');  
  var objSelectReturnMinute = document.getElementById('selectReturnMinute');  
  var objReturnMinute = document.getElementById('returnMinute');  
  var returnYear = objSelectReturnYear.value;
  var returnMonth = objSelectReturnMonth.value;	
  var returnDay = objSelectReturnDay.value;
  var returnHour = hourList[objSelectReturnHour.value];
  var returnMinute = minuteList[objSelectReturnMinute.value];
  var returnDate = new Date(returnYear-1900,returnMonth-1,returnDay,returnHour,returnMinute);
  
  var objSelectLendPlace = document.getElementById('selectLendPlace');
  var objLendPlace = document.getElementById('lendPlace');
  var objSelectReturnPlace = document.getElementById('selectReturnPlace');
  var objReturnPlace = document.getElementById('returnPlace');
  var lendPlaceCode = objSelectLendPlace.value;
  var returnPlaceCode = objSelectReturnPlace.value;
  if (lendPlaceCode != returnPlaceCode && setChangeReturnPlace == 1) returnPlaceCode =  lendPlaceCode; //Jesli odbior != zwrot i wywolanie reinitForm z parmametrem setChangeReturnPlace = 1: ustawienie zwrot = odbior
	
  var objSelectKindOfCar = document.getElementById('selectKindOfCar');
  var objKindOfCar = document.getElementById('kindOfCar');
  var objSelectCar = document.getElementById('selectCar');
  var objCar = document.getElementById('car');
  var kindOfCarIndex = objSelectKindOfCar.value;
  var carIndex = objSelectCar.value;
  
  var numberOfMinutes = (returnDate.getTime() - lendDate.getTime()) / 60000;
  //korekta dla 28.10.2008
	if (returnMonth == 10 && returnDay == 28 && returnYear == 2008)	numberOfMinutes = numberOfMinutes - 60;	
  var numberOfHours = Math.floor(numberOfMinutes / 60);
  var numberOfDays = Math.floor((numberOfMinutes + 23*60+59) / (24*60));
  if(numberOfHours < 0) {
    returnYear = lendYear;
    returnMonth = lendMonth;
    returnDay = lendDay;
    returnHour = lendHour;
    returnMinute = lendMinute;
    numberOfHours = 0;
    numberOfDays = 1;
  }
  if(numberOfDays <= 0) {
    numberOfDays = 1;
  }

  setSelectKindOfCarOptions( objSelectKindOfCar,kindOfCarIndex,objKindOfCar );
  setSelectCarOptions( objSelectCar,kindOfCarIndex,carIndex,objCar );
	
  //powtorne odczytanie zmiennych - bledy w przegladarkach	
  kindOfCarIndex = objSelectKindOfCar.value;		
  carIndex = objSelectCar.value;

  var charge;  
  if(currency == "Zl") {
    charge = carList[kindOfCarIndex].list[carIndex].priceZl/1.22;
  }
  if(currency == "Eu") {
    charge = carList[kindOfCarIndex].list[carIndex].priceEu/1.22;
  }
  charge = charge * numberOfDays;
 
  var discountCode = carList[kindOfCarIndex].list[carIndex].discountCode;
  var discountIndex = -1;
  for(var i=0; i < discountList.length; i++) {
    if(discountCode == discountList[i].code) {
      discountIndex = i;
    }
  }

  var fromCity = getPlaceCity(lendPlaceCode);
  var toCity = getPlaceCity(returnPlaceCode);
  if(fromCity != toCity) {
    if(currency == "Zl") {
      charge = charge + getExtraChargeZlOtherPlace(fromCity,toCity);
    }
    if(currency == "Eu") {
      charge = charge + getExtraChargeEuOtherPlace(fromCity,toCity);
    }
  }

  var discountCharge = charge;
  var discount = 0;
  if(discountIndex >= 0) {
    for(var i=0; i < discountList[discountIndex].list.length; i++) {
      if((discountList[discountIndex].list[i].min <= numberOfDays) && (discountList[discountIndex].list[i].max >= numberOfDays)) {
        discount = roundNumber(discountList[discountIndex].list[i].percent);
	discountCharge = roundNumber(charge * (1 - discountList[discountIndex].list[i].percent / 100));
      }
    }
  }
  var chargeWithTax = roundNumber(charge * 1.22);
  var discountChargeWithTax = roundNumber(discountCharge * 1.22);
  
  setSelectYearOptions( objSelectLendYear,lendYear,objLendYear );
  setSelectMonthOptions( objSelectLendMonth,lendYear,lendMonth,objLendMonth,language );
  setSelectDayOptions( objSelectLendDay,lendYear,lendMonth,lendDay,objLendDay );
  setSelectHourOptions( objSelectLendHour,lendHour,objLendHour);
  setSelectMinuteOptions( objSelectLendMinute,lendHour,lendMinute,objLendMinute);
  setSelectYearOptions( objSelectReturnYear,returnYear,objReturnYear );
  setSelectMonthOptions( objSelectReturnMonth,returnYear,returnMonth,objReturnMonth );
  setSelectDayOptions( objSelectReturnDay,returnYear,returnMonth,returnDay,objReturnDay );
  setSelectHourOptions( objSelectReturnHour,returnHour,objReturnHour);
  setSelectMinuteOptions( objSelectReturnMinute,returnHour,returnMinute,objReturnMinute);
  
  setSelectLendPlaceOptions( objSelectLendPlace, lendPlaceCode,objLendPlace );
  setSelectReturnPlaceOptions( objSelectReturnPlace, returnPlaceCode,objReturnPlace );
  
  document.getElementById('hours').value = numberOfHours;
  document.getElementById('days').value = numberOfDays;
  //korekta obliczen	
 /* 
 var cor =  0.01;
  if (charge == 0)
 */ cor = 0;		
  document.getElementById('price').value = formatPrice(roundNumber(charge+cor));
  document.getElementById('priceWithTax').value = formatPrice(chargeWithTax);
  document.getElementById('discount').value = String(discount)+'%';
  document.getElementById('discountPrice').value = formatPrice(roundNumber(discountCharge+cor));
  document.getElementById('discountPriceWithTax').value = formatPrice(discountChargeWithTax);
  
}

	
function initForm( newLanguage, newCurrency ) {
// language: "PL" | "DE" | "EN"
// currency: "Zl" | "Eu"
//
  if(newLanguage) {
    language = newLanguage;
  }
  if(newCurrency) {
    currency = newCurrency;
  }
    
  var params = getParams();
  var now = new Date();
  var day   = now.getDate();
  var month = now.getMonth()+1;
  var year  = now.getYear();
  if (year < 200) { year += 1900; }
  var tomorrow = new Date(year,month-1,day+1);
  var tomorrowDay   = tomorrow.getDate();
  var tomorrowMonth = tomorrow.getMonth()+1;
  var tomorrowYear  = tomorrow.getYear();
  if (tomorrowYear < 200) { tomorrowYear += 1900; }
  
  setSelectYearOptions( document.getElementById('selectLendYear'),year );
  setSelectMonthOptions( document.getElementById('selectLendMonth'),year,month );
  setSelectDayOptions( document.getElementById('selectLendDay'),year,month,day );
  setSelectHourOptions( document.getElementById('selectLendHour'), "08" );
  setSelectMinuteOptions( document.getElementById('selectLendMinute'), "00" );
  
  setSelectYearOptions( document.getElementById('selectReturnYear'),tomorrowYear );
  setSelectMonthOptions( document.getElementById('selectReturnMonth'),tomorrowYear,tomorrowMonth );
  setSelectDayOptions( document.getElementById('selectReturnDay'),tomorrowYear,tomorrowMonth,tomorrowDay );
  setSelectHourOptions( document.getElementById('selectReturnHour'), "08" );
  setSelectMinuteOptions( document.getElementById('selectReturnMinute'), "00" );

  setSelectLendPlaceOptions( document.getElementById('selectLendPlace'), "" );
  setSelectReturnPlaceOptions( document.getElementById('selectReturnPlace'), "" );

  var objSelectKindOfCar = document.getElementById('selectKindOfCar');
  var objKindOfCar = document.getElementById('kindOfCar');
  var objSelectCar = document.getElementById('selectCar');
  

  if(params['kindOfCarCode'] > 0) {
    setSelectKindOfCarOptions( objSelectKindOfCar,getKindOfCarIndex(params['kindOfCarCode']),objKindOfCar );
  }else{
    setSelectKindOfCarOptions( objSelectKindOfCar,0 );
  }
  
  var objCar = document.getElementById('car');
  var kindOfCarIndex = objSelectKindOfCar.value;
  var carIndex = objSelectCar.value;
  if(params['carCode'] > 0) {
    setSelectCarOptions( objSelectCar,kindOfCarIndex,getCarIndex(kindOfCarIndex,params['carCode']),objCar );
  }else{
    setSelectCarOptions( objSelectCar,0,0 );
  }
  
  reinitForm();
}

function setError(index) {
var alertError;
if (language == "PL") alertError=formErrorAlert[index].errpl;
if (language == "EN") alertError=formErrorAlert[index].erren;
if (language == "DE") alertError=formErrorAlert[index].errde;

return alertError;

}
//kontrola NIP
function nrnip(f) {
  var nip = f.firmNIP.value.replace(/[^0-9]/g,"");
  var suma = 0;
  if (nip.length==10 && nip!=0) {
    var wagi = new Array(6,5,7,2,3,4,5,6,7);
    for (var i=0;i<9;i++) suma += nip.charAt(i)*wagi[i];
    if ((suma%11)%10==nip.charAt(9)) {
      return false;
    }
  }
  return true;
}

//kontrola email
function email(t) {

  if (!t.email.value.match(/^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,6}$/)) {
     return true;
  }
  return false;
}

//tylko cyfry i znaki -/\()
function telefon(f) {
  if (f.phone.value.match(/[0-9+/\-()]/)) {
     return false;
  }
  return true;
}


function checkFormData (form,language) {

  if(form.firstName.value == "") {
    alert(setError(0));
    form.firstName.focus();
    return false;
  }
  if(form.lastName.value == "") {
    alert(setError(1));
    form.lastName.focus();
    return false;
  }
  if(language=='PL') {
	if(form.firmNIP.value != "" && nrnip(form)) {
    alert(setError(2));
    form.firmNIP.focus();
    return false;
  }}
	
  if(language!='PL') {	
  
if(form.keyPost.value == "") {
    alert(setError(3));
    form.keyPost.focus();
    return false;
  }
  if(form.city.value == "") {
    alert(setError(4));
    form.city.focus();
    return false;
  }
  if(form.street.value == "") {
    alert(setError(5));
    form.street.focus();
    return false;
  }
	
  if(form.email.value == "" || email(form)) {	
    alert(setError(7));
    form.email.focus();
    return false;
  }
 
}

 if(form.phone.value == "" || telefon(form)) {
    alert(setError(6));
    form.phone.focus();
    return false;
  }
  //sprawdzenie czy wybrano miejsce odbioru/zwrotu
  var objSelectLendPlace = document.getElementById('selectLendPlace');
  var objLendPlace = document.getElementById('lendPlace');
  var objSelectReturnPlace = document.getElementById('selectReturnPlace');
  var objReturnPlace = document.getElementById('returnPlace');
  var lendPlaceCode = objSelectLendPlace.value;
  var returnPlaceCode = objSelectReturnPlace.value;
	
  if(lendPlaceCode == 0 || returnPlaceCode == 0) {	
    alert(setError(8));
    form.selectLendPlace.focus();
    return false;
  }
	
  
  return true;
}