/*var zoekBtn, zoekBtnColor;*/
function getGridName(grid){
	if (typeof(grid.globalBox) != "undefined"){
		return grid.globalBox.id;
	}else{
		return grid.entBox.id;
	}
}

function setRowCount(grid, count, grid){
	// deze functie gaat af na binnenkomst van de resultaten
	var gridName = getGridName(grid);
	document.getElementById(gridName+"_aantal").innerHTML = grid.getRowsNum();
	document.getElementById(gridName+"_selected").innerHTML = '0';
}

function beforeLoadData(index, grid, direction) {
	/*if (zoekBtn) {
		zoekBtnColor = zoekBtn.parentNode.style.backgroundColor;
		zoekBtn.parentNode.style.backgroundColor = 'red';
	}*/
}

function setRowSelectedCount(IDs, grid){
	if (IDs){
		var selRows = IDs.split(",").length
	}else{
		var selRows = 0;
	}
	var gridName = getGridName(grid);
	document.getElementById(gridName+"_selected").innerHTML = selRows;
}

function activateEnterKey(formId, zoekFunctie) {
	$$('#'+formId+' input').keydown(function(event){
	  if (event.keyCode == 13) {
		var form = $$(this).parents('form').get(0);
		var zoekButton = $$('#'+form.id+' .zoek')[0];
		zoekButton.click();
	  }
	});
	$$('#'+formId+' select').keydown(function(event){
	  if (event.keyCode == 13) {
		var form = $$(this).parents('form').get(0);
		var zoekButton = $$('#'+form.id+' .zoek')[0];
		zoekButton.click();
	  }
	});
}

function getExpandedRow(grid){
	var expandedRows = new Array();
	var rows = grid.rowsBuffer;
	for (var i=0; i<rows.length; i++){
		if (rows[i]._expanded){
			expandedRows = rows[i];
		}
	}
	return expandedRows;
}

function getExpanded(grid){
	//pakt de geselecteerde of als de geselecteerde niet open is dan het eerste subgrid

	//eerst geselcteerde row checken
	if (grid.row != null && (grid.row._expanded || grid.getOpenState(grid.row.idd))){
		return grid.row.idd;
	}

	//Als geselecteerde niet expanded dan eerste expanded row
	var expandedRows = new Array();
	var rows = grid.rowsBuffer;
	for (var i=0; i<rows.length; i++){
		if (rows[i]._expanded || grid.getOpenState(rows[i].idd)){
			return rows[i].idd;
		}

	}

	//er is niks open
	return false;
}

function getGrid(ID, dhtmlwindow) {
	if (dhtmlwindow) {
		alert(dhtmlwindow.contentarea.firstChild);
		return dhtmlwindow.contentarea.firstChild.contentDocument.getElementById(ID).grid;
	} else {
		return $$('#'+ID).grid;
	}
}

function reloadGrid(grid, reload, afterCall){
	if (typeof(grid) != 'object'){
		alert('reloadgrid() error: gegeven grid is geen object');
		return;
	}
	if (grid.xmlFileUrl == undefined) {
		//alert('reloadgrid() error: grid data is nog niet geladen');
		//dus reloaden is niks laden
		return;
	}
	grid.xmlLoader.async = false;
	var url = grid.xmlFileUrl;
	url += '&reloadGrid=true';
	if (reload) {
		grid.clearAll();
		grid.loadXML(url);
	} else {
		grid.updateFromXML(url, true, true, afterCall);
	}

	//grid.parseXML(XMLContent);
	grid.xmlLoader.async = true;
}

function getGridByRowID(grid, rowID){
	if (typeof(grid) != 'object'){
		alert('getGridByRowID() error: gegeven grid is geen object');
		return;
	}
	if (grid.xmlFileUrl == undefined) {
		alert('getGridByRowID() error: grid data is nog niet geladen');
		//dus reloaden is niks laden
		return;
	}
	// bestaat de rowID in de mastergrid
	if (grid.rowsAr[rowID]) {
		return grid;
	}

	// loop door alle subgrids
	for(var i=1;i<grid.objBox.childnodes.length;i++) {
		if (grid.objBox.childnodes[i].grid.rowsAr[rowID]) {
			return grid.objBox.childnodes[i].grid;
		}
	}
}

function fullWidth(guid) {
	var grid = $$('#'+guid+'Grd')[0];
	grid.style.width = '100%';
}

function myErrorHandler(obj){
	alert("De actie kon niet worden uitgevoerd.\n\n"+obj.firstChild.nodeValue);
	var dataProcessor = eval(obj.getAttribute("dataprocessor"));
	dataProcessor.stopOnError = true;
}

function loadXMLErrorHandler(type, desc, erData){
	if((erData[0].responseXML && erData[0].responseXML.getElementsByTagName('nietToegestaan').length > 0)) {
		if (parent.document){
			parent.document.location.href = parent.document.location.href;
			return;
		}else{
		//	document.location.href = document.location.href
		}
	}
	alert('Error: Could not load data.');
	return false;
}

