
/********************************************************************************************/
/* ALLGEMEINE FUNKTIONEN																	*/
/********************************************************************************************/

function show_text() {
	if(useSlider == 1)
			{
			document.getElementById('regler').style.display = "none";
			}
	document.getElementById('text').style.display = "block";
	document.getElementById('result').style.display = "none";
}

function show_results() {
	if(document.getElementById('result').innerHTML != "")
		{
		if(useSlider == 1)
			{
			document.getElementById('regler').style.display = "block";
			}
		document.getElementById('text').style.display = "none";
		document.getElementById('result').style.display = "block";
		}
}

function div_an(what) {
	window.document.getElementById(what).style.display = 'block';
}

function div_aus(what) {
	window.document.getElementById(what).style.display = 'none';
}

function tbl_display(tag, class1, class2) {
	var rows = document.getElementsByTagName(tag);
	for(var i=0; i<rows.length; i++)
		{
		if (rows[i].className==class1)
			{
			rows[i].className=class2;
			}
			else
			{
			if (rows[i].className==class2)
				{
				rows[i].className=class1;
				}
			}
		}
	}

function filtering(filter_MASK, how, vis_class)
{
	for(var i=0; i<res_array.length; i++)
	{
		debugout = filter_MASK + ' (' + how + ')\nbefore: ' + dec2bin(res_array[i].SwitchHide_restrictions) + '\nafter : ';
		if( how == 'in')
		{
			if(document.getElementById('res_' + i).className == 'rowno')
			{
				res_array[i].SwitchHide_restrictions &= (~filter_MASK);
				if(	res_array[i].SliderHide_restrictions == '' && res_array[i].SwitchHide_restrictions == 0)
				{
					document.getElementById('res_' + i).className=vis_class;
				}
			}
		}
		if( how == 'out')
		{
			if(res_array[i].MASK & filter_MASK)
			{
//				if(i == 3) {alert('out: maske griff (' + filter_MASK + ')' );}
				res_array[i].SwitchHide_restrictions |= filter_MASK;
				if(document.getElementById('res_' + i).className == vis_class)
				{
					document.getElementById('res_' + i).className='rowno';
				}
			}
		}
		debugout += dec2bin(res_array[i].SwitchHide_restrictions);

//		if(i == 3) {alert(debugout);}
	}
}

function MM_openBrWindow(theURL,winName,features) {
  	window.open(theURL,winName,features);
}

function addNet(url,titel)
	{
	if((typeof window.sidebar=="object") && (typeof window.sidebar.addPanel=="function"))
		{
		window.sidebar.addPanel(titel,url,"");
		}
		else
		{
		alert("Mit Ihrem Browser ist das anlegen eines Lesezeichens leider nicht möglich.\nBitte legen Sie das Lesezeichnen manuell an.\nURL:"+url);
		}
}

function lesezeichen()
	{
	var url=window.location.href,t=document.title,ap=navigator.appName;
	t = 'Billigflieger.de';
	url = 'http://www.billigflieger.de';
	if(ap == "Microsoft Internet Explorer")
		{
		window.external.AddFavorite(url,t);
		}
		else
		{
		if(ap == "Netscape")
			{
			addNet(url,t);
			}
			else
			{
			alert("Mit Ihrem Browser ist das anlegen eines Lesezeichens leider nicht möglich.\nBitte legen Sie das Lesezeichnen manuell an.\nURL:"+url);
			}
		}
}

/********************************************************************************************/
/* DATUMS-FELDER AUFBEREITEN																*/
/********************************************************************************************/

function sel_Day_von()
{
	a = 1;
	while(Days_VON[a] < 32)
		{
		if(Days_VON[a] == Days_VON[0])
			{
			document.write('<option value="' + Days_VON[a] + '" selected>' + Days_VON[a] + '</option>');
			}
			else
			{
			document.write('<option value="' + Days_VON[a] + '">' + Days_VON[a] + '</option>');
			}
		a++;
		}
}

function sel_Month_von() {
	a = 0;
	while(a < 12)
		{
		document.write('<option value="' + Months_VON_Value[a] + '">' + Months_VON_Name[a] + '</option>');
		a++;
		}
}

