var timeout;
var artikelen;
var huidigItem = undefined;
var hoverItem = undefined;
//Hover timeout in ms
var timeout = 600;
var timer;
var curPlant = -1;
//IE heeft een bug bij het dynamisch aanpassen van classnames, oa background-color's worden gewoon
//niet aangepast.
//Het gaat tegen mijn principes in, maar stel hier de kleur van het geselecteerde item dan maar in
var hoverColor = '#B5C7DE';
var lastSelect = 0;
/* Zoekt de dichtsbijzijnde element met een gegeven tag */
function getParentByTag(sourceElement,tagname) 
{
	var ancestors = sourceElement.ancestors();
	for(var i = 0 ; i < 10 ; i++) {
		if(ancestors[i].tagName == tagname) {
			return ancestors[i];
		}		
	}
	return undefined;
}

function clearAllSelectedRows()
{
	var selected = $$('#artikeltabel tr.artikel_selected');
	selected.each(function(selecteditem) {		
		selecteditem.removeClassName('artikel_selected');
	});
}

function selecteerArtikel(item,refresh)
{		
	if(refresh == undefined) {
		refresh = false;
	}
	//if(refresh == true) {
		//alert('refreshing info');
	//}
	var currentTime = new Date();
	if(lastSelect != 0 && (currentTime - timeout) < lastSelect) {
		return;
	} else {
		lastSelect = new Date();
	}
	clearTimeout(timer);
	if(item == undefined) {
		return;
	}
	

	if(item != undefined) {
		var plant = item.select('input.plantnr')[0];
		var catheader = item.select('input.catheader')[0].value;
		if(plant != undefined) {
			plant = plant.getValue();
			if(refresh || (plant != curPlant)) {
				curPlant = plant;				
				new Ajax.Request('ajax/plantdetails.php',
	  			{
	    			method:'post',
	    			parameters: {
	    				plantnummer: plant,
	    				catheader: catheader
	    			},
	    			onSuccess: function(transport){
						$('details').update(transport.responseText);						
	    			}
	  			});
			}
		}
	}
}

/*
* Afhandelen van pijltjestoetsen
*/
function eenheidKeyup(event)
{
	var code = undefined;
    if (event.keyCode) {
        code = event.keyCode;
    } else if (e.which) {
        code = event.which;
    }
    var element = Event.element(event);
    element = getParentByTag(element,'TR');
    element.removeClassName('artikel_selected');
	if(code == 38) { //pijl omhoog
		var prevElements = element.previousSiblings();
		if(prevElements.length > 0) {
			lastSelect = 0;
			var previousElement = prevElements[0];
			previousElement.addClassName('artikel_selected');
			var inputField = previousElement.select('input.eenheid');
			if(inputField != undefined) {
				inputField = inputField[0];
				inputField.focus();
			}
			selecteerArtikel(previousElement);
		}
	}
	if(code == 40) { //pijl omlaag
		var nextElements = element.nextSiblings();
		if(nextElements.length > 0) {
			lastSelect = 0;
			var nextElement = nextElements[0];
			nextElement.addClassName('artikel_selected');
			var inputField = nextElement.select('input.eenheid');
			if(inputField != undefined) {
				inputField = inputField[0];
				inputField.focus();
			}
			selecteerArtikel(nextElement);
		}
	}
}

function eenheidVerandering(event) 
{
	var element = Event.element(event);

	//eenheid_
	//var plantnr = element.id.substring(8);	
	
	var theRow = getParentByTag(element,'TR');
	
	
	var volgNummer = theRow.select('input.volgnr')[0].value;
	var plantnr = theRow.select('input.plantnr')[0].value;
	var offerteRegel = theRow.select('input.offerteregel')[0].value;
	var prijs = theRow.select('input.prijs')[0].value;
	var trefnaam = theRow.select('input.trefnaam')[0].value;
	var eaantal = theRow.select('input.e_aantal')[0].value;
	var maatkode = theRow.select('input.maatkode')[0].value;	
	var catheader = theRow.select('input.catheader')[0].value;
	var eenheid = theRow.select('input.eenheidsnummer')[0].value;
	
	//Eenheid 4 is stuks
	tsd_updater('UPD', element.value, plantnr,eenheid, offerteRegel, prijs, trefnaam, maatkode, eaantal,catheader);
	//         (aktie, waarde,        sleutel, eenheid,   offerteregel, prijs, trefnaam, maatkode, e_aantal)
	
	selecteerArtikel(theRow,true);
	//updateLoginbox();
	updateAantalkarren();
}

