var transparentLayer = {
	pageWidth: false,
	pageheight: false,
	windowWidth: false,
	windowHeight: false,

	init: function () {
		scrollWidth = document.getElementsByTagName('body')[0].offsetWidth;
		scrollHeight = document.getElementsByTagName('body')[0].offsetHeight;
		documentWidth = document.getElementsByTagName('body')[0].scrollLeft;
		documentHeight = document.getElementsByTagName('body')[0].scrollTop;
		if(window.innerWidth) {
			this.windowWidth =  window.innerWidth;
			this.windowHeight = window.innerHeight;
		}
		else {
			this.windowWidth =  document.body.clientWidth;
			this.windowHeight = document.body.clientHeight;
		}
		if(document.documentElement.scrollHeight) {
			this.pageHeight = document.documentElement.scrollHeight;
		}
		else if(document.body.scrollHeight) {
			this.pageHeight = document.body.scrollHeight;
		}
		this.pageHeight = $(document).height();
		//this.pageWidth = '100%'; //document.getElementsByTagName('body')[0].offsetWidth - sL;
		//this.pageHeight = document.getElementsByTagName('body')[0].offsetHeight - sT;
	},

	open: function () {
		if(document.getElementById('transparentLayer')) {
			this.init();
			document.getElementById('transparentLayer').style.width = '100%'; //this.pageWidth + 'px';
			document.getElementById('transparentLayer').style.height = this.pageHeight + 'px';
			document.getElementById('transparentLayer').style.zIndex = '19999';
			document.getElementById('transparentLayer').style.visibility = 'visible';
		}
	},

	close: function () {
		if(document.getElementById('transparentLayer')) {
			document.getElementById('transparentLayer').style.visibility = 'hidden';
		}
	}

};

var error = {

	open: function (text) {
		if(self != top)
		{
				var html = "<div id='errorPopup' style='text-align:center;z-index:20000;padding:10px;width:200px;background-color:#ffffff;position:absolute;top:30%;left:113px;margin-left:-100px;border:5px solid #fe4a4a;font-weight:normal;color:#000000;'>"
					+ "<div style='float:left;width:160px;text-align:left;'>"
					+ "<img src='/nec2/static/images/structure/icons/ico_error_info.gif' alt='' style='margin:2px 0 0 10px;'/>"
					+ "</div>"
					+ "<div style='float:left;'>"
					+ "<a href='javascript:error.close();' title='schlie&szlig;en'><img src='/nec2/static/images/structure/buttons/bt_close_error.gif' alt='schlie&szlig;en' style='margin-left:18px;' /></a>"
					+ "</div>"
					+ "<div style='float:left;width:200px;clear:both;'>"
					+ "<p style='text-align:center;padding:0;margin:0;text-align:left;'>"
					+ text
					+ "</p>"
					+ "</div>"
					+ "</div>";
		}else
		{

				$('body').append('<div id="transparentLayer">&nbsp;</div>');
				transparentLayer.open();
				//var html = "<div id='errorPopup' style='z-index:20000;padding:10px;width:300px;background-color:#ededed;position:absolute;top:265px;left:665px;border:3px solid #fe4a4a;font-weight:normal;color:#000000;'><p style='text-align:center;margin-bottom:15px;'>" + text + "</p><span><a href='javascript:error.close();'>schlie?en</a></span></div>";


				var html = "<div id='errorPopup' style='text-align:center;z-index:20000;padding:10px;width:400px;background-color:#ffffff;position:absolute;top:30%;left:50%;margin-left:-200px;border:5px solid #fe4a4a;font-weight:normal;color:#000000;'>"
					+ "<div style='float:left;width:100px;text-align:left;'>"
					+ "<img src='/nec2/static/images/structure/icons/ico_error_info.gif' alt='' style='margin:2px 0 0 10px;'/>"
					+ "</div>"
					+ "<div style='float:left;width:260px;'>"
					+ "<p style='text-align:center;padding:0;margin:0;text-align:left;'>"
					+ text
					+ "</p>"
					+ "</div>"
					+ "<div style='float:left;'>"
					+ "<a href='javascript:error.close();' title='schlie&szlig;en'><img src='/nec2/static/images/structure/buttons/bt_close_error.gif' alt='schlie&szlig;en' style='margin-left:18px;' /></a>"
					+ "</div>"
					+ "</div>";
		}
		$('body').append(html);
	},

	close: function() {
		$('#errorPopup').remove();
		$('#transparentLayer').remove();
	}

};

