<!--


var empty = 'Dit is een verplicht veld';
var wrong = 'Onjuiste invoer';
var not_all_correct = 'Niet alle verplichte velden (*) zijn correct ingevuld';


function getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if(node == null) node = document;
  if(tag == null) tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for(i = 0, j = 0; i < elsLen; i++) {
    if(pattern.test(els[i].className)) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}


function check(obj) {
  correct = true;
  removewarning(obj);
  required = obj.getAttribute('required')
  validate = obj.getAttribute('validate');
  if(required == 'true' && obj.value.length<1) {
    if(document.all) obj.parentElement.innerHTML += '<span class="warning">'+empty+'</span>';
    else obj.parentNode.innerHTML += '<span class="warning">'+empty+'</span>';
    correct = false; 
  }
  if(validate && obj.value) {
    if(!dovalidate(validate, obj)) {
      if(document.all) obj.parentElement.innerHTML += '<span class="warning">'+wrong+'</span>';
      else obj.parentNode.innerHTML += '<span class="warning">'+wrong+'</span>';
      correct = false;
	 }
  }
  return correct; 
}

function dovalidate(type, obj) {
  switch(type) {
    case 'alphanum':
    case 'alphanumeric':
      if(obj.value.search("[^A-Za-z0-9 \.\,\-]") == -1) return true; 
      else return false;		
	 break;

    case 'numeric':
      if(obj.value.search("[^0-9\.\,]") == -1) return true; 
      else return false;		
    break;
		
    case 'alpha':
    case 'alphabetic':
      if(obj.value.search("[^A-Za-z \.\,\-]") == -1) return true; 
      else return false;				
    break;
		
    case 'email':
      return validateEmail(obj.value);
    break;
		
    case 'zipcode':
      return true;
    break;
		
    default:
      return true;
    break;
  }  
}

function validateEmail(email) {
  var splitted = email.match("^(.+)@(.+)$");
  if(splitted == null) return false;
  if(splitted[1] != null ) {
    var regexp_user=/^\"?[\w-_\.]*\"?$/;
    if(splitted[1].match(regexp_user) == null) return false;
  }
  if(splitted[2] != null) {
    var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
    if(splitted[2].match(regexp_domain) == null) {
	   var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
    }
    return true;
  }
  return false;
}

function removewarning(obj) {
  if(document.all) children = obj.parentElement.childNodes
  else children = obj.parentNode.childNodes	
	for (i = 0; i < children.length; i++) {
	  if(children[i].className == 'warning') {
		  if(document.all) obj.parentElement.removeChild(children[i]);
		  else obj.parentNode.removeChild(children[i]);			
		}
	}
}

