window.onload = init;

String.prototype.trim = function()
{
	return this.replace (/^\s+|\s+$/g, '');
};

function init()
{
	checkBlocks();
	formHighlight();
}

function setScore(cijfer)
{
	cijfer--;
	document.voegtoe.scherpte[cijfer].checked = true;
	document.voegtoe.kleur[cijfer].checked = true;
	document.voegtoe.snelheid[cijfer].checked = true;
	document.voegtoe.bouw[cijfer].checked = true;
	document.voegtoe.vervorming[cijfer].checked = true;
	document.voegtoe.ca[cijfer].checked = true;
	document.voegtoe.prijs[cijfer].checked = true;
}

function zoeken()
{
	term = document.getElementById('zoek').value;
	term = term.trim();
	if (term.length > 1)
	{
		document.zoek.submit();
		return true;
	}
	return false;
}

function checkBlocks()
{
	if (document.getElementById('error'))
	{
		if (document.getElementById('error').innerHTML != '')
		{
			document.getElementById('error').style.visibility = 'visible';
			document.getElementById('error').style.display = 'block';
		}
	}
	if (document.getElementById('melding'))
	{
		if (document.getElementById('melding').innerHTML != '')
		{
			document.getElementById('melding').style.visibility = 'visible';
			document.getElementById('melding').style.display = 'block';
		}
	}
}

// formuliercontrole
var veldenIngevuld;

function checkForm (formulier, registreer)
{
	// controleer of alle verplichte velden zijn ingevuld (deze zijn genoemd in field 'requiredFields'
	veldenIngevuld = true;
	var f = formulier.length;
	// var leegVeld = /^\s*$/;  // vervangen door de trim() prototype
	r = formulier.requiredFields.value.split(', ');
	document.getElementById('error').innerHTML = '';

	for (var i = 0; i < r.length; i++)
	{
		formulier[r[i]].className = '';

		typ      = formulier[r[i]].type;
		waarde   = formulier[r[i]].value;
		naam     = formulier[r[i]].name;

		// of mailadres of wachtwoord is verplicht. Als geen van beide
		// is ingevuld, krijgen het parent element een rode border. Die
		// wordt bij een nieuwe check van het form eerst weer verwijderd.
		if ((naam == 'mailadres') && (registreer != 1))
		{
			tmp = document.getElementById('mailadres').parentNode;
			tmp.className = 'formField';
		}
		if (typ == null)
		{
			// radiobuttons
			typ  = formulier[r[i]][0].type;
			naam = formulier[r[i]][0].name;
		}
		if (typ == 'radio')
		{
			ok = 0;
			for (var j = 0; j < eval('formulier.' + naam + '.length'); j++)
			{
				if(eval('formulier.' + naam + '[j].checked'))
				{
					tmp = eval('formulier.' + naam + '[j]').parentNode;
					tmp.className = 'formField';

					ok = 1;
					break;
				}
			}
			if (ok == 0)
			{
				//document.getElementById('error').innerHTML += (veldenIngevuld) ? 'Niet alle verplichte velden zijn ingevuld: <li>' + naam + '</li>' : '<li>' + naam + '</li>';
				document.getElementById('error').innerHTML = 'Niet alle verplichte velden zijn ingevuld';

				for (var j = 0; j < eval('formulier.' + naam + '.length'); j++)
				{
					tmp = eval('formulier.' + naam + '[j]').parentNode;
					tmp.className = tmp.className + ' fieldError';
				}
				document.getElementById('submit').disabled = false;
				veldenIngevuld = false;
			}
		}
		else if (waarde.trim() == '')
		{
			// of mailadres of wachtwoord is verplicht. Als geen van beide
			// is ingevuld, krijgen het parent element een rode border.
			if ((naam == 'mailadres') && (registreer != 1))
			{
				tmp = document.getElementById('password').value;
				if (tmp.trim() == '')
				{
					tmp = document.getElementById('mailadres').parentNode;
					tmp.className = tmp.className + ' fieldError';
					document.getElementById('error').innerHTML = 'Niet alle verplichte velden zijn ingevuld';
					document.getElementById('submit').disabled = false;
					veldenIngevuld = false;
				}
			}
			else
			{
				formulier[r[i]].className = 'fieldError';
				// noemt alle velden die nog niet zijn ingevuld
				//document.getElementById('error').innerHTML += (veldenIngevuld) ? 'Niet alle verplichte velden zijn ingevuld: <li>' + naam + '</li>' : '<li>' + naam + '</li>';
				document.getElementById('error').innerHTML = 'Niet alle verplichte velden zijn ingevuld';
				document.getElementById('submit').disabled = false;
				veldenIngevuld = false;
			}
		}
	}
	checkBlocks();
}

