/**
 * @author niels
 */
function trim(str)	{ return ltrim(rtrim(str)) }
function ltrim(str)	{ return str.replace(/^\s+/,'') }
function rtrim(str)	{ return str.replace(/\s+$/,'') }

function htmlspecialchars(str)
{
	str = str.replace(/&/, '&amp;');
	str = str.replace(/"/, '&quot;');
	str = str.replace(/'/, '&#039;');
	str = str.replace(/</, '&lt;');
	str = str.replace(/>/, '&gt;');
	return str;
}

function able(obj, state, bgcolor)
{
	obj.disabled = !state;
	if(obj.type == 'radio' || obj.type == 'checkbox') return;
	if(state && !bgcolor) bgcolor = '#ffffff';
	if(obj.style) obj.style.backgroundColor = state ? bgcolor : '#dddddd';
}

function str2int(str)
{
	str = parseInt(str, 10);
	return isNaN(str) ? 0 : str;
}

function getelement(name)
{
	return document.getElementById ? document.getElementById(name) : (document.all ? document.all[name] : undefined);
}

function check_whois(obj)
{
	res = checkinput_domainname(obj.value, true, false, false);
	obj.value = res.value;
	if(res.status == false)
	{
		alert(o.message);
		obj.focus();
		obj.select();
		return false;
	}
	
	return true;
}

function isNumberKey(evt)
{
	var charCode = (evt.which) ? evt.which : event.evt
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
		return false;
	}
	
	return true;
}

function isInteger(value) {
	var validChar = '1234567890.';
	var valid = true;

	for (i = 0; i < validChar.length && valid == true; i++)
	{
		if (validChar.indexOf(value.charAt(i)) == -1)
		{
			valid = false;
		}
	}
	return valid;
}

function pop(url)
{
	var x = 700;
	var y = 405;
	var mytop = (screen.height/2) - (y/2)
	var myleft = (screen.width/2) - (x/2)

	showdoc = window.open(url, 'Odin4All', 'alwaysRaised=1,dependent=1,width=' + x + ',height=' + y + ',top=' + mytop + ',left=' + myleft + ',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,alternative=no');
	showdoc.focus();
}

function cooltable_toggle(name, switchto)
{
	var obj = getelement(name);
	if(obj)
		with(obj.style)
		{
			if(!switchto)
				switchto = display == 'none';
			display = switchto ? 'block' : 'none';
			document.images[name + '_img'].src = 'res/images/toggle-arrow' + (switchto ? '1' : '2') + '.gif';
		}
}

function showDialog(url)
{
	var args = {
		opener: window,
		str: 'Popup',
		x: 375,
		y: 405
	};
	
	var features = '';
	features += 'dialogHeight: 405px;';
	features += 'dialogWidth: 375px;';
	features += 'scroll: 1;';
	features += 'edge: Raised;';
	features += 'center: 1;';
	features += 'help: 0;';
	features += 'resizable: 0;';
	features += 'status: 0;';
	
  	var returnValue = window.showModalDialog(url, args, features);
  	return returnValue;
}

function popup_datepicker(obj, title)
{					
	with(obj)
	{
		if(disabled)
			return;

		select();
		focus();
		mydate = checkdate(value);
	}
	mystr = mydate ? '&title=' + title + '&y=' + mydate.y + '&m=' + mydate.m + '&d=' + mydate.d : '&title=' + title;

	var p = window.showModalDialog('?ac=calendar' + mystr, '', 'dialogWidth:300px; dialogHeight:300px; scroll:yes; edge:Raised; center:yes; help:no; resizable:no; status:no;');
						if(p)
			
			{			
				obj.value = p			;
				obj.select(		t);
				obj.focus		();
						}
						
}
			
					
		
function browsercheck()		
{
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera=(navigator.userAgent.indexOf('Opera')>-1 && document.getElementById)?1:0
	this.ie5=(this.ver.indexOf('MSIE 5')>-1 && this.dom && !this.opera5 && this.ver.indexOf('MSIE 5.5')==-1)?1:0; 
	this.ie55=(this.ver.indexOf('MSIE 5.5')>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf('MSIE 6')>-1 && this.dom && !this.opera5)?1:0;
	this.ie7=(this.ver.indexOf('MSIE 7')>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie55||this.ie6||this.ie7;
	this.mac=this.agent.indexOf('Mac')>-1;
	this.ns6=(this.dom && parseInt(this.ver) >= 5 && navigator.userAgent.indexOf('Opera')==-1) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.enabled=(this.ie7 || this.ie6 || this.ie55 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}

function submit_search()
{
	with(document.forms['search'])
	{
		search_for.value = trim(search_for.value);
		if(search_for.value.length < 1)
		{
			alert('De minimale invoer bedraagt 1 teken.');
			search_for.focus();
		}
		else if(search[search.selectedIndex].value == 'nr' && parseInt(search_for.value) == 0)
		{
			alert('Het Odin Nr. moet groter dan 0 zijn.');
			search_for.focus();
		}
		else if(search[search.selectedIndex].value == 'clientnr' && parseInt(search_for.value) == 0)
		{
			alert('Het klantnummer moet groter dan 0 zijn.');
			search_for.focus();
		}
		else if(search[search.selectedIndex].value == 'informixnr' && parseInt(search_for.value) == 0)
		{
			alert('Het Informixnummer moet groter dan 0 zijn.');
			search_for.focus();
		}
		else if(search[search.selectedIndex].value == 'kvk_number' && search_for.value.length == 0)
		{
			alert('De minimale invoer bedraagt 1 teken.');
			search_for.focus();
		}
		else
			return true;
		return false;
	}
}

function submit_search_email()
{
	with(document.forms['search_email'])
	{
		if(search_for_email.value.length < 1)
		{
			alert('De minimale invoer bedraagt 1 teken.');
			search_for_email.focus();
		}
		else if(search_email[search_email.selectedIndex].value == 'odinid' && parseInt(search_for_email.value) == 0)
		{
			alert('Het OdinID moet groter dan 0 zijn.');
			search_for_email.focus();
		}
		else if(search_email[search_email.selectedIndex].value == 'emailid' && parseInt(search_for_email.value) == 0)
		{
			alert('Het E-mail ID moet groter dan 0 zijn.');
			search_for_email.focus();
		}
		else
			return true;
			
		return false;
	}
}

function check_newform()
{
	with(document.forms.newform)
	{
		str = postcode.value == 'postcode' ? '' : postcode.value;
		res = checkinput_postcode(str);
		postcode.value = res.value;
		if(res.status == false)
		{
			alert(res.message);
			postcode.focus();
			postcode.select();
		}
		else
		{
			str = address_nr.value == 'huisnr' ? '' : address_nr.value;
			res = checkinput_address_nr(str, true)
			address_nr.value = res.value;
			if(res.status == false)
			{
				alert(res.message);
				address_nr.focus();
				address_nr.select();
			}
			else
			{
				if(address_nr_addition.value == 'toevoeging')
					address_nr_addition.value = '';

				document.cookie = 'odin_securedata_orderdesk=;';
				return true;
			}
		}
	}
	return false;
}

function checkMaxLength(textarea, evt, maxLength)
{
	var keyCode = document.layers ? evt.which : evt.keyCode;
	if(keyCode >= 33 && keyCode <= 40)		// PgUp, PgDn, Home, End, Cursor Keys
		return true;

	if(textarea.value.length > maxLength)
		textarea.value = textarea.value.substring(0, maxLength);

	var allowKey = false;
	if(document.selection && document.selection.createRange().text.length > 0)
		allowKey = true;
	else
	{
		if(keyCode < 32 && keyCode != 13)
			allowKey = true;
		else if(keyCode >= 33 && keyCode <= 40)		// PgUp, PgDn, Home, End, Cursor Keys
			allowKey = true;
		else if(evt.ctrlKey && (keyCode == 65 || keyCode == 67 || keyCode == 82 || keyCode == 86 || keyCode == 88))		// ^A ^C ^R ^V ^X
			allowKey = true;
		else if(keyCode == 46 || keyCode == 45)		// Del, Ins
			allowKey = true;
		else
			allowKey = textarea.value.length < maxLength;
	}

	return allowKey;
}

function getDaysInMonth(month, year)
{
	var d = new Date();
	d.setYear(year + (year < 1900 ? 1900 : 0));
	d.setMonth(month - 1);		// index base 0 in stead of 1
	d.setDate(32);
	return 32 - d.getDate();
}

function isValidDate(mydate, required)
{
	
	var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var agelimit = 18;
		
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	if(!mydate && required)
	{
		o.message = 'Geboortedatum is verplicht';
		o.errorcode = -1;
		return o;
	}

	if(!mydate && !required)
	{
		return o;
	}

	datearray = mydate.split('-');

	var day = parseInt(datearray[0], 10);
	var month = parseInt(datearray[1], 10);
	var year = parseInt(datearray[2], 10);
	
	if (!day || !month || !year) {
		o.message = 'Ongeldig formaat geboortedatum';
		o.errorcode = -1;
		return o;		
	}

	if( day > 31 || month > 12 || day < 1 || month < 1)
	{
		o.message = 'Ongeldige geboortedatum';
		o.errorcode = -1;
		return o;			
	}


	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		o.message = 'Ongeldige dag geboortedatum';
		o.errorcode = -1;
		return o;	
	}
	
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			o.message = 'Ongeldige dag geboortedatum';
			o.errorcode = -1;
			return o;
		}
	}

	if (year/4 == parseInt(year/4))
		monthLength[1] = 29;

	if (day > monthLength[month-1]) {
		o.message = 'Ongeldig formaat geboortedatum';
		o.errorcode = -1;
		return o;				
	}

	monthLength[1] = 28;

	var now = new Date();
	now = now.getTime(); //NN3

	var dateToCheck = new Date(year, (month-1), day);
	var checkDate = dateToCheck.getTime();
	var futureDate = (now < checkDate);

	if(futureDate) {
		o.message = 'Geboortedatum kan niet in de toekomst liggen';
		o.errorcode = -1;
		return o;		
	}

	var theirDate = new Date((year + agelimit), (month-1), day);
	if((now - theirDate.getTime()) < 0) {
		o.message = 'Je moet ouder zijn dan 18 om te kunnen bestellen';
		o.errorcode = -1;
		return o;	
	}
	
	if(year < 1900)
	{
		o.message = 'Geboortedatum moet na 01-01-1900 zijn';
		o.errorcode = -1;
		return o;	
	}
	
	return false;
}

