
var priceCalLeihrad = function(jsonPrices, price, idDateFrom, idDateTo, idOrtFrom, idOrtTo) {

	this.jsonPrices = jsonPrices;
	this.price = price;
	this.anzahl = 1;
	this.idDateFrom = idDateFrom;
	this.idDateTo = idDateTo;
	this.idOrtFrom = idOrtFrom;
	this.idOrtTo = idOrtTo;


	this.calPrice = function() {
		var days = this.getDays();
		var price = 40;
		if (days) {
			price = this.price*days;
		}


		price = price*this.anzahl;

		var fromPrice = this.getVonOrtPrice();
		var toPrice = this.getBisOrtPrice();
		if (fromPrice >= toPrice) {
			price = price+(fromPrice*this.anzahl);
		} else {
			price = price+(toPrice*this.anzahl);
		}

		this.drawPrice(price);
	}

	this.parentCallPrice = function(parentThis) {
		parentThis.calPrice();
	}

	this.getVonOrtPrice = function() {
		var ort = $(this.idOrtFrom).value;
		if (typeof(jsonPrices[ort]) == 'object') {
			return jsonPrices[ort].price
		} else {
			return 0;
		}
	}

	this.getBisOrtPrice = function() {
		var ort = $(this.idOrtTo).value;
		if (typeof(jsonPrices[ort]) == 'object') {
			return jsonPrices[ort].price
		} else {
			return 0;
		}
	}

	this.getDays = function() {
		var valueFrom = this.concatArrayBy('.', $(this.idDateFrom).value.toArray());
		var valueTo   = this.concatArrayBy('.', $(this.idDateTo).value.toArray());



		if ((valueFrom.length != 3) || (valueTo.length != 3)) {
			return false;
		}
		//In Date Objekte konvertieren
		var dateFrom = new Date(valueFrom[2], valueFrom[1], valueFrom[0]);
		var dateTo   = new Date(valueTo[2],   valueTo[1],   valueTo[0]);
		var tsFrom	 = valueFrom[2]+''+valueFrom[1]+''+valueFrom[0];
		var tsTo	 = valueTo[2]+''+valueTo[1]+''+valueTo[0];

		if (tsFrom > tsTo) {
			return false;
		}

		var monatUebersetzer = new Array("00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
		var tagUebersetzer = new Array( "00",
			"01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
			"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
			"21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"
		);


		var dayCount=0;
		var dayFrom=valueFrom[0]*1;
		do {
			dayCount++;
			dayFrom++;
			var newDateFrom = new Date(valueFrom[2], valueFrom[1], dayFrom);
			tsFrom = newDateFrom.getFullYear()+''+monatUebersetzer[newDateFrom.getMonth()]+''+tagUebersetzer[newDateFrom.getDate()]+'';
		} while (tsFrom <= tsTo);

		if (dayCount < 4) {
			return false;
		} else {
			return dayCount;
		}

	}

	this.concatArrayBy = function(theChar, theArray) {
		var c = 0;
		var returnArray = Array();
		for(i=0; i<theArray.length; i++) {
			if (!returnArray[c]) {
				returnArray[c] = '';
			}
			if (theArray[i] == theChar) {
				c++;
			} else {
				returnArray[c] = returnArray[c]+''+theArray[i]+'';
			}
		}
		return returnArray;
	}


	this.drawPrice = function(price) {
		var priceObjects = $('product_addtocart_form').getElementsByClassName('price');

		for (i=0; i<priceObjects.length; i++) {

			var returnPrice = (Math.round((price*1)*100)/100);
			returnPrice = returnPrice+'';
			returnPrice = returnPrice.replace(/\./g, ',');

			if (returnPrice.indexOf(',') == -1) {
				returnPrice = returnPrice+',00';
			} else {
				var laenge = returnPrice.length - returnPrice.indexOf(',')
				if (laenge == 2) {
					returnPrice = returnPrice+'0';
				}
			}

			priceObjects[i].innerHTML = returnPrice+' €';
		}
	};

	var binded_parentCallPrice = this.parentCallPrice.bind('', this);
	$(this.idDateFrom).observe('change', binded_parentCallPrice);
	$(this.idDateTo).observe('change', binded_parentCallPrice);

}