function sel_Day_nach() {
	a = 1;
	while(Days_NACH[a] < 32)
		{
		if(Days_NACH[a] == Days_NACH[0])
			{
			document.write('<option value="' + Days_NACH[a] + '" selected>' + Days_NACH[a] + '</option>');
			}
			else
			{
			document.write('<option value="' + Days_NACH[a] + '">' + Days_NACH[a] + '</option>');
			}
		a++;
		}
}

function sel_Month_nach() {
	a = 0;
	while(a < 12)
		{
		document.write('<option value="' + Months_NACH_Value[a] + '">' + Months_NACH_Name[a] + '</option>');
		a++;
		}
}

function initDayVON(formname)
{
	if(this.formname == undefined)
		{
		formn = formname;
		}
		else
		{
		formn = this.formname;
		}
	sel_ind = document.forms[formn].MVON.selectedIndex;
	document.forms[formn].DVON.options.length = aDaysOfMonth_von[sel_ind];
	for(a= 0; a <= aDaysOfMonth_von[sel_ind] - 1; a++)
		{
		b = a + 1;
		if(b < 10)
			{
			b = "0" + b;
			}
		document.forms[formn].DVON.options[a].value = b;
		document.forms[formn].DVON.options[a].text  = b;
		}

	if (document.forms[formn].date_v) {
		var d = document.forms[formn].DVON.options[document.forms[formn].DVON.selectedIndex].value;
		var m = document.forms[formn].MVON.options[document.forms[formn].MVON.selectedIndex].value;
		var y = m.substr(2, 4);
		    m = m.substr(0, 2);

		document.forms[formn].date_v.value = d + ',' + m + ',' + y;
	}
}


function initDayDNACH(formname)
{
	if(this.formname == undefined)
		{
		formn = formname;
		}
		else
		{
		formn = this.formname;
		}
	sel_ind = document.forms[formn].MNACH.selectedIndex;
	document.forms[formn].DNACH.options.length = aDaysOfMonth_nach[sel_ind];
	for(a= 0; a <= aDaysOfMonth_nach[sel_ind] - 1; a++)
		{
		b = a + 1;
		if(b < 10)
			{
			b = "0" + b;
			}
		document.forms[formn].DNACH.options[a].value = b;
		document.forms[formn].DNACH.options[a].text  = b;
		}

	if (document.forms[formn].date_n) {
		var d = document.forms[formn].DNACH.options[document.forms[formn].DNACH.selectedIndex].value;
		var m = document.forms[formn].MNACH.options[document.forms[formn].MNACH.selectedIndex].value;
		var y = m.substr(2, 4);
		    m = m.substr(0, 2);

		document.forms[formn].date_n.value = d + ',' + m + ',' + y;
	}
}

function initAllDays(what) {
	initDayVON(what);
	initDayDNACH(what);
}

/********************************************************************************************/
/* DATUMSAUSWAHL																			*/
/********************************************************************************************/

function change_date(zielfeld, wert) {
	if(zielfeld == 'von')
		{
		tmp_str = wert.split(",");
		tmp_str[1] += tmp_str[2];
		document.forms[this.formname].DVON.value = tmp_str[0];
		document.forms[this.formname].MVON.value = tmp_str[1];
		document.forms[this.formname].MNACH.value = tmp_str[1];
		initDayDNACH();
		initDayVON();
		}
	if(zielfeld == 'nach')
		{
		tmp_str = wert.split(",");
		tmp_str[1] += tmp_str[2];
		document.forms[this.formname].DNACH.value = tmp_str[0];
		document.forms[this.formname].MNACH.value = tmp_str[1];
		initDayDNACH();
		}
}

function change_date_solo(zielfeld, wert) {
	if(zielfeld == 'von')
		{
		tmp_str = wert.split(",");
		tmp_str[1] += tmp_str[2];
		document.forms[this.formname].DVON.value = tmp_str[0];
		document.forms[this.formname].MVON.value = tmp_str[1];
		initDayVON();
		}
}

function set_calender_fields(id) {
		Calendar.setup({
			inputField     :    id + "_input", 		// id of the input field
			ifFormat       :    "%d,%m,%Y",     		// format of the input field
			button         :    id + "_button",		// trigger for the calendar (button ID)
			align          :    "Bl",           	// alignment (defaults to "Bl")
			singleClick    :    true
		})
}