function checkdate(mydate)
{	
	if(mydate.indexOf('-') > -1)		delimeter = '-';
	else if(mydate.indexOf('/') > -1)	delimeter = '/';
	else if(mydate.indexOf('.') > -1)	delimeter = '.';
	else if(mydate.indexOf(' ') > -1)	delimeter = ' ';
	else return false;

	var val = new Array();
	var index = 0;
	for(var i=0; i<mydate.length; i++)
	{                       
		token = mydate.charAt(i);
		if(token == delimeter)
			index++
		else
		{
			if(!val[index])
				val[index] = '';
			val[index] += token
		}
	}
	
	if(index == 1)
	{
		// 2 parameters; add year, get from client
		var d = new Date();
		val[++index] = d.getYear();
	}

	if(index != 2) return false;
	
	m = val[1];
	m = parseInt(parseFloat(m));

	if(val[0] >= 1970)
	{
		y = parseInt(parseFloat(val[0]));
		d = parseInt(parseFloat(val[2]));
	}
	else
	{
		y = parseInt(parseFloat(val[2]));
		d = parseInt(parseFloat(val[0]));
		if(val[2] < 1970)
			y += y >= 70 && y < 100 ? 1900 : 2000;
	}
	
	if(isNaN(y) || isNaN(m) || isNaN(d)) return false;

	//alert(y + '-' + m + '-' + d);
	if(y < 1970 | y > 2099) return false;
	else if(m < 1 | m > 12) return false;
	else if(d < 1 | d > getDaysInMonth(m, y))
		return false;

	var ret = new Object();
	ret.m = m;
	ret.d = d;
	ret.y = y;

	return(ret);
}

				
function blinkelement(fieldname, counter, nofocus)
{
	if(isNaN(counter) || counter == false || counter <= 0) counter = 5;
	with(document.forms.myform)
	{
		if(elements[fieldname].type == 'textarea' || elements[fieldname].type == 'select-one' || elements[fieldname].type == 'text')
		{
			if(elements[fieldname].style)
			{
				elements[fieldname].style.backgroundColor = counter-- % 2 ? '#FFFFFF' : '#FF0000';

				if(counter > 0)
				{
					mytimer = setTimeout('blinkelement(\'' + fieldname + '\',' + counter + ',' + (nofocus ? 1 : 0) + ')', 125);
					return;
				}
			}
		}

		if(!nofocus)
		{
			elements[fieldname].focus();
			if(elements[fieldname].select)
				elements[fieldname].select();
		}
	}
}