function nietToegestaanHandler(obj){
	alert(obj.firstChild.nodeValue);
	var sid = obj.getAttribute("sid");
	var tid = obj.getAttribute("tid");
	var dataProcessor = eval(obj.getAttribute("dataprocessor"));
	dataProcessor.afterUpdateCallback(sid,tid,"update");
	dataProcessor.obj.setUserData(sid,"!nativeeditor_status","");

	herstelRowTextStyle(sid, dataProcessor.obj, dataProcessor);

	dataProcessor._in_progress[sid]=null
}
/* 
function nietToegestaanHandler(obj){
	alert(obj.firstChild.nodeValue);
	var sid = obj.getAttribute("sid");
	var tid = obj.getAttribute("tid");
	var dataProcessor = eval(obj.getAttribute("dataprocessor"));
	dataProcessor.afterUpdateCallback(sid,tid,"update");
	dataProcessor.obj.setUserData(sid,"!nativeeditor_status","");
	dataProcessor.obj.setRowTextStyle(sid,"text-decoration : none");
	dataProcessor._in_progress[sid]=null
}*/

function showLoading(grid){
	var loading = document.createElement('div');

	loading.style.position = 'absolute';
	loading.style.top = '50%';
	loading.style.backgroundColor = '#ffffff';
	loading.style.fontFamily = 'tahoma';
	if ((grid.obj.parentNode.offsetWidth-20) < 100){
		loading.style.width = (grid.obj.parentNode.offsetWidth+100) + 'px';
	} else {
		loading.style.width = (grid.obj.parentNode.offsetWidth-20) + 'px';
	}
	loading.style.textAlign = 'center';
	loading.innerHTML = 'Bezig met laden...'
	loading.className = 'loading';
	grid.obj.parentNode.parentNode.appendChild(loading);

	//var width = grid.obj.parentNode.style.width;
	//var row = grid.obj.insertRow(1);
	//row.style.height = '0px';

	//row.insertCell(0);
	//row.cells[0].colSpan = grid.obj.rows[0].cells.length;

	//row.cells[0].innerHTML = 'Bezig met laden...';
}

function hideLoading(grid){
	//while (.lastChild.className == 'loading'){
	var verwijderObj = Array();
	$$.each(grid.obj.parentNode.parentNode.childNodes, function(key, value) {
		if (value && value.className == 'loading'){
			verwijderObj[verwijderObj.length] = grid.obj.parentNode.parentNode.childNodes[key];
		}
	});
	for (var i in verwijderObj){
		grid.obj.parentNode.parentNode.removeChild(verwijderObj[i]);
	}
}

function berekenGemiddelde(grid, waardeCellIndex, aantalCellIndex){
	//werkt alleen goed met smart rendering uit
	var rows = grid.rowsCol;
	var waarde=0, aantal=0, totaalWaarde=0, totaalAantal=0
	for (var i=0; i<rows.length; i++){
		waarde = grid.cells(rows[i].idd, waardeCellIndex).cell.firstChild.nodeValue;
		if (waarde != false){
			if (typeof(aantalCellIndex) == 'undefined' || aantalCellIndex == ''){
				aantal = 1;
			}else{
				aantal = grid.cells(rows[i].idd, aantalCellIndex).cell.firstChild.nodeValue;
			}

			totaalWaarde += (waarde * aantal);
			totaalAantal = (totaalAantal+(aantal*1));

		}
	}
	var gemm = (Math.round((totaalWaarde/totaalAantal)*100)/100);
	return gemm.toString().replace('.', ',');

}

function isRowSelected(grid, rowID){
	for (var i=0; i< grid.selectedRows.length; i++){
		if (grid.selectedRows[i].idd == rowID){
			return true;
		}
	}
	//niet geselecteerd
	return false;
}

function plaatsIn(gridGUID, bestemming) {
	var beschikbareBreedte = bestemming.clientWidth;
	var beschikbareHoogte = bestemming.clientHeight;

	// grid uit huidige parent halen
	gridDiv.parentNode.removeChild(gridDiv);

	resizeGrid(gridGUID, beschikbareHoogte, beschikbareBreedte);

	// grid in bestemming plaatsen
	bestemming.appendChild(gridDiv);
}

