function changeColor(td){
	if(td.className=="naviBorder"){
		td.className="naviHi";
	}
	else{
		td.className="naviBorder";
	}
	td.style.cursor='hand';
}

function gourl(page){
	self.location.href=page;
}

function window_open(x) {
	var abstandlinks=(screen.availWidth/2)-(320/2);
	var abstandoben=(screen.availHeight/2)-(250/2);
	var newWindow;
		if (x == 'arrival_date') {
			var datumTag = document.forms[0].elements['departure_date'].value;
		}
		else{
			var datumTag = document.forms[0].elements['arrival_date'].value;
		}

	var urlstring = "kalender/kalender.php?feld="+x+"&datumTag="+datumTag;
	newWindow = window.open(urlstring,'','height=250,width=320,toolbar=no,minimize=no,status=0,memubar=no,location=no,scrollbars=no,top='+abstandoben+',left='+abstandlinks+',screenX='+abstandlinks+',screenY='+abstandoben+'');
}


function showToolTip (msg, xpos, ypos) {
	obj = document.all ? document.all['tooltip'] : document.layers ? document['tooltip'] : document.getElementById('tooltip');
	obj_style = document.layers ? obj : obj.style;
			
	if (obj_style.visibility == 'hidden') {
		obj.innerHTML = '<table border=0><tr><td height="53" width="200" valign="top">' + msg + '</td></tr></table>';
		obj_style.visibility = 'visible';
		obj_style.top = xpos;
		obj_style.left = ypos;
	}
	else{
		obj_style.visibility = 'hidden';
	}
}

function initToolTip () {
	document.write ('<STYLE>#tooltip {position: absolute; z-index: 100; border: 2px black solid; background: red; visibility: hidden}</STYLE>');
	document.write ('<div id="tooltip"></div>');
	showToolTip ();
}

/* radio buttons */

var currentArrivalRadioIndex = 0;
var currentDepartureRadioIndex = -1;

function setArrivalRadio (id, totalRows) {
	formObj = document.forms['viewForm'];
	
	fullyBooked = false;
	fullyBookedIndex = false;

	if (currentArrivalRadioIndex < id) { // arrival date is later
		//alert(currentArrivalRadioIndex)
		for (i = 0; i < formObj.elements.length; i++) {
			if (formObj.elements[i].name.indexOf('roomPriceRow_') != -1) {
				sp = formObj.elements[i].name.split('_');
				v = sp[1];
				
				if (v < formObj.arrival_date_id[id].value) {
					//alert("enthilighte: " + v)
					if (getID('row_' + v).className != 'viewRowDisabled') getID('row_' + v).className = 'viewRow2';
					updateSpan (v, false);
				}								
				
			}
		}
		
		// disable departure_date_id lower than arrival_date_id
		// wenn abreise vor anreise ist setze abreise am darauffolgenden tag der anreise
		if (formObj.departure_date_id[currentDepartureRadioIndex].value <= formObj.arrival_date_id[id].value) {
			for (i = 0; i < formObj.departure_date_id.length; i++) {
				if (formObj.departure_date_id[i].value > formObj.arrival_date_id[id].value) {	
					formObj.departure_date_id[i].checked = true;
					currentDepartureRadioIndex = i;
					v = parseInt(formObj.departure_date_id[i].value);
					v2 = parseInt(formObj.arrival_date_id[id].value);
					
					for (y = v2; y < v; y++) {
						updateSpan (y, true);
						getID('row_' + v).className = 'viewRowSelected';
					}
									
					break;					
				}
			}
		}
		
		calculateTotalPrice();
		
	}
	else { // arrival date is earlier
		//alert('arrival date is earlier')
		rObjLength = formObj.arrival_date_id.length == undefined ? 1 : formObj.arrival_date_id.length;
		rObjArr = formObj.arrival_date_id[id] == undefined ? formObj.arrival_date_id : formObj.arrival_date_id[id];
		for (i = 0; i < formObj.elements.length; i++) {
			if (formObj.elements[i].name.indexOf('roomPriceRow_') != -1) {
				sp = formObj.elements[i].name.split('_');
				v = parseInt(sp[1]);
				
				if (v >= rObjArr.value) {
					//if (getID('row_' + v).className != 'viewRowDisabled') 
					getID('row_' + v).className = 'viewRowSelected';
					p = parseFloat(formObj.elements['roomPriceRow_' + v].value);
					
					//alert(p)
					getID('span_' + v).innerHTML = formatPrice(p);
					updateSpan (v, true);			
					if (formObj.arrival_date_id[currentDepartureRadioIndex] && v >= formObj.arrival_date_id[currentDepartureRadioIndex].value) break;
										
					if (formObj.elements[i].value == 0) {
						fullyBooked = v;
						//alert(v)
						break;
					}
					
				}
			}
		}

		// enable departure_date_id greater than arrival_date_id 
		if (formObj.arrival_date_id[id] != undefined) {
			rObjLength = formObj.departure_date_id.length == undefined ? 1 : formObj.departure_date_id.length;
			rObjArrValue = formObj.arrival_date_id[id] == undefined ? formObj.arrival_date_id.value : formObj.arrival_date_id[id].value;
			
			for (i = 0; i < rObjLength; i++) {
				//alert(formObj.arrival_date_id[id])
				rObjDep = formObj.departure_date_id[i] == undefined ? formObj.departure_date_id : formObj.departure_date_id[i];
				if (rObjDep.value > rObjArrValue) {
				
					v = rObjDep.value;
					rObjDep.disabled = false;
					if (v == fullyBooked) {
						fullyBookedIndex = i;
						rObjDep.checked = true;
					}
				}
			}
		}
		// end enable departure_date_id greater than arrival_date_id 
		
		currentArrivalRadioIndex = id;
		if (fullyBooked) {
			//alert(fullyBookedIndex)
			return setDepartureRadio (fullyBookedIndex, totalRows);
		}
		calculateTotalPrice ();	
		
	}
	
	currentArrivalRadioIndex = id;
	formObj.totalPrice.value = totalPrice; //set new totalPrice
	getID('span_totalPrice').innerHTML = '<b>Gesamtpreis ' + formatPrice(totalPrice) + '</b>';	
}


