function str2tstamp(str){
	return str.length==6?(new Date(2000+parseInt(str.substr(4,2),10),parseInt(str.substr(2,2),10)-1,parseInt(str.substr(0,2),10),12,0,0,0)).getTime():0;
}
function FTermine(w_von, w_bis, o_von, o_bis, p_von, p_bis, s_von, s_bis, h_von, h_bis, we_von, we_bis){
  this.Winter_von     = str2tstamp(w_von);
  this.Winter_bis     = str2tstamp(w_bis);
  this.Oster_von      = str2tstamp(o_von);
  this.Oster_bis      = str2tstamp(o_bis);
  this.Pfingst_von    = str2tstamp(p_von);
  this.Pfingst_bis    = str2tstamp(p_bis);
  this.Sommer_von     = str2tstamp(s_von);
  this.Sommer_bis     = str2tstamp(s_bis);
  this.Herbst_von     = str2tstamp(h_von);
  this.Herbst_bis     = str2tstamp(h_bis);
  this.Weihnachts_von = str2tstamp(we_von);
  this.Weihnachts_bis = str2tstamp(we_bis);
}
function FeierTagTermine(nNeujahr,nKarFr,nOsterMo,nMaiFT,nChristiHF,nPfingstMo,nTdDE,n1WTag,n2WTag){
	this.Neujahr					=str2tstamp(nNeujahr);
	this.Karfreitag					=str2tstamp(nKarFr);
	this.Ostermontag				=str2tstamp(nOsterMo);
	this.Maifeiertag				=str2tstamp(nMaiFT);
	this.Christi_Himmelfahrt		=str2tstamp(nChristiHF);
	this.Pfingstmontag				=str2tstamp(nPfingstMo);
	this.Tag_der_Deutschen_Einheit	=str2tstamp(nTdDE);
	this.Erster_Weihnachtstag		=str2tstamp(n1WTag);
	this.Zweiter_Weihnachtsfeiertag	=str2tstamp(n2WTag);
}
function SpezFeierTagTermine(nHl3K,nFronl,nMHimmel,nRefTag,nAheiligen,nBBTag){
	this.Heiligen_drei_Koenige      =str2tstamp(nHl3K);
	this.Fronleichnam				=str2tstamp(nFronl);
	this.Mariae_Himmelfahrt			=str2tstamp(nMHimmel);
	this.Reformationstag			=str2tstamp(nRefTag);
	this.Allerheiligen				=str2tstamp(nAheiligen);
	this.Buss_und_Bettag			=str2tstamp(nBBTag);
}

function SindFerien(nTStamp){
	if(g_strFerienSelect=="-1" || g_strFerienSelect=="-2")
		return false;

	var bReturn = false;
	var nDate   = new Date(nTStamp);
	var nYear	= nDate.getFullYear();

	g_strToolTip="";
	// Ferientermine
	for(var nPos=0;nPos<g_arFTypen.length;nPos++){
		if(g_oFerien[g_strFerienSelect][nYear][g_arFTypen[nPos]+"_von"]==0){
			continue;
		}else if(nTStamp>=g_oFerien[g_strFerienSelect][nYear][g_arFTypen[nPos]+"_von"] && nTStamp<=g_oFerien[g_strFerienSelect][nYear][g_arFTypen[nPos]+"_bis"]){
			g_strToolTip=g_arFTypen[nPos]+"ferien";
			bReturn=true;
			break;
		}else if(nDate.getMonth()==0){
			var nYearPrev=nYear-1;
			if(nTStamp>=g_oFerien[g_strFerienSelect][nYearPrev]["Weihnachts_von"] && nTStamp<=g_oFerien[g_strFerienSelect][nYearPrev]["Weihnachts_bis"]){
				g_strToolTip="Weihnachtsferien";
				bReturn=true;
				break;
			}
		}
	}

	// Allgemeine Feiertage
	for(var nPos=0;nPos<9;nPos++){
		if(nTStamp==g_oFeiertag[nYear][g_arFtTypen[nPos]]){
			var strFtTyp=g_arFtTypen[nPos].replace("_"," ");
			strFtTyp=strFtTyp.replace("_"," ");
			strFtTyp=strFtTyp.replace("_"," ");
			g_strToolTip=strFtTyp;
			return true;
		}else if(nTStamp<g_oFeiertag[nYear][g_arFtTypen[nPos]]){
			break;
		}
	}
	if(g_strFerienSelect=="BW" || g_strFerienSelect=="BY" || g_strFerienSelect=="BB" || g_strFerienSelect=="HE" || g_strFerienSelect=="MV" || g_strFerienSelect=="NRW" || g_strFerienSelect=="RP" || g_strFerienSelect=="SL" || g_strFerienSelect=="SN" || g_strFerienSelect=="SA"){
		// Extra
		for(var nPos=0;nPos<6;nPos++){
			if(nTStamp==g_oSpezFeiertag[g_strFerienSelect][nYear][g_arSpezFtTypen[nPos]]){
				var strFtTyp=g_arSpezFtTypen[nPos];
				if(nPos==0){
					strFtTyp=strFtTyp.replace("_"," ");
					strFtTyp=strFtTyp.replace("_"," ");
					strFtTyp=strFtTyp.replace("oe","ö");
				}else if(nPos==3){
					strFtTyp=strFtTyp.replace("ae_","ä ");
				}else if(nPos==5){
					strFtTyp=strFtTyp.replace("ss_","ß- ");
					strFtTyp=strFtTyp.replace("_"," ");
				}
				g_strToolTip=strFtTyp;
				return true;
			}else if(nTStamp==g_oSpezFeiertag[g_strFerienSelect][nYear][g_arSpezFtTypen[nPos]]){
				break;
			}
		}
	}
	return bReturn;
}

