var $DAY = 24*60*60*1000;

function getWishDate(days){
	days++;
	var NoD = days;
	var i = 0;
	while (NoD != 0){
		var today = new Date();
		today.setDate(today.getDate()+i);
		if (!behaviors_isWeekend(today) && !behaviors_isHoliday(today)){
			NoD--;
		}
		i++;
	}
	var year = today.getYear();
	var mon = today.getMonth()+1;
	var day = today.getDate();
	if(year<1000){
		year=(""+(year+11900)).substring(1,5);
	}else{
		year=(""+(year+10000)).substring(1,5);
	}
	if(mon < 10){
		mon="0"+mon
	}
	if(day < 10){
		day="0"+day
	}
	return day+'-'+mon+'-'+year;
}

function behaviors_getHolidays(iYear) {
  var aHolidays = new Array();
  var easter = behaviors_getEasterSunday(iYear).getTime();
  // *** add variable Holidays ***
  aHolidays.push(new Date(easter));              // easter 1     / eerste paasdag
  aHolidays.push(new Date(easter + $DAY));       // easter 2     / tweede paasdag
  aHolidays.push(new Date(easter + (39*$DAY)));  // ascension    / hemelvaartsdag
  aHolidays.push(new Date(easter + (49*$DAY)));  // pentecost 1  / eerste pinksterdag
  aHolidays.push(new Date(easter + (50*$DAY)));  // pentecost 2  / tweede pinksterdag
  // *** add fixed Holidays ***
  aHolidays.push(new Date(iYear,0,1));           // newyears$DAY / nieuwjaarsdag
  aHolidays.push(new Date(iYear,3,30));          //                koninginnedag
  aHolidays.push(new Date(iYear,11,25));         // x-mas 1      / eerste kerstdag
  aHolidays.push(new Date(iYear,11,26));         // x-mas 2      / tweede kerstdag

  return aHolidays;
}

function behaviors_isHoliday(oDate) {
  var aHolidays = behaviors_getHolidays(oDate.getFullYear());
  for (var x = 0; x < aHolidays.length; x++) {
    if (behaviors_dateToString(oDate) == behaviors_dateToString(aHolidays[x])) {
      return true;
    }
  }
  return false;
}

function behaviors_isWeekend(oDate) {
  if (oDate.getDay() == 0 || oDate.getDay() == 6) {
    return true;
  }
  return false
}

function behaviors_dateToString(oDate, sFormat) {
  if (null != oDate) {
    if (!sFormat) {
      sFormat = 'dd-mm-yyyy';
    }
    var sDate = sFormat.toString();
    sDate = sDate.replace('dd',String(oDate.getDate() < 10? '0': '') + oDate.getDate());
    sDate = sDate.replace('d', oDate.getDate());
    sDate = sDate.replace('mm', ((oDate.getMonth()+1) < 10? '0': '') + (oDate.getMonth()+1));
    sDate = sDate.replace('m', oDate.getMonth()+1);
    sDate = sDate.replace('yyyy', oDate.getFullYear());
    sDate = sDate.replace('yy', oDate.getFullYear().toString().substr(2));
    return sDate;
  }
  return null;
}

function behaviors_getEasterSunday(iYear) {
  var pfm = new Date(iYear, 2, 21).getTime();    // Paschal Full Moon
  // -- all following variables are integers --
  var c = Math.ceil(iYear/100);                  // Century
  var gn = (iYear % 19) + 1;                     // Golden Number
  var je = (11 * (gn-1)) % 30 ;                  // Julian Epact
  var se = Math.floor((3 * c) / 4);              // Solar Equation
  var le = Math.floor(((8 * c + 5)) / 25);       // Lunar Equation
  var ge = je - se + le + 8;                     // Gregorian Epact
  if (ge < 1) ge += 30;
  else if (ge > 30) ge -= 30;
  if (ge <= 23) pfm += ((23 - ge) * $DAY);
  else pfm += ((23 + (30 - ge)) * $DAY);
  // adjust Paschal Full Moon
  if (ge == 24 || (ge == 25 && gn > 11)) pfm -= $DAY;
  return new Date(pfm + ((7 - new Date(pfm).getDay()) * $DAY)); // First following Sunday
}