function setDepartureRadio (id, totalRows) {
	formObj = document.forms['viewForm'];
	
	if (currentDepartureRadioIndex == -1) {
		currentDepartureRadioIndex = totalRows;
	}

	fullyBooked = false;
	fullyBookedIndex = false;
	
	//alert('currentDepartureRadioIndex ' + currentDepartureRadioIndex);	
	//alert('id ' + id);	
	if (currentDepartureRadioIndex < id) { // departure date is later
	//alert('currentDepartureRadioIndex ' + currentDepartureRadioIndex);	
	//alert('currentDepartureRadioIndex ' + currentDepartureRadioIndex);	
		for (i = formObj.elements.length - 1; i >= 0; i--) {
			if (formObj.elements[i].name.indexOf('roomPriceRow_') != -1) {
				sp = formObj.elements[i].name.split('_');
				v = parseInt(sp[1]);
				if (v < formObj.departure_date_id[id].value) {
							
					if (formObj.arrival_date_id[currentArrivalRadioIndex] && v <= formObj.arrival_date_id[currentArrivalRadioIndex].value) break;
										
					if (formObj.elements[i].value == 0) {
						fullyBooked = v + 1;
						break;
					}

					updateSpan(v, true);				
				}
				else if (v == formObj.departure_date_id[id].value) {
					if (getID('row_' + v).className != 'viewRowDisabled') getID('row_' + v).className = 'viewRowSelected';
				}
			}
		}	
			
		// enable arrival_date_id 
		for (i = 0; i < formObj.arrival_date_id.length; i++) {
			
			if (formObj.arrival_date_id[i].value < formObj.departure_date_id[id].value) {
				v = formObj.arrival_date_id[i].value;
				formObj.arrival_date_id[i].disabled = false;
				//alert(v);
				if (v == fullyBooked) {
					fullyBookedIndex = i;
					formObj.arrival_date_id[fullyBookedIndex].checked = true;
				}
			}
		}
		
		currentDepartureRadioIndex = id;
		if (fullyBookedIndex) return setArrivalRadio (fullyBookedIndex);
		calculateTotalPrice ();	
				
	}
	else { // departure date is earlier
		//alert('departure date is earlier');
		/*rObjLength = formObj.departure_date_id.length == undefined ? 1 : formObj.departure_date_id.length;
		rObjArrValue = formObj.arrival_date_id[id] == undefined ? formObj.arrival_date_id.value : formObj.arrival_date_id[id].value;
		*/
		//alert('id ' + id);
		rObjDep = formObj.departure_date_id[id] == undefined ? formObj.departure_date_id : formObj.departure_date_id[id];
		
		for (i = 0; i < formObj.elements.length; i++) {
			if (formObj.elements[i].name.indexOf('roomPriceRow_') != -1) {
				sp = formObj.elements[i].name.split('_');
				v = parseInt(sp[1]);
				
				if (v > rObjDep.value) {
					//alert(v + ' ' +rObjDep.value)
					getID('row_' + v).className = 'viewRow';
					//p = parseFloat(formObj.elements['roomPriceRow_' + v].value);
					updateSpan (v, false);
				}
				else if (v == rObjDep.value) {
					//alert(rObjDep.value)
					updateSpan (v, false);
				}
			}
		}	
	
		
		// disable arrival_date_id
		// wenn abreise vor anreise setze anreise ein tag vor abreise
		rObjDepValue = formObj.departure_date_id[id] == undefined ? formObj.departure_date_id.value : formObj.departure_date_id[id].value;
		
		
		if (formObj.arrival_date_id != undefined) {
			for (i = 0; i < formObj.arrival_date_id.length; i++) {
				rObjArr = formObj.arrival_date_id[i] == undefined ? formObj.arrival_date_id : formObj.arrival_date_id[i];
				if (rObjArr.value >= rObjDepValue && rObjArr.checked) {
					//alert(rObjArr.value + " " + rObjDepValue)
					formObj.arrival_date_id[id].checked = true;

					currentArrivalRadioIndex = id;				
					v = parseInt(formObj.arrival_date_id[id].value);
					updateSpan (v, true);
					getID('row_' + (v)).className = 'viewRowSelected';
					getID('row_' + (v+1)).className = 'viewRowSelected';
				}
			}
		}
		// end disable arrival_date_id
		
		calculateTotalPrice ();
		
	}
	
	currentDepartureRadioIndex = id;
	//alert('currentDepartureRadioIndex ' + currentDepartureRadioIndex)
	formObj.totalPrice.value = totalPrice; //set new totalPrice
	getID('span_totalPrice').innerHTML = '<b>Gesamtpreis ' + formatPrice(totalPrice) + '</b>';
}