function securedata(f, cookiename)
{
	with(f)
	{
		str = '';
		for(i=0; i<elements.length; i++)
			if(elements[i].name && elements[i].name != 'ac')
			{
				val = '';
				if(elements[i].type == 'radio' || elements[i].type == 'checkbox')
				{
					if(elements[i].checked)
						val = elements[i].value;
				}
				else
					val = elements[i].value;
				
				if(val)
					str += elements[i].name + '=' + escape(val) + '&';
	}
		document.cookie = cookiename + '=' + escape(str.substring(0, str.length-1)) + ';';
	}
}
function checkinput_compare_emailadress(str,str2){
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;
	
	if(str == str2){
		o.status = true;
	}else{
		o.message = 'Email adressen zijn niet gelijk ingevuld.';
		o.errorcode = -1;
	}
	return o;
}
function checkinput_emailaddress(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	o.value = str;

	if(required || (str.length > 0 && str.length <= 64))
	{
		if(str.length == 0)
		{
			o.message = 'Geen e-mailadres ingevoerd.';
			o.errorcode = -1;
		}
		else
		{
			var regexpr = new RegExp('^[_\\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\\.)+[a-zA-Z]{2,6}$');
			if(!str.match(regexpr))
			{
				o.message = 'Ongeldig e-mailadres ingevoerd.';
				o.errorcode = -1;
			}
			else
				o.status = true;
		}
	}
	else
		o.status = true;
	return o;
}