function valideer(f, registreer)
{
	checkForm(f, registreer);
	return veldenIngevuld;
}

/* FORMULIER HIGHLIGHTING
 copied and refined from
 http://www.astahost.com/info.php/highlight-active-text-input-fields_t12733.html
*/
var currentlyActiveInputRef       = false;
var currentlyActiveInputClassName = false;

function highlightActiveInput()
{
	if (currentlyActiveInputRef)
	{
		currentlyActiveInputRef.className = currentlyActiveInputClassName;
	}
	currentlyActiveInputClassName = this.className;
	this.className = 'inputHighlighted';
	currentlyActiveInputRef = this;

	setSearch();
}

function mouseOverActiveInput()
{
	if (currentlyActiveInputRef)
	{
		currentlyActiveInputRef.className = currentlyActiveInputClassName;
	}
	currentlyActiveInputClassName = this.className;
	this.className = 'mouseOverHighlight';
	currentlyActiveInputRef = this;
}

function blurActiveInput()
{
	this.className = currentlyActiveInputClassName;

	if (this.id == 'diafragma2')
	{
		if (document.getElementById('lens').value == '')
		{
			bp1 = document.getElementById('brandpunt1').value;
			bp2 = document.getElementById('brandpunt2').value;
			bp = (bp2 == '') ? bp1 : (bp2 == bp1) ? bp1 : bp1 + '-' + bp2;
			df1 = document.getElementById('diafragma1').value;
			df2 = document.getElementById('diafragma2').value;
			df = (df2 == '') ? df1 : (df2 == df1) ? df1 : df1 + '-' + df2;

			lens = bp + 'mm' + ' f/' + df + ' ';
			if (document.getElementById('merk').value.toLowerCase() == 'canon')
				lens = 'EF ' + lens;
			if ( (bp1 != '') && (df1 != '') )
				document.getElementById('lens').value = lens;
		}
	}
}

function formHighlight()
{
	var tags = ['INPUT', 'TEXTAREA'];
	for (tagCounter = 0; tagCounter < tags.length; tagCounter++)
	{
		var formField = document.getElementsByTagName (tags[tagCounter]);
		for(var i = 0; i < formField.length; i++)
		{
			if (formField[i].className && formField[i].className != 'highlight')
				continue;
			if (formField[i].tagName.toLowerCase() == 'textarea'
				|| (formField[i].tagName.toLowerCase() == 'input')
				)
			{
				//formField[i].onmouseover = mouseOverActiveInput;
				formField[i].onselect = highlightActiveInput;
				formField[i].onclick = highlightActiveInput;
				formField[i].onfocus = highlightActiveInput;
				formField[i].onblur  = blurActiveInput;
			}
		}
	}
}

function setLens()
{
}

//Click function ivm Ajax search
function setSearch(value, w)
{
	if (w == 'lens')
	{
		document.getElementById('lens').value = value;
		document.getElementById('lensLijst').innerHTML = '';
	}
	else if (w == 'merk')
	{
		document.getElementById('merk').value = value;
		document.getElementById('merkLijst').innerHTML = '';
	}
	else if (w == 'camera')
	{
		document.getElementById('camera').value = value;
		document.getElementById('cameraLijst').innerHTML = '';
	}
	else
	{
		if (document.getElementById('lensLijst') )
			document.getElementById('lensLijst').innerHTML = '';
		if (document.getElementById('merkLijst') )
			document.getElementById('merkLijst').innerHTML = '';
		if (document.getElementById('cameraLijst') )
			document.getElementById('cameraLijst').innerHTML = '';
	}
}

function popup(x)
{
	window.open(x, "Foto");
}