/* set on start the selected row.
   only if more than 1 day requested
*/
function setDefault (totalRooms, requestedRooms) {
	ar = false;
	dp = false;
	if (totalRooms > 1 && requestedRooms) { 

		currentDepartureRadioIndex = totalRooms;
		
		formObj = document.forms['viewForm'];
		
		arrivalObjLength = formObj.arrival_date_id.length == undefined ? 1 : formObj.arrival_date_id.length;
		for (i = 0; i < arrivalObjLength; i++) {
			el = formObj.arrival_date_id[i] == undefined ? formObj.arrival_date_id : formObj.arrival_date_id[i];
			if (el.checked) {
				ar = el.value;
				setArrivalRadio (i, totalRooms);
				break;
			}
		}

		
		departureObjLength = formObj.departure_date_id.length == undefined ? 1 : formObj.departure_date_id.length;
		for (i = 0; i < departureObjLength; i++) {
			el = formObj.departure_date_id[i] == undefined ? formObj.departure_date_id : formObj.departure_date_id[i];
			if (el.checked) {
				dp = el.value;
				setDepartureRadio (i, totalRooms);
				break;
			}
		}
		
		for (i = ar; i <= dp; i++) {
			getID('row_' + i).className = 'viewRowSelected';
		}
		
	} // end if totalRooms > 1
}

