
function validDate(str) {
	var regEx = /^(\d{1,2})-(\d{1,2})-(\d{4})$/gi;
	return str.match(regEx);
}


function trim(str) {
	var rx = /^[\s]*([\S]*)[\s]*$/;
	return str.replace(rx, "$1");
}



function formatDate(str) {
	var regEx = /^(\d{1,2})-(\d{1,2})-(\d{4})$/gi;
	if (str.match(regEx)) {
		var d = str.replace(regEx, "$1");
		if (d.length == 1) {
			d = '0' + d;
		}
		var m = str.replace(regEx, "$2");
		if (m.length == 1) {
			m = '0' + m;
		}
		var y = str.replace(regEx, "$3");
		
		str = d + '-' + m + '-' + y;
	}
	else {
		str = '';
	}
	return str;
}

function validateDate(elm) {
	if (ua["dom"]) {
		if (validDate(elm.value)) {
		
		}
		else {
			var myDate = new Date();
			var d = myDate.getDate();
			if ((d < 10) && (d > 0)) {
				d = "0" + d;
			}
			var m = myDate.getMonth();
			if ((m < 10) && (m > 0)) {
				m = "0" + m;
			}
			var y = myDate.getFullYear();
			elm.value = d+'-'+m+'-'+y; 
		}
	}
}


function validateBookingSearch(frm) {
	if (ua["dom"]) {
		var oStartDate = frm.startdate;
		var oD = frm.day;
		var oM = frm.month;
		var oY = frm.year;

		oStartDate.value = oY[oY.selectedIndex].value + "-" + oM[oM.selectedIndex].value + "-" + oD[oD.selectedIndex].value;
		return true;
	}
	else {
		return false;
	}
}


function loadAgencyAreas(obj) {
	if (ua["dom"]) {
		var formNames = Array("booking_filter", "booking_list_filter", "houseSearch", "booking_search");
		var oForm = null;

		for (var i = 0; i < formNames.length; i++) {
			oForm = document.forms[formNames[i]];
			if (oForm != null) {
				break;
			}
		}
	
		var agency_id = obj.value;
		var oArea = oForm.Area;

		if (agencies[agency_id] != null) {
			oArea.options.length = 0;
			oArea.options[0] = new Option("Alle områder", "");
			for (var i = 0; i < agencies[agency_id].length; i++) {
				oArea.options[i+1] = new Option(agencies[agency_id][i], agencies[agency_id][i]);
			}
		}

	}

}



function showHouseImg(obj) {
	if (ua["dom"]) {
		document.getElementById("house_img").src = obj.href;
	}
	return false;
}


function refreshTotal() {
	if (ua["dom"]) {
		var rxprod = /^FRp(\d+)$/;
		var rxint = /^\d+$/;

		var frm = document.forms['booking_form'];
		if (frm != null) {

			var duration = parseInt(frm.duration.value);
			var baseprice = oBooking.price;
			
			var total = baseprice;

			var aInput = frm.getElementsByTagName('INPUT');
			var elm = null;
			var prod_id = 0;
			var prod_quantity = 0;
			var prod_price = 0;
			var prod_total = 0;

			for (var i = 0; i < aInput.length; i++) {
				elm = aInput[i];
				if (elm.id.match(rxprod)) {
					prod_id = parseInt(elm.id.replace(rxprod, "$1"), 10);
					prod_price = 0;
					prod_total_str = document.getElementById("FRpt" + prod_id + "str");

					var objPrice = null;
					for (var j = 0; j < oBooking.product_prices.length; j++) {
						if (oBooking.product_prices[j].id == prod_id) {
							objPrice = oBooking.product_prices[j];
							break;
						}
					}

					if (objPrice != null) {
						prod_price = parseFloat(objPrice.price);

						switch(elm.type) {
							case 'checkbox' :
								prod_quantity = (elm.checked ? 1 : 0);
								prod_total = parseFloat(prod_quantity * prod_price);
								prod_total_str.innerHTML = FormatCurrency(prod_total.toString(), oBooking.languageid)
								total += prod_total;
								break;
							case 'radio' :
								prod_quantity = (elm.checked ? 1 : 0);
								prod_total = parseFloat(prod_quantity * prod_price);
								prod_total_str.innerHTML = FormatCurrency(prod_total.toString(), oBooking.languageid)
								total += prod_total;
								break;
							case 'text' :
								if (elm.value.match(rxint) == null) {
									elm.value = '0';							
								}
								prod_quantity = parseInt(elm.value);
								prod_total = parseFloat(prod_quantity * prod_price * (objPrice.rental ? Math.ceil(duration / 7) : 1));
								prod_total_str.innerHTML = FormatCurrency(prod_total.toString(), oBooking.languageid)
								total += prod_total;
								break;
							case 'hidden' :
								prod_quantity = parseInt(elm.value);
								prod_total = parseFloat(prod_quantity * prod_price);
								prod_total_str.innerHTML = FormatCurrency(prod_total.toString(), oBooking.languageid)
								total += prod_total;
								break;
						}
					}
				}
			}
			document.getElementById('price_total_str').innerHTML = FormatCurrency(total.toString(), oBooking.languageid);
		}
	}
}


