YAHOO.namespace('CF.form'); 

//YAHOO.CF.form.validateMultiple = 0;

YAHOO.CF.form.validate = function(validator) {
	var valid = true;
	
	try {
		switch (validator.validator) {
			case 'blank' :
				if (validator.value.blank()) {
					valid = false;
				}
				break;
			
			case 'hour' :
				if (validator.value < 0 || validator.value > 23) {
					valid = false;
				}
				break;
				
			case 'minute' :
				if (validator.value < 0 || validator.value > 59) {
					valid = false;
				}
				break;
				
			case 'emailaddress' :
				var regex = /^[a-zA-Z]{1}[-a-zA-Z0-9_\.]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+\.[a-z]{2,6}$/;
				if (validator.value.match(regex) === null) {
					valid = false;
	    		} else {
		    		var url = '/ajax/emailcheck/emailaddress/' + validator.value;
		    		json = YAHOO.CF.syncRequest(url);
		    		return json.valid; 
				}       
		        break;
	        	
	        case 'postalcode' :
	      		var regex = /^[0-9]{4}[' ']*[a-zA-Z]{2}$/;
   		  		if (validator.value.match(regex) === null) {
   		  			valid = false;
				}
				break;
				
			case 'document' :
				var regex = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.pdf)|(.doc)|(.docx)|(.txt)$/;
				if (validator.value.match(regex) === null) {
   		  			valid = false;
				}
				break;
				
			case 'multiple' :
				if (validator.value !== null) {
					YAHOO.CF.www.form.multipleCounter++;
				}
				if (YAHOO.CF.www.form.multipleCounter > 0) {
					valid = true;
				} else {
					valid = false;
				}
				break;
		}
			
		return valid;
	} catch(e) {
		alert(e);
		return false;
	}
}

/**
 * Synchronous AJAX call
 */
YAHOO.CF.syncRequest = function(url) {
	if (window.XMLHttpRequest) {              
	    var ajax = new XMLHttpRequest();     
	} else {                                  
	    ajax = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (ajax) {
	     ajax.open("POST", url, false);                             
	     ajax.send(null);
	     var json = YAHOO.lang.JSON.parse(ajax.responseText);
	     return json;
	} else {
	     return false;
	}
}


YAHOO.CF.form.getValidators = function(form) {
	var formInputs = form.getInputs();
    var validateClassName = 'cf_validate_';
    var validators = new Array();
    
    formInputs.each(function(formInput) {
        var classNames = formInput.classNames();

        classNames.each(function(className) {
            if (className.startsWith(validateClassName)) {
                validators = validators.concat({
					value : $F(formInput),
					validator : className.sub(validateClassName, ''),
					message : YAHOO.CF.form.findLabel(form, formInput) + ' is niet juist',
					field :  formInput
				});
            }
        });
    });
    
    return validators;
}


YAHOO.CF.form.findLabel = function(form, formInput) {
    var formElements = form.descendants();
	var label = '';
	
    formElements.each(function(formElement) {
        if (formElement.readAttribute('for') == formInput.id) {
            label = formElement.innerHTML;
        }
    });
    
    return label;
}

