/**
 * Definition von verschiedenen Funktionen, die an unterschiedlichen Stellen
 * benutzt werden.
 *
 * @package de.otto-freizeit.suchformulare
 * @author Christian Poulter, 17.02.2009, christian.poulter@otto-freizeit.de
 * @version 1.0, 17.02.2009
 */



/**
 * Konvertiert einen String in einen Int-Wert
 * ist notwendig, da parseInt eine führende Null als Oktal-Wert interpretiert
 * @param s eine Integerzahl als String.
 */
function myParseInt(s) {
	if (typeof s == 'string') s = s.replace (/^0+/,"");
	return parseInt(s);
}

/**
 * Wird beim Absenden des Formulars aufgerufen. Führt einige Prüfungen durch und
 * schickt das Formular dann ab.
 * @param param Suchmodus (std=standard, ext=erweiterte Suche).
 * @param form_name Name des Formulars.
 * @param name_searchmode Name des INPUT-Feldes, dass den Suchmodus enthält.
 * @param name_departureFrom Name des INPUT-Feldes, dass den Abflughafen enthält.
 * @param name_destination Name des INPUT-Feldes, dass das Ziel enthält.
 * @param text_departure Text, der bei leerem Abflughafen angezeigt wird.
 * @param text_destination Text, der bei leerem Ziel angezeigt wird.
 * @param doubleEscape Textfelder sollen doppelt escaped werden ... für Affilinet erforderlich :(
 */
function send_rq(param, form_name, name_searchmode, name_departureFrom, name_destination, text_departure, text_destination, doubleEscape) {
	var departureFrom = document.getElementById(name_departureFrom);
	var destination = document.getElementById(name_destination);

	if (param == "std") {
		if ((departureFrom) && (departureFrom.type == "text") && (departureFrom.value == "")){
			window.alert(text_departure);
			return;
		} else if ((destination) && (destination.type == "text") && (destination.value == "")){
			window.alert(text_destination);
			return;
		}
	}

	if (doubleEscape) {
		if (departureFrom) departureFrom.value = escape(escape(departureFrom.value));
		if (destination) destination.value = escape(escape(destination.value));
	}

	var sm = document.getElementsByName(name_searchmode);
	for (var i=0; i < sm.length; i++) sm[i].value = param;

	document.forms[form_name].submit();
}

/**
 * Blendet bei Gabelflug zusätzliche Eingabefelder ein. Trägt zu dem dafür Sorge, dass bei
 * Oneway die Rückflugfelder grau werden.
 * @param locationsoj ID des DIV, welches die zusätzlichen Felder enthält
 * @param mode Modus (1=HinRück, 2=Oneway, 3=Gabelflug)
 * @param returningDayOfWeek ID des Elements, dass den Rückflugwochentag enthält
 * @param returningDay ID des Elements, dass den Rückflugtag enthält
 * @param returningMonthYear ID des Elements, dass den Rückflugmonatjahr enthält
 * @param returningTime ID des Elements, dass die Rückfluguhrzeit enthält
 * @param returningImageButton ID des Elements, dass den Rückflugkalender enthält
 */