/********************************************************************************************/
/* REFERRER-COOKIE 																			*/
/********************************************************************************************/

var ref	= document.referrer;
var uri = ref.split("/");
var act = document.URL;

function readCookie(name) {
    var cookieValue = "";
    var search = name + "=";
    if(document.cookie.length > 0)
		{
        offset = document.cookie.indexOf(search);
        if(offset != -1)
			{
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if(end == -1) end = document.cookie.length;
            cookieValue = unescape(document.cookie.substring(offset, end))
        	}
    	}
    return cookieValue;
}

function expires(days) {
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	return expires;
}

function search_param(url, what, limiter) {
	var ergebnis = eval( "url.match(/" + what + "=[^" + limiter + "]*" + limiter + "/)" );
	var ergebnis2 = eval( "ergebnis[0].replace(/" + what + "=/, \"\")" );
	return eval( "ergebnis2.replace(/" + limiter + "/, \"\")" );
}

if(readCookie('seoc') == '')
{
	var uri_fin = '', type = '', querystring = '', str = '', expiration = 5; // default values

	switch(act)
	{	// target (must be processed BEFORE referer)
		case "http://www.billigflieger.de/home.htm":
			type		= "t=ad&";
			break;
		case "http://www.billigflieger.de/home.htm?pk":
			type		= "t=ad&pk=1&";
			break;
		case "http://www.billigflieger.de/index_b.htm":
			if(uri[2] != "www.billigflieger.de")
			{
				type				= "t=ad&";
				uri_fin			= "h=bmedia&";
				querystring	= ref;
				expiration	= 45;
			}
			break;
		case "http://www.billigflieger.de/home.htm?ysms":
			type		= "t=search&pkysms=1&";
			break;
		default:
			type		= "t=search&";
			break;
	}
	var re = new RegExp(/billigflieger.de\/\?fb(\w\w\w)/);
	var m = re.exec(act);
	if (m != null) {
		type			= "t=ad&fb=" + m[1] + "&";
		querystring	= m[1];
	}

	switch(uri[2])
	{	// referrer (must be processed AFTER target)
		case "www.google.de":
			uri_fin			= "h=google.de&";
			querystring	= search_param(ref, 'q', '&');
			break;
		case "pagead2.googlesyndication.com":
			uri_fin			= "h=google_adsense&";
			querystring	= search_param(ref, 'url', '&');
			break;
		case "googleads.g.doubleclick.net":
			uri_fin			= "h=google_adsense&";
			querystring	= search_param(ref, 'url', '&');
			break;
		case "de.search.yahoo.com":
			uri_fin			= "h=yahoo.de&";
			querystring	= search_param(ref, 'p', '&');
			break;
		case "search.msn.de":
			uri_fin			= "h=msn&";
			querystring	= search_param(ref, 'q', '&');
			break;
		case "suche.t-online.de":
			uri_fin			= "h=t-online&";
			querystring	= search_param(ref, 'q', '&');
			break;
		case "www.billigflieger.de":
			if (typeof(uri[4]) != "undefined" && uri[4].split(".")[0] == "referrer")
			{
				uri_fin		= "h=md&"
				type			= "t=search&";
				querystring	= search_param(ref, 'ref', '&');
			}
			break;
		case "www.facebook.com":
			uri_fin			= "h=facebook&";
			break;
		default:
			break;
	}
	if(uri_fin != '' && type != '' && querystring != '')
		document.cookie =  'seoc=' + uri_fin + type + 'q=' + querystring + expires(expiration) + "; path=/";
}


/********************************************************************************************/
/* SUBMIT FUNCTIONS																			*/
/********************************************************************************************/

