/** 
	* Funktionen für Formular Suche
	*
	* @package		JS Frontend
	* @copyright	Kurzurlaub.de
	* @author			Kurzurlaub.de
*/

function formAngebotSuche() {
	
			this.lang = {
				date: {
					days: {
						0: {fullname:'Beliebig',shortname:'-'},
						1: {fullname:'Montag',shortname:'Mo'},
						2: {fullname:'Dienstag',shortname:'Di'},
						3: {fullname:'Mittwoch',shortname:'Mi'},
						4: {fullname:'Donnerstag',shortname:'Do'},
						5: {fullname:'Freitag',shortname:'Fr'},
						6: {fullname:'Samstag',shortname:'Sa'},
						7: {fullname:'Sonntag',shortname:'So'}
					}
				}
			};
			this.form_angebotssuche = null;
			
			this.input_umkreis_ort = null;
			this.select_umkreis_km = null;
			this.input_umkreis_plz_id = null;
			this.input_umkreis_region_id = null;
			
			
			this.select_anreise_tag = null;
			this.select_anreise_monat = null;
			this.select_anreise_jahr = null;
			
			this.select_abreise_tag = null;
			this.select_abreise_monat = null;			
			this.select_abreise_jahr = null;
			
			this.div_anreise_wochentag = null;
			this.div_abreise_wochentag = null;
			
			this.input_anreise_datum = null;
			this.input_abreise_datum = null;
						
			this.select_budget = null;
			this.select_klassifizierung = null;
			
			// Buttons für Uebernachtung
			this.button_uebernachtungen = [];
			this.button_uebernachtungen[1] = null;
			this.button_uebernachtungen[2] = null;
			this.button_uebernachtungen[3] = null;
			this.button_uebernachtungen[4] = null;
			// Hiddenfelder für Uebernachtung
			this.input_uebernachtungen = [];
			this.input_uebernachtungen[1] = null;
			this.input_uebernachtungen[2] = null;
			this.input_uebernachtungen[3] = null;
			this.input_uebernachtungen[4] = null;
			
			
			this.div_suggest_box = null;
			this.div_suggest_box_titel = null;
			this.div_suggest_box_text = null;
			this.div_suggest_active_li = null;
			this.div_suggest_active_submit = true;
			
			this.btn_angebot_id = null;
			this.div_suche_normal = null;
			this.div_suche_angebots_id = null;
			this.input_angebots_id = null;
			
			this.suche_typ = "arrangements";
			this.hidden_suche_typ = null;
		
			this.btn_calendar_anreise = null;
			this.btn_calendar_abreise = null;
			
			this.div_calendar_anreise = null;
			this.div_calendar_abreise = null;
				
			
					
			this.calendar = {};			
			
			this.initForm();
}

