document.onkeydown = keyDownHandler;

var sString		= "";		// HTML for DIV
var iElement	= 0;		// current element from the dropdown
var iElements	= 0;		// Total nr. of elements
var sLastValue	= "";	// last value for check
var aResults	= new Array(); // results
var sAction		= "";

function foc() 
{
	if(document.sform && document.sform.keywords) 
	{
		document.sform.keywords.focus();
	}
}

function keyDownHandler(event)
{
	if(!event&&window.event)
		event=window.event;

	if (event.keyCode == 40) // down
	{
		sAction = 'down';
		if (iElement < iElements)
			iElement++;
		colorRow();
	}

	if (event.keyCode == 38) // up
	{
		sAction = 'up';
		if (iElement > 0)
				iElement--;
		
		if (iElement != 0)
			colorRow();
	}

	if (event.keyCode == 13 && sAction) // enter
	{ 
		document.getElementById('cb1').value = aResults[iElement];
		hideDiv();
		return false;
		//document.sform.submit();
	}
}

function colorRow()
{
	var previous = 0;
	var next = 0;

	if (sLastValue && sAction == 'down')
	{
		previous = iElement -1;
		next = iElement + 1;
		if (previous >= 1)
			document.getElementById('row_' + previous).className = "comboTdOut";
				
		document.getElementById('row_' + iElement).className = "comboTdOver";
		
		if (next < iElements)
			document.getElementById('row_' + next).className = "comboTdOut";
	}
	else
	if (sLastValue && sAction == 'up')
	{
		previous = iElement + 1;
		next = iElement - 1;
		
		if (previous < iElements)
			document.getElementById('row_' + previous).className = "comboTdOut";
			
		document.getElementById('row_' + iElement).className = "comboTdOver";
		
		if (next >= 1)
			document.getElementById('row_' + next).className = "comboTdOut";
	}
}

function processKey(value)
{
	if (value == "")
	{
		hideDiv();
		sLastValue = "";
	}
	else if (sLastValue != value)
	{
		xajax_getSearchValues(value);
		sLastValue = value;
	}
}

function showDiv()
{
	var left = findPosX(document.getElementById('cb1'));
	var top = findPosY(document.getElementById('cb1'));
//	document.getElementById('price').style.visibility= 'hidden';
	
	document.getElementById('div1').style.left = left + "px";
	document.getElementById('div1').style.top = (top + 19) + "px";
	document.getElementById('div1').style.visibility= '';
}

function hideDiv()
{
	document.getElementById('div1').style.visibility= 'hidden';	
//	document.getElementById('price').style.visibility= '';
}

function clickIt(value)
{
	document.getElementById('cb1').value = value;
	hideDiv();
	return false;
	//document.sform.submit();
}

function generateHeader()
{
	iElements = 0;
	sString = "<TABLE class='comboTable' border='0' cellpadding='0' cellspacing='0'>";
}

function addElement(sElement, i)
{
	aResults[i] = sElement;
	sString = sString + "<TR id='row_"+ i +"' class='comboTdOut' ";
    sString = sString + " onClick=\"clickIt('"+ sElement +"');\" ";
    sString = sString + " onMouseOver=\"this.className='comboTdOver';\" ";
    sString = sString + " onMouseOut=\"this.className='comboTdOut';\"  align=\"left\"> \n";
    sString = sString + "<TD style='padding:1px;'>"+ sElement +"</TD> \n";
    sString = sString + "</TR> \n";
	iElements++;
}

function generateFooter()
{
	sString = sString + "</TABLE>";
	document.getElementById('div1').innerHTML = sString;
}



function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function obj(objName)
{
	return document.getElementById(objName);
}

function newUsed()
{
	var _used = obj("used");
	var _new  = obj("new");
	
	if (!_new.checked && !_used.checked)
	{
		_new.checked = true;
	}
}

// maakt de DIV en PAGINA resultaten div leeg en maakt nieuwe
function newResults()
{
	var searchParams = new Array();

	// vaste params ophalen, dus nieuw, gebruikt en price
	var status_new	= obj("status_new"); // checkbox in de header
	if (status_new.checked)
		searchParams['new'] = true;

	var status_used = obj("status_used"); // checkbox in de header
	if (status_used.checked)
		searchParams['used'] = true;

	//var buttonGroup = document.forms['detail_form'].elements['price'];
	//for (var i=0;i<buttonGroup.length; i++) 
	//	if (buttonGroup[i].checked) 
	//		searchParams['price'] = buttonGroup[i].value;

	searchParams['price'] = "0";

	var keywords	= obj("key");
	searchParams['keywords'] = keywords.value;

	// dynamische categorieen ophalen
	var f = obj("detail_form");

	for (i=0;i<f.elements.length; i++)
		if (f.elements[i].type == "checkbox" && f.elements[i].name == "category[]")
			if (f.elements[i].checked)
				searchParams['cat_id_' + f.elements[i].value] = f.elements[i].value;
	
	document.getElementById("loaderContainer").style.display = "";
	document.getElementById('searchResults').innerHTML = "";
	document.getElementById('previous_next').innerHTML = "";

	xajax_specifySearchResults(searchParams);
}

function fixNewLines(obj_name)
{
	var str = document.getElementById(obj_name).innerHTML;
	str = str.replace(/_NEWLINE_/g," \n\r ");
	document.getElementById(obj_name).innerHTML = str;
}

function testIsValidObject(objToTest) 
{
	if (objToTest == null || objToTest == undefined) 
		return false;
	else
		return true;
}

function checkUserForm(myForm)
{
	result = true;
	
	if (myForm.naam.value == "")
	{
		alert("Vul aub. een naam in!");
		myForm.naam.focus();
		result = false;
	}	
	else if (!isEmail(myForm.email.value))
	{
		alert("Geef een geldig email adres!");
		myForm.email.focus();
		result = false;
	}
	else if (myForm.q.value == "")
	{
		alert("Geef een geldige zoekopdracht!");
		myForm.q.focus();
		result = false;
	}

	
	return result;
}

function isEmail(str) 
{
	// worden reguliere expressies ondersteund?
	var supported = 0;
	if (window.RegExp) 
	{
	   var tempStr = "a";
	   var tempReg = new RegExp(tempStr);
	   if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) 
		return (str.indexOf(".") > 4) && (str.indexOf("@") > 0);
	
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,4})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}

