var IBE = new Interface("IBE",port,"bengine");
var countInitReq = 0;
IBE.jsFiles = [];

IBE.InitOnLoad = function(){
	if ( countInitReq == 100 ) return;

    var mustHave = ['FormBase', 'DEPARR', 'Target', 'TTREGS_'+this.port ];
   	var injObj   = { IbeSearch:[] };
/* BUG 13394 */   	
    var mustHave = ['FormBase', 'DateSelector', 'DEPARR', 'Target', 'TTREGS_'+this.port ];
   	var injObj   = { IbeSearch:[], DateSelector:[] };


   	for(i=0; i < mustHave.length; i++) {
        if(typeof(window[mustHave[i]])=='undefined'){
        	countInitReq++;
        	window.setTimeout("IBE.InitOnLoad()",20); return;
        }
    }



    this.Inject(injObj); this.Init();
};

/**
*@constructor
*@extends FormBase
*@requires Terminauswahl
*@requires Zielauswahl
*@requires Reisende
*@requires Kalender
*/

function IbeSearch(){
	FormBase.apply(this);
	Target.apply(this, []);

	this.BookingAction = function(){

		if (this.req['fTargetArea'] != 'FALSE') {
			var bform = document.forms[this.formName];
/* BUG 13394*/
			bform.elements["ibeInput[depDate]"].value = bform.elements["ibeInput[depDay]"].value + "." + bform.elements["ibeInput[depMonth]"].value;
			bform.elements["ibeInput[retDate]"].value = bform.elements["ibeInput[retDay]"].value + "." + bform.elements["ibeInput[retMonth]"].value;
			
            var dep_day = bform.elements["ibeInput[depDay]"].value;
            if(dep_day.length<2) dep_day = "0"+dep_day;
            
            var ret_day = bform.elements["ibeInput[retDay]"].value;
            if(ret_day.length<2) ret_day = "0"+ret_day;
            
            this.req['depDate'] = bform.elements["ibeInput[depMonth]"].value.split(".")[1]+"-"+bform.elements["ibeInput[depMonth]"].value.split(".")[0]+"-"+dep_day;
            this.req['retDate'] = bform.elements["ibeInput[retMonth]"].value.split(".")[1]+"-"+bform.elements["ibeInput[retMonth]"].value.split(".")[0]+"-"+ret_day;
			
			if (typeof(bform.elements["ibeInput[area]"]) != 'undefined') {
				var area = bform.elements["ibeInput[area]"].options[bform.elements["ibeInput[area]"].selectedIndex].value.split("|");
				bform.elements["ibeInput[area]"].options[bform.elements["ibeInput[area]"].selectedIndex].value = area[0];
			}
		}
		else {
			var bform = document.forms[this.formName];
/* BUG 13394*/
			bform.elements["ibeInput[depDate]"].value = bform.elements["ibeInput[depDay]"].value + "." + bform.elements["ibeInput[depMonth]"].value;
			bform.elements["ibeInput[retDate]"].value = bform.elements["ibeInput[retDay]"].value + "." + bform.elements["ibeInput[retMonth]"].value;

			if (bform.elements["ibeInput[dest]"].value == "12") {
				bform.elements["ibeInput[dest]"].value = "-1";
				bform.elements["ibeInput[flightDuration]"].value = "0";
			}
			else
				if (bform.elements["ibeInput[dest]"].value == "13") {
					bform.elements["ibeInput[dest]"].value = "-1";
					bform.elements["ibeInput[flightDuration]"].value = "1";
				}
				else
					if (bform.elements["ibeInput[dest]"].value == "14") {
						bform.elements["ibeInput[dest]"].value = "-1";
						bform.elements["ibeInput[flightDuration]"].value = "2";
					}

			/*if( typeof ( bform.elements["ibeInput[area]"]) !='undefined') {
			 var area = bform.elements["ibeInput[area]"].options[bform.elements["ibeInput[area]"].selectedIndex].value.split("|");
			 bform.elements["ibeInput[area]"].options[bform.elements["ibeInput[area]"].selectedIndex].value = area[0];
			 }*/
			
            var dep_day = bform.elements["ibeInput[depDay]"].value;
            if(dep_day.length<2) dep_day = "0"+dep_day;
            
            var ret_day = bform.elements["ibeInput[retDay]"].value;
            if(ret_day.length<2) ret_day = "0"+ret_day;
            
            this.req['depDate'] = bform.elements["ibeInput[depMonth]"].value.split(".")[1]+"-"+bform.elements["ibeInput[depMonth]"].value.split(".")[0]+"-"+dep_day;
            this.req['retDate'] = bform.elements["ibeInput[retMonth]"].value.split(".")[1]+"-"+bform.elements["ibeInput[retMonth]"].value.split(".")[0]+"-"+ret_day;
			
			if (bform.elements["ibeInput[dest]"].selectedIndex != 0) {
				bform.elements["ibeInput[village]"].value = "";
				bform.elements["ibeInput[area]"].value = "";
			}
		}
		
		return this.ChkFormular();
	};

	this.ChkFormular = function(){		
		var bform = document.forms[this.formName];	
		if (this.req['depDate'] > this.req['retDate']) {
			alert("Ihr Rückreisedatum liegt vor dem Hinreisedatum!");			
			return false;
		}
		var tmpy = bform.zimmer2;
		if (typeof(tmpy) != 'undefined') {
			if (bform.zimmer[6].checked == true && bform.zimmer2.selectedIndex == 0) {
				alert("Bitte wählen Sie ein Zimmertypen aus.");
				bform.zimmer2.focus();
				return false;
			}
		}
		return true;
	};

	/**
	 *Wird nach dem Laden der Seite ausgef?hrt
	 */
	this.Init = function(){
		if (!document.forms[this.formName]) {
			return;
		}
		with (this) {

    		if (this.req['depAirport'] != 'DISABLE_AUTO_FILL')
    		{
	       	this.req['ibeInput[depAirport]'] = this.req['depAirport'];

					FillSelFromArray( 'ibeInput[depAirport]', DEPARR );
				}

// RS: 15.09.2008
//     	this.req['ibeInput[depAirport]'] = this.req['depAirport'];
//			FillSelFromArray( 'ibeInput[depAirport]', DEPARR );

			if (this.req['target'] == 'TRUE') {
				valZiel = this.req['topArea'];
				if (this.req['targetArea']) {
					this.valReg = this.req['targetArea'].split("|")[0];
				}
			}
/**/
			termin_hin = this.req['depDate'].split("-")[2] + '.' + this.req['depDate'].split("-")[1] + '.' + this.req['depDate'].split("-")[0];
			termin_rueck = this.req['retDate'].split("-")[2] + '.' + this.req['retDate'].split("-")[1] + '.' + this.req['retDate'].split("-")[0];

			InitDays(1);
			InitMonth(1);
			InitDays(0);
			InitMonth(0);
			UpdateDate('dep');
			UpdateDate('ret');

			if (this.req['target'] == 'TRUE') {
				UpdateArea();
			}
			if (valZiel > 0) {
				SetToparea();
			}

			FillDuration();
		}
	};

	this.packageChangeSelectDatesDep = function(){
		var y = packageDepCal.date.getFullYear();
		var m = packageDepCal.date.getMonth(); // integer, 0..11
		var d = packageDepCal.date.getDate();
		document.forms["bengine"].elements["ibeInput[depDay]"].value = d;
		if (m < 9) {
			document.forms["bengine"].elements["ibeInput[depMonth]"].value = "0" + (m + 1) + "." + y;
		}
		else {
			document.forms["bengine"].elements["ibeInput[depMonth]"].value = (m + 1) + "." + y;
		}
		IBE.SetDay("dep");
		IBE.SetMonth("dep");
		IBE.changeCalendar("dep", "packageDepCal");
	};

	this.packageChangeSelectDatesRet = function(){
		var y = packageArrCal.date.getFullYear();
		var m = packageArrCal.date.getMonth();
		var d = packageArrCal.date.getDate();
		document.forms["bengine"].elements["ibeInput[retDay]"].value = d;
		if (m < 9) {
			document.forms["bengine"].elements["ibeInput[retMonth]"].value = "0" + (m + 1) + "." + y;
		}
		else {
			document.forms["bengine"].elements["ibeInput[retMonth]"].value = (m + 1) + "." + y;
		}
		IBE.SetDay("ret");
		IBE.SetMonth("ret");
		IBE.changeCalendar("ret", "packageArrCal");
	};

	this.changeCalendar = function(direction, which){
		return false;
		
		var calendar;
		switch (which) {
			/*			case 'flightDepCal':
			 calendar = flightDepCal;
			 break;
			 case 'flightArrCal':
			 calendar = flightArrCal;
			 break;*/
			case 'packageDepCal':
				calendar = packageDepCal;
				break;
			case 'packageArrCal':
				calendar = packageArrCal;
				break;
		}
		if (direction != "") {
			var nTag = this.getValue((direction == "dep") ? this.fieldDepDayDate : this.fieldRetDayDate);
			var strMon = this.getValue((direction == "dep") ? this.fieldDepMonthDate : this.fieldRetMonthDate);
			arrMon = strMon.split(".");
			calendar.setDate(new Date(arrMon[1], arrMon[0] - 1, nTag));
		}
		else {
			direction = "dep";
			var nTag = this.getValue((direction == "ret") ? this.fieldRetDayDate : this.fieldDepDayDate);
			var strMon = this.getValue((direction == "ret") ? this.fieldRetMonthDate : this.fieldDepMonthDate);
			arrMon = strMon.split(".");
			calendar.setDate(new Date(arrMon[1], arrMon[0] - 1, nTag));
			direction = "ret";
			var nTag = this.getValue((direction == "ret") ? this.fieldRetDayDate : this.fieldDepDayDate);
			var strMon = this.getValue((direction == "ret") ? this.fieldRetMonthDate : this.fieldDepMonthDate);
			arrMon = strMon.split(".");
			calendar.setDate(new Date(arrMon[1], arrMon[0] - 1, nTag));
		}
	};
}