function updateLoginbox()
{
	new Ajax.Request('ajax/loginbox.php',
	{
		method:'post',
		parameters: {command: 'getNumProducts'},
		onSuccess: function(transport){
			$('aantalbesteld').update(transport.responseText);
		}
	});
}

function updateAantalkarren()
{
	new Ajax.Request('ajax/aantalkarren.php',
	{
		method:'post',		
		parameters: {command: 'getAantalkarren'},
		onSuccess: function(transport){
			$('aantalkarren').update(transport.responseText);
		}
	});
}

function artikelClick(event)
{		
	return;

	huidigItem = Event.element(event);	
	if(hoverItem != undefined) {
	
		hoverItem = undefined;
	}
	if(huidigItem != undefined) {
		if(huidigItem.tagName != 'TR') {
			huidigItem = getParentByTag(huidigItem,'TR');
		}
		
		selecteerArtikel(huidigItem);
		
	}	
	huidigItem = undefined;
	locked = false;
}

function artikelTimeoutHandler()
{	
	//Als er al op het item geklikt is, dan hoeft deze handler niets meer te doen
	if(huidigItem == hoverItem) {
		return;
	}	
	if(huidigItem != undefined) {
		huidigItem.setAttribute('class','artikel');
		//huidigItem.style.backgroundColor = '';		
		huidigItem = undefined;
	}
	if(hoverItem != undefined) {
		if(!hoverItem.hasClassName('artikel')) {
			var hovAncestors = hoverItem.ancestors();
			if(hovAncestors[0].hasClassName('artikel')) {
				selecteerArtikel(hovAncestors[0]);
			}
			if(hovAncestors[1].hasClassName('artikel')) {
				selecteerArtikel(hovAncestors[1]);
			}
		} else {
			selecteerArtikel(hoverItem);
		}
	}
	hoverItem = undefined;	
}

function selecteerArtikelSetTimeout(item)
{	
	var currentTime = new Date();
	if(lastSelect != 0 && (currentTime - timeout) < lastSelect) {
		return;
	} 
	var currentEventElement = Event.element(item);
	if(currentEventElement.tagName != 'TR') {
		currentEventElement = getParentByTag(currentEventElement,'TR');
	}
	if(currentEventElement != hoverItem) {
		hoverItem = currentEventElement;
		timer = setTimeout (artikelTimeoutHandler, timeout);
	}
	//currentEventElement.setAttribute('class','artikel_selected artikel');		
	//currentEventElement.style.backgroundColor = hoverColor;
	clearAllSelectedRows();
	currentEventElement.addClassName('artikel_selected');
}

function selecteerArtikelClearTimeout(item)
{
	clearTimeout(timer);
	hoverItem = undefined;
	var currentEventElement = Event.element(item);
	if(currentEventElement.tagName != 'TR') {
		currentEventElement = getParentByTag(currentEventElement,'TR');
	}
	//currentEventElement.setAttribute('class','artikel');
	//currentEventElement.style.backgroundColor = '';	
	currentEventElement.removeClassName('artikel_selected');
}

document.observe("dom:loaded", function() {	
	artikelen = $$('tr.artikel');	
	artikelen.each(function(item) {		
		item.observe('click',artikelClick);
		item.observe('mouseover',selecteerArtikelSetTimeout);
		item.observe('mouseout',selecteerArtikelClearTimeout);
	});
	var artikeltabel = $('artikeltabel');
	if(artikeltabel != undefined) {
		var eenheden = artikeltabel.select('input.eenheid');
		eenheden.each(function(eenheid) {
			eenheid.observe('change', eenheidVerandering);
			eenheid.observe('keyup', eenheidKeyup);
		});
	}
});