function submitForm(what) {

	// Flüge

	if(what == 'flug')
	{
		var err = "";
		var hin = document.flug.MVON.value.substr(4,2) +  document.flug.MVON.value.substr(0,2) + document.flug.DVON.value;
		var weg = document.flug.MNACH.value.substr(4,2) + document.flug.MNACH.value.substr(0,2) + document.flug.DNACH.value;
		if(document.flug.ONEWAY.value != "ONEWAY")
		{
			if(hin > weg)
			{
				if(document.flug.MNACH.disabled == false)
				{
					err = err + "- Ihr Rückflugdatum liegt VOR dem Abflugdatum!\n";
				}
			}
		}
		if(document.flug.start_text.value == "" || document.flug.VON.value == "")
		{
			err = err + "- Sie haben keinen uns bekannten Startflughafen gewählt!\n";
		}
		if(document.flug.ziel_text.value == "" || document.flug.NACH.value == "")
		{
			err = err + "- Sie haben keinen uns bekannten Zielflughafen gewählt!\n";
		}
		if(err != "")



		{
			err = "Bitte prüfen Sie die Eingabemaske auf folgende Fehler:\n" + err;
			alert(err);
		}
		else
		{
			if(document.flug.action.value == 'post')
			{
				document.flug.submit();
			}
			else
			{
				dyn_ad();
				if(typeof(bas_mh_inst) != 'undefined')
				{
//					document.getElementById('bas_mh_info').style.display = 'none';
//					document.getElementById('bas_mh_info').style.opacity = 0;
				}
				getData('flug');
			}
		}
	}

	// Reisen

	if(what == 'reisen')
		{
		var err = "";
		if(document.reisen.VON_region.value == "")
			{
			err = err + "- Sie müssen eine Startregion auswählen!\n";
			}
		if(document.reisen.NACH_region.value == "")
			{
			err = err + "- Sie müssen eine Zielregion auswählen!\n";
			}
		if(err != "")
			{
			err = "Bitte prüfen Sie die Eingabemaske auf folgende Fehler:\n" + err;
			alert(err);
			}
			else
			{
			if(document.reisen.action.value == 'post')
				{
				document.reisen.submit();
				}
				else
				{
				getData('reisen');
				}
			}
		}

	// Hotels

	if(what == 'hotels')
		{
		var err = "";
		var hin = document.hotels.MVON.value.substr(4,2) +  document.hotels.MVON.value.substr(0,2) + document.hotels.DVON.value;
		var weg = document.hotels.MNACH.value.substr(4,2) + document.hotels.MNACH.value.substr(0,2) + document.hotels.DNACH.value;
		if(hin > weg)
			{
			err = err + "- Ihr Eincheckdatum liegt VOR dem Auscheckdatum!\n";
			}
		if(document.hotels.start_text.value == "" || document.hotels.VON.value == "")
			{
			err = err + "- Sie müssen ein Stadt auswählen!\n";
			}
		if(err != "")
			{
			err = "Bitte prüfen Sie die Eingabemaske auf folgende Fehler:\n" + err;
			alert(err);
			}
			else
			{
			if(document.hotels.action.value == 'post')
				{
				document.hotels.submit();
				}
				else
				{
				getData('hotels');
				}
			}
		}

	// Mietwagen

	if(what == 'mietwagen')
		{
		var err = "";
		var hin = document.mietwagen.MVON.value.substr(4,2) +  document.mietwagen.MVON.value.substr(0,2) + document.mietwagen.DVON.value;
		var weg = document.mietwagen.MNACH.value.substr(4,2) + document.mietwagen.MNACH.value.substr(0,2) + document.mietwagen.DNACH.value;
		if(hin > weg)
			{
			err = err + "- Ihr Abholdatum liegt VOR dem Rückgabedatum!\n";
			}
		if(document.mietwagen.start_text.value == "" || document.mietwagen.VON.value == "")
			{
			err = err + "- Sie müssen ein Stadt auswählen!\n";
			}
		if(err != "")
			{
			err = "Bitte prüfen Sie die Eingabemaske auf folgende Fehler:\n" + err;
			alert(err);
			}
			else
			{
			if(document.mietwagen.action.value == 'post')
				{
				document.mietwagen.submit();
				}
				else
				{
				getData('mietwagen');
				}
			}
		}

	// Preisarchiv

	if(what == 'preisarchiv')
		{
		var err = "";
		if(document.preisarchiv.start_text.value == "" || document.preisarchiv.VON.value == "")
			{
			err = err + "- Sie haben keinen uns bekannten Startflughafen gewählt!\n";
			}
		if(document.preisarchiv.reiseziel[1].checked == 1)
			{
			if(document.preisarchiv.ziel_text.value == "" || document.preisarchiv.NACH.value == "")
				{
				err = err + "- Sie haben keinen uns bekannten Zielflughafen gewählt!\n";
				}
			}
		if(err != "")
			{
			err = "Bitte prüfen Sie die Eingabemaske auf folgende Fehler:\n" + err;
			alert(err);
			}
			else
			{
			if(document.preisarchiv.action.value == 'post')
				{
				document.preisarchiv.submit();
				}
				else
				{
				getData('preisarchiv');
				}
			}
		}
}

