/**
 * Function that computes the difference between two dates
 */
function calc(carType) {
	var FORMAT = "dd/mm/yyyy h:m:s";

	var dela_ro = getDateObj(document.getElementById("dela_"+carType).value, FORMAT);
	var panala_ro = getDateObj(document.getElementById("panala_"+carType).value, FORMAT);

	var diff_date = panala_ro - dela_ro;

	// 31536000000 = ???
	// 2628000000 = ???
	// 86400000 = 1 day = 60*60*24*1000 miliseconds
	var num_days = ((diff_date % 31536000000) % 2628000000) / 86400000;

	alert(num_days);
}

/**
 * This function retunrs a JS Date instance for the given date which is specified in a particular format. Format should have placeholders
 * for both date and time. Placeholders: Year should be YYYY, month MM, day DD, hour H, minute M and second S.
 *
 * @param String value The date string
 * @param String format The format of the given date.
 * @return Date The date instance for the given date string
 */
function getDateObj(value, format) {
	var valueParts = getParts(value);
	var formatParts = getParts(format);
	
	var theDate = new Date(valueParts[indexOf(formatParts, "yyyy")],
		valueParts[indexOf(formatParts, "mm")],
		valueParts[indexOf(formatParts, "dd")],
		valueParts[indexOf(formatParts, "h")] || 0,
		valueParts[indexOf(formatParts, "m")] || 0,
		valueParts[indexOf(formatParts, "s")] || 0);

	return theDate;
}

/**
 * This function splits the given value into marts delimited by NON word characters
 *
 * @param String value The value to get parts for
 * @return Array The parts of the given value
 */
function getParts(value) {
	return value.replace(/\W+/gi, "|").toLowerCase().split("|");
}

/**
 * Array indexOf - not all browsers have it implemented by default => we will use ours
 *
 * @param Array arr The array to search into
 * @param String value The value we're looking for
 * @return Number The index of the given value in the specified array, or -1 if not found
 */
function indexOf(arr, value) {
	var index = -1;
	for (var i=0; i<arr.length; i++) {
		if (arr[i] == value) {
			index = i;
			break;
		}
	}
	return index;
}


function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

//verifica daca avem masina pe stoc.
//calculeaza pretul
	function check_availabiliy(forma, carType){	
		var car= RentACar[carType];
		var FORMAT = "dd/mm/yyyy h:m:s";
	
		var dela_ro = getDateObj(document.getElementById("dela_"+forma).value, FORMAT);
		var panala_ro = getDateObj(document.getElementById("panala_"+forma).value, FORMAT);
		if(panala_ro > dela_ro){
			var diff_date = panala_ro - dela_ro;
	
			// 31536000000 = ???
			// 2628000000 = ???
			// 86400000 = 1 day = 60*60*24*1000 miliseconds
			var numDays = ((diff_date % 31536000000) % 2628000000) / 86400000;
			if (numDays<3) {
				var elem = document.getElementById("pret_"+forma);
				elem.innerHTML="Va rugam sa selectati o perioada mai mare de 3 zile";	
			} else if (numDays	== 3){
				var day = car.price3;
			} else if (numDays >3 && numDays<=7){
				var day = car.price47;					
			} else if (numDays >7) {
				var day = car.price7;
			}
			if(numDays>=3){
				var pret = day*numDays+20;
				var elem = document.getElementById("pret_"+forma);
				elem.innerHTML="<Strong>Pret</strong>: "+car.description+", "+numDays+" zile, <strong>"+pret+" €</strong>, (pret/zi "+day+"€)";
				var elem = document.getElementById("pret_calculat_"+forma);
				elem.value="<Strong>Pret</strong>: "+car.description+", "+numDays+" zile, <strong>"+pret+" €</strong>, (pret/zi "+day+"€)";
			}
		}
	}

//schimba descrierea masinii la selectarea din meniu
	function changeCarDescription(forma, carType){
		var car= RentACar[carType];
		var elem = document.getElementById("tip_masina_"+forma);
		elem.innerHTML=car.description+ ", de la "+car.price7+" €/zi";
		check_availabiliy(forma, carType);
	}
	
/*the below creates a new object, and gives it the two methods defined earlier*/
function Car(carType, description, price7, price47, price3, cars){
	this.carType=carType;
	this.description=description;
	this.price7=price7;
	this.price47=price47;
	this.price3=price3;
	this.cars = cars;
}

var RentACar = Array();
RentACar['small']=new Car('Small', 'Daewoo Matiz sau similar', 16, 18, 21, 'Matiz, Spark');
RentACar['economy']=new Car('Economy', 'Dacia Logan sau similar', 25, 30, 35, 'Logan, Cielo');
RentACar['intermediate']=new Car('Intermediate', 'Ford Fiesta sau similar', 35,38,43, 'Seat Ibiza, Ford Fiesta, Seat Cordoba, Peugeot 206');
RentACar['compact']=new Car('Compact', 'Ford Focus sau similar', 40, 45, 50, 'Ford Focus, Renault Megane II');
RentACar['fullsize']=new Car('Full Size', 'VW Passat sau similar',59, 69, 79, 'VW Passat, Ford Mondeo');
RentACar['van']=new Car('Van', 'Ford Transit 8+1 sau similar', 79, 89, 99, 'Ford Transit, Renault Trafic');
RentACar['premium']=new Car('Premium', 'Chrysler 300C, Infinity FX35', 125, 140, 155, 'Chrysler 300C, Infinity FX35');
 