/*
	Innitialisierung
*/
formAngebotSuche.prototype.initForm = function() {
	
		this.form_angebotssuche = document.getElementById('form_angebotssuche');
		if(!this.form_angebotssuche) return;
		// alert("form_angebotssuche");
			
			
			this.div_reisedauer_info = document.getElementById('suchform_reisedauer_info');
			
			this.div_suggest_box = document.getElementById('suchform_suggest_box');
			this.div_suggest_box_titel = document.getElementById('suchform_suggest_box_titel');
			this.div_suggest_box_text = document.getElementById('suchform_suggest_box_text');
			
			this.input_umkreis_ort = document.getElementById('sucheform_umkreis_ort');
			this.select_umkreis_km = document.getElementById('sucheform_umkreis_km');
			this.input_umkreis_plz_id = document.getElementById('sucheform_umkreis_plz_id');
			this.input_umkreis_region_id = document.getElementById('sucheform_umkreis_region_id');
						
			this.select_anreise_tag = document.getElementById('sucheform_anreise_tag');
			this.select_anreise_monat = document.getElementById('sucheform_anreise_monat');
			this.select_anreise_jahr = document.getElementById('sucheform_anreise_jahr');
			
			this.select_abreise_tag = document.getElementById('sucheform_abreise_tag');
			this.select_abreise_monat = document.getElementById('sucheform_abreise_monat');		
			this.select_abreise_jahr = document.getElementById('sucheform_abreise_jahr');
			
			this.div_anreise_wochentag = document.getElementById('sucheform_anreise_wochentag');
			this.div_abreise_wochentag = document.getElementById('sucheform_abreise_wochentag');
			
			this.input_anreise_datum = document.getElementById('sucheform_anreise_datum');
			this.input_abreise_datum = document.getElementById('sucheform_abreise_datum');
			
			this.btn_calendar_anreise = document.getElementById('suchform_button_calendar_anreise');
			this.btn_calendar_abreise = document.getElementById('suchform_button_calendar_abreise');
			
			this.div_calendar_anreise = document.getElementById('suchform_calendar_anreise');
			this.div_calendar_abreise = document.getElementById('suchform_calendar_abreise');
				
			
					
			this.select_budget = document.getElementById('sucheform_budget');
			this.select_klassifizierung = document.getElementById('sucheform_klassifizierung');
		
		
		
			// Suche nach Angebots ID
			this.btn_angebot_id = document.getElementById('btn_angebot_id');
			this.div_suche_normal = document.getElementById('container_suche_body');
			if(!this.div_suche_normal)
				this.div_suche_normal = document.getElementById('suchform_body');
			this.div_suche_angebots_id = document.getElementById('container_suche_angebots_id_body');
			if(!this.div_suche_angebots_id)
				this.div_suche_angebots_id = document.getElementById('suchform_body_angebots_id');			
			this.input_angebots_id = document.getElementById('sucheform_angebots_id');
			this.hidden_suche_typ = document.getElementById('sucheform_suche_typ');
			
	
			var self = this;
			
			
				
			// onSubmit für Formular -> im Template wegen dem Return false Wert bei Validierung
			
			function btnAngebtsID_EvtCallbackFunction(event) { self.eventHandler_button_angebots_id(event); }
			elementAddEventListener('click', this.btn_angebot_id, btnAngebtsID_EvtCallbackFunction, false);
			
			// onClick für Buttons Übernachtungen		
			function buttonEvtCallbackFunction_onClick(event) { self.eventHandler_button_uebernachtungen_click(event); }
			// onMouseOver für Buttons Übernachtungen		
			function buttonEvtCallbackFunction_onMouseOver(event) { self.eventHandler_button_uebernachtungen_mouseover(event); }
			// onMouseOut für Buttons Übernachtungen		
			function buttonEvtCallbackFunction_onMouseOut(event) { self.eventHandler_button_uebernachtungen_mouseout(event); }
			
			for(var i = 1;i < 5;i++) {
				this.button_uebernachtungen[i] = document.getElementById('sucheform_uebernachtungen_btn_'+i);
				this.input_uebernachtungen[i] = document.getElementById('sucheform_uebernachtungen_'+i);
				elementAddEventListener('click', this.button_uebernachtungen[i], buttonEvtCallbackFunction_onClick, false);
				elementAddEventListener('mouseover', this.button_uebernachtungen[i], buttonEvtCallbackFunction_onMouseOver, false);
				elementAddEventListener('mouseout', this.button_uebernachtungen[i], buttonEvtCallbackFunction_onMouseOut, false);
			}
			
			function inputEvtCallbackFunction_keyup(event) { self.eventHandler_input_ort_keyup(event); }
			elementAddEventListener('keyup', this.input_umkreis_ort, inputEvtCallbackFunction_keyup, false);
			function inputEvtCallbackFunction_keydown(event) { self.eventHandler_input_ort_keydown(event); }
			elementAddEventListener('keydown', this.input_umkreis_ort, inputEvtCallbackFunction_keydown, false);
			
			function suggestboxEvtCallbackFunction(event) { self.eventHandler_suggest_box(event); }
			elementAddEventListener('click', this.div_suggest_box, suggestboxEvtCallbackFunction, false);
			
						
			this.setDateValue("anreise", this.input_anreise_datum.value);
			this.setDateValue("abreise", this.input_abreise_datum.value);
			
			function selectEvtCallbackFunction(event) { self.eventHandler_select_date(event); }
			elementAddEventListener('change', this.select_anreise_tag, selectEvtCallbackFunction, false);
			elementAddEventListener('change', this.select_anreise_monat, selectEvtCallbackFunction, false);
			elementAddEventListener('change', this.select_anreise_jahr, selectEvtCallbackFunction, false);
			
			elementAddEventListener('change', this.select_abreise_tag, selectEvtCallbackFunction, false);
			elementAddEventListener('change', this.select_abreise_monat, selectEvtCallbackFunction, false);
			elementAddEventListener('change', this.select_abreise_jahr, selectEvtCallbackFunction, false);
			

		/*
		// onKeyUp für DateInputs		
		function inputEvtCallbackFunction(event) { self.eventHandler_dateinput(event); }
		elementAddEventListener('keyup', this.inputAnreise, inputEvtCallbackFunction, false);
		elementAddEventListener('keyup', this.inputAbreise, inputEvtCallbackFunction, false);
		
		// 
		*/
		this.loadCalendar();
		
		function btnCalendar_EvtCallbackFunction(event) { self.eventHandler_buttonCalendar(event); }
		elementAddEventListener('click', this.btn_calendar_anreise, btnCalendar_EvtCallbackFunction, false);
		elementAddEventListener('click', this.btn_calendar_abreise, btnCalendar_EvtCallbackFunction, false);
			
				
}
/*
	Kalender für An/Abreise platzieren
*/
formAngebotSuche.prototype.loadCalendar = function() {
		
		var formelements;
		var self = this;
		
		function callbackFunction(calendar, action, value) {
			self.eventHandler_calendar(calendar, action, value)
		}		
		formelements = {
			year: document.getElementById('date_anreise_year'),
			month: document.getElementById('date_anreise_month'),
			day: document.getElementById('date_anreise_day')
		};
		apply = (formelements.day.value != '') ? true : false;
		this.calendar.datefrom = new calendar(callbackFunction, document.getElementById('cal_date_anreise'), formelements, null, apply);	
		
		formelements = {
			year: document.getElementById('date_abreise_year'),
			month: document.getElementById('date_abreise_month'),
			day: document.getElementById('date_abreise_day')
		};
		apply = (formelements.day.value != '') ? true : false;		
		this.calendar.dateto = new calendar(callbackFunction, document.getElementById('cal_date_abreise'), formelements, null, apply, {disallowthisdate: true});

}
/*
	Eventhandler für Kalender An/Abreise angeklickt
	-> Datum in Selects setzen
*/
formAngebotSuche.prototype.eventHandler_calendar = function(calendar, action, value)	{
					
		switch (action) {
			case 1:
				
				var dateNew = Time2Date( new Date(calendar.value.year, calendar.value.month, calendar.value.day).getTime());
				// alert(dateNew);
				this.setDateValue(calendar.frame.id.replace('cal_date_',''), dateNew);
				this.hideCalendar();				
				break;
		}

}