var ibeTypes = ['pauschal', 'lastminute', 'hotel', 'city', 'city_standalone'];

var dateConfig = new Array();

dateConfig['hotel'] = new Array();
dateConfig['hotel']['startDate'] = 56;
dateConfig['hotel']['endDate'] = 77;

dateConfig['lastminute'] = new Array();
dateConfig['lastminute']['startDate'] = 3;
dateConfig['lastminute']['endDate'] = 24;

dateConfig['pauschal'] = new Array();
dateConfig['pauschal']['startDate'] = 56;
//dateConfig['pauschal']['startDate'] = 56;
dateConfig['pauschal']['endDate'] = 77;

dateConfig['city'] = new Array();
dateConfig['city']['startDate'] = 56;
dateConfig['city']['endDate'] = 77;

dateConfig['city_standalone'] = new Array();
dateConfig['city_standalone']['startDate'] = 56;
dateConfig['city_standalone']['endDate'] = 77;


var JSESSIONID = '';

var deepLink = {
	exists: function() {
		if($(document).getUrlParam("ibeDeepLink") == 'true') {
            return true;
		}
		else {
			return false;
		}
	},
	init: function(runAsStandalone) {

		var url = location.href;
		var regexp = /jsessionid=([\w\.]+)/;
		var match = regexp.exec(url);




		if(match !== null) {
			if(match[1]) {
				JSESSIONID = ";jsessionid=" + match[1];
			}
		}

        //if(inIBE) {
        //    ibe.changeContent(inIBE, true);
        //}
        if($(document).getUrlParam("ibe")) {
			ibe.changeContent($(document).getUrlParam("ibe"), true, runAsStandalone);
		}
	}
}