var g_strFerienSelect = '-1';
var g_arFTypen        = ["Winter","Oster","Pfingst","Sommer","Herbst","Weihnachts"];
var g_arFtTypen       = ["Neujahr","Karfreitag","Ostermontag","Maifeiertag","Christi_Himmelfahrt","Pfingstmontag","Tag_der_Deutschen_Einheit","Erster_Weihnachtstag","Zweiter_Weihnachtsfeiertag"];
var g_arSpezFtTypen   = ["Heiligen_drei_Koenige","Fronleichnam","Mariae_Himmelfahrt","Reformationstag","Allerheiligen","Buss_und_Bettag"];
var g_strToolTip      = "";
var optBundeslaender = [
  "Baden-Württemberg;BW",
  "Bayern;BY",
  "Berlin;BE",
  "Brandenburg;BB",
  "Bremen;HB",
  "Hamburg;HH",
  "Hessen;HE",
  "Mecklenburg-Vorpommern;MV",
  "Niedersachsen;NDS",
  "Nordrhein-Westfalen;NRW",
  "Rheinland-Pfalz;RP",
  "Saarland;SL",
  "Sachsen;SN",
  "Sachsen-Anhalt;SA",
  "Schleswig-Holstein;SH",
  "Thüringen;TH"
];
//                      "Winter",       "Oster",           "Pfingst",       "Sommer",         "Herbst",          "Weihnachts"
var g_oFerien={
BW:{	// Baden-Württemberg
    2011:new FTermine(0,0,'260411','300411','140611','250611','280711','100911','021111','041111','231211','050112'),
    2012:new FTermine(0,0,'020412','130412','290512','090612','260712','080912','291012','021112','241212','050113'),
    2013:new FTermine(0,0,'025313','050413','210513','010613','250713','070913','281013','301013','231313','040114')},
BY:{	// Bayern
    2011:new FTermine('070311','110311','180411','300411','140611','250611','300711','120911','311011','051111','271211','050112'),
    2012:new FTermine('200212','240212','020412','140412','290512','090612','010812','120912','291012','031112','241212','050113'),
    2013:new FTermine('110213','150213','025313','060413','210513','310513','310713','110913','281013','311013','231213','040114')},
BE:{	// Berlin
    2011:new FTermine('310111','050211','180411','300411','030611','030611','290611','120811','041011','141011','231211','030112'),
    2012:new FTermine('300112','040212','020412','140412','180512','180512','200612','030812','011012','131012','241212','040113'),
    2013:new FTermine('040213','090213','250313','060413','100513','210513','190613','020813','300913','121013','231213','030114')},
BB:{	// Brandenburg
    2011:new FTermine('310111','050211','200411','300411','030611','030611','300611','130811','041011','141011','231211','030112'),
    2012:new FTermine('300112','040212','040412','140412','180512','180512','210612','030812','011012','131012','241212','040113'),
    2013:new FTermine('040213','090213','270313','060413','100513',0,'200613','020813','300913','121013','231213','030114')},
HB:{	// Bremen
    2011:new FTermine('310111','010211','160411','300411','030611','030611','070711','170811','171011','291011','231211','040112'),
    2012:new FTermine('300112','310112','260312','110412','180512','180512','230712','310812','221012','031112','241212','050113'),
    2013:new FTermine('310113','010213','160313','020413','100513','210513','270613','070813','041013','181013','231213','030114')},
HH:{	// Hamburg
    2011:new FTermine('310111','310111','070311','180311','260411','290411','300611','100811','041011','141011','271211','060112'),
    2012:new FTermine('300112','300112','050312','160312','300412','040512','210612','010812','011012','121012','211212','040113'),
    2013:new FTermine('010213',0,'040313','1503.13','020513','100513','200613','310713','300913','111013','191213','030114')},
HE:{	// Hessen
    2011:new FTermine(0,0,'180411','300411',0,0,'270611','050811','101011','221011','211211','060112'),
    2012:new FTermine(0,0,'020412','140412',0,0,'020712','100812','151012','271012','241212','120113'),
    2013:new FTermine(0,0,'250313','060413',0,0,'080713','160813','141013','261013','231213','110114')},
MV:{	// Mecklenburg-Vorpommern       ferientage herbst-winter lagen beim letzten update noch nicht vor
    2011:new FTermine('070211','190211','160411','270411','100611','140611','040711','130811','171011','211011','221211','030112'),
    2012:new FTermine('060212','170212','020412','110412','250512','290512','230612','040812','011012','051012','211212','040113'),
    2013:new FTermine('040213','150213','290313','030413','170513','210513','220613','030813',0,0,0,0)},
NDS:{	// Niedersachsen
    2011:new FTermine('310111','010211','160411','300411','030611','030611','070711','170811','171011','291011','231211','040112'),
    2012:new FTermine('300112','310112','260312','110412','180512','180512','230712','310812','221012','031112','241212','050113'),
    2013:new FTermine('310113','010213','160313','020413','100513',0,'270613','070813','041013','181013','231213','030114')},
NRW:{	// Nordrhein-Westfalen
    2011:new FTermine(0,0,'180411','300411',0,0,'250711','060911','241011','051111','231211','060112'),
    2012:new FTermine(0,0,'020412','140412','290512','290512','090712','210812','081012','201012','211212','040113'),
    2013:new FTermine(0,0,'250313','060413','210513',0,'220713','030913','211013','021113','231213','070114')},
RP:{	// Rheinland-Pfalz
    2011:new FTermine(0,0,'180411','290411',0,0,'270611','050811','041011','141011','221211','060112'),
    2012:new FTermine(0,0,'290312','130412',0,0,'020712','100812','011012','121012','201212','040113'),
    2013:new FTermine(0,0,'200313','050413',0,0,'080713','160813','041013','181013','231213','070114')},
SL:{	// Saarland
    2011:new FTermine('070311','120311','180411','300411',0,0,'240611','060811','041011','151011','231211','040112'),
    2012:new FTermine('200212','250212','020412','140412',0,0,'020712','140812','221012','031112','241212','050113'),
    2013:new FTermine('110213','160213','025313','060413',0,0,'080713','170913','211013','021113','201213','040114')},
SN:{	// Sachsen
    2011:new FTermine('120211','260211','220411','300411','030611','030611','110711','190811','171011','281011','231211','020112'),
    2012:new FTermine('130212','250212','060412','140412','180512','180512','230712','310812','221012','021112','221212','020113'),
    2013:new FTermine('040213','150213','290313','060413','180513','220513','150713','230813','211013','011113','211213','030113')},
SA:{	// Sachsen-Anhalt
    2011:new FTermine('050211','120211','180411','270411','140611','180611','110711','240811','171011','221011','231211','070112'),
    2012:new FTermine('040212','110212','020412','070412','210512','260512','230712','050912','291012','021112','191212','040113'),
    2013:new FTermine('010213','080213','250313','300313','180513','310513','150713','28.0813','211013','251013','181213','030114')},
SH:{	// Schleswig-Holstein
    2011:new FTermine(0,0,'150411','300411','030611','030611','040711','130811','101011','221011','231211','060112'),
    2012:new FTermine(0,0,'300312','130412','180512','180512','250612','040812','041012','191012','241212','050113'),
    2013:new FTermine(0,0,'250313','090413','100513',0,'240613','030813','041013','181013','231213','060114')},
TH:{	// Thüringen
    2011:new FTermine('310111','050211','180411','300411','110611','140611','110711','190811','171011','281011','231211','010112'),
    2012:new FTermine('060212','110212','020412','130412','250512','290512','230712','310812','221012','031112','241212','050113'),
    2013:new FTermine('180213','230213','250313','060413','100513',0,'150713','230813','211013','021113','231213','040114')}
};