/*
	Eventhandler für Button Kalender An/Abreise anzeigen
*/
formAngebotSuche.prototype.eventHandler_buttonCalendar = function(event)	{
		
		var element = getEventTarget(event);
		// alert("eventHandler_buttonCalendar"+element.id);
		try {
				if(element.id.match(/anreise/)) {
					if(this.div_calendar_anreise.style.display == "block") {
						this.hideCalendar();
						return;
					}
					var sD = this.select_anreise_tag.options[this.select_anreise_tag.selectedIndex].text;
					var sM = this.select_anreise_monat.options[this.select_anreise_monat.selectedIndex].text;
					var sY = this.select_anreise_jahr.options[this.select_anreise_jahr.selectedIndex].text;
					var sDate = Date2DateArray (sD+"."+sM+"."+sY);
					// alert("Anreise -> "+sDate['date']);
					this.calendar.datefrom.setValue(sDate['year'], sDate['month']-1, sDate['day']);	
					this.showCalendar(element);								
					
				} else {
					
					if(this.div_calendar_abreise.style.display == "block") {
						this.hideCalendar();
						return;
					}
					
					var sD = this.select_abreise_tag.options[this.select_abreise_tag.selectedIndex].text;
					var sM = this.select_abreise_monat.options[this.select_abreise_monat.selectedIndex].text;
					var sY = this.select_abreise_jahr.options[this.select_abreise_jahr.selectedIndex].text;
					var sDate = Date2DateArray (sD+"."+sM+"."+sY);
					// alert("Abreise -> "+sDate['date']);
					this.calendar.dateto.setValue(sDate['year'], sDate['month']-1, sDate['day']);	
					this.showCalendar(element);
					
				}
		} catch(e) {};		
		
}

