// JavaScript Document
var dtCh= "-";
var minYear=1900;
var maxYear=2100;

var errorCaption = '';
var errorCaptionColor = '#000000';
var errorInputBackground = '#efe6e3';
var errorInputColor = '#e64415';

var normalInputBackground = '';
var normalBorderColor = '#e0e0e0';
var normalInputColor = '#000000';



function submit_onclick(obj,post){
	var msg='';	
	var form=document.getElementById(obj);	
	var el = form.getElementsByTagName('label');

	for(i=0;i<form.elements.length;i++)
	{
		
		
	    if (form.elements[i].id != '' && form.elements[i].title != '' && (!isHidden(form.elements[i]))) 
		{
			
			//alert("form.elements[i].id["+form.elements[i].id+"]\nform.elements[i].title["+ form.elements[i].title+"]\ncontainer.accessKey["+form.elements[i].accessKey+"]");
	        if (form.elements[i].accessKey != undefined && form.elements[i].accessKey != '')
			{ 
				//alert("form.elements[i].id["+form.elements[i].id+"]\nform.elements[i].title["+ form.elements[i].title+"]\ncontainer.accessKey["+form.elements[i].accessKey+"]\ncontainer.accessKey["+form.elements[i].accessKey+"].style.display["+document.getElementById(form.elements[i].accessKey).style.display+"]");
				//if form element contains owner attribute
				if (document.getElementById(form.elements[i].accessKey).style.display != 'none') {
//                if(!isHidden(form.elements[i].id)){
	                msg = msg + chckField(form.elements[i], form.elements[i].title)											
	            }
	        }
	        else{		    
				msg = msg + chckField(form.elements[i],form.elements[i].title)											
			}
		}
	}


	for (var e = 0; e < el.length; e++) { //check for radio/checkboxes	
		var objLabel = el[e];
		var domLabel = document.getElementById(objLabel.getAttribute('id'));
		var domLabelText = document.getElementById(objLabel.getAttribute('id')).innerHTML;
		var id_1 = domLabel.id.replace('lbl','');
		
		var container = document.getElementById(id_1);
		if(!container)
			msg = msg + chckFieldRadio(id_1);
		else
		{
			if (container.accessKey != undefined && container.accessKey != '') 
			{
				//alert("container.accessKey["+container.accessKey+"]");
				if (document.getElementById(container.accessKey).style.display != 'none') 
					msg = msg + chckFieldRadio(id_1);
			}
			else
				msg = msg + chckFieldRadio(id_1);
		}
		
		
		
	}
	if (msg != '') {	
	    //alert("De volgende velden zijn verplicht:\n" + msg);
	    //if (document.getElementById('error_message')) document.getElementById('error_message').style.display = 'block';
	    return false;
	} else {
	    if (post) {
	        form.submit()
	    }
	}
}

function doubleChckFieldRadio(chckResult, field) { // dubbele check om evt. iets met de output te doen
	switch(field)
	{
		case "adsl":
			var obj = document.getElementById(field);
			var radioButtons = document.forms[0].adsl
			if(!obj || !radioButtons)break;
			for (var i=0; i < radioButtons.length; i++)
			{
				if (radioButtons[i].checked)
				{
					if(radioButtons[i].value=="1")
					{
						$('#cont_provider').css('display','block');
						$('#cont_phonecon').css('display','block');
						$('#provider').attr('title', 'Selecteer uw provider');
					}
					else
					{
						$('#cont_provider').css('display','none');
						$('#cont_keepline').css('display','none');
						$('#provider').attr('title', '');
					}
					
				}
			}
			//parent.calcHeightAlgemeen('contentframe');
			//obj.scrollTo();
			break;
			
		case "phonecon":
		
			var obj = document.getElementById(field);
			var radioButtons = document.forms[0].phonecon
			if(!obj || !radioButtons)break;

			for (var i=0; i < radioButtons.length; i++)
			{	
				if (radioButtons[i].checked)
				{
					if(radioButtons[i].value=="1")
						$('#cont_keepline').css('display','block')
					else
						$('#cont_keepline').css('display','none');
				}
			}
			//parent.calcHeightAlgemeen('contentframe');
			//obj.scrollTo();
			break;
	}
}

function chckFieldRadio(title) { // Voor checkboxes & radio buttons.
   var spanObj = document.getElementById(title + '_group');	
	var radio_checked1 = false;
	var radio_result = '';
	var allInputTags = spanObj.getElementsByTagName('INPUT');
	for (var c=0; c<allInputTags.length; c++) {
		if (allInputTags[c].checked) {
			radio_checked1 = true;
			radio_result = allInputTags[c].value;
			break;
		}
	}
	for (var c = 0; c < allInputTags.length; c++) {		    
	    errorLayout(allInputTags[c], radio_checked1, allInputTags[c].title);		
		//errorLayout(spanObj,radio_checked1,errorCaption);
	}
	if (!radio_checked1) { 
		return title;
	} else {
		return '';
	}
}