var ibe = {


	pregMatchDate: function(string) {
		var expression = /^\d{2}\.\d{2}\.\d{4}$/;
		var match = expression.test(string);
		if (match == true) {
			exp = value.split('.');
			objDate = new Date(exp[2], exp[1]-1, exp[0], 0, 0, 0);
			return objDate;
		}
		return false;
	},


	observeDateInputStartDate: function (obj) {
		value = $('#startDate').attr('value');
		objDate = this.pregMatchDate(value);
		if (objDate) {
			$('.date-pick-start').datePicker().dpSetSelected(objDate.asString());
		}
	},


	observeDateInputEndDate: function (obj) {
		value = $('#endDate').attr('value');
		objDate = this.pregMatchDate(value);
		if (objDate) {
			$('.date-pick-end').datePicker().dpSetSelected(objDate.asString());
		}
	},

	observeDateInput: function(obj) {

		if(obj.value && SearchMaskType) {
			//alert('observeDateInput | ' +  SearchMaskType);
			var duration = 21;
			var expression = /^\d{2}\.\d{2}\.\d{4}$/;
			var match = expression.test(obj.value);
			if (match == true) {
				exp = obj.value.split('.');
				dateObjStart = new Date(exp[2], exp[1]-1, exp[0], 0, 0, 0);

				var dateObjDuraion = new Date((dateObjStart.getTime() + (60 * 60 * 24 * 1000 * duration)));
				$('#endDate').attr('value', this.formatDate(dateObjDuraion));
				$('.date-pick-end').datePicker().dpSetSelected(dateObjDuraion.asString());

			}
		}
	},

	setSelectOption: function(param, id) {
		value = $(document).getUrlParam(param);
		if(value) {
			$('#' + id).find('option').removeAttr('selected');
			$('#' + id).find('option[value=' + value + ']').attr('selected', 'selected');
		}
	},

	setAirportFromDeepLink: function() {
		if(this.isInteger($(document).getUrlParam('airport'))) {
			this.setSelectOption('airport', 'ibe_airports');
		}
	},

	setRegionFromDeepLink: function() {
		if(this.isInteger($(document).getUrlParam('region'))) {
			this.setSelectOption('region', 'ibe_region');
		}
	},

	setCountryFromDeepLink: function() {
		if(this.isInteger($(document).getUrlParam('country'))) {
            	this.setSelectOption('country', 'ibe_country');
            	//this.getRegions($(document).getUrlParam("ibe"));
		}
	},


	setDurationFromDeepLink: function() {
		param = $(document).getUrlParam('duration');
		if(this.isInteger(param) || this.isIntegerUnderscoreInteger(param)) {
			this.setSelectOption('duration', 'duration');
		}
	},

	setChildsFromDeepLink: function() {
		childList = new Array('firstChild', 'secondChild', 'thirdChild');
		for(var i = 0; i < childList.length; i++) {
			if(this.isInteger($(document).getUrlParam(childList[i]))) {
				this.setSelectOption(childList[i], childList[i]);
			}
		}
	},

	setTravelerFromDeepLink: function() {
		if(this.isInteger($(document).getUrlParam('traveler'))) {
			this.setSelectOption('traveler', 'adults');
		}
	},

	isIntegerUnderscoreInteger: function(string) {
		var expresion = /^\d+_\d+$/;
		var match = expresion.test(string);
		if (match == true) {;
			return true;
		}
		return false;
	},

	isInteger: function(integer) {
		var expresion = /^\d+$/;
		var match = expresion.test(integer);
		if (match == true) {;
			return true;
		}
		return false;
	},


	setDatesFromDeepLink: function(key, callDeepLink) {
		if(callDeepLink) {
			if($(document).getUrlParam(key)) {
				formatDate = $(document).getUrlParam(key);
				var expresion = /^\d{2}\.\d{2}\.\d{4}$/;
				var match = expresion.test(formatDate);
				if (match == true) {;
					exp = formatDate.split('.');
					dateObj = new Date(exp[2], exp[1]-1, exp[0], 0, 0, 0);
					return dateObj;
				}
			}
		}
		return false;
	},

	setDatePicker: function(type, callDeepLink) {
		dateObj = this.setDatesFromDeepLink('startDate', callDeepLink);
		$('.date-pick-start').datePicker().dpSetSelected(this.getDate(dateConfig[type]['startDate'], dateObj).asString());
		dateObj = this.setDatesFromDeepLink('endDate', callDeepLink);
		$('.date-pick-end').datePicker().dpSetSelected(this.getDate(dateConfig[type]['endDate'], dateObj).asString());
	},

	setDate: function(type, callDeepLink) {
		dateObj = this.setDatesFromDeepLink('startDate', callDeepLink);
		$('#startDate').attr('value', this.formatDate(this.getDate(dateConfig[type]['startDate'], dateObj)));
		dateObj = this.setDatesFromDeepLink('endDate', callDeepLink);
		$('#endDate').attr('value', this.formatDate(this.getDate(dateConfig[type]['endDate'], dateObj)));
	},

	pad: function (string) {
		return string.toString().length === 1 ? '0' + string : string;
	},

	getDate: function(addDay, dateObj) {
		addDay = addDay ? addDay : 0;
		if(!dateObj) {
			var now = new Date();
        }
		else {
			var now = dateObj;
			addDay = 0;
        }
		var date = new Date((now.getTime() + (60 * 60 * 24 * 1000 * addDay)));
		return date;
	},

	formatDate: function(obj) {
		day = obj.getDate();
		month = obj.getMonth()+1;
		year = obj.getFullYear();
		return this.pad(day) + '.' + this.pad(month) + '.' + year;
	},

	setActive: function(area) {

        if(document.getElementById('hotelLabel') != null){
            document.getElementById('hotelLabel').className = '';
        }
        if(document.getElementById('lastminuteLabel') != null){
            document.getElementById('lastminuteLabel').className = '';
        }
        if(document.getElementById('pauschalLabel') != null){
            document.getElementById('pauschalLabel').className = '';
        }
        if(document.getElementById(area + 'Label') != null){
            document.getElementById(area + 'Label').className = 'active';
        }

        $('body').find('input').removeAttr('checked');
        switch(area) {
            case 'pauschal':
                $('#Package').attr('checked', 'checked');
                break;
            case 'lastminute':
                $('#LM').attr('checked', 'checked');
                break;
            case 'hotel':
                $('#Hotel').attr('checked', 'checked');
                break;
            case 'city':
                $('#City').attr('checked', 'checked');
                break;
            case 'city_standalone':
                $('#City').attr('checked', 'checked');
                break;

        }
        return;

    },

	changeContent: function(type, callDeepLink, runAsStandalone, intcall, initDefault) {

		initDefault = initDefault ? true : false;

		if($.inArray(type, ibeTypes) === -1) {
	    	return false;
	    }
		
		
		
		if($("#csContainer").length>0 && initDefault) {
			ibe.setDatePicker(type, callDeepLink);
			ibe.setDate(type, callDeepLink);
			if(callDeepLink) {
				ibe.setTravelerFromDeepLink();
				ibe.setChildsFromDeepLink();
				ibe.setDurationFromDeepLink();
			}	
			this.getCountries(type, callDeepLink);
			this.setActive(type);
		}
		else {
	        runAsStandalone = runAsStandalone ? runAsStandalone: false;
	        callDeepLink = callDeepLink ? callDeepLink : false;
	        url = "/nec2/includeSearchmaskType.do" + JSESSIONID + "?ibeType=" + type + "&runAsStandalone=" + runAsStandalone + "&intcall=" + intcall;
			$.ajax({
			   type: "GET",
			   url: url,
			   dataType: "html",
			   success: function(html){
				   	//alert(html);
					$("#csContainer").html(html);
					ibe.setDatePicker(type, callDeepLink);
					ibe.setDate(type, callDeepLink);
					if(callDeepLink) {
						ibe.setTravelerFromDeepLink();
						ibe.setChildsFromDeepLink();
						ibe.setDurationFromDeepLink();
					}
			   }
			});
			this.getCountries(type, callDeepLink);
			this.setActive(type);
		}
	},


	// Funktion um die passenden Regionen zu einem bestimmten Land zu bekommen
	//Ajax Request vorbereiten und abschicken
	getRegions: function(type, all, callDeepLink) {
		callDeepLink = callDeepLink ? callDeepLink : false;
		//Wenn alle noch kein Land ausgew?hlt -> -1 als ?bergabeparameter
		if(all)
			country = -1;
		else
			var country = $('#ibe_country').val();
		var values = "?ibeType=" + type + "&countryId=" + country;
		url = "/nec2/getRegions.do" + JSESSIONID + values;
		$.ajax({
		   type: "GET",
		   url: url,
		   dataType: "html",
		   success: function(html){
				//$('#ibe_region').empty();
				//$('#ibe_region').append(html); //.each(function(){
				   //ibe.setRegionFromDeepLink();
				//});
				$('#ibe_region').replaceWith('<select class="formElementBig" id="ibe_region" name="regionId">' + html + "</select>").each(function(){
				   ibe.setRegionFromDeepLink();

                    if(typeof reddotRegionId !== 'undefined') {
                        selectObj = $('#ibe_region');
                        formName = $(selectObj).parents('form').attr('name');
                        selectName = $(selectObj).attr('name');
                        $(selectObj).find('option').each(function(i){
                            regionName = $(this).text();
                            if((reddotRegionId-1) == i) {
                                document.forms[formName].elements[selectName].options[i].selected = true;
                            }

                        });
                    }
                });
                if(callDeepLink) {
                    ibe.getAirports(callDeepLink);
                }
            }
        });
    },

	getCountries: function(type, callDeepLink) {
		callDeepLink = callDeepLink ? callDeepLink : false;
		var values = "?ibeType=" + type;
		url = "/nec2/getCountries.do" + JSESSIONID + values;
		$.ajax({
			type: "GET",
			url: url,
			dataType: "html",
			success: function(html){
				$('#ibe_country').html(html).each(function(){
				    ibe.setCountryFromDeepLink();
					ibe.getRegions(type, callDeepLink);
				});
				if(callDeepLink) {
					//setTimeout("ibe.setCountryFromDeepLink()",300);
				}
			}
		});
	},

	getAirports: function(callDeepLink) {
		callDeepLink = callDeepLink ? callDeepLink : false;
		//url = "http://nec.kbroenstrup.dev.nil/ajax/getAirports.php";
		url = "/nec2/getAirports.do" + JSESSIONID;
		$.ajax({
		   type: "GET",
		   url: url,
		   dataType: "html",
		   success: function(html){
				$('#ibe_airports').html('').append(html);
				if(callDeepLink) {
					ibe.setAirportFromDeepLink();
				}
		   }
		});

	}
};


  /*
* $Id:
*/
/* xmlibe/date_utils_tt.js*/