/*
	Kalender An/Abreise anzeigen
*/
formAngebotSuche.prototype.showCalendar = function(calendar_element)	{
		
		this.hideCalendar();
		try {
				if(calendar_element.id.match(/anreise/)) {
					/*
					var sD = this.select_anreise_tag.options[this.select_anreise_tag.selectedIndex].text;
					var sM = this.select_anreise_monat.options[this.select_anreise_monat.selectedIndex].text;
					var sY = this.select_anreise_jahr.options[this.select_anreise_jahr.selectedIndex].text;
					var sDate = sD+"."+sM+"."+sY;
					// alert("Anreise "+element.id+" -> "+sDate);
					this.setDateValue("anreise", sDate);
					*/
					this.div_calendar_anreise.style.display = "block";
					this.btn_calendar_anreise.title = "Kalender ausblenden";
				
				} else {
					/*
					var sD = this.select_abreise_tag.options[this.select_abreise_tag.selectedIndex].text;
					var sM = this.select_abreise_monat.options[this.select_abreise_monat.selectedIndex].text;
					var sY = this.select_abreise_jahr.options[this.select_abreise_jahr.selectedIndex].text;
					var sDate = sD+"."+sM+"."+sY;
					// alert("Anreise "+element.id+" -> "+sDate);
					this.setDateValue("abreise", sDate);	
					*/	
					this.div_calendar_abreise.style.display = "block";	
					this.btn_calendar_abreise.title = "Kalender ausblenden";	
				}
		} catch(e) {};		
		
}
/*
	Kalender An/Abreise verbergen
*/
formAngebotSuche.prototype.hideCalendar = function()	{
		try {
				this.div_calendar_anreise.style.display = "none";
				this.btn_calendar_anreise.title = "Kalender anzeigen";
				this.div_calendar_abreise.style.display = "none";
				this.btn_calendar_abreise.title = "Kalender anzeigen";
		} catch(e) {};			
}


/*
	Eventhandler für Button Suche nach Angeots-ID
	- Text ändern
	- HiddenDIV mit Suche einblenden
*/
formAngebotSuche.prototype.eventHandler_button_angebots_id = function(event)	{
		
		var element = getEventTarget(event);
		try {
			if(this.div_suche_angebots_id.style.display == "block") {
				this.div_suche_angebots_id.style.display = "none";
				this.div_suche_normal.style.display = "block";
				element.innerHTML = "Nach Angebots-ID";
				this.suche_typ = "arrangements";
				this.hidden_suche_typ.value = "arrangements";
			} else {
				this.div_suche_angebots_id.style.display = "block";
				this.div_suche_normal.style.display = "none";
				element.innerHTML = "Nach Arrangements";
				this.suche_typ = "angebots_id";
				this.hidden_suche_typ.value = "angebots_id";
			}
			
		} catch(e) {};				
}

/*
	Eventhandler für SuggestBox mit Vorschlägen
	- Farbe ändern
	- Hiddenfeld mit Wert belegen oder -1
*/
formAngebotSuche.prototype.eventHandler_suggest_box = function(event)	{
	
		var element = getEventTarget(event);
		try {
				// Suggestliste plz_id aus Liste zuweisen
				if(element.tagName=="LI") {
						var tmp_plz = element.getAttribute("plz_id");
						var tmp_r = element.getAttribute("r_id");
						// wenn eine Region gewähöt wurde (r_id) verwenden
						if(tmp_r) 
							tmp_plz = 0;
						// alert("plz_id:"+tmp_plz+" r_id:"+tmp_r)
						this.input_umkreis_plz_id.value = (tmp_plz ? tmp_plz : 0);
						this.input_umkreis_region_id.value = (tmp_r ? tmp_r : 0);
						this.input_umkreis_ort.value = element.innerHTML;
				}
				// Suggestliste zeigen
				this.div_suggest_box.style.display = "none";
		} catch(e) {};				
}