function checkinput_postcode(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = str.replace(/\s/,'');
	str = str.toUpperCase();
	o.value = str;
	
	if(required || str.length > 0)
	{
		if(str.length == 0)
		{
			o.message = 'Geen postcode ingevoerd.';
			o.errorcode = -1;
		}
		else if(!str.match(/^[0-9]{4}[A-Za-z]{2}$/))
		{
				o.message = 'Ongeldige postcode ingevoerd.';
			o.errorcode = -2;
		}
		else
		{
			o.status = true;
		}
	}
	else
	{
		o.status = true;
	}

	return o;
}

function checkinput_kvknr(str, required, allow_12_chars)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	o.value = str;

	if(required || str.length > 0)
	{
		if(str.length == 0)
		{
			o.message = 'Geen KvK-nummer ingevoerd.';
			o.errorcode = -1;
		}
		else if((!allow_12_chars && str.length != 8) || (allow_12_chars && str.length != 12 && str.length != 8))
		{
			o.message = 'Het KvK-nummer moet uit 8 cijfers bestaan.';
			o.errorcode = -2;
		}
		else if(!str.match(/[0-9]{8}/))
{
			o.message = 'Het KvK-nummer mag alleen cijfers bevatten.';
			o.errorcode = -3;
		}
		else
		{
			o.status = true;
		}
	}
	else
		o.status = true;

	return o;
}

function tld_limit(tld)
{
	l = new Object;
	if(tld == '') { l.min = 3; l.max = 35; }
	else 		{
		l.min = 3; l.max = 35;
	}
	return(l);
}

function checkinput_domainname(str, required, any_tld, allow_no_tld, dont_allow_sub)
{
	is_eu = str.substr(str.length - 3, 3) == '.eu' ? true : false;
	
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;
	o.tld = '';
	o.name = '';

	str = trim(str);
	str = str.toLowerCase();
	str = fixdomainname(str);

	var dots = 0;
	for(i=0; i<str.length; i++)
		if(str.charCodeAt(i) == 46)
			dots++;

	if(dots > 1 && str.substring(0, 4) == 'www.')
	{
		str = str.substring(4, str.length);
		dots--;
		str = trim(str);
	}
	o.value = str;
	
	if(required || str.length > 0)
	{
		if(dots > 0 && allow_no_tld)
			allow_no_tld = false;

		if(str.length == 0)
		{
			o.message = 'Geen domeinnaam ingevoerd.';
			o.errorcode = -8;
		}
		else if(dots < 1 && !allow_no_tld)
		{
			o.message = 'Geen domeinnaam-extensie ingevoerd. Alleen de volgende extensies zijn toegestaan: .';
			o.errorcode = -1;
		}
		else if(!dont_allow_sub && dots > 1)
		{
			o.message = 'Gebruik maximaal 1 punt in de domeinnaam.';
			o.errorcode = -2;
		}
		else
		{
			var regexpr = new RegExp('^[a-z0-9]+([\\-]?[a-z0-9]+)*' + (allow_no_tld ? '$' : '[\\.]{1}[a-z]{2,4}$'));
			if(!str.match(regexpr))
			{
				o.message = 'Ongeldige domeinnaam ingevoerd. Alleen letters, cijfers en koppeltekens zijn toegestaan. Geen andere leestekens, geen spaties en een extensie van minimaal 2 en maximaal 4 karakters.';
				o.errorcode = -3;
			}
			else
			{
				if(dots == 0)
				{
					tld		= '';
					name	= str;
				}
				else
				{
					pos		= str.lastIndexOf('.', str);
					tld		= str.substring(pos + 1, str.length);
					name	= str.substring(0, pos);
				}
				o.tld	= tld;
				o.name	= name;

				if(!name.match(/[a-z]/))
		{
					o.message = 'Er moet minimaal 1 letter in de domeinnaam staan.';
					o.errorcode = -4;
				}
				else if(!allow_no_tld && !any_tld && !str.match(/.()$/))
		{
					o.message = 'Er is een ongeldige domeinnaam-extensie opgegeven (het gedeelte na de punt). U kunt alleen domeinnamen met de volgende extensies invoeren: ..';
					o.errorcode = -5;
				}
				/*
				else if(is_eu && (str.substr(2, 1) == '-' || str.substr(3, 1) == '-'))
				{
					o.message = 'Er mag geen koppelteken (-) op de 3e en/of 4e positie staan voor een .eu registratie.';
					o.errorcode = -9;
				}
				*/
				else
				{
					limit = tld_limit(tld);

					if(name.length < limit.min)
					{
						o.message = 'Domeinnamen met de extensie .' + tld + ' moeten minimaal ' + limit.min + ' tekens voor de punt hebben.';
						o.errorcode = -6;
					}
					else if(name.length > limit.max)
					{
						o.message = 'Domeinnamen met de extensie .' + tld + ' mogen maximaal ' + limit.max + ' tekens voor de punt hebben.';
						o.errorcode = -7;
					}
					else
					{
						o.status = true;
					}
				}
			}
		}
	}
	else
	{
		o.status = true;
	}

	return o;
}