/********************************************************************************************/
/* DYN_AD FUNCTION																			*/
/********************************************************************************************/

function dyn_ad()
	{
	if(typeof(dyn_google_ads) != 'undefined' && dyn_google_ads == 1)
		{
		if(document.flug && document.flug.NACH && typeof(document.flug.NACH.value) != 'undefined' && typeof(document.flug.ziel_text.value) != 'undefined')
			{
			dyn_3lc  = document.flug.NACH.value;
			dyn_ziel = document.flug.ziel_text.value;
			}
			else
			{
			dyn_3lc  = '';
			dyn_ziel = '';
			}
		adHTML = '<iframe id="googleads" margin="0" width="150" height="600" src="/inc/dyn_ad.php?ziel=' + dyn_ziel + '&3lc=' + dyn_3lc + '" frameborder="0" scrolling="no"></iframe>';
		document.getElementById('sky').innerHTML = adHTML;
		}
	}

/********************************************************************************************/
/* STRING FORMATTING																		*/
/********************************************************************************************/

if( ! String.serialize )
	String.serialize = function(o)
	{
		switch(typeof(o))
		{
			case 'object':
				// null
				if( o == null )
				{
					return 'null';
				}

				// array
				else if( o.length )
				{
					var i, s = '';

					for( var i = 0; i < o.length; i++ )
						s += (s ? ', ' : '') + String.serialize(o[i]);

					return '[ ' + s + ' ]';
				}

				// object
				else
				{
					var k, s = '';

					for( k in o )
						s += (s ? ', ' : '') + k + ': ' + String.serialize(o[k]);

					return '{ ' + s + ' }';
				}

				break;

			case 'string':
				// complex string
				if( o.match(/[^a-zA-Z0-9_,.: -]/) )
					return 'decodeURIComponent("' + encodeURIComponent(o) + '")';

				// simple string
				else
					return '"' + o + '"';

				break;

			default:
				return o.toString();
		}
	}

if( ! String.format )
	String.format = function()
	{
		if (!arguments || arguments.length < 1 || !RegExp)
			return;

		var html_esc = [/&/g, '&#38;', /"/g, '&#34;', /'/g, '&#39;', /</g, '&#60;', />/g, '&#62;'];
		var quot_esc = [/"/g, '&#34;', /'/g, '&#39;'];

		function esc(s, r) {
			for( var i = 0; i < r.length; i += 2 )
				s = s.replace(r[i], r[i+1]);
			return s;
		}

		var str = arguments[0];
		var out = '';
		var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j))/;
		var a = b = [], numSubstitutions = 0, numMatches = 0;

		while( a = re.exec(str) )
		{
			var m = a[1];
			var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
			var pPrecision = a[6], pType = a[7];

			numMatches++;

			if (pType == '%')
			{
				subst = '%';
			}
			else
			{
				if (numSubstitutions++ < arguments.length)
				{
					var param = arguments[numSubstitutions];

					var pad = '';
					if (pPad && pPad.substr(0,1) == "'")
						pad = leftpart.substr(1,1);
					else if (pPad)
						pad = pPad;

					var justifyRight = true;
					if (pJustify && pJustify === "-")
						justifyRight = false;

					var minLength = -1;
					if (pMinLength)
						minLength = parseInt(pMinLength);

					var precision = -1;
					if (pPrecision && pType == 'f')
						precision = parseInt(pPrecision.substring(1));

					var subst = param;

					switch(pType)
					{
						case 'b':
							subst = (parseInt(param) || 0).toString(2);
							break;

						case 'c':
							subst = String.fromCharCode(parseInt(param) || 0);
							break;

						case 'd':
							subst = (parseInt(param) || 0);
							break;

						case 'u':
							subst = Math.abs(parseInt(param) || 0);
							break;

						case 'f':
							subst = (precision > -1)
								? Math.round((parseFloat(param) || 0.0) * Math.pow(10, precision)) / Math.pow(10, precision)
								: (parseFloat(param) || 0.0);
							break;

						case 'o':
							subst = (parseInt(param) || 0).toString(8);
							break;

						case 's':
							subst = param;
							break;

						case 'x':
							subst = ('' + (parseInt(param) || 0).toString(16)).toLowerCase();
							break;

						case 'X':
							subst = ('' + (parseInt(param) || 0).toString(16)).toUpperCase();
							break;

						case 'h':
							subst = esc(param, html_esc);
							break;

						case 'q':
							subst = esc(param, quot_esc);
							break;

						case 'j':
							subst = String.serialize(param);
							break;
					}
				}
			}

			out += leftpart + subst;
			str = str.substr(m.length);
		}

		return out + str;
	}

