//
// Checks form input in plugins.
//

var _D = document, _W = window;

function _setEvent(el,evt,state,fn) {
	if (state) {
		if (el.addEventListener)
			el.addEventListener(evt,fn,false);
		if (el.attachEvent)
			el.attachEvent('on'+evt,fn);
	}
	else {
		if (el.removeEventListener)
			el.removeEventListener(evt,fn,false);
		if (el.detachEvent)
			el.detachEvent('on'+evt,fn);
	}
}

function checkForm(F) {
	var msg = '', syntaxMsg, el;
	for (var x = 0; x < F.elements.length; x++) {
		el = F.elements[x], alt = el.getAttribute('alt');
		if (!alt) continue;
		var props = alt.split('|'), req = props[0] == 1, dt = props[1], value = _getValue(F, el, dt), desc = el.getAttribute('title');
		if (!desc) desc = el.name;
		if (req && value == '')
			msg += 'Verplicht veld #1 is niet ingevuld!'.replace(/#1/, desc) + '\n';
		if (el.name == 'email') dt = 'email';
		if (value != '' && dt) {
			eval('fn = typeof _checkDT'+dt);
			if (fn == 'function') {
				eval('fn = function(desc,value){return _checkDT'+dt+'(desc,value)}');
				syntaxMsg = fn(desc,value);
				if (syntaxMsg) 
					msg += syntaxMsg + '\n';
			}
		}
	}
	if (msg == '') {
		F.target = "_blank";
		location.search += "&post=true";
		return true;
	} else {
		alert(msg);
		return false;
	}
}

function _getValue(F, el, dt) {
	var value, tmp, len;
	if ('textarea|hidden|password|select-multiple|select-one'.indexOf(el.type) != -1)
		value = el.value;
	else if ('radio|checkbox'.indexOf(el.type) != -1) {
		value = '';
		tmp = F[el.name];
		len = tmp.length;
		if (!len) {
			if (tmp.checked) {value=tmp.value}
		}
		else {
			for(var i=0;i<tmp.length;i++)
				if(tmp[i].checked) {value=tmp[i].value;break}
		}
	}
	return value.replace(/^[\s]+/g,'').replace(/[\s]+$/g,''); // Trim
}

function _checkDTinteger(desc, value) {
	if (!/^-?[0-9]+$/.test(value))
		return 'Veld #1 bevat geen geldig geheel getal!'.replace(/#1/, desc);
}

function _checkDTemail(desc, value) {
	if (!/^([a-z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-z0-9\-]+\.)+))([a-z]{2,4}|[0-9]{1,3})(\]?)$/i.test(value))
		return 'Veld #1 bevat geen geldig e-mail adres!'.replace(/#1/, desc);
}

function _checkDTdate_ddmmyyyy(desc, value) {
	if (!/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/.test(value))
		return 'Veld #1 bevat geen geldige datum!'.replace(/#1/, desc);

	var D = parseInt(value.substring(0,2),10);
	var M = parseInt(value.substring(3,5),10);
	var Y = parseInt(value.substring(6,10),10);
	var tmp = new Date(Y,M,D);
	if (!(tmp.getFullYear()==Y) && (tmp.getMonth()==M) && (tmp.getDate()==D))
		return 'Veld #1 bevat geen geldige datum!'.replace(/#1/, desc);
}

function _setLang(lang) {
	var loc = _D.location.protocol + '//' + _D.location.hostname + _D.location.pathname + _D.location.search, hsh = _D.location.hash;
	loc = loc.replace(/(&|\?)lang=[a-z]{2}/, '');
	var sep = loc.indexOf('?') == -1 ? '?' : '&';
	_D.location = loc + sep + 'lang=' + lang + hsh;
}

