function BookFormOptions()
{
	this.providerId = "";
	this.calendarYear = new Date().getFullYear();
	this.calendarMonth = new Date().getMonth();
	this.selectedDate = new Date();
	//this.selectedDate.setDate( this.selectedDate.getDate()+1 );
	this.bookNode = null;
	this.resultNode = null;
}

function isSameDate( dt1, dt2 )
{
	if ( dt1.getFullYear() == dt2.getFullYear() && dt1.getMonth() == dt2.getMonth() && dt1.getDate() == dt2.getDate() )
		return true;
	else
		return false;
}

var _bookOptions = new BookFormOptions();

function fnCheckNumKey(e)
{
	var code;
	if ( e )
		code = e.which;
	else
		code = window.event.keyCode;
	
	//alert(code);
	var prevent = (( code < 48 || code > 57 ) && code != 44);
	
	if ( !prevent && code == 44 )
	{
		prevent = document.getElementById("preisMax").value.search(",") != -1;
	}
	if ( prevent )
	{
		if ( e )
			e.preventDefault();
		else
		{
			window.event.cancelBubble = true;
			window.event.returnValue = false
		}
		return false;
	}
	return true;
}

function fnBuildCountSelect( id, max )
{
	var ops = document.getElementById(id).options;
	
	for( var i = 1; i <= max; i++ )
	{
		var oOption = document.createElement("OPTION");
		ops[ops.length]=oOption;
		oOption.value = i;
		oOption.id = i;
		//oOption.innerHTML = i;
		oOption.text = i;
	}	
}
			
function fnSetStartDate( calId, year, month, day )
{
	if ( year != -1 )
	{
		_bookOptions.selectedDate = new Date(year, month, day);
		fnFillCalendar( calId, year, month );
	}
	//document.getElementById("currency").style.display="";
	document.getElementById("startDate").value = year+"-"+(month+1)+"-"+day;
}

function fnCreateCalendar()
{
	var head = document.getElementById("calendarHeading");
	var last = head.nextSibling;
	
	for( var i = 0; i < 6; i++ )
	{
		var el = document.createElement("tr");
		var tr = head.parentNode.insertBefore( el, last );
		
		if ( i == 5 )
		{
			tr.id = "calendar.spare";
			tr.style.display = "none";
		}
		for( var d = 0; d < 7; d++ )
		{
			var td = document.createElement("td");
			var ins = tr.appendChild(td);
		}
	}
		
}