function resizeGrid(gridGUID, hoogte, breedte) {
	var gridDiv = $$('#'+gridGUID)[0];

	var grid = $$('#grid'+gridGUID+'Grd')[0];

	var zoekBalk = $$('#'+gridGUID+'frm')[0];
	var zoekHoogte = (zoekBalk?zoekBalk.parentNode.offsetHeight:0);
	var zoekBalkSubDiv = $$('#'+gridGUID+'frm > div')[0]

	var statusBalk = $$('#grid'+gridGUID+'GrdStatusBar')[0];
	var statusHoogte = (statusBalk?statusBalk.offsetHeight:0);

	var knoppenBalk = $$('#grid'+gridGUID+'GrdButtonBar')[0];
	var knoppenHoogte = (knoppenBalk?knoppenBalk.offsetHeight:0);

	var hoogteVerschil = hoogte - gridDiv.clientHeight;

	// breedte instellen
	if (zoekBalk) {
		zoekBalk.parentNode.style.width = (breedte)+'px';
		zoekBalkSubDiv.style.width = (breedte-2)+'px';
	}
	gridDiv.style.width = breedte+'px';
	grid.style.width = (breedte-2)+'px';
	if (statusBalk) {
		statusBalk.style.width = (breedte-2)+'px';
	}
	if (knoppenBalk) {
		knoppenBalk.style.width = (breedte-2)+'px';
	}

	// hoogte instellen
	grid.style.height = (hoogte-zoekHoogte-statusHoogte-knoppenHoogte-2)+'px';
	// objbox in IE aanpassen
	var objBox = $$('#grid'+gridGUID+'Grd .objbox')[0];
	var hdr = $$('#grid'+gridGUID+'Grd .hdr')[0];
	//objBox.style.height = (objBox.clientHeight+hoogteVerschil)+'px';
	objBox.style.height = ((beschikbareHoogte-zoekHoogte-statusHoogte-knoppenHoogte-(hdr.offsetHeight+1)))+'px';
	gridDiv.style.height = (beschikbareHoogte)+'px';

}

function getColIndexByName(grid, name){
	for (var i=0; i<grid.hdrLabels.length; i++){
		if (grid.hdrLabels[i] == name){
			return i;
		}
	}
}

function openAfbeeldingCell(cell, titel){
	titel = (titel || '');
	// Haal alleen het src gedeelte uit de innerHTML van de grid cell
	var afbeelding = cell.innerHTML.split('src="')[1].split('"')[0];
	var toon = '<img src="'+afbeelding+'" style="max-width: 800px;"/>';
	
	if (typeof dhtmlwindow != 'undefined'){
		var windiv;
		if (windiv = $('viewAfbeeldingWin')){
			windiv.style.width = 0;
			windiv.contentarea.style.height = 0;
		}
		
		dhtmlwindow.open('viewAfbeeldingWin', 'inline', toon, titel, 'height=auto,width=auto,center=1,scrolling=1');
	} else {
		if (typeof previewWin == 'undefined'){
			previewWin = new dhtmlXWindows();
			previewWin.setSkin('dhx_blue');
		}
		previewWin.createUltraWindow('viewAfbeeldingWin', 'inline', toon, titel, 'middle', 'middle', 'auto', 'auto');
	}
}

function getSelectedRegel(grid){
	var selectedRegel = grid.getSelectedRowId();
	if (selectedRegel == undefined){
		alert(T_selecteerRegel);
		return false;
	} else {
		return selectedRegel;
	}
}

function selectColumn(grid, selectedRowID){
	var selecredRowIds = grid.getSelectedRowId();
	if (selecredRowIds && selecredRowIds.indexOf(grid.lastClicked.idd) == -1){
		//grid.lastClicked.idd is niet geselecteerd, dus regel is uitgezet, en er is nog wel een andere regel geselecteerd, dan niets doen.
		return;
		
	}
	var selectedCellInd = grid.getSelectedCellIndex();
	//selectedCellInd word bij het met een ctrl click op een regel niet gereset naar undefined daarom checken we of de cell echt nog wel geselecteerd is
	if (grid.cellById(grid.lastClicked.idd, selectedCellInd).cell.className.indexOf(' cellselected') == -1){
		selectedCellInd = undefined;
	}
	if (grid.ultraSelectedColomnInd == selectedCellInd){
		//deze is al geselecteerd
		return false;
	}
	//deselecteren
	if (typeof grid.ultraSelectedColomnInd != 'undefined'){
		var colInd = grid.ultraSelectedColomnInd;
		grid.hdr.rows[1].cells[colInd].className = grid.hdr.rows[1].cells[colInd].className.replace(' columnSelected', '');
		grid.forEachRow(function(id){
			grid.cellById(id, colInd ).cell.className = grid.cellById(id, colInd ).cell.className.replace(' columnSelected', '');
		})
	}
	//selecteren
	if (selectedCellInd != undefined){
		if (grid.hdr.rows[1].cells[selectedCellInd].className.indexOf(' columnSelected') === -1){
			grid.hdr.rows[1].cells[selectedCellInd].className += ' columnSelected';
		}
		grid.forEachRow(function(id){
			if (grid.cellById(id, selectedCellInd ).cell.className.indexOf(' columnSelected') === -1){
				grid.cellById(id, selectedCellInd ).cell.className += ' columnSelected';
			}
		})
	}
	grid.ultraSelectedColomnInd = selectedCellInd;
}
