/*
 * (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 isGeldigGeslacht(invoer)
{
	return ((invoer == 'm') || (invoer == 'v'));
}

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, '+');
}

function controleerBkrCodering(bkr_codering)
{
	if (bkr_codering == 1)
	{
		var antwoord = confirm('U hebt opgegeven een negatieve BKR codering te hebben.'
							   + 'Indien u de schuld nog niet (volledig) hebt afgelost, kunt u geen woningfinanciering krijgen.'
							   + 'U komt in dat geval ook niet in aanmerking voor eventuele subsidies of kortingen.'
							   + 'Druk op \'Ok\' om toch een berekening te maken / aanvraag te doen, of op \'Annuleren\' om terug te keren naar het reactieformulier.');
		if (antwoord)
		{
			alert('De reactie die u zodadelijk ontvangt kan erg summier zijn omdat veel mogelijkheden wegvallen in geval van een negatieve BKR codering.');
		}
		else
		{
			return false;
		}
	}
	
	return true;
}

function controleerInkomen(inkomen, medebewoner_inkomen)
{
	if ((inkomen + medebewoner_inkomen) < 18000)
	{
		var antwoord = confirm('U hebt een (gezamenlijk) jaarinkomen onder de EUR 18.000,- opgegeven.'
							   + 'Indien u geen andere middelen hebt (zoals voldoende eigen vermogen of een inkomenspartner), kunt u 99% zeker geen woningfinanciering krijgen.'
							   + 'U komt in dat geval ook niet in aanmerking voor eventuele subsidies of kortingen.'
							   + 'Druk op \'Ok\' om toch een berekening te maken / aanvraag te doen, of op \'Annuleren\' om terug te keren naar het reactieformulier.');
		if (antwoord)
		{
			alert('De reactie die u zodadelijk ontvangt kan erg summier zijn omdat veel mogelijkheden wegvallen voor de laagste inkomenscategorien.');
		}
		else
		{
			return false;
		}
	}
	
	return true;
}

function showPreview(element_id)
{
	var html = document.getElementById(element_id).value;
	if (html.length > 2000)
	{
		alert('Weer te geven HTML Code kan niet meer dan 2.000 tekens lang zijn. Opgegeven HTML Code is momenteel ' + html.length + ' tekens lang.');
		return false;
	}
	var url = 'preview.html?q=' + encodeURIComponent(html);
	// same window
	//location.href = url;
	// new window
	window.open(url);
}

window.onload = processExternalLinks;
