var feePerWeek 				= 60;
var feeFirstDay 			= 20;
var feePerDay 				= 17;
var feeFree		 			= 0;
var fee21_40 				= 3;
var fee41_60 				= 4;
var fee61_80 				= 5;
var fee81_100 				= 6;
var fee101_120 				= 7;
var fee121_180 				= 9;
var feeAfterThreeHour 		= 1;
var daysNeedRegistration 	= 90;

function calcDays(){

  if(document.getElementById('date1').value == "Select Arrival Date") {
  	alert("Please select an arrival date.");
  	document.getElementById('date1').focus();
  	document.getElementById('date1').select();
  	return;
  }
  if(document.getElementById('date2').value == "Select Departure Date") {
  	alert("Please select a departure date.");
  	document.getElementById('date2').focus();
  	document.getElementById('date2').select();
  	return;
  }
  
  var date1 = document.getElementById('date1').value;
  var date2 = document.getElementById('date2').value;
  date1 = date1.split(" ");
  date2 = date2.split(" ");
  month1 = 0;
  month2 = 0;
  switch(date1[1]) {
  	case "January":		month1 = 1;		break;
  	case "February":	month1 = 2;		break;
  	case "March":		month1 = 3;		break;
  	case "April":		month1 = 4;		break;
  	case "May":			month1 = 5;		break;
  	case "June":		month1 = 6;		break;
  	case "July":		month1 = 7;		break;
  	case "August":		month1 = 8;		break;
  	case "September":	month1 = 9;		break;
  	case "October":		month1 = 10;	break;
  	case "November":	month1 = 11;	break;
  	case "December":	month1 = 12;	break;
  }
  switch(date2[1]) {
  	case "January":		month2 = 1;		break;
  	case "February":	month2 = 2;		break;
  	case "March":		month2 = 3;		break;
  	case "April":		month2 = 4;		break;
  	case "May":			month2 = 5;		break;
  	case "June":		month2 = 6;		break;
  	case "July":		month2 = 7;		break;
  	case "August":		month2 = 8;		break;
  	case "September":	month2 = 9;		break;
  	case "October":		month2 = 10;	break;
  	case "November":	month2 = 11;	break;
  	case "December":	month2 = 12;	break;
  }
  var sDate = new Date(month1+"/"+date1[0]+"/"+date1[2]);
  var eDate = new Date(month2+"/"+date2[0]+"/"+date2[2]);
  
  if(sDate > eDate) {
  	alert("Departure day can not be earlier than arrival day");
  	document.getElementById('date1').value = "Select Arrival Date";
  	document.getElementById('date2').value = "Select Departure Date";
  	document.getElementById('date1').focus();
  	document.getElementById('date1').select();
  	return;
  }
  
  var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));
  
  var hour1 = parseInt(document.getElementById('hour1').value);
  var minute1 = parseInt(document.getElementById('minute1').value);
  var time1 = hour1*60 + minute1;
  
  var hour2 = parseInt(document.getElementById('hour2').value);
  var minute2 = parseInt(document.getElementById('minute2').value);
  var time2 = hour2*60 + minute2;
  
  if(daysApart == 0 && time1 > time2) {
  	alert("Departure time can not be earlier than arrival time");
  	document.getElementById('time1').value = "";
  	document.getElementById('time2').value = "";
  	document.getElementById('time1').focus();
  	document.getElementById('time1').select();
  	return;
  }
  
  var minsApart = time2 - time1;
  
  if(minsApart < 0) {
  	minsApart = 1440 + minsApart;
  	daysApart = daysApart - 1;
  }
  
  var hoursApart = Math.floor(minsApart / 60);
  var minsApart = minsApart - (hoursApart * 60);
  
  
  if(daysApart >= daysNeedRegistration) {
  	document.getElementById('diffDays').innerHTML = "The duration of your stay will exceed 3 months. To do so, we require you to register. <a href='http://queenstownairport.com/about/contact/'>Please contact the Airport Administration Offices.</a>";
  } else {
  	document.getElementById('diffDays').innerHTML = "To park for " + daysApart + " days " + hoursApart + " hours " + minsApart + " minutes, ";
  	calcFees(daysApart, hoursApart, minsApart);
  }
  
}

function calcFees(daysApart, hoursApart, minsApart){
  
  // calculate weekFee
  var weeks = 0;
  if(daysApart >= 7) {
  	weeks = Math.floor(daysApart / 7);
  	daysApart = daysApart - (weeks * 7);
  }
  var weekFee = weeks * feePerWeek;
  
  // calculate dayFee
  var dayOne = 0;
  var daysMoreThanOne = daysApart;
  if(weeks == 0 && daysApart >= 1) {
  	daysMoreThanOne = daysApart - 1;
  	dayOne = daysApart - daysMoreThanOne;
  }
  var dayFee = (dayOne * feeFirstDay) + (daysMoreThanOne * feePerDay);
  
  if(dayFee > feePerWeek) {
  	dayFee = feePerWeek;
  }
  
  // calculate minuteFee
  var minutes = 0;
  var minuteFee = feeFree;
  if(hoursApart > 0 || minsApart > 0) {
  	minutes = (hoursApart * 60) + minsApart;
  	
  	if(minutes <= 40 && minutes >= 21) {
  		minuteFee = fee21_40;
  	}
  	if(minutes <= 60 && minutes >= 41) {
  		minuteFee = fee41_60;
  	}
  	if(minutes <= 80 && minutes >= 61) {
  		minuteFee = fee61_80;
  	}
  	if(minutes <= 100 && minutes >= 81) {
  		minuteFee = fee81_100;
  	}
  	if(minutes <= 120 && minutes >= 101) {
  		minuteFee = fee101_120;
  	}
  	if(minutes <= 180 && minutes >= 121) {
  		minuteFee = fee121_180;
  	}
  	if(minutes >= 181) {
  		var hoursMoreThanThree = Math.ceil((minutes - 180) / 60);
  		minuteFee = 9 + hoursMoreThanThree * feeAfterThreeHour;
  	}
  	
  	if((weeks > 0 || daysApart > 0) && minuteFee > feePerDay) {
  		minuteFee = feePerDay;
  	}
  	if(weeks == 0 && daysApart == 0 && minuteFee > feeFirstDay) {
  		minuteFee = feeFirstDay;
  	}
  }
  
  Fee = weekFee + dayFee + minuteFee;
  
  if((dayFee + minuteFee) > feePerWeek) {
  	Fee = weekFee + feePerWeek;
  } else {
  	Fee = weekFee + dayFee + minuteFee;
  }
  
  
  document.getElementById('diffDays').innerHTML = document.getElementById('diffDays').innerHTML + "\r\nyour fee will be $" + Fee + ". ";
 
}