/*
doStartDateTT()
doEndDateTT()
checkJourneyDateBoundaryValue() (formerly known as dateDiff())
changeDate()
isInt()
checkDate()
getDays()
leapYear()
getFormDate()
*/
function doStartDateTT(formName,theStartDate,theEndDate, obj) {
	ibe.observeDateInput(obj);
	if(checkDate(formName,theStartDate)) {
		checkJourneyDateBoundaryValues(formName,theStartDate,theEndDate);
	}
}

function doEndDateTT(formName,theStartDate,theEndDate) {
  if(checkDate(formName,theEndDate)) {
  	checkJourneyDateBoundaryValues(formName,theStartDate,theEndDate);
  }
}


function checkJourneyDateBoundaryValues(formName,theStartDate,theEndDate) {

    var start = getFormDate(formName,theStartDate,'de');
    if (null == start) {
    	error.open(unescape("Bitte das Anreisedatum pr%FCfen%21"));
    	return false;
    }
    var end = getFormDate(formName,theEndDate,'de');
    if (null == end) {
    	error.open(unescape("Bitte das Abreisedatum pr%FCfen%21"));
    	return false;
    }

	var today = new Date();
	var now = Date.UTC( today.getFullYear(),today.getMonth(),today.getDate());
	var diffStart = (start - now) / (1000 * 60 * 60 * 24);
	var diffEnd = (end - now) / (1000 * 60 * 60 * 24);

	diffStart = Math.ceil(diffStart);
	diffEnd = Math.ceil(diffEnd);


  if (diffStart < min)
  {
    error.open("Verehrter Kunde,<br />damit wir Ihnen rechtzeitig vor Reisebeginn Ihre Tickets\n"+
    unescape("zustellen k%F6nnen%2C muss der Reisetermin Ihrer Online-Buchung%0Amindestens ") +
    min + " Tage in der Zukunft liegen.\n "+
	unescape(" F%FCr kurzfristigere Buchungen kontaktieren Sie bitte unser%0ACall Center unter der Rufnummer 01803 - 90 10 45<br />(9 Cent/Min. - dt. Festnetz, Mobilfunk max. 42 Cent/Min).%0A%0A")+
	unescape("Vielen Dank f%FCr Ihr Verst%E4ndnis%21<br /><br />Ihre Eingabe wurde automatisch korrigiert"));
    /*alert("1a: " + diffStart + " / " + diffEnd + " - " + (min - diffStart));*/
    changeDate(formName,theStartDate,min-diffStart);
    diffStart = diffStart + (min - diffStart);
    return false;
  }

  else if (diffStart > max)
  {
	error.open(unescape("Das Startdatum darf h%F6chstens ") + max + " Tage in der Zukunft liegen!<br /><br />Ihre Eingabe wurde automatisch korrigiert");
    /*alert("1b: " + diffStart + " / " + diffEnd + " - " + (max - diffStart));*/
    changeDate(formName,theStartDate,max-diffStart);
    diffStart = max;
    ibe.observeDateInputStartDate();
    return false;
  }

  else if (diffEnd < (min + minDur))
  {

	error.open(unescape("Das Enddatum mu%DF mindestens ") + (min + minDur) + " Tage in der Zukunft liegen!<br /><br />Ihre Eingabe wurde automatisch korrigiert");
    /*alert("2a: " + diffStart + " / " + diffEnd + " - " + ((min - diffEnd) + minDur));*/
    changeDate(formName,theEndDate,(min-diffEnd)+minDur);
    diffEnd = diffEnd + ((min - diffEnd) + minDur);

    ibe.observeDateInputEndDate();
    return false;
  }

  else if (diffEnd > (max + 4))
  {
	var temp = max+4;
    error.open(unescape("Das Enddatum darf h%F6chstens ") + temp  + " Tage in der Zukunft liegen!<br /><br />Ihre Eingabe wurde automatisch korrigiert");
    /*alert("2b: " + diffStart + " / " + diffEnd + " - " + ((max+4) - diffEnd));*/
    changeDate(formName,theEndDate,(max+4)-diffEnd);
    diffEnd = max;

    ibe.observeDateInputEndDate();
    return false;
  }

  else if (diffEnd < (diffStart + minDur))
  {
    error.open(unescape("Das Enddatum mu%DF mindestens ") + minDur + " Tage nach dem Startdatum liegen!<br /><br />Ihre Eingabe wurde automatisch korrigiert");
    /*alert("3a: " + diffStart + " / " + diffEnd + " - " + ((diffStart - diffEnd) + minDur));*/
    changeDate(formName,theEndDate,(diffStart-diffEnd)+minDur);
    diffEnd = diffEnd + (diffStart - diffEnd) + minDur;
    ibe.observeDateInputEndDate();
    return false;
  }
  else {

	  if($('body').find('#errorPopup').html()) {
		  return false
	  }
	  else {
		 return true;
	  }
	}
}