//place your checks here please
function chckField(obj,title) {
    var err = ''	
    if (obj.id.indexOf('email') > -1 && obj.value != '')
    {
        if (!isEmail(obj.value))
        {
            err = obj.title
            errorLayout(obj, false, '<span style="color:#ff0000">Gelieve een geldig e-mailadres in te vullen</span>');
        }
        else
        {
            if (document.getElementById('email') && document.getElementById('email2')) {
                if (document.getElementById('email').value != '' && document.getElementById('email2').value != '') {
                    if (document.getElementById('email').value != document.getElementById('email2').value) {
                        errorLayout(obj, false, 'De emailadressen zijn niet gelijk aan elkaar');
                    }
                    else {
                        errorLayout(document.getElementById('email'), true, '');
                        errorLayout(document.getElementById('email2'), true, '');
                    }
                }
            }
            else {
								if (document.getElementById('email'))
								{
	                errorLayout(document.getElementById('email'), true, '');
								}
									else
								{
			             errorLayout(document.getElementById('saveemail'), true, '');
								}
            }
				}
    }
    else
    {
        if (obj.id.indexOf('bankaccountnumber') > -1 && obj.value != '') 
        {
            if (obj.value.length == 5 || obj.value.length == 6 || obj.value.length == 7) 
	    {   if (!doSpamCheck(obj.value)) 
		{	err = 'Ongeldig rekeningnummer'
                    	errorLayout(obj, false, 'Banknummer is niet geldig')
		}	else
		{	errorLayout(obj, true, '')
		}
            }
            else
            {
                if (obj.value.length == 9 || obj.value.length == 10)
                {
                    if (doElfCheck(obj.value) != '') 
                    {
                        err = obj.title
                        errorLayout(obj, false, doElfCheck(obj.value))
                    }
                    else
                    {
                        err = ''
                        errorLayout(obj, true, '')
                    }
                }
                else
                {   
                    err = 'Ongeldig rekeningnummer'
                    errorLayout(obj, false, 'Banknummer moet minstens 9 cijferig zijn, gironummer minstens 5')
                }
            }
        }
        else
        {
            if (obj.id.indexOf('phonenumber') > -1 && obj.value != '')
            {	
                if (obj.value.length < 10) 
                {
                    err = obj.title
                    errorLayout(obj, false, '<span style="color:#ff0000">Een telefoonnummer bestaat uit 10 cijfers</span>');
                }
                else
                {	if (!doSpamCheck(obj.value)) 
			{	err = 'Ongeldig telefoonnummer'
                    		errorLayout(obj, false, '<span style="color:#ff0000">Telefoonnummer is niet geldig</span>')
			}	else
			{	errorLayout(obj, true, '');
			}
                }
            }
            else
					{
							if (obj.id.indexOf('zipcode') > -1 && obj.value != '')
							{
									if (!validatePostalCode(obj.value)) 
									{
											err = obj.title
	                    errorLayout(obj, false, '<span style="color:#ff0000">Een postcode bestaat uit 4 cijfers en 2 letters</span>');
									}
									else
									{
											errorLayout(obj, true, '');
									}
							}
							else
	
							{
									if (obj.id.indexOf('_DD') > -1) 
									{                    
											if (!isDate(document.getElementById(obj.id.replace('_DD','')).value)) 
											{
													err = obj.title
													errorLayout(obj, false, 'De ingevoerde datum is incorrect');
													errorLayout(document.getElementById(obj.id.replace('_DD','_MM')), false, 'De ingevoerde datum is incorrect');
													errorLayout(document.getElementById(obj.id.replace('_DD','_YY')), false, 'De ingevoerde datum is incorrect');
											}
											else 
											{												
												if(!FV_IsDateIsBirthDate(document.getElementById(obj.id.replace('_DD','')).value)){						
													err = obj.title + " ";
													errorLayout(obj, false, '<span style="color:#ff0000">Bestellen is mogelijk vanaf 18 jaar</span>');
													errorLayout(document.getElementById(obj.id.replace('_DD','_MM')), false, 'De ingevoerde datum is incorrect');
													errorLayout(document.getElementById(obj.id.replace('_DD','_YY')), false, 'De ingevoerde datum is incorrect');
												}else{
													errorLayout(obj, true, '');
													errorLayout(document.getElementById(obj.id.replace('_DD','_MM')), true, '');
													errorLayout(document.getElementById(obj.id.replace('_DD','_YY')), true, '');
												}
											}
									}
									else
									{
											if (obj.type == 'checkbox') 
											{
													if (!obj.checked) 
													{
															err = obj.title                            
															errorLayout(obj, false, err);
													}
													else 
													{
															errorLayout(obj, true, '');
													}
											}
											else 
											{
													if ((obj.value == '' || obj.value == title) && obj.title != '') 
													{
															err = obj.title
															errorLayout(obj, false, err);
													}
													else 
													{
															errorLayout(obj, true, '');
													}
											}
									}
							}
					}
				}
    }
    return err
}


