var KMKG = {
	onload : function() {
		KMKG.SORTTABLE.onload();
	},
	kalday_over : function(atag) {
		KMKG.kalgetEventContainer(atag).style.display = "block";
	},
	kalday_out : function(atag) {
		KMKG.kalgetEventContainer(atag).style.display = "none";
	},
	kalgetEventContainer : function(atag) {
		var res = atag.getElementsByTagName("DIV");
		for(var i=0;i<res.length;i++) {
			if(res[i].className!="day") return res[i];
		}
// 		if(res.length > 0) return res[0];
	}
}
KMKG.SORTTABLE = {
	jgv : null,

	onload : function() {
		if($('MaskedMSelect')) {
			KMKG.SORTTABLE.calFrom = new CalendarPopup('fromDateCalContainer');
			KMKG.SORTTABLE.calTo = new CalendarPopup('toDateCalContainer');

			KMKG.SORTTABLE.calFrom.setWeekStartDay(1);
			KMKG.SORTTABLE.calFrom.setDayHeaders("So","Mo","Di","Mi","Do","Fr","Sa");
			KMKG.SORTTABLE.calFrom.setMonthNames("Januar","Februar","Marz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
			KMKG.SORTTABLE.calFrom.setTodayText("Heute");
			KMKG.SORTTABLE.calFrom.setReturnFunction("KMKG.SORTTABLE.setCalFrom");

			KMKG.SORTTABLE.calTo.setWeekStartDay(1);
			KMKG.SORTTABLE.calTo.setDayHeaders("So","Mo","Di","Mi","Do","Fr","Sa");
			KMKG.SORTTABLE.calTo.setMonthNames("Januar","Februar","Marz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
			KMKG.SORTTABLE.calTo.setTodayText("Heute");
			KMKG.SORTTABLE.calTo.setReturnFunction("KMKG.SORTTABLE.setCalTo");


			Event.observe($('fromDateContainer').getElementsByTagName("A").item(0), "click", KMKG.SORTTABLE.calClickFrom);
			Event.observe($('toDateContainer').getElementsByTagName("A").item(0), "click", KMKG.SORTTABLE.calClickTo);


			KMKG.SORTTABLE.jgv = new JSGridView("MaskedMSelect", 1);
			KMKG.SORTTABLE.jgv.getDataFromCell = function (inputCell){
				return inputCell.innerHTML;
			}
			KMKG.SORTTABLE.jgv.init();

			//Paging, if printview all and no Navi
			if(location.search.indexOf("viewmode=print")>-1) {
				KMKG.SORTTABLE.jgv.pager.numPerPage = KMKG.SORTTABLE.jgv.pager.items;
			} else {
				KMKG.SORTTABLE.jgv.createPagingNavi(null, KMKG.SORTTABLE.pagingNaviPoint_click);
			}

			KMKG.SORTTABLE.jgv.sampleRow = function ( sample,  data) {
				var returnValue = document.createElement("TR");
				var cells = returnValue.getElementsByTagName("TD");
				//for(var i=0;i<5;i++) {
				for(var i=0;i<data.length;i++) {
					var td = document.createElement("TD");
					td.className = "cellNo"+i;
					td.innerHTML = data[i];

					/*
					if(data[5]!="" && i==0) {
						var detaillink = document.createElement("A");
						detaillink.href = data[5];
						detaillink.title = data[i];
						detaillink.innerHTML = data[i];
						td.appendChild(detaillink);
						returnValue.className = "pointer detail";
					} else td.innerHTML = data[i];
					*/
					returnValue.appendChild(td);
				}
				return returnValue;
			}

			//Sorting
			Event.observe(KMKG.SORTTABLE.jgv.headers[0],"click",KMKG.SORTTABLE.headers_click);
			Event.observe(KMKG.SORTTABLE.jgv.headers[2],"click",KMKG.SORTTABLE.headers_click);
			Event.observe(KMKG.SORTTABLE.jgv.headers[1],"click",KMKG.SORTTABLE.headers_click);
			Event.observe(KMKG.SORTTABLE.jgv.headers[3],"click",KMKG.SORTTABLE.headers_click);
			Event.observe(KMKG.SORTTABLE.jgv.headers[4],"click",KMKG.SORTTABLE.headers_click);

			Event.observe($('MaskedMSelectAutoSearch'),"keyup", KMKG.SORTTABLE.filter);
			Event.observe($('MaskedMSelectAutoSearch1'),"keyup", KMKG.SORTTABLE.filter);
			Event.observe($('MaskedMSelectAutoSearch2'),"keyup", KMKG.SORTTABLE.filter);
			Event.observe($('MaskedMSelectAutoSearch3'),"keyup", KMKG.SORTTABLE.filter);
			Event.observe($('fromDate'),"change", KMKG.SORTTABLE.filter);
			Event.observe($('toDate'),"change", KMKG.SORTTABLE.filter);

			KMKG.SORTTABLE.jgv.showTable();
			KMKG.SORTTABLE.jgv.tbody.parentNode.className = KMKG.SORTTABLE.jgv.tbody.parentNode.className.replace("loading","");
			document.onclick = function() {}
		}
	},
	setCal : function(y, m, d, target) {
		if(m < 10) m = "0"+m;
		if(d < 10) d = "0"+d;
		$(target).value = d+"."+m+"."+y;
		KMKG.SORTTABLE.filter();
	},
	setCalFrom : function(y, m, d) {
		KMKG.SORTTABLE.setCal(y,m,d,"fromDate");
	},
	setCalTo : function(y, m, d) {
		KMKG.SORTTABLE.setCal(y,m,d,"toDate");
	},
	calClickFrom : function(event) {
		KMKG.SORTTABLE.calFrom.select($('fromDate'),"fromDateAnch", 'dd.MM.yyyy');
	},
	calClickTo : function(event) {
		KMKG.SORTTABLE.calTo.select($('toDate'),"toDateAnch", 'dd.MM.yyyy');
	},
	filter : function() {
		var textFilter = new Array(5);
		var hasFilter = false;
		if($('MaskedMSelectAutoSearch').value != "") {
			textFilter[0] = $('MaskedMSelectAutoSearch').value;
			hasFilter = true;
		}
		if($('MaskedMSelectAutoSearch1').value != "") {
			textFilter[2] = $('MaskedMSelectAutoSearch1').value;
			hasFilter = true;
		}
		if($('MaskedMSelectAutoSearch2').value != "") {
			textFilter[3] = $('MaskedMSelectAutoSearch2').value;
			hasFilter = true;
		}
		if($('MaskedMSelectAutoSearch3').value != "") {
			textFilter[4] = $('MaskedMSelectAutoSearch3').value;
			hasFilter = true;
		}
		textFilter[1] = new Array(0,20320101);
		if($('fromDate').value != "") {
			textFilter[1][0] = KMKG.SORTTABLE.readableDateToInt($('fromDate').value);
			hasFilter = true;
		}
		if($('toDate').value != "") {
			textFilter[1][1] = KMKG.SORTTABLE.readableDateToInt($('toDate').value);
			hasFilter = true;
		}
		KMKG.SORTTABLE.jgv.dataset.isFiltered = hasFilter;
		if(KMKG.SORTTABLE.jgv.dataset.isFiltered) {
			KMKG.SORTTABLE.jgv.dataset.resultData = new Array();
			var batch = KMKG.SORTTABLE.jgv.dataset.baseData;
			for(var i=0;i<batch.length;i++) {
				var rowMatches = true;
				for(var j=0;j<batch[i].length;j++) {
					if(typeof(textFilter[j]) != "undefined") {
						if(j==1) {
							var from = KMKG.SORTTABLE.grepSpanContent(batch[i][j],"from");
							var to   = KMKG.SORTTABLE.grepSpanContent(batch[i][j],"to");
							if(to < textFilter[j][0] || from > textFilter[j][1]) {
								rowMatches = false;
								break;
							}
						} else {
							if(batch[i][j].toLowerCase().indexOf(textFilter[j].toLowerCase()) == -1) {
								rowMatches = false;
								break;
							}
						}
					}
				}
				if(rowMatches) KMKG.SORTTABLE.jgv.dataset.resultData.push(batch[i]);
			}
			KMKG.SORTTABLE.jgv.dataset.filteredData = KMKG.SORTTABLE.jgv.dataset.resultData;
		} else {
			KMKG.SORTTABLE.jgv.dataset.resultData = KMKG.SORTTABLE.jgv.dataset.baseData;
		}
		KMKG.SORTTABLE.jgv.createPagingNavi(null, KMKG.SORTTABLE.pagingNaviPoint_click);
		KMKG.SORTTABLE.jgv.setCurrentPage(1);
		KMKG.SORTTABLE.jgv.showTable();
	},
	readableDateToInt : function(input) {
		var year = input.substring(6,10);
		var month = input.substring(3,5);
		var day = input.substring(0,2);
		var together = year+month+day;
		return parseInt(together, 10);
	},
	grepSpanContent : function (input, className) {
		if(className == "from") regex = /span class="from">(.*?)<\/span/;
		else regex = /span class=\"to\">(.*?)<\/span/;
		regex.exec(input);
		return parseInt(RegExp.$1);
	},
	autoFilterCommon : function(OrderConfig) {
		if(OrderConfig.value != "") {
			KMKG.SORTTABLE.jgv.dataset.filterBy(OrderConfig);
			KMKG.SORTTABLE.jgv.pager.currentPage = 1;
		} else {
			KMKG.SORTTABLE.jgv.dataset.resetFilter();
		}
		KMKG.SORTTABLE.jgv.createPagingNavi(null, KMKG.SORTTABLE.pagingNaviPoint_click);
		KMKG.SORTTABLE.jgv.showTable();
	},
	autoFilter : function(event) {
		var value = Event.element(event).value;
		KMKG.SORTTABLE.autoFilterCommon(new DataSetFilterConfiguration(value, 0, "ANY", false));
	},
	autoFilter1 : function(event) {
		var value = Event.element(event).value;
		KMKG.SORTTABLE.autoFilterCommon(new DataSetFilterConfiguration(value, 2, "ANY", false));
	},
	autoFilter2 : function(event) {
		var value = Event.element(event).value;
		KMKG.SORTTABLE.autoFilterCommon(new DataSetFilterConfiguration(value, 3, "ANY", false));
	},
	autoFilter3 : function(event) {
		var value = Event.element(event).value;
		KMKG.SORTTABLE.autoFilterCommon(new DataSetFilterConfiguration(value, 4, "ANY", false));
	},
	pagingNaviPoint_click : function (event) {
		var page = Event.element(event).innerHTML;
		KMKG.SORTTABLE.jgv.setCurrentPage(page);
	},
	headers_click : function (event) {
		KMKG.SORTTABLE.jgv.toogleOrderDirection(Event.element(event));
	},
	headersDate_click : function (event) {
		var className = KMKG.SORTTABLE.jgv.headers[1].className;
		if(className == "") className = "desc";
		if(className == "desc") className ="asc";
		else className = "desc";
		KMKG.SORTTABLE.jgv.headers[1].className = className;
		KMKG.SORTTABLE.jgv.headers[0].className = "";
		KMKG.SORTTABLE.jgv.headers[2].className = "";


		var orderConfig = new DataSetOrderConfiguration(3, className=="asc", "num");
		KMKG.SORTTABLE.jgv.dataset.orderBy(orderConfig);
		KMKG.SORTTABLE.jgv.showTable();
	},
	autoFilter_keydown : function(event) {
		Event.element(event).className = "activ";
		Event.element(event).value = Event.element(event).value.replace("Suche nach Veranstaltung","");
	},
	gotoDetail : function(event) {
		var link = Event.element(event).id;
		location.href=link;
	}
}
function document_onLoad() {
	KMKG.onload();
}