//     "Neujahr","Karfreitag","Ostermontag","Maifeiertag","Christi_Himmelfahrt","Pfingstmontag","Tag_der_Deutschen_Einheit","Erster_Weihnachtstag","Zweiter_Weihnachtsfeiertag"
var g_oFeiertag={
	2011:new FeierTagTermine('010111','220411','250411','010511','020611','130611','031011','251211','261211'),
	2012:new FeierTagTermine('010112','060412','090412','010512','170512','280512','031012','251212','261212'),
	2013:new FeierTagTermine('010113','290413','010413','010513','090513','200513','031013','251213','261213')
};
//"Heiligen_drei_Koenige","Fronleichnam","Mariae_Himmelfahrt","Reformationstag","Allerheiligen","Buss_und_Bettag"
var g_oSpezFeiertag={
	BW:{	// Baden-Württemberg
		2011:new SpezFeierTagTermine('060111','230611',0,0,'011111',0),
		2012:new SpezFeierTagTermine('060112','070612',0,0,'011112',0),
		2013:new SpezFeierTagTermine('060113','300513',0,0,'011113',0)},
	BY:{	// Bayern
		2011:new SpezFeierTagTermine('060111','230611','150811',0,'011111',0),
        2012:new SpezFeierTagTermine('060112','070612','150812',0,'011112',0),
        2013:new SpezFeierTagTermine('060113','300513','150813',0,'011113',0)},
	BB:{	// Brandenburg
		2011:new SpezFeierTagTermine(0,0,0,'311011',0,0),
		2012:new SpezFeierTagTermine(0,0,0,'311012',0,0),
		2013:new SpezFeierTagTermine(0,0,0,'311013',0,0)},
	HE:{	// Hessen
		2011:new SpezFeierTagTermine(0,'230611',0,0,0,0),
		2012:new SpezFeierTagTermine(0,'070612',0,0,0,0),
		2013:new SpezFeierTagTermine(0,'300513',0,0,0,0)},
	MV:{	// Mecklenburg-Vorpommern
		2011:new SpezFeierTagTermine(0,0,0,'311011',0,0),
		2012:new SpezFeierTagTermine(0,0,0,'311012',0,0),
		2013:new SpezFeierTagTermine(0,0,0,'311013',0,0)},
	NRW:{	// Nordrhein-Westfalen
		2011:new SpezFeierTagTermine(0,'230611',0,0,'011111',0),
		2012:new SpezFeierTagTermine(0,'070612',0,0,'011112',0),
		2013:new SpezFeierTagTermine(0,'300513',0,0,'011113',0)},
	RP:{	// Rheinland-Pfalz
		2011:new SpezFeierTagTermine(0,'230611',0,0,'011111',0),
		2012:new SpezFeierTagTermine(0,'070612',0,0,'011112',0),
		2013:new SpezFeierTagTermine(0,'300513',0,0,'011113',0)},
	SL:{	// Saarland
		2011:new SpezFeierTagTermine(0,'230611','150811',0,'011111',0),
		2012:new SpezFeierTagTermine(0,'070612','150812',0,'011112',0),
		2013:new SpezFeierTagTermine(0,'300513','150813',0,'011113',0)},
	SN:{	// Sachsen
		2011:new SpezFeierTagTermine(0,0,0,'311011',0,'161111'),
		2012:new SpezFeierTagTermine(0,0,0,'311012',0,'211112'),
		2013:new SpezFeierTagTermine(0,0,0,'311013',0,'201113')},
	SA:{	// Sachsen-Anhalt
		2011:new SpezFeierTagTermine('060111',0,0,'311011',0,0),
        2012:new SpezFeierTagTermine('060112',0,0,'311012',0,0),
        2013:new SpezFeierTagTermine('060113',0,0,'311013',0,0)}
};