function checkinput_subdomain(str)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	str = str.toLowerCase();
	
	if(str)
	{
		if(!str.match(/^[a-z0-9]+/i))
{
			o.message		= 'Een subdomein moet beginnen met een of meer nummerieke of alfanummerieke tekens.';
			o.errorcode		= -1;
		}
		else if(!str.match(/[a-z]/i))
{
			o.message		= 'Een subdomein dient een of meer alfanummerieke tekens te bevatten.';
			o.errorcode		= -2;
		}
		else if(str.match(/\-$/i))
{
			o.message		= 'Een subdomein mag niet eindigen met een koppelteken (-).';
			o.errorcode		= -3;
		}
		else if(str.match(/[^a-z0-9\-]/i))
{
			o.message		= 'Een subdomein mag alleen nummerieke en alfanummerieke tekens en een koppelteken (-) bevatten.';
			o.errorcode		= -4;
		}
		else if(str.indexOf('-') != str.lastIndexOf('-'))
{
			o.message		= 'Een subdomein mag maximaal een keer een koppelteken (-) bevatten.';
			o.errorcode		= -5;
		}
		else if(0 > 0 && str.length > 0)
		{
			o.message		= 'Een subdomein mag niet langer zijn dan 0 tekens.';
			o.errorcode	= -6;
		}
		else
		{
			o.status		= true;
			o.message		= 'Ok';
		}
	}
	else
	{
		o.status	= true;
		o.message	= 'Ok';
	}
	
	return o;
}

function fixdomainname(str)
{
	if(str.substring(0, 6) == 'http//') str = str.substring(6, str.length);
	else if(str.substring(0, 7) == 'http://') str = str.substring(7, str.length);
	else if(str.substring(0, 7) == 'http:\\') str = str.substring(7, str.length);
	else if(str.substring(0, 5) == 'http:') str = str.substring(5, str.length);
	return str;
}

function checkinput_routingaddress(str, required, is_external, allow_home)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	str = str.toLowerCase();
	str = fixdomainname(str);
	o.value = str;

	if(str.length == 0)
	{
		if(required)
		{
			o.message = 'Geen doorroutering-adres ingevoerd.';
			o.errorcode = -1;
		}
		else
		{
			o.status = true;
		}
	}
	else
	{
		// *** Ia. Test home.hetnet.nl/~gebruikersnaam
		m = str.match(/^((home.|www.)?hetnet.nl\/)(\~)?([\w.\-]+)?$/)
		if(m && allow_home)
		{
			if(m[2] != 'home.' || m[3] != '~' || m[4] == '')
	{
				o.message = 'Homepage-adressen van Het Net hebben het volgende formaat: "home.hetnet.nl/~gebruikersnaam"';
				o.errorcode = -2;
			}
			else
			{
				o.status = true;
			}
		}
		else
		{
			// *** Ib. Test home.planet.nl/~gebruikersnaam
			m = str.match(/^((home.|www.)?planet.nl\/)(\~)?([\w.\-]+)?$/)
			if(m && allow_home)
			{
				if(m[2] != 'home.' || m[3] != '~' || m[4] == '')
		{
					o.message = 'Homepage-adressen van Planet Internet hebben het volgende formaat: "home.planet.nl/~gebruikersnaam"';
					o.errorcode = -3;
				}
				else
				{
					o.status = true;
				}
			}
			else
			{
				// *** II. Test ip-adres n.n.n.n
				ip_o = checkinput_ipaddress(str, false)
				if(ip_o.status == true)
				{
					o.status = true;
				}
				else if(ip_o.status == false && ip_o.errorcode == -1)
				{
					o.message = ip_o.message;
					o.errorcode = -4;
				}
				else if(ip_o.status == false && ip_o.errorcode == -3)
				{
					o.message = ip_o.message;
					o.errorcode = -7;
				}
				else
				{
					if(str.indexOf('/') >= 0)
					{
						o.message = 'U kunt geen doorroutering-adres met een subdirectory gebruiken. Alleen domeinnaam.nl of www.domeinnaam.nl is toegestaan.';
						o.errorcode = -5;
					}
					else
					{
						// *** III. Test www.domainname.tld
						if(str.substring(0, 4) == 'www.')
						{
							temp = str.substring(4, str.length);
							o = checkinput_domainname(temp, true, is_external);
							if(o.status == false)
							{
								o.errorcode *= 100;
							}
							o.value = 'www.' + temp;
						}
						else
						{
							// *** IV. Test domainname.tld
							o = checkinput_domainname(str, true, is_external);
							if(o.status == false)
							{
								o.errorcode *= 100;
								if(o.errorcode == -200)
								{
									// MAXONEDOT
									o.message = 'U kunt geen doorroutering-adres met een subdomein gebruiken. Alleen www.domeinnaam.nl is toegestaan.';
									o.errorcode = -6;
								}
							}
						}
					}
				}
			}
		}
	}

	return o;
}

