function submitFormEnter(event){
	if (!event) { // IE comaptibility
		event = window.event;
	}
	if (event.keyCode == '13') {
		document.wizardLoginForm.submit();
	}
}

function handleGenericErrorMessages(prefix,errorMessages,errorMessageObject){
	var errorMessageString = "";
	$(errorMessageObject).html("<ul class=\"all_error_list\"></ul>")
	$('.all_input_error').removeClass('all_input_error');
	for (var key in errorMessages) {
		if(key!="error"){
			$("#"+prefix+"_"+key).addClass("all_input_error");
			$(errorMessageObject).find("ul.all_error_list").append($("<li>"+errorMessages[key]+"</li>"));
		}
	}
	$(errorMessageObject).parent().show();
}

function ensureAttributeValue(form, elementName, attribute){
	var element = form.elements[elementName];
	if (element != null) {
		return (element.getAttribute(attribute));
	}
}
function ensureRadioAttributeValue(form, elementName, attribute){
	var element  = form[elementName];
	if (element != null) {
		return element[0].getAttribute(attribute);
	}
}

function ensureStringObjectId(objectId){
	var object   = document.getElementById(objectId);
	return ensureStringObject(object);
}

function ensureStringObject(object){
	var value   = object.value;
	if (value != "") {
		removeCSSClassByObject(object,"all_input_error");
		return true;
	}
	addCSSClassByObject(object,"all_input_error");
	return false;
}


function ensureInternationalPhoneNumberObject(object) {
	var value   = object.value;
	var phoneRe = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;
	if(value == "" || !phoneRe.test(value)) {
		addCSSClassByObject(object,"all_input_error");
		return false;
	} else {
		removeCSSClassByObject(object,"all_input_error");
		return true;
	}
}

function ensureEmailAddressObjectId(objectId){
	var object   = document.getElementById(objectId);
	return ensureEmailAddressObject(object);
}

function ensureEmailAddressObject(object) {
	var value   = object.value;
	if (/^\w+([\.\&-]?\w*)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(value)) {
		removeCSSClassByObject(object,"all_input_error");
		return true;
	} else {
		addCSSClassByObject(object,"all_input_error");
		return false;
	}
}

function ensureNumberObjectId(objectId){
	var object   = document.getElementById(objectId);
	return ensureNumberObject(object);
}

function ensureNumberObject(object){
	var value   = object.value;
	var number  = parseInt(value);
	var syntaxOk=true;
	var re = /([0-9])/;
	if (isNaN(number)) {
		addCSSClassByObject(object,"all_input_error");
		return false;
	} else {
		for (i =0; i < value.length && syntaxOk; i++){
			var tempValue= value.charAt(i);
			if (re.test(tempValue) == false) {
				addCSSClassByObject(object,"all_input_error");
				return false;
			}
		}		
		removeCSSClassByObject(object,"all_input_error");
		return true
	}
}

function ensureRadioElementsChecked(element)
{
	var checked = false;
	for (i=0;i < element.length;i++) {
       	if (element[i].checked) {
       		checked = true; 
       		break;
       	}
	}
	return checked;
}


function ensureCheckBoxesId(objectId){
	var object   = document.getElementById(objectId);
	return ensureCheckBoxesObject(object);
}
	
function ensureCheckBoxesObject(object){
    var elementExists = "" + object;
	
    if(elementExists != 'undefined' || elementExists != 'null')	
	{
		var nothingChecked = true;
	    for (var i=0; i < object.length ; i++) {
		  if (object[i].checked == true) {
			 nothingChecked = false;
		  }
	    } 
	    if (nothingChecked)	{
			return false;
	    } else {
			return true;
	    }
   }
}

function ensureFileObjectId(objectId, allowedExtensions) {
	var object   = document.getElementById(objectId);
	return ensureFileObject(object,allowedExtensions);
}