//popunder functions
function loadpopunder(adr1, adr2, adr3)
{
        if(adr1 != '' && document.flug.NACH.value.match(/^[A-Z]{3}$/i))
        {
		        var winfeatures = "width=800, height=510, menubar=1,location=1,resizeable=1,scrollbars=1,toolbar=1,alwaysLowered=1";
		        if(typeof(adr1) != "undefined" && adr1 != '' && document.flug.adr1.checked == 1)
                {
                        adr1 = replacePlaceholders(adr1);
                        win1 = window.open(adr1,"_blank",winfeatures);
                        win1.blur();
                        window.focus();
                }
                if(typeof(adr2) != "undefined" && adr2 != '' && document.flug.adr2.checked == 1)
                {
                        adr2 = replacePlaceholders(adr2);
                        win2 = window.open(adr2,"_blank",winfeatures);
                        win2.blur();
                        window.focus();
                }
                if(typeof(adr3) != "undefined" && adr3 != '' && document.flug.adr3.checked == 1)
                {
                        adr3 = replacePlaceholders(adr3);
                        win3 = window.open(adr3,"_blank",winfeatures);
                        win3.blur();
                        window.focus();
                }
        }
        window.focus();
}

function switchexpediatext(ow)
{
    if(typeof(document.getElementById('anb1')) != "undefined" && document.getElementById('anb1').innerHTML.match(/expedia/i))
    {
    	document.getElementById('anb1').innerHTML = (ow) ? 'Expedia.de' : 'Expedia Flug&amp;Hotel';
    	return;
    }
    if(typeof(document.getElementById('anb2')) != "undefined" && document.getElementById('anb2').innerHTML.match(/expedia/i))
    {
    	document.getElementById('anb2').innerHTML = (ow) ? 'Expedia.de' : 'Expedia Flug&amp;Hotel';
    	return;
    }
    if(typeof(document.getElementById('anb3')) != "undefined" && document.getElementById('anb3').innerHTML.match(/expedia/i))
    {
    	document.getElementById('anb3').innerHTML = (ow) ? 'Expedia.de' : 'Expedia Flug&amp;Hotel';
    }
}

function replacePlaceholders(adr)
{
        adr = adr.replace(/°VON°/g, document.flug.VON.value);
        adr = adr.replace(/°NACH°/g, document.flug.NACH.value);
        adr = adr.replace(/°TAG°/g, document.flug.DVON.value);
        adr = adr.replace(/°TAG2°/g, document.flug.DNACH.value);
        adr = adr.replace(/°MONAT°/g, document.flug.MVON.value.substr(0, 2));
        adr = adr.replace(/°MONAT2°/g, document.flug.MNACH.value.substr(0, 2));
        adr = adr.replace(/°JAHR°/g, document.flug.MVON.value.substr(4, 2));
        adr = adr.replace(/°JAHR2°/g, document.flug.MNACH.value.substr(4, 2));
        adr = adr.replace(/°ADT°/g, document.flug.ADT.value);
        adr = adr.replace(/°CHD1°/g, document.flug.CHD1.value);
        adr = adr.replace(/°CHD2°/g, document.flug.CHD2.value);
        adr = adr.replace(/°CHD3°/g, document.flug.CHD3.value);
        return adr;
}