function checkinput_mobile(number, isphonevalid)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;
	
	number = number.replace(/\s/, '');

	if (!number) 
	{
		if (typeof(isphonevalid) == 'undefined' || isphonevalid == false)
		{
			o.status = true;
			return o;
		}
		else if(isphonevalid)
		{
			var url = basepath + '/call/checkMWO';
			new Ajax.Request(url, {
				asynchronous: false,
				onSuccess: function(transport) {
					if(transport.responseText == 1)
					{
						o.message = 'Geen 06-nummer ingevoerd.';
						o.errorcode = -7;
					}
					else
					{
						o.status = true;
					}
				}
			})
			
			return o;
		}
	}
	
	if(number.substring(0, 2) != '06')		
	{
		o.message = 'Mobiel: Het nummer moet met \'06\' beginnen.';
		o.errorcode = -7;
	}
	else if(number.substring(2, 3) == '0')
	{
		o.message = 'Mobiel: Een 0 is niet toegestaan op de derde positie.';
		o.errorcode = -7;
	}
	else if (!isInteger(number))
	{
		o.message = 'Mobiel: Het nummer mag alleen uit nummers bestaan.';
		o.errorcode = -7;
	}
	else if(number.length != 10)
	{
		o.message = 'Mobiel: Het nummer moet uit 10 cijfers bestaan.';
		o.errorcode = -7;
	}
	else
	{
		o.status = true;
	}		
		
	return o;		
}

function checkinput_telnr(str1, str2, required, str_field_description, no_08xx_09xx, mobile)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str1 = str1.replace(/\s/,'');
	str2 = str2.replace(/\s/,'');
	o.value = '';
	o.value1 = str1;
	o.value2 = str2;
	
	if(!str_field_description)
		str_field_description = 'Telefoon';
	
	if(required || str1.length > 0 || str2.length > 0)
	{
		if(str1.length == 0 && str2.length == 0)
		{
			if(str_field_description == 'Telefoon' && mobile && mobile.value.length == 0)
				o.message = 'Telefoon/mobiel: Minimaal 1 nummer moet worden ingevoerd.';
			else if(!mobile || mobile.value.length != 10)	
				o.message = str_field_description + ': Geen netnummer en geen abonneenummer ingevoerd.';
			o.errorcode = -9;
		}
		else if(str1.length == 0)
		{
			o.message = str_field_description + ': Geen netnummer ingevoerd.';
			o.errorcode = -1;
		}
		else if(str2.length == 0)
		{
			o.message = str_field_description + ': Geen abonneenummer ingevoerd.';
			o.errorcode = -2;
		}
		else if(str1.substring(0, 1) != '0')
		{
			o.message = str_field_description + ': Het netnummer moet met een \'0\' beginnen.';
			o.errorcode = -3;
		}
		/*
		else if(str1.substring(0, 2) == '06') {
			o.message = str_field_description + ': Een 06-nummer mag niet in dit veld worden ingevoerd.';
			o.errorcode = -3;
		}
		*/
		else if(!str1.match(/^0([0-9]){1,3}$/))
		{
			o.message = str_field_description + ': Het netnummer moet bestaan uit minimaal 3 en maximaal 4 cijfers.';
			o.errorcode = -4;
		}
		else if(!str2.match(/^([0-9]){6,8}$/))
{
			o.message = str_field_description + ': Het abonneenummer moet bestaan uit minimaal 6 en maximaal 8 cijfers.';
			o.errorcode = -5;
		}
		else if(str2.substring(0, 1) == '0')
{
			o.message = str_field_description + ': Het abonneenummer mag niet met een \'0\' beginnen.';
			o.errorcode = -6;
		}
		/*
		else if((str1 + '' + str2).substring(0, 2) == '06')
		{
			o.message = str_field_description + ': Nummers die met \'06\' beginnen dienen een abonneenummer met 8 cijfers te hebben.';
			o.errorcode = -7;
		}
		*/
		else if((str1 + '' + str2).substring(0, 2) == '06' /*&& str1.length + str2.length != 10*/)
		{
			//o.message = str_field_description + ': Nummers die met \'06\' beginnen dienen een abonneenummer met 8 cijfers te hebben.';
			o.message = str_field_description + ': Plaats het 06-nummer in het veld mobiel.';
			o.errorcode = -7;
		}
		else if(no_08xx_09xx && ((str1 + '' + str2).substring(0, 2) == '08' || (str1 + '' + str2).substring(0, 2) == '09'))
{
			o.message = str_field_description + ': Nummers die met \'08\' of \'09\' beginnen worden niet geaccepteerd.';
			o.errorcode = -10;
		}
		else if(str1.length + str2.length != 10)
		{
			o.message = str_field_description + ': Het complete nummer moet uit 10 cijfers bestaan.';
			o.errorcode = -8;
		}else if(str1.length == 2){
			o.message = str_field_description + ': Het netnummer moet bestaan uit minimaal 3 en maximaal 4 cijfers.';
			o.errorcode = -4;
		}
		else
		{
			o.status = true;
		}
	}
	else
	{
		o.status = true;
	}

	return o;
}

