// JavaScript Document
var dtCh= "-";
var minYear=1900;
var maxYear=2100;

var errorCaptionColor = '';
var errorInputBackground = '';
var errorInputBackgroundGrey = '';
var errorInputBackgroundGreen = '';
var errorInputColor = '';
var errorClassName = 'error';
var normalInputBackground = '';
var normalInputColor = '';

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 != '') {
			if (form.elements[i].accessKey != undefined && form.elements[i].accessKey != '') { //if form element contains owner attribute
				if (document.getElementById(form.elements[i].accessKey).style.display != 'none') { //then only check if shown
					msg = msg + chckField(form.elements[i], form.elements[i].title)
				}
			} else {
				msg = msg + chckField(form.elements[i], form.elements[i].title)
			}
		}
		else if (form.elements[i].id.indexOf('Phone') > -1) {
			msg = msg + chckField(form.elements[i], form.elements[i].title)
		}
		else if (form.elements[i].id.indexOf('Mobile') > -1) {
			msg = msg + chckField(form.elements[i], form.elements[i].title)
		}
		else if (form.elements[i].id.indexOf('PostalCode') > -1 && jQuery.trim($(form.elements[i]).val()) != '') {
			msg = msg + chckField(form.elements[i], form.elements[i].title)
		}
		else if (form.elements[i].id.indexOf('BestBefore') > -1 && jQuery.trim($(form.elements[i]).val()) != '') {
			msg = msg + chckField(form.elements[i], form.elements[i].title)
		}
		else if ((form.elements[i].id.indexOf('birthday_ValueDate') > -1) && jQuery.trim($(form.elements[i]).val()) != '') {
			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];
		if ((objLabel) && (objLabel.getAttribute('title'))) {
			var domLabel = document.getElementById(objLabel.getAttribute('id'));
			if (domLabel) {
				var domLabelText = document.getElementById(objLabel.getAttribute('id')).innerHTML;
				var id_1 = domLabel.id.replace('lbl', '')
				msg = msg + chckFieldRadio(id_1);
			}
		}
	}
	if (msg != '') {
		return false;
		
	} else {
		if (post) {
			$('#consuSubmitBtn').hide();
			$('#contButton').html(msgProcessingForm);
			return true;
		}
	}
}

function chckFieldRadio(title) { // Voor checkboxes & radio buttons.
    var radio_checked1 = false;
    var radio_result = '';
    var spanObj = document.getElementById('consuField_' + title);
    if (spanObj) {
        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++) {
            try {
                if (eval('msg' + title)) {
                    errorLayout(allInputTags[c], radio_checked1, eval('msg' + title));
                } else {
                    errorLayout(allInputTags[c], radio_checked1, errorCaption);
                }
            } catch (err) {
                errorLayout(allInputTags[c], radio_checked1, errorCaption);
            }
        }
    }
	if (!radio_checked1) { 
		return title;
	} else {
		return '';
	}
}