/*
	Eventhandler für Input ORT (SuggestBox zeigen)
	- Farbe ändern
	- Hiddenfeld mit Wert belegen oder -1
*/
formAngebotSuche.prototype.eventHandler_input_ort_keydown = function(event)	{
		
		var eventKeyCode = getEventKeyCode(event);
		// Nur Hoch/Runter
		if(eventKeyCode!=38 && eventKeyCode!=40 && eventKeyCode!=13) return true;
		
		var liList = formSuche.div_suggest_box_text.getElementsByTagName("LI");
		
		// try {
			if(liList && liList.length > 0) {
				
				// alert(liList.length);
				if(!this.div_suggest_active_li && eventKeyCode!=13) {
					this.div_suggest_active_li = liList[0];
					this.div_suggest_active_li.style.backgroundColor = "#ff8000";
					return true;
				}
				
					// Suggestliste plz_id oder r_id aus Liste zuweisen
					// wenn eine Region gewählt wurde (r_id) verwenden
					
					if(eventKeyCode==13 && this.div_suggest_active_li) {
							var tmp_plz = this.div_suggest_active_li.getAttribute("plz_id");
							var tmp_r = this.div_suggest_active_li.getAttribute("r_id");
							if(tmp_r) 
								tmp_plz = 0;
							// alert("plz_id:"+tmp_plz+" r_id:"+tmp_r)
							this.input_umkreis_plz_id.value = (tmp_plz ? tmp_plz : 0);
							this.input_umkreis_region_id.value = (tmp_r ? tmp_r : 0);
													
							this.input_umkreis_ort.value = this.div_suggest_active_li.innerHTML;
							this.input_umkreis_ort_value = this.div_suggest_active_li.innerHTML;
							// Suggestliste verbergen
							this.div_suggest_active_li = null;	
							this.div_suggest_box.style.display = "none";
							//return true;
							
							// Workaround für Enter bei Übernahme des Suchergebniss in Suggestliste
							// nicht das Formular sofort absenden
							this.div_suggest_active_submit = false;							
							return true;
					}			
				
				var curIndex = 0;
				if(this.div_suggest_active_li) {
					
					if(eventKeyCode==13) {
							
					}							
					// Index suchen
					this.div_suggest_active_li.style.backgroundColor = "#ffffff";
					for(var i = 0; i < liList.length; i++) {
						if(liList[i]==this.div_suggest_active_li) curIndex = i;
					}					
				}
				
				this.div_suggest_active_li = null;	
				var newLi = null;
				if(eventKeyCode==38) {
						if(curIndex==0) curIndex = liList.length;
						if(liList[curIndex-1]) newLi = liList[curIndex-1];						
				} else if(eventKeyCode==40) {
						if(curIndex==liList.length-1) curIndex = -1;
						if(liList[curIndex+1]) newLi = liList[curIndex+1];
				}
				if(newLi) {
					newLi.style.backgroundColor = "#ff8000";
					this.div_suggest_active_li = newLi;

					var cur_id_str = newLi.getAttribute("id");
					var cur_id = parseInt(cur_id_str.replace('suggest_li_',''));
					// Scrollen
					formSuche.div_suggest_box_text.scrollTop = -50 + ((cur_id - 1) * 21);					
				}
				
			}
		// } catch(e) {}
}
/*
	Eventhandler für Input ORT (SuggestBox zeigen)
	- Farbe ändern
	- Hiddenfeld mit Wert belegen oder -1
*/
formAngebotSuche.prototype.eventHandler_input_ort_keyup = function(event)	{
	
			var element = getEventTarget(event);
			
			// Steuertasten
			var eventKeyCode = getEventKeyCode(event);
			var eventKeyCode_Steuertasten = Array(13,16,17,18,33,34,35,36,37,38,39,40);
			
						// Workround falls das Eingabefeld durch BrowserAuswahl belegt wird
						if(eventKeyCode==13 && this.input_umkreis_ort_value) {
							this.input_umkreis_ort.value = this.input_umkreis_ort_value;						
						}			
								
						
			if(in_array(eventKeyCode, eventKeyCode_Steuertasten)) {
				// alert("Steuertaste eventKeyCode:"+eventKeyCode);
				return true;
			}	
			
			// ort_id und r_id nach Tastatur Eingabe zurücksetzen
			this.input_umkreis_plz_id.value = 0;
			this.input_umkreis_region_id.value = 0;
			
			// PLZ -> ab 4 Stellen suchen
			if(element.value.length == 3) {
				var ExpressionInteger = /^\d\d\d$/;
				var plzResult = ExpressionInteger.exec(element.value);
			}	
			
			// Wenige als 3 Zeichen werden nicht beachtet
			if(element.value.length < 3 || plzResult) {
				if(this.div_suggest_box.style.display=="block") {
					formSuche.div_suggest_box_text.innerHTML = "";	
					this.div_suggest_box.style.display = "none";
					this.div_suggest_active_li = null;
				}
				return;
			}			
			
			// PLZ 4 Stellen -> jetzt auch suchen
			/*
			if(element.value.length == 4) {
				var ExpressionInteger = /^\d\d\d\d$/;
				var res = ExpressionInteger.exec(element.value);
				if(res) return;
			}
			*/
			// Suggest Box
			this.div_suggest_box_titel.innerHTML = "Vorschläge zu Ihrer Suche nach <b>'"+element.value+"'</b>";
			this.div_suggest_box_text.innerHTML = "Bitte warten...";
			this.div_suggest_active_li = null;
			
			try {
				// Liste abfragen
				this.ajax_getResultlisteOrte(element.value);
			} catch(e) {};				
				
}

/*
	Eventhandler für Buttons Übernachtungen
	- Hilftext
*/
formAngebotSuche.prototype.eventHandler_button_uebernachtungen_mouseover = function(event)	{
	
		var element = getEventTarget(event);
		this.div_reisedauer_info.innerHTML = element.getAttribute("title");
		this.div_reisedauer_info.style.display = "inline";
}
/*
	Eventhandler für Buttons Übernachtungen
	- Hilftext
*/
formAngebotSuche.prototype.eventHandler_button_uebernachtungen_mouseout = function(event)	{
	
		var element = getEventTarget(event);
		this.div_reisedauer_info.innerHTML = "";
		this.div_reisedauer_info.style.display = "none";		
}

/*
	Eventhandler für Buttons Übernachtungen
	- Farbe ändern
	- Hiddenfeld mit Wert belegen oder -1
*/
formAngebotSuche.prototype.eventHandler_button_uebernachtungen_click = function(event)	{
	
		var element = getEventTarget(event);
		try {
				var buttonNr = element.id.replace('sucheform_uebernachtungen_btn_','');
				// alert(element.id+" -> "+buttonNr);
				var bClassName = "suchform_button_o";
				var iValue = buttonNr;
				if(this.button_uebernachtungen[buttonNr].className == "suchform_button_o") {
						bClassName = "suchform_button_n";
						iValue = -1;				
				}
				this.button_uebernachtungen[buttonNr].className = bClassName;
				this.input_uebernachtungen[buttonNr].value = iValue;
		
		} catch(e) {};				
}
/*
	Eventhandler für Selects Tag / Monat / Jahr (An/Abreise)
*/
formAngebotSuche.prototype.eventHandler_select_date = function(event)	{
	
		var element = getEventTarget(event);
		try {
				if(element.id.match(/anreise/)) {
					var sD = this.select_anreise_tag.options[this.select_anreise_tag.selectedIndex].text;
					var sM = this.select_anreise_monat.options[this.select_anreise_monat.selectedIndex].text;
					var sY = this.select_anreise_jahr.options[this.select_anreise_jahr.selectedIndex].text;
					var sDate = sD+"."+sM+"."+sY;
					
					// Wenn Monat geändert und in der Vergangenheit -> nächstes Jahr
					if(element.id=='sucheform_anreise_monat') {
						var d = new Date();
						var timeNow = d.getTime();
						var m = d.getMonth();
						if(Date2Time (sDate) < timeNow && m >= parseInt(sM.replace('0',''))) {
							var sDate = sD+"."+sM+"."+(parseInt(sY)+1);
						}			
					
					// Wenn Tag geändert und in der Vergangenheit -> nächster Monat
					} else if(element.id=='sucheform_anreise_tag') {
						var d = new Date();
						var timeNow = d.getTime();
						if(Date2Time (sDate) < timeNow) {
							dateValue = Time2Date (timeNow);	
							var dn = new Date(sY, sM, sD);		
							sDate = Time2Date(dn.getTime());
						}	
					}					
					// alert("Anreise:"+element.id+" -> "+sDate);	
					this.setDateValue("anreise", sDate);
					
				} else {
					var sD = this.select_abreise_tag.options[this.select_abreise_tag.selectedIndex].text;
					var sM = this.select_abreise_monat.options[this.select_abreise_monat.selectedIndex].text;
					var sY = this.select_abreise_jahr.options[this.select_abreise_jahr.selectedIndex].text;
					var sDate = sD+"."+sM+"."+sY;
					
					// Wenn Monat geändert und in der Vergangenheit -> nächstes Jahr
					if(element.id=='sucheform_abreise_monat') {
						var d = new Date();
						var timeNow = d.getTime();
						var m = d.getMonth();
						if(Date2Time (sDate) < timeNow && m >= parseInt(sM.replace('0',''))) {
							var sDate = sD+"."+sM+"."+(parseInt(sY)+1);
						}			
						
					// Wenn Tag geändert und in der Vergangenheit -> nächster Monat
					} else if(element.id=='sucheform_abreise_tag') {
						var d = new Date();
						var timeNow = d.getTime();
						if(Date2Time (sDate) < timeNow) {
							dateValue = Time2Date (timeNow);						
							var dn = new Date(sY, sM, sD);		
							sDate = Time2Date(dn.getTime());
						}	
					}	
					// alert("Anreise "+element.id+" -> "+sDate);
					this.setDateValue("abreise", sDate);		
						
				}
		} catch(e) {};		
}