function checkinput_name(str, required, str_field_description)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	o.value = str;

	if(required || str.length > 0) {
		var regs = /[^-\' A-Za-z]/;
		if(str.length == 0)	{
			o.message = 'Geen ' + (str_field_description ? str_field_description : 'naam') + ' ingevoerd.';
			o.errorcode = -1;
		}
		else if(regs.test(str)) { 
			o.message = 'Ongeldig teken ingevoerd bij ' + (str_field_description ? str_field_description : 'naam') + '. Alleen letters, het koppelteken en apostrofs zijn toegestaan.';
			o.errorcode = -2;
 		}		
		else {
			o.status = true;
		}
	}
	else {
		o.status = true;
	}

	return o;
}

function checkinput_account(account_nr, account_type, required) {
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	account_nr = trim(account_nr);
	o.value = '';
	o.value1 = account_nr;
	o.value2 = account_type;

	if(required || account_nr.length > 0)
	{
		if(account_type != 'B' && account_type != 'G')
		{
			o.message = 'Geen rekeningtype (bank of giro) ingevoerd.';
			o.errorcode = -1;
		} 
		else if(account_nr.length == 0)
		{
			o.message = account_type == 'G' ? 'Geen girorekeningnummer ingevoerd.' : 'Geen bankrekeningnummer ingevoerd.';
			o.errorcode = -2;
		}
		else
		{
			if(account_type == 'G')
			{
				// *** Giro
				if(account_nr.match(/[^0-9]/) || account_nr.length > 7 || account_nr.length < 3 || account_nr.substring(0, 1) == '0')
				{
					o.message = 'Ongeldig girorekeningnummer ingevoerd.';
					o.errorcode = -3;
				}
				else
				{
					o.status = true;
				}
			}
			else 
			{
				// *** Bank
				if(account_nr.match(/[^0-9]/) || account_nr.length < 8 || account_nr == '123456789' || account_nr.substring(0, 7) == '0000000')
		{
					o.message = 'Ongeldig bankrekeningnummer ingevoerd.';
					o.errorcode = -4;
				}
				else
				{
					// 11-test
					check=0;  
					for(i=0;i<account_nr.length;i++)
						check += account_nr.charAt(i) * (account_nr.length-i);
					o.status = (check % 11)==0;
					if(o.status == false)
					{
						o.message = 'Ongeldig bankrekeningnummer ingevoerd.';
						o.errorcode = -5;
					}
				}
			}
		}
	}
	else
	{
		o.status = true;
	}

	return o;
}


function checkinput_ipaddress(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	o.value = str;

	if(!required && str.length == 0)
	{
		o.status = true;
	}
	else
	{
		m = str.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
		ipfail = false;
		if(m)
		{
			for(i=1; i<=4; i++)
				if(m[i] < 0 || m[i] > 255)
				{
					ipfail = true;
					break;
				}
			if(ipfail)
			{
				o.message = 'Foutief ip-adres ingevoerd.';
				o.errorcode = -1;
			}
			else
			{
				if(m[1] == 10 || m[1] == 127 || (m[1] == 192 && m[2] == 168) || (m[1] == 172 && m[2] >= 16 && m[2] <= 31))
				{
					o.message = 'Non-routable ip-adres ingevoerd.';
					o.errorcode = -3;
				}
				else
				{
					o.status = true;
				}
			}
		}
		else
		{
			o.message = 'Foutief ip-adres ingevoerd.';
			o.errorcode = -2;
		}
	}

	return o;
}