function showLocationsOJ(locationsoj, mode, returningDayOfWeek, returningDay, returningMonthYear, returningTime, returningImageButton) {
	locationsoj = document.getElementById(locationsoj);
	returningDayOfWeek = document.getElementById(returningDayOfWeek);
	returningDay = document.getElementById(returningDay);
	returningMonthYear = document.getElementById(returningMonthYear);
	returningTime = document.getElementById(returningTime);
	returningImageButton = document.getElementById(returningImageButton);

	if (typeof RIBListeners == "undefined") {
		RIBListeners = null;
	}

	switch(mode) {

		// Hinrück
		case 1:
			if (locationsoj) locationsoj.style.display="none";
			if (returningDayOfWeek) returningDayOfWeek.disabled = false;
			if (returningDay) returningDay.disabled = false;
			if (returningMonthYear) returningMonthYear.disabled = false;
			if (returningTime) returningTime.disabled = false;
			if (returningImageButton && RIBListeners) {
				for (i=RIBListeners.length-1; i>-1; i--) YAHOO.util.Event.addListener(returningImageButton,  RIBListeners[i].type, RIBListeners[i].fn);
				RIBListeners = null;
			}
			break;

		// Oneway
		case 2:
			if (locationsoj) locationsoj.style.display="none";
			if (returningDayOfWeek) returningDayOfWeek.disabled = true;
			if (returningDay) returningDay.disabled = true;
			if (returningMonthYear) returningMonthYear.disabled = true;
			if (returningTime) returningTime.disabled = true;
			if (returningImageButton && (RIBListeners == null)) {
				RIBListeners = YAHOO.util.Event.getListeners(returningImageButton, "click");
				YAHOO.util.Event.purgeElement(returningImageButton, false);
			}
			break;

		// Multi/Gabel
		case 3:
			if (locationsoj) locationsoj.style.display="block";
			if (returningDayOfWeek) returningDayOfWeek.disabled = false;
			if (returningDay) returningDay.disabled = false;
			if (returningMonthYear) returningMonthYear.disabled = false;
			if (returningTime) returningTime.disabled = false;
			if (returningImageButton && RIBListeners) {
				for (i=RIBListeners.length-1; i>-1; i--) YAHOO.util.Event.addListener(returningImageButton,  RIBListeners[i].type, RIBListeners[i].fn);
				RIBListeners = null;
			}
			break;

		default:
			if (locationsoj) locationsoj.style.display="block";
			if (returningDayOfWeek) returningDayOfWeek.disabled = false;
			if (returningDay) returningDay.disabled = false;
			if (returningMonthYear) returningMonthYear.disabled = false;
			if (returningTime) returningTime.disabled = false;
			if (returningImageButton && RIBListeners) {
				for (i=RIBListeners.length-1; i>-1; i--) YAHOO.util.Event.addListener(returningImageButton,  RIBListeners[i].type, RIBListeners[i].fn);
				RIBListeners = null;
			}
	}
}

/**
 * Fügt zu einem Text-INPUT einen Autocompleter hinzu. Wird von den Flugformularen
 * für die Autovervollständigung benutzt.
 * @param inputId ID des Text-INPUT Feldes.
 * @param containerId ID des Containers, in dem die Vorschläge erscheinen.
 * @param dataUrl URL, von der die Daten nachgeladen werden.
 */
function addAutoCompleter(inputId, containerId, dataUrl) {
	var oDS = new YAHOO.util.XHRDataSource(dataUrl);
	oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
	oDS.responseSchema = { recordDelim: "\n", fieldDelim: "\t" };
	oDS.maxCacheEntries = 50;

	var oAC = new YAHOO.widget.AutoComplete(inputId, containerId, oDS);
	oAC.queryDelay = 0;
	oAC.maxResultsDisplayed = 21;
	oAC.minQueryLength = 4;

	if ((YAHOO.env.ua.ie > 0) && (YAHOO.env.ua.ie < 7)) {
		oAC.useIFrame = true;
	}
}

/*
17.02.2009 kann wohl weg ... 

function checkDate(string) {
    if(!string) return null;
    string += '';
    string = string.replace(/[^0-9^.]/g, '');

    var split = string.split("-");
    var day = parseInt(split[2], 10);
    var month = parseInt(split[1] || 0, 10);
    var year = parseInt(split[0] || 0, 10);

    if(isNaN(year)) year = check.getFullYear();

    var check = new Date(year, month - 1, day);
    var day2 = check.getDate();
    var year2 = check.getFullYear();
    var month2 = check.getMonth() + 1;

    if ( year2 == year && month == month2 && day == day2 ) return check;
    return null;
}*/