function changeDate(theForm, theDate, newDuration) {

	var errorFlag = false;
	var dString = document.forms[theForm].elements[theDate].value;
	var dElems = dString.split(".");
	if(dElems.length == 3) {
	var days = dElems[0];
		if (days.charAt(0) == "0") {
			days=days.substr(1,1);
		}
		var month = dElems[1];
		if (month.charAt(0) == "0") {
			month=month.substr(1,1);
		}
		var year = dElems[2];
		if (!isInt(days) || !isInt(month) || !isInt(year) || (year.length != 4)) {
			errorFlag = true;
		}
		else {
			month = parseInt(month);
			year = parseInt(year);
			days = parseInt(days) + parseInt(newDuration);
			year = parseInt(year);
			while (days > getDays(month-1,year)) {
				days -= getDays(month-1,year);
				month++;
				if (month > 12)
				{
				year++;
				month=1;
				}
			}
			while (days < 1) {
				xmonth = month - 2;
				if (xmonth == -1)
					xmonth = 11;
				days += getDays(xmonth,year);
				month--;
				if (month == 0) {
					month = 12;
					year--;
				}
			}
			if (days < 10) days = "0" + days;
			if (month < 10) month = "0" + month;
		}
	}
	else {
		errorFlag = true;
	}
	if (errorFlag) {
		error.open("Bitte alle Datumsangaben in dieser Form eingeben: 01.09.2008");
	}
	else {
		document.forms[theForm].elements[theDate].value = days + "." + month + "." + year;
	}
}



