/*
 * (C)opyright TotalWebBoost.nl
 */

function isOndersteuningRegExpCode()
{
	if (window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr))
			return true;
	}
	return false;
}

String.prototype.ltrim = function () { return this.replace("/^ */",""); }
String.prototype.rtrim = function () { return this.replace("/ *$/",""); }
String.prototype.trim = function () { return this.ltrim().rtrim(); }

function isGeldigeVoornaam(invoer)
{
	return invoer.trim().length >= 2;
}

function isGeldigeAchternaam(invoer)
{
	return invoer.trim().length >= 2;
}

function isGeldigeNaam(invoer)
{
	return invoer.trim().length >= 5 + 1;
}

function isGeldigePlaats(invoer)
{
	return invoer.trim().length >= 2;
}

function isGeldigeStraatnaam(invoer)
{
	return invoer.trim().length >= 2;
}

function isGeldigBurgerservicenummer(invoer)
{
	var is_geldig = (invoer.trim().length == 9);
	var sum = 0;
	for (var i = 0; i < 8; i++)
		sum += (9-i) * parseInt(invoer.charAt(i));
    sum -= parseInt(invoer.charAt(8));
    if (!((sum % 11) == 0))
		is_geldig = false; 
    return is_geldig;
} 

function isGeldigBankrekeningnummer(invoer)
{
	var is_geldig = true;
	invoer = invoer.replace(/\D/, "");
	
	if (invoer.length == 10)
		is_geldig = is_geldig && (parseInt(invoer) > 0);
	else if (invoer.length == 9)
	{
		// verwijder alle tekens die geen cijfers zijn
		var sum = 0;
		
		// loop door de 9 cijfers met de 11 proef formule
		for (var i = 0; i < 9; i++)
			sum += (9-i) * parseInt(invoer.charAt(i));
		
		// geef resultaat van check terug
		is_geldig = is_geldig && ((sum % 11) == 0);
	}
	else if ((invoer.length >= 3) && (invoer.length <= 7))
		// postbank is niet te controleren
		is_geldig = is_geldig && (parseInt(invoer) > 0);
	else
		is_geldig = false; 
	
	return is_geldig;
}

function isGeldigEmailadres(invoer)
{
	var is_geldig = (invoer.indexOf(".") > 0)
					&& (invoer.indexOf("@") > 0)
					&& (invoer.trim().length > 5);
	if (isOndersteuningRegExpCode())
	{
		var r1 = new RegExp("(@.*@)|(//.//.)|(@//.)|(^//.)");
		var r2 = new RegExp("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$");
    	is_geldig = is_geldig && !r1.test(invoer) && r2.test(invoer);
    	
    	// var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
		// if(invoer.match(emailExp)) return true;
    }
	return is_geldig;
}

function isGeldigTelefoonnummer(invoer)
{
	var is_geldig = (invoer.trim().length >= 10);
	if (isOndersteuningRegExpCode())
	{
		var r = new RegExp("^[0|+][0-9 .+-//(//)]*$");
    	is_geldig = is_geldig && r.test(invoer);
    }
	return is_geldig;
}

function isGeldigePostcode(invoer)
{
	var is_geldig = (invoer.trim().length >= 6)
					&& (invoer.trim().length <= 7); 
	if (isOndersteuningRegExpCode())
	{
		var r = new RegExp("^\\d{4}\\s*\\D{2}$");
		is_geldig = is_geldig && r.test(invoer);
	}
	return is_geldig;	
}

function isGeldigePostcode4(invoer)
{
	var is_geldig = (invoer.trim().length == 4)
					&& (intval(invoer) >= 1000)
					&& (intval(invoer) <= 9999); 
	if (isOndersteuningRegExpCode())
	{
		var r = new RegExp("^\\d{4}$");
		is_geldig = is_geldig && r.test(invoer);	
	}
	return is_geldig;
}

function isGeldigePostcode2(invoer)
{
	var is_geldig = (invoer.trim().length == 2);
	if (isOndersteuningRegExpCode())
	{
		var r = new RegExp("^\\D{2}$");
		is_geldig = is_geldig & r.test(invoer);
	}
	return is_geldig;
}

function isGetal(invoer)
{
	if (!isOndersteuningRegExpCode())
		return true;

	var r = new RegExp("^\\d+$");
	
	//var alphaExp = /^[0-9a-zA-Z]+$/;
	// if(invoer.match(alphaExp)) return true;
	
	//var numericExpression = /^[0-9]+$/;
	// if(invoer.match(numericExpression)) return true;
	
	return (r.test(invoer));
}

function isValuta(invoer)
{
	if (!isOndersteuningRegExpCode())
		return true;

	var r = new RegExp("^(?!\\u00a2)\\p{Sc}?(?!0,?\\d)(?:\\d{1,3}(?:([, .])\\d{3})?(?:\\1\\d{3})*|(?:\\d+))((?!\\1)[,.]\\d{2})?$");
	
	return (r.test(invoer));
}

function processExternalLinks()
{
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++)
	{
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
		{
			anchor.target = "_blank";
			if ((anchor.getAttribute("href").substring(0, 7) == "http://") || (anchor.getAttribute("href").substring(0, 8) == "https://"))
				//anchor.href = "offsite.php?url=" + anchor.href;
				anchor.href = "offsite.php?url=" + encodeURIComponent(anchor.href);
		}
 	}
}

function intval(mixed_var, base)
{
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: stensi
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Matteo
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: intval('Kevin van Zonneveld');
    // *     returns 1: 0
    // *     example 2: intval(4.2);
    // *     returns 2: 4
    // *     example 3: intval(42, 8);
    // *     returns 3: 42
    // *     example 4: intval('09');
    // *     returns 4: 9
    // *     example 5: intval('1e', 16);
    // *     returns 5: 30

    var tmp;

    var type = typeof(mixed_var);

    if (type === 'boolean') {
        return (mixed_var) ? 1 : 0;
    } else if (type === 'string') {
        tmp = parseInt(mixed_var, base || 10);
        return (isNaN(tmp) || !isFinite(tmp)) ? 0 : tmp;
    } else if (type === 'number' && isFinite(mixed_var) ) {
        return Math.floor(mixed_var);
    } else {
        return 0;
    }
}

function urlencode(str) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // +      input by: Ratheous
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Joris
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // %          note 1: This reflects PHP 5.3/6.0+ behavior
    // %        note 2: Please be aware that this function expects to encode into UTF-8 encoded strings, as found on
    // %        note 2: pages served as UTF-8
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'

    str = (str+'').toString();
    
    // Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
    // PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
                                                                    replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}

window.onload = processExternalLinks;