function errorLayout(obj,ok,error){ //set colors submit_onclick form if error		
	if(ok){
		obj.style.backgroundColor = normalInputBackground;
		obj.style.border = '1px solid ' + normalBorderColor;
		obj.style.color = normalInputColor;
		if (obj.id != 'saveemail'){
			if(document.getElementById('marker_'+obj.id)) {
						document.getElementById('marker_'+obj.id).innerHTML=''
			}
			
			if(document.getElementById('marker2_'+obj.id)) {
					document.getElementById('marker2_'+obj.id).innerHTML='<img src="img/vinkje.gif" alt="" />'
			}
		}
	}else{
		obj.style.backgroundColor = errorInputBackground;
		obj.style.border = '1px solid ' + errorInputColor;		
		obj.style.fontWeight=''
//		obj.style.background = errorInputBackgroundImage;
		if(document.getElementById('marker_'+obj.id)) {
		    document.getElementById('marker_' + obj.id).innerHTML = error + '<br>'
			//document.getElementById('marker_'+obj.id).style.fontWeight = 'bold';
			if(obj.id == ('akkoordVoorwaarden2'))
			{
				document.getElementById('marker_'+obj.id).style.color = '#ff0000';	
			}
		}
		if(document.getElementById('marker2_'+obj.id)) {
					document.getElementById('marker2_'+obj.id).innerHTML='<img src="img/error.gif" alt="" />'
		}
		if(document.getElementById('marker_'+obj.id)) {
			document.getElementById('marker_'+obj.id).style.color = '#ff0000';	
		}
	}
}


function isEmail(string) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(string)) 
		return true;
	else
		return false;
}

function isNumberKey(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which			
	return (k != 17 && (k > 47 && k < 58) || k==8 || k==9 || k==0);
}

function isEnterKey(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	if(k == 13){
		getLocs()
	}
}


function isTextKey(e){
	var k;
    document.all ? k = e.keyCode : k = e.which;
	return(k != 59)
}

function isTelefoonKey(e) {
    var k;
    document.all ? k = e.keyCode : k = e.which;
    return (k != 17 && (k > 47 && k < 58) || k == 8 || k == 9 || k == 0 || k == 40 || k == 41 || k == 45 || k ==43 || k == 46);
	
}

//function isTelefoon(obj,e) {
//	var k;
//	document.all ? k = e.keyCode : k = e.which;
//	if(obj.value.length<10){
//		return ((k > 47 && k < 58 || k == 46 || k == 8 || k==9 || k==0 || (k > 95 && k < 106) ));
//	}else{
//		alert('Een telefoonnummer kan max. 10 cijfers lang te zijn.')
//	}
//}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var arrDate = dtStr.split(dtCh)
	strDay=arrDate[0]	
	strMonth=arrDate[1]
	strYear=arrDate[2]
	if(isNaN(strDay) || isNaN(strMonth) || isNaN(strYear)) return false	
	if(strDay.length>0 && strMonth.length>0 && strYear.length>0) {
		//Alleen wanneer het eerste karakter een 0 is
		if(strMonth.indexOf('0') == 0){strMonth = strMonth.replace('0','')}
		month=parseInt(strMonth)		
		day=parseInt(strDay)				
		year=parseInt(strYear)		
		if (day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || (day > daysInMonth[month] || daysInMonth[month]==undefined ) || (strYear.length<4)  ){
				return false
		}
		return true
	}else{
		return false
	}
}

function FV_IsDateIsBirthDate(val) {

	var now = new Date();
	var thisYear = now.getFullYear() - 18  //minimum 18 years old
	now.setFullYear(thisYear)
	now = now.getTime(); //NN3

	var valueDate = val.split('-');
	
	var dateToCheck = new Date();
	if (valueDate[2] < 1900) {
		return false;
	}
	dateToCheck.setYear(valueDate[2]);
	dateToCheck.setMonth(valueDate[1]-1);
	dateToCheck.setDate(valueDate[0]);
	var checkDate = dateToCheck.getTime();

	var pastDate = (now > checkDate);

	return pastDate;
}

