//	********************************************************************************************************
//		CSearchFormBuilder.js
//	********************************************************************************************************
//
//		CREATED FROM:	Robert Stiehler (idaSys)
//		CREATED AT:	30.09.2008
//		
//		UPDATES:
//
//	--------------------------------------------------------------------------------------------------------


//class CSearchFormBuilder
//{
//public:
	function CSearchFormBuilder()
	{
	//public:
		this.createSearchForm = declared_createSearchForm;		
		this.createAirportInput = declared_createAirportInput;
		this.createDateTable = declared_createDateTable;
		this.createPassangerInput = declared_createPassangerInput;
		this.createFormButton = declared_createFormButton;
		this.createHiddenSearchAttributes = declared_createHiddenSearchAttributes;
	
		this.useStandartButtonStyle = declared_useStandartButtonStyle;
		this.useCalendarIcon = declared_useCalendarIcon;
		this.addAlternativeFormDestination = declared_addAlternativeFormDestination;
		
		this.initWettendassBuilder = declared_initWettendassBuilder; 

	//protected:
		this._useStandartButtonStyle = true;
		this._useCalendarIcon = true;
		this._alternativeFormDestinations = new Array();
		
	//private:
		this.createClearer = declared_createClearer;
		this.createLable = declared_createLable;
		this.createImageLable = declared_createImageLable;
		
		this.log = xajax_logStringToFile;
	}
	
//public:
	function declared_createSearchForm(setTo)
	{
		try
		{
			var SearchFormContainer = document.getElementById(setTo);
			
			//Create departure airport select
			SearchFormContainer.appendChild(this.createLable(translationsTextSearchForm["Von"], "depLable"));
			SearchFormContainer.appendChild(this.createAirportInput("da"));
			
			SearchFormContainer.appendChild(this.createClearer());
			
			//Create arrival airport select
			SearchFormContainer.appendChild(this.createLable(translationsTextSearchForm["Nach"], "arrLable"));
			SearchFormContainer.appendChild(this.createAirportInput("aa"));
			
			SearchFormContainer.appendChild(this.createClearer());
			
			//Create departure date selects
			SearchFormContainer.appendChild(this.createLable(translationsTextSearchForm["Hinreise"], "depDateLable"));
			var DepartureDateContainer = document.createElement("div");
			DepartureDateContainer.className = "r2_right_search";
			DepartureDateContainer.id = "containerOutDate";
			DepartureDateContainer.appendChild(this.createDateTable("od", "omy"));
			SearchFormContainer.appendChild(DepartureDateContainer);
			
			SearchFormContainer.appendChild(this.createClearer());
			
			//Create arrival date selects
			SearchFormContainer.appendChild(this.createLable(translationsTextSearchForm["Rueckreise"], "arrDateLable"));			
			var ReturnDateContainer = document.createElement("div");
			ReturnDateContainer.className = "r2_right_search";
			ReturnDateContainer.id = "containerRetDate";
			ReturnDateContainer.appendChild(this.createDateTable("rd", "rmy"));
			SearchFormContainer.appendChild(ReturnDateContainer);
			
			SearchFormContainer.appendChild(this.createClearer());
			SearchFormContainer.appendChild(this.createClearer());
			
			//Create adult select
			SearchFormContainer.appendChild(this.createLable(translationsTextSearchForm["Reisende"], "traveler"));
			SearchFormContainer.appendChild(this.createPassangerInput("numAdults"));
			
			SearchFormContainer.appendChild(this.createClearer());
			
			//Create children select
			SearchFormContainer.appendChild(this.createImageLable("img/info_ic.gif", "info_icon"));
			
			SearchFormContainer.appendChild(this.createPassangerInput("numChilds"));
			
			SearchFormContainer.appendChild(this.createClearer());
			
			SearchFormContainer.appendChild(this.createFormButton());
			
			for(var i = 0; i < this._alternativeFormDestinations.length; i++)
				SearchFormContainer.appendChild(this.createFormButton(this._alternativeFormDestinations[i]));
			
			SearchFormContainer.appendChild(this.createClearer());
			
			//add hidden fields
			SearchFormContainer.appendChild(this.createHiddenSearchAttributes("outboundDepartureDate", "outboundDepartureDate", ""));
			SearchFormContainer.appendChild(this.createHiddenSearchAttributes("returnDepartureDate", "returnDepartureDate", ""));
			SearchFormContainer.appendChild(this.createHiddenSearchAttributes("childBirthDay", "childBirthDay", ""));
			SearchFormContainer.appendChild(this.createHiddenSearchAttributes("status", "status", ""));
			SearchFormContainer.appendChild(this.createHiddenSearchAttributes("startmode", "startmode", "lastminute"));
			SearchFormContainer.appendChild(this.createHiddenSearchAttributes("", "maxAlter", "12"));
			SearchFormContainer.appendChild(this.createHiddenSearchAttributes("", "minAlter", "0"));
			//SearchFormContainer.appendChild(this.createHiddenSearchAttributes("sc", "sc", ""));
		}
		catch(e) {/*this.log("CSearchFormBuilder::createSearchForm\n" + e.message, "logging/JSExceptionLog.txt"); alert(e.message)*/;}
	}
	