/*
	Eventhandler für Kalender An/Abreise
*/
formAngebotSuche.prototype.eventHandler_formSubmit = function(event)	{
	
		this.hideCalendar();
		
		// Workaround für Enter in Suggestliste
		if(this.div_suggest_active_submit == false) {
			this.div_suggest_active_submit = true;
			return false;
		}
		//alert("eventHandler_formSubmit");		
		//return false;
		if(this.hidden_suche_typ.value == "angebots_id") {
			if(this.input_angebots_id.value.length == 0) {
				brDialog.showDialog("Achtung","Geben Sie bitte eine Angebotsnummer ein...");
				return false;
			} else {
				this.form_angebotssuche.action = "";
				return true;	
			}
		}
				
		if(!checkDate(this.input_anreise_datum.value)) {
			brDialog.showDialog("Achtung","Es wurde kein gültiges Anreisedatum eingegeben.<br>Bitte wählen Sie ein Anreisedatum aus...");
			return false;
		}		
		if(!checkDate(this.input_abreise_datum.value)) {
			brDialog.showDialog("Achtung","Es wurde kein gültiges Abreisedatum eingegeben.<br>Bitte wählen Sie ein Abreisedatum aus...");
			return false;
		}	
		if(!checkPeriod(this.input_anreise_datum.value, this.input_abreise_datum.value)) {
			brDialog.showDialog("Achtung","Es wurde keine gültiger Reisezeitraum angegeben.<br>"+this.input_anreise_datum.value+" - "+this.input_abreise_datum.value+" ist keine gültige Periode...");
			return false;
		}		
		// alert(parseInt(this.input_umkreis_plz_id.value));
		if(this.input_umkreis_ort.value.length == 0) {
		  brDialog.showDialog("Achtung","Geben Sie bitte einen Ort oder eine Postleitzahl ein bzw. wählen Sie einen Ort aus der Vorschlagsliste...");
			return false;
		}
		
		// Test ob PLZ (nur Ziffern) -> ab 4 Stellen suchen
		var ExpressionInteger = /^\d+$/;
		var plzResult = ExpressionInteger.exec(this.input_umkreis_ort.value);		
		
		// alert(parseInt(this.input_umkreis_plz_id.value));
		if(plzResult && this.input_umkreis_ort.value.length < 4) {
		  brDialog.showDialog("Achtung","Geben Sie bitte eine Postleitzahl mit mindestens 4 Zeichen ein.");
			return false;
		} else if(this.input_umkreis_ort.value.length < 3) {
		  brDialog.showDialog("Achtung","Geben Sie bitte einen Ort mit mindestens 3 Zeichen ein.");
			return false;
		}
			
		/*
		// Keinen Ort aus der Liste gewählt 
		if(0 == parseInt(this.input_umkreis_plz_id.value) || isNaN(parseInt(this.input_umkreis_plz_id.value))) {

			if(plzResult) {
				brDialog.showDialog("Achtung","Wählen Sie zu der eingegebenen Postleitzahl einen Ort über die Vorschlagsliste aus.");
				return false;
			} else {
				//brDialog.showDialog("Achtung","Es sind nur Orte zulässig, die über die Vorschlagsliste ausgewählt wurden.");
				//return false;
			}
		}
		*/
		// return false;	
		return true;
}


/*
	Eventhandler für Kalender An/Abreise
*/
formAngebotSuche.prototype.eventHandler_dateinput = function(event)	{

}

