/**
 * Bundesländer-Objekte - Id des Bundeslandes : Name des Bundeslandes
 */
var bundeslaender = {
	 1 : "Baden-Württemberg",
	 2 : "Bayern",
	 3 : "Berlin",
	 4 : "Brandenburg",
	 5 : "Bremen",
	 6 : "Hamburg",
	 7 : "Hessen",
	 8 : "Meckl.-Vorp.",
	 9 : "Niedersachsen",
	10 : "Nordrhein-Westfalen",
	11 : "Rheinland-Pfalz",
	12 : "Saarland",
	13 : "Sachsen",
	14 : "Sachsen-Anhalt",
	15 : "Schleswig-Holstein",
	16 : "Thüringen" 
}

/**
 * Bundesländer Ferien
 * @param: Number blID - Id des Bundeslandes aus dem bundeslaender-Objekt
 * @param: String date - Startdatum der Ferien
 * @param: Number days - Anzahl der Ferientage
 */			
var bundeslaenderFerien = [			
	{ blId:  1 ,	// Baden-Württemberg	
		// keine Winterferien	: { date: "" , days: } ,
		ostern    	: { date: "31.03.2012" , days: 15} ,
		pfingsten  	: { date: "29.05.2012" , days: 13} ,
		sommer 	    : { date: "28.07.2011" , days: 45} ,
		herbst	    : { date: "31.10.2011" , days: 7} ,
		weihnachten	: { date: "23.12.2011" , days: 14} 
	},		
	{ blId:  2 ,	//Bayern	
		winter   	: { date: "20.02.2012" , days: 7} ,
		ostern      : { date: "31.03.2012" , days: 16} ,
		pfingsten 	: { date: "29.05.2012" , days: 13} ,
		sommer   	: { date: "30.07.2011" , days: 44} ,
		herbst   	: { date: "31.10.2011" , days: 7} ,
		weihnachten	: { date: "23.12.2011" , days: 14} 

	},		
	{ blId:  3 ,	//Berlin 	
		winter 	    : { date: "30.01.2012" , days: 8} ,
		ostern 	    : { date: "31.03.2012" , days: 15} ,
		pfingsten 	: { date: "18.05.2012" , days: 3} ,
		sommer 	    : { date: "30.06.2011" , days: 45} ,
		herbst 	    : { date: "02.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 12} 

	},		
	{ blId:  4 , 	//Brandenburg	
		winter    	: { date: "30.01.2012" , days: 8} ,
		ostern    	: { date: "04.04.2012" , days: 11} ,
		pfingsten 	: { date: "18.05.2012" , days: 3} ,
		sommer 	    : { date: "30.06.2011" , days: 45} ,
		herbst 	    : { date: "02.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 12} 

	},		
	{ blId:  5 , 	//Bremen	
		winter 	    : { date: "30.01.2012" , days: 3} ,
		ostern 	    : { date: "26.03.2012" , days: 15} ,
		pfingsten 	: { date: "18.05.2012" , days: 3} ,
		sommer 	    : { date: "07.07.2011" , days: 41} ,
		herbst 	    : { date: "17.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 13} 

	},		
	{ blId:  6 , 	//Hamburg	
		winter 	    : { date: "30.01.2012" , days: 2} ,
		ostern      : { date: "03.03.2012" , days: 15} ,
		pfingsten 	: { date: "28.04.2012" , days: 9} ,
		sommer 	    : { date: "30.06.2011" , days: 41} ,
		herbst 	    : { date: "02.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 15} 

	},		
	{ blId:  7 , 	//Hessen	
		// Keine Pfingstferien	
		// Keine Winterferien	
		ostern 	    : { date: "31.03.2012" , days: 15} ,
		sommer    	: { date: "25.06.2011" , days: 43} ,
		herbst 	    : { date: "10.10.2011" , days: 15} ,
		weihnachten	: { date: "21.12.2011" , days: 17} 

	},		
	{ blId:  8 , 	//Meckl.-Vorp.	
		winter 	    : { date: "06.02.2012" , days: 15} ,
		ostern 	    : { date: "31.03.2012" , days: 11} ,
		pfingsten 	: { date: "25.05.2012" , days: 4} ,
		sommer   	: { date: "02.07.2011" , days: 43} ,
		herbst 	    : { date: "17.10.2011" , days: 8} ,
		weihnachten	: { date: "23.12.2011" , days: 12} 

	}, 		
	{ blId:  9 , 	//Niedersachsen	
		winter    	: { date: "30.01.2012" , days: 3} ,
		ostern 	    : { date: "24.03.2012" , days: 17} ,
		pfingsten 	: { date: "18.05.2012" , days: 3} ,
		sommer   	: { date: "07.07.2011" , days: 41} ,
		herbst 	    : { date: "17.10.2011" , days: 15} ,
		weihnachten	: { date: "22.12.2011" , days: 13} 

	},		
	{ blId:  10 , 	//Nordrhein-Westfalen	
		// Keine Winterferien	
		
		ostern 	    : { date: "31.03.2012" , days: 15} ,
		sommer    	: { date: "23.07.2011" , days: 45} ,
		herbst   	: { date: "24.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 14} 

	}, 		
	{ blId:  11 , 	//Rheinland-Pfalz	
		// Keine Pfingstferien	
		// Keine Winterferien	
		ostern 	    : { date: "29.03.2012" , days: 15} ,
		sommer   	: { date: "25.06.2011" , days: 43} ,
		herbst   	: { date: "02.10.2011" , days: 15} ,
		weihnachten	: { date: "22.12.2011" , days: 15} 

	},		
	{ blId:  12 , 	//Saarland	
		winter    	: { date: "20.02.2012" , days: 8} ,
		ostern   	: { date: "31.03.2012" , days: 15} ,
		sommer  	: { date: "24.06.2011" , days: 44} ,
		herbst  	: { date: "02.10.2011" , days: 15} ,
		weihnachten	: { date: "18.12.2011" , days: 13} 

	},		
	{ blId:  13 , 	//Sachsen	
		winter 	    : { date: "13.02.2012" , days: 15} ,
		ostern 	    : { date: "06.04.2012" , days: 8} ,
		pfingsten 	: { date: "18.05.2012" , days: 3} ,
		sommer 	    : { date: "09.07.2011" , days: 43} ,
		herbst 	    : { date: "17.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 11} 

	},		
	{ blId:  14 , 	//Sachsen-Anhalt	
		winter 	    : { date: "04.02.2012" , days: 8} ,
		ostern    	: { date: "31.03.2012" , days: 9} ,
		pfingsten 	: { date: "19.05.2012" , days: 8} ,
		sommer   	: { date: "09.07.2011" , days: 46} ,
		herbst 	    : { date: "17.10.2011" , days: 8} ,
		weihnachten	: { date: "22.12.2011" , days: 17} 

	},		
	{ blId:  15 , 	//Schleswig-Holstein	

		ostern 	    : { date: "30.03.2012" , days: 15} ,
		pfingsten 	: { date: "18.05.2012" , days: 3} ,
		sommer    	: { date: "02.07.2011" , days: 43} ,
		herbst    	: { date: "10.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 15} 

			
	},		
	{ blId:  16 , 	//Thüringen	
		winter   	: { date: "06.01.2012" , days: 8} ,
		ostern      : { date: "31.03.2012" , days: 15} ,
		pfingsten 	: { date: "25.05.2012" , days: 5} ,
		sommer 	    : { date: "09.07.2011" , days: 43} ,
		herbst    	: { date: "17.10.2011" , days: 15} ,
		weihnachten	: { date: "23.12.2011" , days: 9} 

	}		
];			


/**
 * Brueckentage - Array aus Brueckentag-Objekten mit folgenden Attributen 
 *
 * @param: String name - Name des Brückentags / der Feiertage 
 * @param: String date - Startdatum 
 * @param: Number days - Anzahl der freien Tage (einschließlich des Startdatums) 
 * @param: Number necessaryDays - notwendige Urlaubstage 
 * @param: Array  countries - enthält die IDs der Bundesländer, "*" steht für bundesweit
 */

brueckentage = [

	{	
		name: "Neujahr 2011 (0/2)", 
		date: "01.01.2011", 
		days: 2,
		necessaryDays: 0, 
		countries : ["*"]  
	
	},{
		name: "Neujahr 2011+H3K (4/9)", 
		date: "06.01.2011", 
		days: 9,
		necessaryDays: 4, 
		countries : [1,2,3] 
	},{
		name: "Ostern (8/16)", 
		date: "16.04.2011", 
		days: 16,
		necessaryDays: 8, 
		countries : ["*"] 
	},{
		name: "Christi H. (4/9)", 
		date: "28.05.2011", 
		days: 9,
		necessaryDays: 4, 
		countries : ["*"] 
		
		},{
		name: "Pfingsten (4/9)", 
		date: "11.06.2011", 
		days: 9,
		necessaryDays: 4, 
		countries : ["*"] 
		
		},{
		name: "Dt.Einheit (4/9)", 
		date: "01.10.2011", 
		days: 9,
		necessaryDays: 4, 
		countries : ["*"] 
			
		},{
		name: "Weihnachten (4/8)", 
		date: "17.12.2011", 
		days: 8,
		necessaryDays: 4, 
		countries : ["*"] 
	
		},{
		name: "Neujahr 2012 (4/9)", 
		date: "24.12.2011", 
		days: 9,
		necessaryDays: 4, 
		countries : ["*"] 
	
	}
];


/**
 * Select-Box für Brueckentage erstellen
 *
 */
function getBrueckentageSelect(CFG){
	var anz = brueckentage.length;
	document.write('<select size="1" name="brueckentage" id="brueckentage" style="float: left;" onchange="setBrueckentageInfoText(this.selectedIndex); Bundesland_Change(this);">');
	document.write('<option selected value="">Br&uuml;ckentage ausw&auml;hlen</option>');
	for(var i=0; i < anz; i++ ){
		document.write('<option value="'+( brueckentage[i].date )+'/'+( brueckentage[i].days)+'" >'+( brueckentage[i].name )+'</option>');
	}
	document.write('</select>');
	document.write('<img style="margin-left: 0px; margin-top: 0px; padding-top: 2px; padding-left: 2px; cursor: pointer;" src="http://www.travel-it.de/images/info.gif" onclick="window.open(\'http://www.lmweb.de/scripts/lmplusi.dll?FORM=msk2/info_brueckentage.htm&CFG='+CFG+'\',\'btInfoPopup\',\'width=660,height=610,scrollbars=yes, resizeable=yes\')"; width="14" height="14"><br/>');
	document.write('<br style="margn:opx;padding:0px; display:none; clean: both;"/>');
}


function setBrueckentageInfoText(index){
	return;
	//infoMSG = brueckentage[index].necessaryDays +" Tage Urlaub ergeben "+ brueckentage[index].days + " Ferientage";	
}

function getBrueckentageInfoRows(){
	
	var anz = brueckentage.length;
	for(var i=0; i < anz; i++ ){
		//bundeslaender
		var anzBL = brueckentage[i].countries.length;
				var bl = '';
		for(var j=0; j < anzBL; j++){
			if(j == 0 && brueckentage[i].countries[0] == "*"){
				bl ='bundesweit';
				break;
			}else {
				if(j > 0) bl += ', ';
				bl += bundeslaender[brueckentage[i].countries[j]];
			}
		}
		
		var fromDateArr = brueckentage[i].date.split(".");
		var startDate = new Date(fromDateArr[2], fromDateArr[1]-1, fromDateArr[0]);
		var endDate = new Date();
		endDate.setTime(startDate.getTime() + brueckentage[i].days * 86400000);
		
		var endDateDay = ( endDate.getDate() < 10 ? "0"+endDate.getDate() : endDate.getDate()  );
		var endDateMonth = 1+endDate.getMonth();
		endDateMonth = ( endDateMonth < 10 ? "0"+endDateMonth : endDateMonth );
		
		var strStartDate = fromDateArr[0] +"."+ fromDateArr[1];
		var strEndDate = endDateDay+'.'+(endDateMonth)+'.'+(endDate.getFullYear());
		
		var name = brueckentage[i].name.split("(")[0];
				
	
		document.write('<tr><th colspan="4" height="1" valign="middle"></th></tr>');
		document.write('<tr>');
		document.write('<td id="td1">'+( strStartDate )+' - '+( strEndDate)+'</td>');
		document.write('<td>'+( name )+'</td>');
		document.write('<td id="td1">'+( brueckentage[i].necessaryDays )+' Urlaubstag'+(brueckentage[i].necessaryDays > 1 ? "e" : "")+' &rarr; '+( brueckentage[i].days )+' Ferientage</td>');
		document.write('<td>'+( bl )+'</td>');
		document.write('</tr>');
	}
	
}

/**
 * Brueckentag-Select neu aufbauen
 * @param: Number index - Index der Auswahl 
 *
 */
function rebuildBrueckentageSelect(index){
	
	if(index == 0 ) return;
	var blId = bundeslaenderFerien[(index-1)].blId;
	var anz = brueckentage.length;

	var list = document.getElementById("brueckentage");
	if(list)
	list.innerHTML ="";
	

	var elOptNew = document.createElement('option');
	elOptNew.text = "Brückentage auswählen";
	elOptNew.value = "";

	try {
		list.add(elOptNew, null); // standards compliant; doesn't work in IE
	}
	catch(ex) {
		list.add(elOptNew); // IE only
	}
	
	for(var i=0; i < anz; i++ ){
		
		var btC = brueckentage[i].countries
		var anzBl = btC.length;
		
		for(var j=0; j < anzBl; j++){
			if(btC[j] == blId || btC[j] == "*"){
				var elOptNew = document.createElement('option');
 				elOptNew.text = brueckentage[i].name;
				elOptNew.value = ( brueckentage[i].date )+'/'+( brueckentage[i].days);
			
				try {
					list.add(elOptNew, null); // standards compliant; doesn't work in IE
				}
				catch(ex) {
					list.add(elOptNew); // IE only
				}
			}	
		}	
	}
}


function getBundeslandSelect(handleBrueckentageSelect){
	var anz = 16;
	
	var ferien = GetHttpString("FER","").toLowerCase();
	if(ferien == "") ferien = false;
	
	document.write('<font size="1"><select size="1" name="xLand" id="selb" onchange="'+(handleBrueckentageSelect ? "rebuildBrueckentageSelect(this.selectedIndex);" : "" )+' Bundesland_Change(this);">');
	document.write('<option value="">Bundesland auswählen</option>');
	for(var i=0; i < anz; i++ ){
		
		if(ferien){ 
			if(bundeslaenderFerien[i][ferien] != undefined){
				document.write('<option value="'+( bundeslaenderFerien[i][ferien].date )+'/'+( bundeslaenderFerien[i][ferien].days)+'">'+( bundeslaender[bundeslaenderFerien[i].blId] )+'</option>');
			}
		}else{ 
			
			document.write('<option value="">'+( bundeslaender[bundeslaenderFerien[i].blId] )+'</option>');
		}	
	}
	document.write('</select></font>');
	
}

function Bundesland_Change(obj){
	
	var selectedValue = obj.value;
	if(selectedValue == "") return;
	storage.set("xLand", obj.selectedIndex);
	
	var values = selectedValue.split("/");
	var fromDateArr = values[0].split(".");
	
	var nrOfDays = values[1];
	
	var startDate = new Date(fromDateArr[2], fromDateArr[1]-1, fromDateArr[0]);
	var endDate = new Date();
	endDate.setTime(startDate.getTime() + nrOfDays * 86400000);
	
	var startDateDay = ( startDate.getDate() < 10 ? "0"+startDate.getDate() : startDate.getDate()  );
	var startDateMonth = 1+startDate.getMonth();
	startDateMonth = ( startDateMonth < 10 ? "0"+startDateMonth : startDateMonth );
	var endDateDay = ( endDate.getDate() < 10 ? "0"+endDate.getDate() : endDate.getDate()  );
	var endDateMonth = 1+endDate.getMonth();
	endDateMonth = ( endDateMonth < 10 ? "0"+endDateMonth : endDateMonth );
	
	var strStartDate = startDateDay+'.'+(startDateMonth)+'.'+(startDate.getFullYear())+ " - "+DatArray[startDate.getDay()];
	var strEndDate = endDateDay+'.'+(endDateMonth)+'.'+(endDate.getFullYear()) + " - "+DatArray[endDate.getDay()];
	
	//if calendar is visible -> write the dates into the textfields
	if(SHOW_CALENDAR){
		//set date and number of days
		document.F.VON_TEXT.value = strStartDate;
		document.F.BIS_TEXT.value = strEndDate;
		document.F.VON.value = GetOffsetByDate(strStartDate);
		document.F.BIS.value = GetOffsetByDate(strEndDate);
		
	//else select dates 
	}else{
		
		var startOffset = GetOffsetByDate(strStartDate);
		var endOffset = GetOffsetByDate(strEndDate);
		
		var nrElStart = document.F.VON.length;
		for(var i=0; i < nrElStart; i++){
			if(document.F.VON[i].value == startOffset){
				document.F.VON.selectedIndex = i;
				break;
			}
		}
		
		var nrElEnd = document.F.BIS.length;
		for(var i=0; i < nrElEnd; i++){
			if(document.F.BIS[i].value == endOffset){
				document.F.BIS.selectedIndex = i;
				break;
			}
		}
	}
}

var storage = new function () {
	var dataContainer = {};

	function linearize () {
		var string = "", name, value;
		for (name in dataContainer) {
			name = encodeURIComponent(name);
			value = encodeURIComponent(dataContainer[name]);
			string += name + "=" + value + "&";
		}
		if (string != "") {
			string = string.substring(0, string.length - 1);
		}
		return string;
	}

	function read () {
		if (window.name == '' || window.name.indexOf("=") == -1) {
			return;
		}
		var pairs = window.name.split("&");
		var pair, name, value;
		for (var i = 0; i < pairs.length; i++) {
			if (pairs[i] == "") {
				continue;
			}
			pair = pairs[i].split("=");
			name = decodeURIComponent(pair[0]);
			value = decodeURIComponent(pair[1]);
			dataContainer[name] = value;
		}
	}

	function write () {
		window.name = linearize();
	}

	/* --------- Public Methods --------- */

	this.set = function (name, value) {
		dataContainer[name] = value;
		write();
	};

	this.get = function (name) {
		var returnValue = dataContainer[name];
		if(typeof(returnValue) == undefined)
			return false;
		else return returnValue;
	};

	this.getAll = function () {
		return dataContainer;
	};

	this.remove = function (name) {
		if (typeof(dataContainer[name]) != undefined) {
			delete dataContainer[name];
		}
		write();
	};

	this.removeAll = function () {
		dataContainer = {};
		write();
	};

	read();
};