/* iterate through string. Upon first non-digit, return false */
function isInt(string) {

	for (var i=0; i<string.length; i++) {
		if (!(parseInt(string.charAt(i)) > 0) && (string.charAt(i) != '0')) return false;
	}
	return true;
}

function parseIntString(string) {
	var i = 0;
	while(string.charAt(i) == '0') i++;
	if (i == string.length) return 0;
	return parseInt(string.substring(i,string.length));
}

function checkDate(theForm,theDate) {

	return checkDate(theForm,theDate,null);
}

function checkDate(theForm,theDate,theDateLabel) {
	//alert("checkDate");
	var errorFlag = false;
	var fixed = false;
	var ds = document.forms[theForm].elements[theDate].value;
	if (ds.length != 10) {
		errorFlag = true;
	}
	else if (ds.charAt(2) != '.' || ds.charAt(5) != '.') {
		errorFlag = true;
	}
	else {
		var day = ds.substr(0,2);
		var month = ds.substr(3,2);
		var year = ds.substr(6,4);
		if (!isInt(day) || !isInt(month) || !isInt(year)) {
			errorFlag = true;
		}
		else {
			var intMonth = parseIntString(month);
			if (intMonth > 12) {
				fixed = true;
				month = 12;
			}
			if (intMonth < 1) {
				fixed = true;
				month = "01";
			}
			if (parseIntString(day) < 1) {
				fixed = true;
				day = 1;
			}
			if (getDays((intMonth-1), year) < parseIntString(day)) {
				fixed = true;
				day = getDays((intMonth-1), year);
			}
		}
	}
	if (errorFlag) {
		if (null == theDateLabel) {
			error.open("Bitte alle Datumsangaben in dieser Form eingeben: 01.09.2008");
		}
		else {
			error.open(unescape("Bitte Datumsangabe in dieser Form: 01.09.2008 (" + theDateLabel + ")"));
		}
	}
	if (fixed) {
		document.forms[theForm].elements[theDate].value = (day + "." + month + "." + year);
		error.open(unescape("Datum wurde ge%E4ndert"));
	}

	return !errorFlag;
}
function getDays(month, year) {
	var ar = new Array(12);
	ar[0] = 31;
	ar[1] = (leapYear(year)) ? 29 : 28;
	ar[2] = 31;
	ar[3] = 30;
	ar[4] = 31;
	ar[5] = 30;
	ar[6] = 31;
	ar[7] = 31;
	ar[8] = 30;
	ar[9] = 31;
	ar[10] = 30;
	ar[11] = 31;
	return ar[month];
}