function validateVisitors(elm) {
	if (ua["dom"]) {
		var frm = document.forms['booking_form'];
		if (frm != null) {
			var rxint = /^\d+$/;
			var maxvisitors = oBooking.maxvisitors;

			var visitors_adults = frm.adults.value;
			if (visitors_adults.match(rxint) == null) {
				frm.adults.value = '0';
				visitors_adults = 0;
			}
			else {
				visitors_adults = parseInt(visitors_adults);
			}

			var visitors_children = frm.children.value;
			if (visitors_children.match(rxint) == null) {
				frm.children.value = '0';
				visitors_children = 0;
			}
			else {
				visitors_children = parseInt(visitors_children);
			}


			switch (elm.id) {
				case 'FRadults' :
					if (visitors_adults > 0) {
						if (visitors_adults > maxvisitors) {
							visitors_adults -= (visitors_adults - maxvisitors);
						}
						if (visitors_adults + visitors_children > maxvisitors) {
							visitors_adults = (maxvisitors - visitors_children);
						}
					}
					break;
				case 'FRchildren' :
					if (visitors_children > 0) {
						if (visitors_children > maxvisitors) {
							visitors_children -= (visitors_children - maxvisitors);
						}
						if (visitors_adults + visitors_children > maxvisitors) {
							visitors_children = (maxvisitors - visitors_adults);
						}
					}
					break;
			}

			frm.adults.value = visitors_adults;
			frm.children.value = visitors_children;
			

		}
	}
}


function validatePets(elm) {
	if (ua["dom"]) {
		var frm = document.forms['booking_form'];
		if (frm != null) {
			var rxint = /^\d+$/;
			var pets = frm.pets.value;
			if (pets.match(rxint) == null) {
				frm.pets.value = '0';	
			}
			else {
				if (parseInt(frm.pets.value) > oBooking.petsallowed) {
					frm.pets.value = oBooking.petsallowed;				
				}
			}
		}
	}
}

function validateBooking(elm) {
	if (ua["dom"]) {
		var msg = '';
		var res = true;
		var frm = elm;
		
		frm.firstname.value = trim(frm.firstname.value);
		if (frm.firstname.value == '') {
			res = false;
			msg += '- Indtast fornavn'+"\n";
		}

		frm.lastname.value = trim(frm.lastname.value);
		if (frm.lastname.value == '') {
			res = false;
			msg += '- Indtast efternavn'+"\n";
		}

		frm.address.value = trim(frm.address.value);
		if (frm.address.value == '') {
			res = false;
			msg += '- Indtast adresse'+"\n";
		}

		frm.zipcode.value = trim(frm.zipcode.value);
		if (frm.zipcode.value == '') {
			res = false;
			msg += '- Indtast postnummer'+"\n";
		}

		frm.city.value = trim(frm.city.value);
		if (frm.city.value == '') {
			res = false;
			msg += '- Indtast by'+"\n";
		}

		frm.phone.value = trim(frm.phone.value);
		if (frm.phone.value == '') {
			res = false;
			msg += '- Indtast telefonnummer'+"\n";
		}

		if (parseInt(frm.adults.value) + parseInt(frm.children.value) == 0) {
			res = false;
			msg += '- Angiv mindst 1 rejsende'+"\n";
		}
		else {
			if (parseInt(frm.adults.value) + parseInt(frm.children.value) > oBooking.maxvisitors) {
				res = false;
				msg += '- For mange rejsende'+"\n";
			}
		}

		if (!frm.accept_terms.checked) {
			res = false;
			msg += '- Du skal acceptere lejebetingelserne'+"\n";
		}

		if (!res) {
			alert(msg);
		}

		return res;	
	}
	return false;
}


function validateBookingFilter(frm) {
	if (ua["dom"]) {
		var oD = frm.day;
		var oMY = frm.monthyear
		var oStartDate = frm.startdate;
		oStartDate.value = oD[oD.selectedIndex].value +"-"+ oMY[oMY.selectedIndex].value;
		return true;
	}
	else {
		return false;
	}
}


function FormatCurrency(val, countrycode) {
	var delim_dec = returnDecimalDelimiter(countrycode);

	val = val.toString();
	var res = '';
	var rx = /^(\d+)(?:[^\d\s](\d+))$/
	if (val.match(rx)) {
		var mymatch = rx.exec(val);

		var integers = mymatch[1];
		res += FormatCurrencyIntegers(integers, countrycode);

		var decimals = '';
		if (mymatch.length > 2) {
			decimals = mymatch[2];
		}

		if (decimals.length > 0) {
			decimals = (Math.round(parseFloat('0.'+decimals)*100)/100).toString();
			decimals = decimals.substring(2, decimals.length);

			if (decimals.length == 1) {
				decimals += '0';
			}
			else if (decimals.length == 0) {
				decimals += '00';
			}
			res += (delim_dec + decimals);
		}
		return res;
	}
	else {
		return (FormatCurrencyIntegers(val, countrycode) + delim_dec + '00');
	}
}


function FormatCurrencyIntegers(val, countrycode) {
	var res = '';
	var delim = returnKiloDelimiter(countrycode);
	for (var i = val.length - 1; i >= 0; i--) {
		if (res.length % 3 == 0 && res.length > 0) {
			res = delim + res;
		}
		res = val.substring(i, i+1) + res;
	}
	return res;
}


function returnDecimalDelimiter(countrycode) {
	var res = ',';
	switch (countrycode) {
		case 'DK' :
			res = ',';
			break;
		case 'DE' :
			res = ',';
			break;
		case 'GB' :
			res = '.';
			break;
	}
	return res;
}


function returnKiloDelimiter(countrycode) {
	var res = '.';
	switch (countrycode) {
		case 'DK' :
			res = '.';
			break;
		case 'DE' :
			res = '.';
			break;
		case 'GB' :
			res = ',';
			break;
	}
	return res;
}