//public:
	function declared_createAirportInput(AirportType)
	{
		try
		{
			var DepartureContainer = document.createElement("div");
			DepartureContainer.id = "container" + AirportType
			DepartureContainer.className = "r2_right_search";
			
			DepartureInput = document.createElement("select");
			DepartureInput.id = AirportType;
			DepartureInput.name = AirportType;
			DepartureInput.onchange = function() {
				objSearchFormHandler.setSc();
				seasonFehlermeldung = false;
				objSearchFormHandler.setSeason();
				// Wenn ein Abflughafen gewählt wird, muss die Box der Zielflughäfen mit aktualisiert werden				
				if(checkAirport(document.getElementById(AirportType)))
					if(AirportType == "da")
						objSearchFormHandler.changeAirport("P", "return", returnSeason);
					else
						objSearchFormHandler.changeAirport("P", "outbound", returnSeason);
			}
			
			DepartureContainer.appendChild(DepartureInput);
			
			return DepartureContainer;
		}
		catch(e) {this.log("CSearchFormBuilder::createAirportInput\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//public:
	function declared_useCalendarIcon(useIcon)
	{
		try
		{
			this._useCalendarIcon = useIcon;
		}
		catch(e) {this.log("CSearchFormBuilder::useCalendarIcon\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//public:
	function declared_createDateTable(selectDayName, selectMontName)
	{
		try
		{
			var DepartureDateTbl = document.createElement("table");
			DepartureDateTbl.className = "r2_date";
			DepartureDateTbl.border = "0";

			DepartureDateTbl.setAttribute("cellpadding", "0");
			DepartureDateTbl.setAttribute("cellspacing", "0");

			DepartureDateTblBody = document.createElement("tbody");
			DepartureDateTblRow = document.createElement("tr");
			
			var DepartureDayTD = document.createElement("td");
			var DepartureDayInput = document.createElement("select");
			DepartureDayInput.className = "r2_day";
			DepartureDayInput.id = selectDayName;
			DepartureDayInput.name = selectDayName;
			DepartureDayInput.onchange = function() {
				objSearchFormHandler.setSc();
				seasonFehlermeldung = false;
				objSearchFormHandler.setSeason();
			}
			
			DepartureDayTD.appendChild(DepartureDayInput);
			DepartureDateTblRow.appendChild(DepartureDayTD);
			
			var DepartureMonthTD = document.createElement("td");
			var DepartureMonthInput = document.createElement("select");
			DepartureMonthInput.className = "r2_month";
			DepartureMonthInput.id = selectMontName;
			DepartureMonthInput.name = selectMontName;
			DepartureMonthInput.onchange = function() {
				objSearchFormHandler.dateDependenciesOnChange();
			}
			DepartureMonthTD.appendChild(DepartureMonthInput);
			DepartureDateTblRow.appendChild(DepartureMonthTD);
			
			var DepartureCalendarIconTD = document.createElement("td");
			
			if(this._useCalendarIcon)
			{
				var DepartureCalendarLink = document.createElement("a");
				DepartureCalendarLink.href = "javascript:objSearchFormHandler.clearSearchFormForNewContent(); objSearchFormHandler.objCalendarBuilder.createCalendar('searchFormContent', '" + selectDayName + "', '" + selectMontName + "');";
				var DepartureCalendarIcon = document.createElement("img");
				DepartureCalendarIcon.id = "calImgAb" + selectDayName;
				DepartureCalendarIcon.src = "img_konzept2/kalenderAbIcon.jpg";
				DepartureCalendarIcon.height = "21";
				DepartureCalendarIcon.width = "23";
				DepartureCalendarLink.appendChild(DepartureCalendarIcon);
				DepartureCalendarIconTD.appendChild(DepartureCalendarLink);
			}
			
			DepartureDateTblRow.appendChild(DepartureCalendarIconTD);
			DepartureDateTblBody.appendChild(DepartureDateTblRow);
			DepartureDateTbl.appendChild(DepartureDateTblBody);
			
			return DepartureDateTbl;
		}
		catch(e) {this.log("CSearchFormBuilder::createDateTable\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//public:
	function declared_createPassangerInput(Type)
	{
		try
		{
			var PassangerAdultContainer = document.createElement("div");
			PassangerAdultContainer.className = "r2_right_search";
			var PassangerAdultInput = document.createElement("select");
			PassangerAdultInput.id = Type;
			PassangerAdultInput.name = Type;
			PassangerAdultContainer.appendChild(PassangerAdultInput);
			
			return PassangerAdultContainer;
		}
		catch(e) {this.log("CSearchFormBuilder::createPassangerInput\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//public:
	function declared_useStandartButtonStyle(UseStandart)
	{
		try
		{
			this._useStandartButtonStyle = UseStandart;
		}
		catch(e) {this.log("CSearchFormBuilder::useStandartButtonStyle\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//public:
	function declared_addAlternativeFormDestination(ClassName, Id, Ref, strText)
	{
		try
		{
			this._alternativeFormDestinations.push(new Array(ClassName, Id, Ref, strText));
		}
		catch(e) {/*alert(e.message)*/;}
	}
	
//public:
	function declared_createFormButton(alternativeButtonContent)
	{
		try
		{
			var SearchFormButton = document.createElement("div");
			
			if(alternativeButtonContent != null)
			{
				SearchFormButton.className = "Container" + alternativeButtonContent[0];
				SearchFormButton.id = "Container" + alternativeButtonContent[1];
			}
			else
			{
				SearchFormButton.className = "link_right";
				SearchFormButton.id = "searchFlightLink";
			}
			
			if(this._useStandartButtonStyle)
			{
				SearchFormButton.style.position = "relative";
				SearchFormButton.style.top = "15px";
			}
			
			var SearchFormLink = document.createElement("a");
			
			if(alternativeButtonContent != null)
			{
				SearchFormLink.id = alternativeButtonContent[1];
				SearchFormLink.href = "javascript:objSearchFormHandler.SearchSubmit(null, '" + alternativeButtonContent[2] + "', '" + alternativeButtonContent[0] + "');";
				SearchFormLink.innerHTML = alternativeButtonContent[3];
			}
			else
			{
				SearchFormLink.href = "javascript:objSearchFormHandler.SearchSubmit();";
				SearchFormLink.innerHTML = translationsTextSearchForm["ReiseFinden"];
				SearchFormLink.id = "btnFindTravell";
			}
			
			SearchFormLink.className = "r2_StdLinkIconRight";
			SearchFormLink.style.color = "d52030";
			SearchFormButton.appendChild(SearchFormLink);
			
			return SearchFormButton;
		}
		catch(e) {this.log("CSearchFormBuilder::createFormButton\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//public:
	function declared_createHiddenSearchAttributes(Name, id, value)
	{
		try
		{
			var SearchAttribute = document.createElement("input");
			SearchAttribute.type = "hidden";
			SearchAttribute.name = Name;
			SearchAttribute.id = id;
			SearchAttribute.value = value;
			
			return SearchAttribute;
		}
		catch(e) {this.log("CSearchFormBuilder::createHiddenSearchAttributes\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//public:
	function declared_initWettendassBuilder(setTo)
	{
		try
		{
			var SearchFormContainer = document.getElementById(setTo);

			// den Parameter specialAdvertisement=wettendass an die Flugliste übergeben
			if (SearchFormContainer != null)
				SearchFormContainer.appendChild(this.createHiddenSearchAttributes("specialAdvertisement", "specialAdvertisement", "wettendasskinder"));
			
			document.getElementById("startmode").value = "wettendasskinder";
			
			// Kalender entfernen
			document.getElementById("calImgAbod").style.display = "none";
			document.getElementById("calImgAbrd").style.display = "none";
		}
		catch(e) {this.log("CSearchFormBuilder::initWettendass\n" + e.message, "logging/JSExceptionLog.txt");}
	}

//private:
	function declared_createClearer()
	{
		try
		{
			var Clearer = document.createElement("div");
			Clearer.className = "r2_clearer";
			
			return Clearer;
		}
		catch(e) {this.log("CSearchFormBuilder::createClearer\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//protected:
	function declared_createLable(text, id)
	{
		try
		{
			var DepartureLable = document.createElement("div");
			DepartureLable.className = "r2_left_search";
			
			if(id != null && id != "")
				DepartureLable.id = id;
			
			DepartureLable.innerHTML = text;
			
			return DepartureLable;
		}
		catch(e) {this.log("CSearchFormBuilder::createLable\n" + e.message, "logging/JSExceptionLog.txt");}
	}
	
//protected:
	function declared_createImageLable(image, id)
	{
		try
		{
			var DepartureLable = document.createElement("div");
			DepartureLable.className = "r2_left_search r2_left_searchImg";
			
			if(id != null && id != "")
				DepartureLable.id = id;
			
			var ImageLable = document.createElement("img");
			ImageLable.src = image;
			ImageLable.className = "r2_left_searchImgSelf";
			ImageLable.id = id + "_Img"
			ImageLable.height = "25"
			ImageLable.width = "26"
			
			ImageLable.onmouseover = function() {
				tooltip.show('<b>' + translationsTextSearchForm["Hinweis"] + ':</b> ' + translationsTextSearchForm["UnterbringungInEinemZimmer"]);
			}
			ImageLable.onmouseout = function() {
				tooltip.hide();
			}
			
			DepartureLable.appendChild(ImageLable);
			
			return DepartureLable;
		}
		catch(e) {this.log("CSearchFormBuilder::createLable\n" + e.message, "logging/JSExceptionLog.txt");}
	}
//};