function SmartForms() {
  elements = getElementsByClass('formitem');
  for (i = 0; i < elements.length; i++) {
		
		  // get values
		  label = elements[i].getAttribute('label');
			type = elements[i].getAttribute('type');
			name = elements[i].getAttribute('name');
			value = elements[i].getAttribute('value');
			required = elements[i].getAttribute('required');
			validate = elements[i].getAttribute('validate');
			selected = elements[i].getAttribute('selected');
			hint = elements[i].getAttribute('hint');
			readonly = elements[i].getAttribute('readonly');
			iclass = elements[i].getAttribute('iclass');
      switch(type) {
			
			  case 'text':
				  inner = '<label>'+label+'</label>';
					inner += '<input type="text" name="'+name+'"';
					if(readonly) inner += ' readonly="readonly"';
					if(value) inner += ' value="'+value+'"';
					if(iclass) inner += ' class="'+iclass+'"';
					if(required) inner += ' required="true"'; 
					if(validate) inner += ' validate="'+validate+'"';
					if(validate || required) inner +=' onblur="check(this)">';
					if(required) inner += '<span class="required">*</span>';
					if(hint) inner += '<span class="hint"><a title="'+hint+'">?</a></span>';
          elements[i].innerHTML = inner;
				break;

			  case 'file':
				  inner = '<label>'+label+'</label>';
					inner += '<input type="file" name="'+name+'"';
					if(iclass) inner += ' class="'+iclass+'"';
					if(required) inner += ' required="true"';
					if(validate) inner += ' validate="'+validate+'"';
					if(validate || required) inner +=' onblur="check(this)"';
					inner += ' />';
					if(required) inner += '<span class="required">*</span>';
					if(hint) inner += '<span class="hint"><a title="'+hint+'">?</a></span>';
          elements[i].innerHTML = inner;
				break;



				
				case 'hidden':
				  inner = '<input type="hidden" name="'+name+'"';
					if(value) inner += ' value="'+value+'"';
					inner += '>';
          elements[i].innerHTML = inner;										
				break;
				
			  case 'radio':
				  inner = '<label>'+label+'</label>';
					values = value.split(';');
					inner += '<span class="group">';
					for(j = 0; j < values.length; j++) {
					  inner += '<span class="groupitem">';
					  items = values[j].split(':');
            inner += '<input type="radio" name="'+name+'" value="'+items[0]+'"';
						if(!selected || items[0] == selected) { selected = '!@#$%'; inner += ' checked="checked"'; }
					  if(iclass) inner += ' class="'+iclass+'"';						
						inner += '> '+items[1];	  
						inner += '</span>';
					}
					inner += '</span>';					
					if(required) inner += '<span class="required">*</span>';
					if(hint) inner += '<span class="hint"><a title="'+hint+'">?</a></span>';

          elements[i].innerHTML = inner;
				break;

			  case 'checkbox':
				  inner = '<label>'+label+'</label>';
					values = value.split(';');
					inner += '<span class="group">';
					for(j = 0; j < values.length; j++) {
					  inner += '<span class="groupitem">';
					  items = values[j].split(':');
            inner += '<input type="checkbox" name="'+name+'[]" value="'+items[0]+'"';
						//if(!selected || items[0] == selected) { selected = '!@#$%'; inner += ' checked="checked"'; }
					  if(iclass) inner += ' class="'+iclass+'"';
						inner += '> '+items[1];
						inner += '</span>';
					}
					inner += '</span>';
					if(required) inner += '<span class="required">*</span>';
					if(hint) inner += '<span class="hint"><a title="'+hint+'">?</a></span>';

          elements[i].innerHTML = inner;
				break;
				
				
			  case 'select':
				  inner = '<label>'+label+'</label>';
					inner += '<select name="'+name+'">';
					if(iclass) inner += ' class="'+iclass+'"';					
					values = value.split(';');
					for(j = 0; j < values.length; j++) {
					  items = values[j].split(':');
            inner += '<option value="'+items[0]+'"';
						if(!selected || items[0] == selected) { selected = '!@#$%'; inner += ' selected="selected"'; }
						inner += '>'+items[1]+'</option>';;	  
					}
					inner += '</select>';
					if(required) {
					  inner += '<span class="required">*</span>';
					}
          elements[i].innerHTML = inner;
				break;
				
				case 'textarea':
				  inner = '<label>'+label+'</label>';
					inner += '<textarea name="'+name+'"';
					inner += ' required="'+required+'"';
					inner += ' validate="'+validate+'"';					
					inner += ' onblur="check(this)">';
					inner += value					
					inner += '</textarea>';
					if(required) {
					  inner += '<span class="required">*</span>';
					}
					if(hint) inner += '<span class="hint"><a title="'+hint+'">?</a></span>';
          elements[i].innerHTML = inner;
				break;
				
				case 'submit':
				  inner = '<label>&nbsp;</label>';
					inner += '<input type="button" onclick="SubmitForm(this)"';
					inner += ' value="'+value+'">';
          elements[i].innerHTML = inner;
				break;
				
				case 'password':
		      inner = '<label>'+label+'</label>';
					inner += '<input type="password" name="'+name+'"';
					if(value) inner += ' value="'+value+'"';
					inner += ' required="'+required+'"';
					inner += ' validate="'+validate+'"';					
					inner +=' onblur="check(this)">';
					if(required) inner += '<span class="required">*</span>';
					if(hint) inner += '<span class="hint"><a title="'+hint+'">?</a></span>';
          elements[i].innerHTML = inner;				
				break;
				
				case 'plain':
		      inner = '<label>'+label+'</label>';
					inner += value;
					/*'<input type="password" name="'+name+'"';
					if(value) inner += ' value="'+value+'"';
					inner += ' required="'+required+'"';
					inner += ' validate="'+validate+'"';					
					inner +=' onblur="check(this)">';
					if(required) inner += '<span class="required">*</span>';
					if(hint) inner += '<span class="hint"><a title="'+hint+'">?</a></span>';*/
          elements[i].innerHTML = inner;
				break;		
			}					
	}
}

function SubmitForm(form) {
  var errors = false;	
  var theform = document.form;
  var lenght = theform.length - 1;
  for(ii = 0; ii < lenght; ii++) {
    if(!check(theform.elements[ii])) errors = true;
	}

  if(errors) alert(not_all_correct);
	else document.form.submit();
}

// Onload event
window.onload = SmartForms;

//-->