function ensureFileObject(object, allowedExtensions) {
	var valid = false;
	if (object.value != "") {
		var fileName = object.value.toLowerCase();
		if(allowedExtensions == "*"){
			valid = true;
		}
		else { 
			for (var n = 0; n < allowedExtensions.length; n++) {
				if (object.value.lastIndexOf(allowedExtensions[n]) != -1) {
					valid = true;
					break;
				}
			}
		}
	}
	if (valid) {
		removeCSSClassByObject(document.getElementById(object.id+"_id"),"all_input_error");
		return true;
	} 
	else {
		addCSSClassByObject(document.getElementById(object.id+"_id"),"all_input_error");
		return false;
	}
}

function ensureListObjectId(objectId){
	var object   = document.getElementById(objectId);
	return ensureListObject(object);
}

function ensureListObject(object){
	var selected = false;
	if(object) {
		for (i=0; i < object.length; i++){
			if (object[i].selected && object[i].value != ""){
				selected = true;
				break;
			}
		}
		if (selected) {
			removeCSSClassByObject(object,"all_input_error");
		} 
		else {
			addCSSClassByObject(object,"all_input_error");
		}
	}
	return selected;
}

function isValid(entry) {
	var validChar='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
	var strlen=entry.length;
	var entry=entry.toUpperCase();          
	for (i=0; i < strlen; i++ ) {
	   if (validChar.indexOf(entry.charAt(i)) < 0) {
    	   return false;
       }
    }
	return true;
}

function ensureZipCodeObjectId(objectNumId,objectAplhaId){
	return ensureZipCodeObject(document.getElementById(objectNumId),document.getElementById(objectAplhaId));
}

function ensureZipCodeObject(objectNum,objectAlpha){
	var value   = objectNum.value+objectAlpha.value;
	if (/^[0-9]{4}[A-Za-z]{2}$/.test(value)) {
		removeInputErrorObject(objectNum);
		removeInputErrorObject(objectAlpha);
		return true;
	} 
	else {
		markInputErrorObject(objectNum);
		markInputErrorObject(objectAlpha);
		return false;
	}
}

function countNum(entry) {
	var count=0;
	var validChar='0123456789'; 
	var strlen=entry.length;
	var entry=entry.toUpperCase();          
	for (i=0; i < strlen; i++ ) {
	   if (validChar.indexOf(entry.charAt(i)) >= 0) {
	    	count++;
       }
    }
	return count;
}

function countLetter(entry) {
	var count=0;
	var validChar='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
	var strlen=entry.length;
	var entry=entry.toUpperCase(); 
	for (i=0; i < strlen; i++ ) {
	   if (validChar.indexOf(entry.charAt(i)) >= 0) {
    	   count++;
       }
    }
	return count;
}


function ensurePasswordObject(object, strict){
	var errorMessage="";
	var password = object.value;
	var amountNumbers=countNum(password);
	var amountLetters=countLetter(password);	
	if(password.length < 6){
		var errorMessage="Het wachtwoord moet minstens 6 tekens bevatten\n";
	} 
	else if(!isValid(password) && strict!="true"){
		var errorMessage="Alleen cijfers en letters zijn toegestaan in het wachtwoord\n";
	} 
	else {
		if(amountNumbers<=0){
			var errorMessage="Minimaal 1 cijfer moet in het wachtwoord voorkomen\n";
		}
		if(amountLetters<=0){
			var errorMessage="Minimaal 1 letter moet in het wachtwoord voorkomen\n";
		}
		if(amountNumbers+amountLetters>=password.length && strict=="true") {
			var errorMessage="Minimaal 1 speciaal teken (geen letter of cijfer) moet in het wachtwoord voorkomen\n";
		}
	}
	if(errorMessage==""){
		removeInputErrorObject(object);
	} 
	else {
		markInputErrorObject(object);
	}
	return errorMessage
}
function removeInputErrorObject(object){
	removeCSSClassByObject(object,"all_input_error");
}

function markInputErrorObject(object){
	addCSSClassByObject(object,"all_input_error");
}

function appendErrorMessageRow(currentMessages,message){
	return currentMessages+"<li>"+message+"</li>";
}

function finalizeErrorMessageRows(object,messages){
	object.innerHTML = "<ul class=\"all_error_list\">"+messages+"</ul>";
}