function getID(id) {
   if (document.getElementById(id)) {
     return document.getElementById(id);
   } else {
     return getID;
   }
 }
 
 function formatPrice(n) {
   if (n) {
   	ret = '<price>&nbsp;<curr>';
   	ret = ret.replace(/<curr>/, '&euro;');
   	ret = ret.replace(/<price>/, n.toFixed(2));
	ret = ret.replace(/\./, ',');
   } else {
   	ret = '&nbsp;';
   }
	return ret;
 }

 
 /*
 * breakfast
 */ 
 var isAmountInit = false;
 var amount = 0;
 function updateRoomPriceRow (el, totalRows, totalRooms) {
 	if (amount != parseFloat(el.value)) {
 		
 		formObj = document.forms['viewForm'];
	 	totalPrice = parseFloat(formObj.totalPrice.value);
	 	
	 	amount = parseFloat(el.value); // breakfast price 	
	 	if (amount > 0) isAmountInit = true;
	 	!isAmountInit ? amount = 0 : false;
	 	 	
	 	if (currentDepartureRadioIndex == -1) currentDepartureRadioIndex = totalRows;
	   	for (i = 0; i < formObj.length; i++) {
			if (formObj.elements[i].name.indexOf('roomPriceRow_') != -1) {
				
				sp = formObj.elements[i].name.split('_');
				v = parseInt(sp[1]);
				
				if (formObj.elements['breakfastRow_' + v].value == 'nein') {
					totalPriceRow = formObj.elements[i].value;
					totalPriceRow = parseFloat(formObj.elements[i].value) + (totalRooms * amount);
					formObj.elements[i].value = totalPriceRow;
					//alert(totalPriceRow);
					
					//totalPrice += (totalRooms * amount);
					//getID('span_' + v).innerHTML = formatPrice(totalPriceRow);
					if (getID('row_' + v).className == 'viewRowSelected') {
						
						if (!formObj.departure_date_id[currentDepartureRadioIndex]) {
							//alert(v + ' ' + formObj.elements['breakfastRow_' + v].value)	
							totalPrice += (totalRooms * amount);
							getID('span_' + v).innerHTML = formatPrice(totalPriceRow);
						}	
	
						if (formObj.departure_date_id[currentDepartureRadioIndex] && v != formObj.departure_date_id[currentDepartureRadioIndex].value) {
							//alert(v + ' ' + formObj.elements['breakfastRow_' + v].value)	
							totalPrice += (totalRooms * amount);
							getID('span_' + v).innerHTML = formatPrice(totalPriceRow);
						}										
					}
					
					amount > 0 ? getID('span_bf_' + v).innerHTML = 'ja' : getID('span_bf_' + v).innerHTML = 'nein';
				} 
						
			} 
	 	}
	 	
	 	formObj.totalPrice.value = totalPrice;
	 	getID('span_totalPrice').innerHTML = '<b>Gesamtpreis ' + formatPrice(totalPrice) + '</b>';
	 	getID('bf_error').innerHTML =  '';
	 	
 	}
 	// end if amount
 }
 
 
 function calculateTotalPrice () {
 	formObj = document.forms['viewForm'];
 	totalPrice = 0;
   	checkedDe = 0;
   	
 	for (i = 0; i < formObj.length; i++) {
		if (formObj.elements[i].name.indexOf('arrival_date_id') != -1) {
	 		if (formObj.elements[i].checked) {
				checkedAr = formObj.elements[i].value;
				for (y = 0; y < formObj.length; y++) {
					if (formObj.elements[y].name.indexOf('departure_date_id') != -1) {
						if (formObj.elements[y].checked) {
							checkedDe = formObj.elements[y].value;
							//alert(checkedDe)
							break;
						}
					}
				}
			}
		}
	}	

	for (i = checkedAr; i < checkedDe; i++) {
		totalPriceRow = parseFloat(formObj.elements['roomPriceRow_' + i].value);
		totalPrice += totalPriceRow;
	}
		
	return totalPrice;
 }
 
 
 function checkBf () {
 	isChecked = false;

 	if ((document.forms['viewForm']._prevday.value == 1) || (document.forms['viewForm']._nextday.value == 1) || (document.forms['viewForm']._next2day.value == 1)) {
 		isChecked = true;
 	}
 	
 	if (document.forms['viewForm'].breakfast) {
 		for (y = 0; y < document.forms['viewForm'].breakfast.length; y++) {
	 		if (document.forms['viewForm'].breakfast[y].checked) {
	 			isChecked = true;
	 			break;
	 		}
	 	}
 	}
 	else isChecked = true;
 	
 	if (!isChecked) {
	 	// show error text
		getID('bf_error').innerHTML =  '<b>Bitte wählen Sie aus</b>, ob die Gäste auch an den Tagen am Frühstücksbüffet teilnehmen möchten, an denen das Frühstücksbüffet nicht im Preis enthalten ist.</b><br><br>';
 	}
 	return isChecked; 	 
 }
 
 function updateSpan (id, show) {
 	//alert("updateSpan id: " + id + " show: " + show);
	if (show) {
	 	if (getID('row_' + id).className != 'viewRowDisabled') getID('row_' + id).className = 'viewRowSelected';
		p = parseFloat(formObj.elements['roomPriceRow_' + id].value);
		if (formObj.elements['single_room'].value) {
			getID('span_sr_' + id).innerHTML = formObj.elements['single_room'].value;
			getID('span_single_room_' + id).innerHTML = formatPrice(parseFloat(formObj.elements['single_room_' + id].value));
		}
		if (formObj.elements['double_room'].value) {
			getID('span_dr_' + id).innerHTML = formObj.elements['double_room'].value;
			getID('span_double_room_' + id).innerHTML = formatPrice(parseFloat(formObj.elements['double_room_' + id].value));
		}
		getID('span_bf_' + id).innerHTML = formObj.elements['breakfastRow_' + id].value;
		getID('span_' + id).innerHTML = formatPrice(p);
	}
	else {
		if (getID('span_sr_' + id).innerHTML != '' || getID('span_dr_' + id).innerHTML != '') {
			getID('span_sr_' + id).innerHTML = 			'';
			getID('span_single_room_' + id).innerHTML = '';
			getID('span_dr_' + id).innerHTML = 			'';
			getID('span_double_room_' + id).innerHTML = '';
			getID('span_bf_' + id).innerHTML = 			'';
			getID('span_' + id).innerHTML = 			'';
		}
	}
 }
 
 function submitForm () {
 	if (checkBf()) document.forms['viewForm'].submit();
 }