function leapYear(year) {
	if ((year % 400 ==0) || ((year %100 != 0) && (year % 4 == 0))) {
		return true;
	}
	return false;
}

function popupCal() {
	var pLeft = (screen.width-200)/2;
	var pTop = (screen.height-180)/2;
	var calwin = window.open('','cal','width=146,height=150,left='+pLeft+',top='+pTop+',resizable=0,scrollbars=0,toolbar=0,menubar=0,status=0');
	if (window.focus) {calwin.focus();}
}

function getFormDate(theForm, theDate, pLocale) {
	/* will try to construct a date from given field in given form
	   if anything at all goes wrong, it will return null */

	if (pLocale != 'de') return null;
	var ds = document.forms[theForm].elements[theDate].value;
	var error = false;
	var retDate = null;
  	if (ds.length != 10) {
	    error = true;
	}
	else if (ds.charAt(2) != '.' || ds.charAt(5) != '.') {
    	error = true;
  	}
  	else {
    	var day = ds.substr(0,2);
    	var month = ds.substr(3,2);
    	var year = ds.substr(6,4);

        if (!isInt(day) || !isInt(month) || !isInt(year) || (year.length != 4)) {
    		error = true;
        }
        else {
        	month = parseIntString(month)-1;
    		year = parseIntString(year);
    		day = parseIntString(day);
    		retDate = new Date(year, month, day);
    	}
    }
    if (error) {
    	return null;
    }
    else {
    	return retDate;
    }
}


  function submitMe() {

      /*
    document.getElementById('personen').value = 25;
    for (var i = 1; i < document.getElementById('adults').value; i++) {
      document.getElementById('personen').value = document.getElementById('personen').value + ";" + "25";
    }
    if (document.getElementById('firstChild').value > 0) {
      document.getElementById('personen').value = document.getElementById('personen').value + ";" + document.getElementById('firstChild').value;
    }
    if (document.getElementById('secondChild').value > 0) {
      document.getElementById('personen').value = document.getElementById('personen').value + ";" + document.getElementById('secondChild').value;
    }
    if (document.getElementById('thirdChild').value > 0) {
      document.getElementById('personen').value = document.getElementById('personen').value + ";" + document.getElementById('thirdChild').value;
    }


    document.getElementById('dauer').value = document.getElementById('duration').value;

    if (document.getElementById('ibe_region').value == -1) {
      document.getElementById('detail').value = "zielgebiet";
      document.getElementById('flugdauer').value = document.getElementById('ibe_country').value;
    } else {
      document.getElementById('detail').value = "hotel";
      document.getElementById('topRegion').value = document.getElementById('ibe_region').value;
      document.getElementById('flugdauer').value = document.getElementById('ibe_country').value;
    }
    */

    //document.forms['lastMinuteForm'].action = 'http://www.lastminute.neckermann-reisen.de/booking/thomascook/index.php?KID=';
      document.forms['lastMinuteForm'].action = '/nec2/search.do';
    if (top != self) {
      document.forms['lastMinuteForm'].target = '_parent';
    }
    if(checkJourneyDateBoundaryValues('lastMinuteForm','startDate','endDate'))
    document.forms['lastMinuteForm'].submit();
  }