function FV_IsDateInPast(val) {

	var now = new Date();
	now = now.getTime(); //NN3
	
	var valueDate = val.split('-');
	
	var dateToCheck = new Date();
	dateToCheck.setYear(valueDate[2]);
	dateToCheck.setMonth(valueDate[1]-1);
	dateToCheck.setDate(valueDate[0]-1);
	var checkDate = dateToCheck.getTime();

	var pastDate = (now > checkDate);

	return pastDate;
}

function doElfCheck(bankNummer) {
  var totaal = 0  
  var bankgiro = bankNummer
  var oneToTen = new Array()
  if (bankgiro.length == 9) {
      oneToTen[0] = 10 * bankgiro.substring(0, 0)
      oneToTen[1] = 9 * bankgiro.substring(0, 1)
      oneToTen[2] = 8 * bankgiro.substring(1, 2)
      oneToTen[3] = 7 * bankgiro.substring(2, 3)
      oneToTen[4] = 6 * bankgiro.substring(3, 4)
      oneToTen[5] = 5 * bankgiro.substring(4, 5)
      oneToTen[6] = 4 * bankgiro.substring(5, 6)
      oneToTen[7] = 3 * bankgiro.substring(6, 7)
      oneToTen[8] = 2 * bankgiro.substring(7, 8)
      oneToTen[9] = 1 * bankgiro.substring(8, 9)
      for (var i = 0; i < 10; i++) {
          totaal = totaal + oneToTen[i]
      }
      totaal = totaal / 11      
      if (totaal != Math.round(totaal)) {
          return "Ongeldig bank/girorekening";
      } else {
          return ""
      }
  } else if (bankgiro.length == 10) {
      oneToTen[0] = 10 * bankgiro.substring(0, 1)
      oneToTen[1] = 9 * bankgiro.substring(1, 2)
      oneToTen[2] = 8 * bankgiro.substring(2, 3)
      oneToTen[3] = 7 * bankgiro.substring(3, 4)
      oneToTen[4] = 6 * bankgiro.substring(4, 5)
      oneToTen[5] = 5 * bankgiro.substring(5, 6)
      oneToTen[6] = 4 * bankgiro.substring(6, 7)
      oneToTen[7] = 3 * bankgiro.substring(7, 8)
      oneToTen[8] = 2 * bankgiro.substring(8, 9)
      oneToTen[9] = 1 * bankgiro.substring(9, 10)
      for (var i = 0; i < 10; i++) {
          totaal = totaal + oneToTen[i]
      }
      totaal = totaal / 11      
      if (totaal != Math.round(totaal)) {
          return "Ongeldig bank/girorekening";
      } else {
          return ""
      }
  } else { return "Ongeldig bank/girorekening" }
	return ""
}

function doSpamCheck(str) 
{	var OK=true
	var arrSpam =new Array("12345","00000","11111","22222","33333","44444","55555","66666","77777","88888","99999"); // condensed array
	if (str!='')
	{	for (t=0;t<arrSpam.length;t++)
		{	if (str.indexOf(arrSpam[t], 0)>=0) OK=false
		}
	}

	return(OK)
}

function getStyle(elem, name) {
    /*   if (elem.style[name]) {
    return elem.style[name];
    }

    else */

    if (elem.currentStyle) {
        return elem.currentStyle[name];
    }

    else if (document.defaultView && document.defaultView.getComputedStyle) {
        name = name.replace(/([A-Z])/g, "-$1");
        name = name.toLowerCase();

        var s = document.defaultView.getComputedStyle(elem, "");
        return s && s.getPropertyValue(name);
    }

    else {
        return null;
    }
}

function isHidden(dOb) {
    var 
			display = getStyle(dOb, 'display'),
			parent = dOb.parentNode;

    if (display === 'none') {
        return true
    }

    else if (parent && parent.tagName != 'HTML') {
        return isHidden(parent);
    }

    else {
        return false;
    }
}

function validatePostalCode(strPC) {
  return typeof strPC=='string' ? strPC.match(/[1-9][0-9]{3} ?[a-zA-Z]{2}/)==strPC : false;
}

// from John Resig's book on JS
var getStyle = function (elem, name) {
	if (elem.style[name]) {
		return elem.style[name];
	}	else if (elem.currentStyle) {
		return elem.currentStyle[name];
	}	else if (document.defaultView && document.defaultView.getComputedStyle) {
		name = name.replace(/([A-Z])/g, "-$1");
		name = name.toLowerCase();
		var s = document.defaultView.getComputedStyle(elem, "");
		return s && s.getPropertyValue(name);
	} else {
	return null;
	}
}

var isHidden = function (dOb) {
	while (dOb && dOb !== document && dOb.tagName !== undefined) {
	if (getStyle(dOb, 'display') === 'none') {
		return true;
	}
	dOb = dOb.parentNode;
	}
	return false;
}