/*
		Datumsfeld setzen (Format: DD.MM.YYYY)
		@param	string			Datumsfeld 
		@param	timestamp		JS Timestamp 
*/	
formAngebotSuche.prototype.setDateValue = function(dateField, dateValue) {
		
		if(!checkDate (dateValue)) return;
		// Datum in korrektes Datum wandeln (31.09.2008 -> 01.10.2008)
		dateValue = Time2Date(Date2Time(dateValue));
		
		var d = new Date();
		var timeNow = d.getTime();
		if(Date2Time (dateValue) < timeNow) {
				brDialog.showDialog("Achtung","Das Anreisedatum darf nicht in der Vergangenheit liegen...");
				dateValue = Time2Date (timeNow);
		}
		
		var dA = Date2DateArray(dateValue);
		var wD = Date2Weekday(dateValue);
		
		// alert("setDateValue:"+dateField+" -> "+dateValue);
		if(dateField=="anreise") {
			this.input_anreise_datum.value = dateValue;
			this.select_anreise_tag.selectedIndex = dA['day']-1;
			this.select_anreise_monat.selectedIndex = dA['month']-1;
			for(var i = 0; i < this.select_anreise_jahr.options.length; i++) {
				 if(this.select_anreise_jahr.options[i].value==dA['year'])
				 	this.select_anreise_jahr.selectedIndex = i;
			}			
			this.div_anreise_wochentag.innerHTML = wD;	
			try {		
				this.calendar.datefrom.setValue(dA['year'], dA['month']-1, dA['day']);	
			} catch(e) {};
			
			// Test ob das Abreisedatum noch ok ist sonnst auf 7 Tage nach Anreise setzen
			var dE = Time2Date(Date2Time(this.input_abreise_datum.value));
			if(!checkPeriod (dateValue, dE)) {
				// alert("Abreise:"+dateValue+" Abreise:"+dE);	
				this.setDateValue("abreise", Time2Date((Date2Time(dateValue)+7*86400*1000)));
			}
			
		} else {
			this.input_abreise_datum.value = dateValue;	
			this.select_abreise_tag.selectedIndex = dA['day']-1;
			this.select_abreise_monat.selectedIndex = dA['month']-1;
			for(var i = 0; i < this.select_abreise_jahr.options.length; i++) {
				 if(this.select_abreise_jahr.options[i].value==dA['year'])
				 	this.select_abreise_jahr.selectedIndex = i;
			}
			this.div_abreise_wochentag.innerHTML = wD;
			try {		
				this.calendar.dateto.setValue(dA['year'], dA['month']-1, dA['day']);	
			} catch(e) {};
		}
			
		/*
		var inputDate = document.getElementById(dateField);
		inputDate.value = Time2Date(dateValue);
		*/
}
/*
		Datumsfeld löschen (Format: DD.MM.YYYY)
		@param	string			Datumsfeld 
		@param	timestamp		JS Timestamp 
*/	
formAngebotSuche.prototype.unsetDateValue = function(dateField) {
	/*
		var inputDate = document.getElementById(dateField);
		inputDate.value = "";
	*/
}

formAngebotSuche.prototype.ajax_BuildQuery = function(data) {

		var value;
		var query = new Array();
		for (var key in data) {
			value = encodeURIComponent(key) + '=' + encodeURIComponent(data[key]);
			query.push(value);
		}
		var qstring = query.join('&');
		// alert(qstring);
		return qstring;
}

formAngebotSuche.prototype.ajax_showResultlisteOrte = function() {

		formSuche.hideCalendar();

		var count, res;
		// alert("AJAX DONE: "+xmlhttp.readyState+"/"+xmlhttp.status);
		
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				
				res = xmlhttp.responseText;
				
				// alert('OK: xmlhttprequest responce httpstatus is 200\n' + xmlhttp.readyState + '\n' + xmlhttp.status + '\n' + xmlhttp.responseText);
				formSuche.div_suggest_box_text.innerHTML = res;	
				formSuche.div_suggest_box.style.display = "block";
				formSuche.div_suggest_active_li = null;
				
			} else {
				// alert('Error: xmlhttprequest responce httpstatus is not 200\n' + xmlhttp.readyState + '\n' + xmlhttp.status + '\n' + xmlhttp.responseText + '\nResubmitted');
				// form.submit();
			}
		}
			
}

formAngebotSuche.prototype.ajax_getResultlisteOrte = function(inputValue) {

			// alert(inputValue);
			
			
			var data = new Array();
			data['location'] = inputValue;
			// var http_data = "&location=11212";
			var http_data = this.ajax_BuildQuery(data);
			
			// var ajaxuri = 'http://' + window.location.host + window.location.pathname + 'ajax.php?action=search&';
			// var ajaxuri = 'gtest.php?action=search&';
			var ajaxuri = 'ajax_suche_ort.php?action=search&';
				
		    
		   	xmlhttp	= new XMLHttpRequest;
				xmlhttp.onreadystatechange = formSuche.ajax_showResultlisteOrte;
				xmlhttp.open("POST", ajaxuri, true);
				xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		    xmlhttp.setRequestHeader('Content-length', http_data.length);
		    xmlhttp.setRequestHeader('Connection', 'close');
				xmlhttp.send(http_data);
				
}