function checkinput_address_nr_addition(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	o.value = str;

	if(required || str.length > 0)
	{
		if(str.length == 0)
		{
			o.message = 'Geen huisnummer toevoeging ingevoerd.';
			o.errorcode = -1;
		}
		else if(str.match(/[^a-zA-Z0-9 ]/))
		{
			o.message = 'In de toevoeging van het huisnummer mogen alleen cijfers, letters en spaties voorkomen.';
			o.errorcode = -2;
		}
		else if(str.length > 10)
		{
			o.message = 'De maximale invoer voor een huisnummer toevoeging is 4 tekens.';
			o.errorcode = -3;
		}
		else
		{
			o.status = true;
		}
	}
	else
	{
		o.status = true;
	}

	return o;
}

function checkinput_organisation(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	str = str.toUpperCase();
	o.value = str;

	if(required || str.length > 0)
	{
		if(str.length == 0)
		{
			o.message = 'Geen organisatie naam ingevoerd.';
			o.errorcode = -1;
		}
		else
		{
			o.status = true;
		}
	}
	else
	{
		o.status = true;
	}
	return o;
}

function checkinput_street(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	str = str.toUpperCase();
	o.value = str;

	if(required || str.length > 0)
	{
		if(str.length == 0)
		{
			o.message = 'Geen straatnaam ingevoerd.';
			o.errorcode = -1;
		}
		else if (str.length > 36) {
			o.message = 'Straatnaam is niet correct ingevoerd.(Te lange straatnaam ingevoerd)';
			o.errorcode = -1;
		}
		else {
			if (str.match(/[^-\' .A-Za-z0-9]/)) {
				o.message = 'Ongeldige straatnaam ingevoerd.';
				o.errorcode = -2;
			}
			else {
				o.status = true;
			}
		}
	}
	else
	{
		o.status = true;
	}

    /**
     * Ticket #11492
     *
     * PO Box not allowed anymore
     *
     * @author David van Buiten <david@elements.nl>
     */
    if (str.match(/POST([ .\\-\\\\\/]*)BUS|P(\.?)O(\.?)([ \t\n\r\f]+)?BOX/)) {
        o.message = 'Het gebruik van een postbus is niet toegestaan.';
        o.errorcode = -3;
        o.status = false;
    }

	return o;
}

function checkinput_city(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	str = str.toUpperCase();
	o.value = str;

	if(required || str.length > 0)
	{
		if(str.length == 0)
		{
			o.message = 'Geen plaatsnaam ingevoerd.';
			o.errorcode = -1;
		}
		else
		{
			o.status = true;
		}
	}
	else
	{
		o.status = true;
	}
	return o;
}

function checkinput_initials(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	str = str.toUpperCase();
	o.value = str;

	if(required || str.length > 0)
	{
		var regs = /[^ .A-Za-z]/;
		if(str.length == 0)	{
			o.message = 'Geen voorletters ingevoerd.';
			o.errorcode = -1;
		}
		else if(regs.test(str)) { 
			o.message = 'Ongeldig teken ingevoerd bij voorletter(s). U kunt alleen letters, spaties en punten gebruiken.';
			o.errorcode = -2;
 		}
		else {
			o.status = true;
		}
	}
	else
	{
		o.status = true;
	}

	return o;
}

function checkinput_address_nr(str, required)
{
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	str = trim(str);
	o.value = str;

	if(required || str.length > 0)
	{
		if(str.length == 0)
		{
			o.message = 'Geen huisnummer ingevoerd.';
			o.errorcode = -1;
		}
		else if(str.match(/[^0-9]/))
{
			o.message = 'Het huisnummer mag alleen bestaan uit cijfers. Eventuele toevoegingen kunt u in het daarvoor bestemde veld invoeren.';
			o.errorcode = -2;
		}
		else if(str.length > 5)
		{
			o.message = 'De maximale invoer voor een huisnummer is 5 cijfers.';
			o.errorcode = -3;
		}
		else
		{
			o.status = true;
		}
	}
	else
	{
		o.status = true;
	}

	return o;
}

function checkinput_forbidden_domain(xdomain)
{
	o = new Object;					
	var forbidden_domains = new Array();

	for(xitem in forbidden_domains)
	{
		if(xdomain == forbidden_domains[xitem])
		{
			o.status = false;
			o.message = "Bij nadere controle over de beschikbaarheid is gebleken dat " + xdomain + " niet wordt uitgegeven.";
			return o;
		}
	}
	o.status = true;
	return o;
}

function checkinput_checked(field, message)
{
	o = new Object;	
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	if(field.checked)
	{
		o.status = true;
	}
	else
	{
		o.message = message;
	}
	
	return o;
}

function checkinput_legalform(str, required) {
	o = new Object;
	o.status = false;
	o.message = '';
	o.errorcode = 0;

	if (required && str.length <= 0)
	{
		o.message = 'U heeft uw rechtsvorm nog niet aangegeven.';
		o.errorcode = -1;
	}
	else
	{
		o.status = true;
	}

	return o;
}