function fnFillCalendar( calId, year, month )
{
	if ( month == 12 )
	{
		year++;
		month = 0;
	}
	
	if ( month == -1 )
	{
		year--;
		month = 11;
	}

	_bookOptions.calendarYear = year;
	_bookOptions.calendarMonth = month;
	
	var months = new Array("Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" );
	var cal = document.getElementById(calId);
	
	if ( !cal )
		return;
	
	var tds = cal.getElementsByTagName("TD");

	if ( tds[0] )
	{
		var nYear = year;
		var nMon = month-1;
		if ( nMon == -1 )
		{
			nYear--;
			nMon = 11;
		}
		
		tds[0].onclick = new Function("fnFillCalendar('"+calId+"',"+nYear+","+nMon+")");
	}
	if ( tds[2] )
	{
		var nYear = year;
		var nMon = month+1;
		if ( nMon == 12 )
		{
			nYear++;
			nMon = 0;
		}
		tds[2].onclick = new Function("fnFillCalendar('"+calId+"',"+nYear+","+nMon+")");
	}
	if ( tds[1] )
	{
		tds[1].innerHTML = months[month] + " " + year;
	}
	
	var dt = new Date( year, month, 1);
	dt.setDate(dt.getDate()-(dt.getDay() != 0 ? (dt.getDay()-1) : 6));
	
	var today = new Date();
	var minDate = new Date();
	var maxDate = new Date();
	minDate.setDate(minDate.getDate()-1);
	maxDate.setDate(maxDate.getDate()+365);
	
	var tdIdx = 12;
	
	while( dt.getMonth() != month )
	{
		tds[tdIdx].innerHTML = dt.getDate();
		
		if ( isSameDate( _bookOptions.selectedDate, dt ) )
			tds[tdIdx].className = "calendarFont calendarSelected";
		else
			tds[tdIdx].className = "calendarFont calendar anotherMonth";
		
		if ( isSameDate( today, dt ) )
			tds[tdIdx].className += " calendarToday";
		
		if ( dt < minDate || dt > maxDate )
		{
			tds[tdIdx].className += " calendarDisabled";
			tds[tdIdx].onclick = null;
		}
		else
		{
			tds[tdIdx].onclick = new Function("fnSetStartDate('"+calId+"',"+dt.getFullYear()+","+dt.getMonth()+","+dt.getDate()+")");
		}
		dt.setDate(dt.getDate()+1);
		tdIdx++;
	}
	
	while ( dt.getMonth() == month )
	{
		tds[tdIdx].innerHTML = dt.getDate();
		tds[tdIdx].className = "calendarFont calendar";
		
		if ( isSameDate( _bookOptions.selectedDate, dt ) )
			tds[tdIdx].className += " calendarSelected";
		else if ( dt.getDay() == 0 )
			tds[tdIdx].className += " calendarSunday";
		
		if ( isSameDate( today, dt ) )
			tds[tdIdx].className += " calendarToday";
			
		if ( dt < minDate || dt > maxDate )
		{
			tds[tdIdx].className += " calendarDisabled";
			tds[tdIdx].onclick = null;
		}
		else
			tds[tdIdx].onclick = new Function("fnSetStartDate('"+calId+"',"+dt.getFullYear()+","+dt.getMonth()+","+dt.getDate()+")");
		
		tdIdx++;
		dt.setDate(dt.getDate()+1);
	}
	
	if ( dt.getDay() != 0 )
	{
		while(true)
		{
			tds[tdIdx].innerHTML = dt.getDate();
			tds[tdIdx].className = "calendar";
				
			if ( isSameDate( _bookOptions.selectedDate, dt ) )
			{
				tds[tdIdx].className = "calendarFont calendar calendarSelected";
			}
			else 
				tds[tdIdx].className = "calendarFont calendar calendarAnotherMonth";
		
			if ( isSameDate( today, dt ) )
				tds[tdIdx].className += " calendarToday";
					
			if ( dt < minDate || dt > maxDate )
			{
				tds[tdIdx].className += " calendarDisabled";
				tds[tdIdx].onclick = null;
			}
			else
				tds[tdIdx].onclick = new Function("fnSetStartDate('"+calId+"',"+dt.getFullYear()+","+dt.getMonth()+","+dt.getDate()+")");
			
			if ( dt.getDay() == 0 )	
				break;
			dt.setDate(dt.getDate()+1);
			tdIdx++;
		}
		
	}
	
	if ( tdIdx > 49 )
		document.getElementById("calendar.spare").style.display="";
	else
		document.getElementById("calendar.spare").style.display="none";
}

function fnCloseBookForm()
{
	_bookOptions.providerId = null;
	if ( _bookOptions.bookNode )
	{
		if ( document.all )
			_bookOptions.bookNode.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild.style.borderTop = "1px solid #2F4183";
		else
			_bookOptions.bookNode.parentNode.parentNode.parentNode.parentNode.nextSibling.nextSibling.firstChild.nextSibling.style.borderTop="1px solid #2F4183";
		
		_bookOptions.bookNode.parentNode.removeChild(_bookOptions.bookNode);
		_bookOptions.bookNode = null;
	}
	else if ( _bookOptions.resultNode )
	{
		if ( document.all )
			_bookOptions.resultNode.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild.style.borderTop = "1px solid #2F4183";
		else
			_bookOptions.resultNode.parentNode.parentNode.parentNode.parentNode.nextSibling.nextSibling.firstChild.nextSibling.style.borderTop="1px solid #2F4183";
	}		
	if ( _bookOptions.resultNode )
	{
		_bookOptions.resultNode.parentNode.removeChild(_bookOptions.resultNode);
		_bookOptions.resultNode = null;
	}	
}

function fnBackToBookForm()
{
	if ( _bookOptions.resultNode != null )
	{
		_bookOptions.resultNode.parentNode.removeChild(_bookOptions.resultNode);
		if ( _bookOptions.bookNode )
			_bookOptions.bookNode.style.display="";
	}
}

var _insObject;
function fnSubmitNetHotelsQuery()
{
	if ( !_insObject )
	{
		if ( !_bookOptions.bookNode )
			return;
		
		if ( _bookOptions.resultNode )
			_bookOptions.resultNode.parentNode.removeChild( _bookOptions.resultNode );
			
		var form = _bookOptions.bookNode.getElementsByTagName("FORM")[0];
		
		var toDel;
		if ( window.frames.bookNetHotels.document )
		{
			toDel = window.frames.bookNetHotels.document.getElementById("bookResult");
			if ( toDel )
			{
				toDel.parentNode.removeChild(toDel);
			}
		}	
			
		_insObject = _bookOptions.bookNode;
		while ( _insObject && _insObject.tagName != "TBODY" )
			_insObject = _insObject.parentNode;
		
		//alert(_insObject );	
		form.submit();
	}
	document.body.style.cursor='wait';

	var loading = true;
	if ( document.readyState )
		loading = window.frames.bookNetHotels.document.readyState != "complete";
	else if ( window.frames.bookNetHotels.document )
	{
		if ( window.frames.bookNetHotels.document.getElementById("bookResult") )
		{
			if ( window.frames.bookNetHotels.document.getElementById("readyState") )
				loading = window.frames.bookNetHotels.document.getElementById("readyState").innerHTML != "complete";
		}
	}	
			
	if ( loading )
		setTimeout("fnSubmitNetHotelsQuery()", 100 );	
	else
	{
		document.body.style.cursor=''
		if ( !document.all )
		{
			var toIns = window.frames.bookNetHotels.document.getElementById("bookResult").cloneNode(true);

			var tr = document.createElement("TR");
			_bookOptions.resultNode = _insObject.appendChild(tr);
			var el = document.createElement("TD");
			el.colSpan = 5;
			el.style.padding="4px";
			var td = _bookOptions.resultNode.appendChild(el);
			
			if ( toIns )
				td.appendChild(toIns);
		}
		else
		{
			var toIns = document.frames.bookNetHotels.document.getElementById("bookResult");
			
			var tr = document.createElement("TR");
			_bookOptions.resultNode = _insObject.appendChild(tr);
			var el = document.createElement("TD");
			el.colSpan = 5;
			el.style.padding="4px";
			
			var td = _bookOptions.resultNode.appendChild(el);
			td.insertAdjacentHTML('beforeEnd', toIns.outerHTML);
		}
		_bookOptions.bookNode.style.display = "none";
		_insObject = null;
	}
	return -1;
}
			
	
function fnBookNetHotel(obj, providerId)
{
	fnCloseBookForm();
	_bookOptions.providerId = providerId;
		
	while ( obj && obj.tagName != "TBODY" )
		obj = obj.parentNode;
		
	var toIns = document.getElementById("bookOptions");
	
	if ( !obj || !toIns )
	{
		alert("obj null or toins null");
		return;
	}
		
	document.getElementById("providerId").value = providerId;
	toIns = toIns.getElementsByTagName("TR")[0].cloneNode(true);
	_bookOptions.bookNode = obj.appendChild(toIns);
	var tbs = _bookOptions.bookNode.getElementsByTagName("TABLE");
	
	var dtNow = new Date();
	
	var newId = "cal"+dtNow.valueOf();
	for ( var t1 = 0; t1 < tbs.length; t1++ )
	{
		if ( tbs[t1].id == "calendar")
		{
			tbs[t1].id = newId;
			break;			
		}
	}
	fnSetStartDate( newId, _bookOptions.selectedDate.getFullYear(), _bookOptions.selectedDate.getMonth(), _bookOptions.selectedDate.getDate());
	if ( document.all )
		obj.parentNode.parentNode.parentNode.nextSibling.firstChild.style.borderTop = "2px solid #2F4183";
	else
		_bookOptions.bookNode.parentNode.parentNode.parentNode.parentNode.nextSibling.nextSibling.firstChild.nextSibling.style.borderTop="2px solid #2F4183";

}


function fnBuildCurrencyOptions( id, selected, onlyCode )
{
	var _currCode = new Array( "EUR", "Euro", "AUD", "Australische Dollar", "DKK", "Dänische Kronen", "HRK", "Kroatische Kuna", "HUF", "Forint",
		"ISK", "Isländische Kronen", "ILS", "Israel Shekel", "CAD", "Kanadische Dollar", "MTL", "Maltesische Pfund", "NZD", "Neuseeland Dollar",
		"NOK", "Norwegische Kronen", "GBP", "Pfund Sterling", "CHF", "Schweizer Franken", "SKK", "Slovakische Kronen", "SIT", "Slowenische Tolar",
		"CZK", "Tschechische Kronen", "USD", "US Dollar", "YUD", "Yugoslawische Dinar", "PLN", "Polische Zloty", "CYP", "Zypriotische Pfund" );
		
	var ops = document.getElementById(id).options;
	if ( !ops )	
		return;
	
	var i = 0;
	while ( _currCode[i] )
	{
		var oOption = document.createElement("OPTION");
		ops[ops.length]=oOption;
		oOption.value = _currCode[i];
		if ( _currCode[i] == selected )
		{
			oOption.selected = true;
			if ( onlyCode )
				document.getElementById(id).value = _currCode[i];
			else
				document.getElementById(id).value = _currCode[i+1];
		}
		if ( onlyCode )
		{
			//oOption.innerHTML = _currCode[i];
			oOption.text = _currCode[i];
		}
		else
		{
			//oOption.innerHTML = _currCode[i+1];
			oOption.text = _currCode[i+1];
		}
		i += 2;
	}
}