//place your checks here please
function chckField(obj, title) {
    var err = '';
    var val = jQuery.trim($(obj).val());
    $(obj).val(val);
	if (obj.id.indexOf('BestBefore') > -1 && val != '') {
	    if (!isDate(val)) {
	        err = 1
	        errorLayout(obj, false, msgIncorrectDate);
	    } else {
	        errorLayout(obj, true, '');
	    }
	}
	else if ((obj.id.indexOf('birthday_ValueDate') > -1) && val != '') {
	    if (!isDate(val)) {
	        err = 1
	        errorLayout(obj, false, msgIncorrectDate);
	    } else {
	        errorLayout(obj, true, '');
	    }
	}
	else if ((obj.id.indexOf('birthday_ValueNumeric') > -1) && val != '') {
	    if ( val.length != 4 || !isNumeric(val) ) {
	        err = 1
	        errorLayout(obj, false, msgIncorrectYear);
	    }
	    else {
	        var now = new Date();
	        var year18 = now.getFullYear() - 17;   //minimum 18 years old	        
	        if ((val <= 1900) || (year18 <= val)) {
	            err = 1
	            errorLayout(obj, false, msgMinumum18);
	        }
	        else {
	            errorLayout(obj, true, '');
	        }
	    }
	}
	else if ((obj.id.indexOf('Phone') > -1 || obj.id.indexOf('Mobile') > -1) && val != '') {
	    if ($("#CountryIDFK").val() == '47' || document.getElementById('CountryIDFK') == undefined) { // Als land nederland is.	
	        if (!isPhone(val)) {
	            err = 1
	            errorLayout(obj, false, msgIncorrectPhone);
	        } else {
	            errorLayout(obj, true, '');
	        }
	    }
	}	
	else if (obj.id.indexOf('PostalCode') > -1 && val != '') {
	    if ($("#CountryIDFK").val() == '47' || document.getElementById('CountryIDFK') == undefined) { // Als land nederland is.
	        if (!isZipcode(val)) {
	            err = 1
	            errorLayout(obj, false, msgIncorrectZipcode);
	        } else {
	            errorLayout(obj, true, '');
	        }
	    }
	}
	else if (obj.id.indexOf('email') > -1 && val != '') {
	    if (!isEmail(val)) {
	        err = 1
	        errorLayout(obj, false, msgIncorrectEmail);
	    } else {
	        errorLayout(obj, true, '');
	    }
	}
	else if (obj.id.indexOf('HouseNumber') > -1 && val != '') {
	    if (!isNumeric(val)) {
	        err = 1
	        errorLayout(obj, false, msgIncorrectNumber);
	    } else {
	        errorLayout(obj, true, '');
	    }
	} 	
	else {
	    if (obj.id.indexOf('street') > -1 && val != '' && !(obj.id.indexOf('number') > -1)) {
	        if (document.getElementById(obj.id + 'number').value == '') {
	            errorLayout(obj, false, title);
	        } else {
	            errorLayout(obj, true, '');
	        }
	    } else {
            if (obj.id == ('dob_date')) {
                var replaceDate = val;
                for (var d = 0; d < 2; d++) {
                    replaceDate = replaceDate.replace("/", "-");
                }
                if (!FV_IsDateIsBirthDate(replaceDate) || !(isDate(replaceDate))) {
                    err = 1
                    errorLayout(obj, false, errorCaption);
                } else {
                    errorLayout(obj, true, '');
                }
            } else {
                if (obj.type == 'checkbox') {
                    if (!obj.checked) {
                        err = 1
                        errorLayout(obj, false, errorCaption);
                    } else {
                        errorLayout(obj, true, '');
                    }
                } else {
                    if ((val == '' || val == title) && obj.title != '') {
                        err = 1
                        try {
                            if (eval('msg' + obj.id)) {
                                errorLayout(obj, false, eval('msg' + obj.id));
                            } else {
                                errorLayout(obj, false, errorCaption);
                            }
                       } catch(err) {
                           errorLayout(obj, false, errorCaption);
                       }
                    } else {
                        errorLayout(obj, true, '');
                    }
                }
            }
	    }
	}
	return err
}


function errorLayout(obj, ok, error) { //set colors submit_onclick form if error		
	if (ok) {
		$(obj).parents("span").parents("span").removeClass('tbErr');
		$("#marker_" + $(obj).attr("name")).html('');
		$("#marker_" + $(obj).attr("name")).hide();
	} else {
		$(obj).parents("span").parents("span").addClass('tbErr' + (isBuggyBrowser() ? ' ie' : ''));

		$("#marker_" + $(obj).attr("name")).show();
		$("#marker_" + $(obj).attr("name")).html(error + "&nbsp;");
	}
}

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 isNumeric(string) {
    var filter = /^\d+$/;
    if (filter.test(string))
        return true;
    else
        return false;
}

function isZipcode(string) {
    var filter = /^([0-9]){4}( ){0,1}([A-Za-z]){2}$/;
    if (filter.test(string))
        return true;
    else
        return false;
}

function isPhone(string) {
    if ((string.length == 10) && (string.substring(0, 1) == '0') && (IsNumeric(string))) {
        return true;
    } else {
        return false;
    }
}

function isDate(string) {
    var filter = /^([0-9]){1,2}\-([0-9]){1,2}\-([0-9]){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 > 47 && k < 58) || k == 46 || k==8 || k==9 || k==0);
}

function isEnterKey(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	if(k == 13){
		getLocs()
	}
}


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) {
		month=parseInt(strMonth)		
		day=parseFloat(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 countTextarea(o, nr) {
    var counter = document.getElementById(o.id + "_counter");

    var val = o.value;
    if (val.length > nr) {
        o.value = val.substring(0, nr-1);
        o.focus();
    }
    
    if(counter){
        counter.innerHTML = val.length;
    }
}

function getOnlyNumbers(strString) {   
    //  check for valid numeric strings
    var strValidChars = "0123456789";   
    var strChar;
    var blnResult = true;
    var result = "";
    if (strString.length == 0) return "";    
    //  test strString consists of valid characters listed above
    for (var i = 0; i < strString.length && blnResult == true; i++)
    {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) != -1) {            
            result += strChar;
        }
        else {
            blnResult = false;
        }
    }      
    return result;
}

function IsNumeric(strString){  
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (var i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }
