/**
 * Elvin Fortes | efortes@fGwNetworks.nl
 * Onderstaande classe kan errors toevoegen en verwijderen bij DOM elementen
 *//*

ErrorHandler = function() {
	var fieldsArr;
	var iconUrl;
	var test;

	return {
			init : function(iconUrl) {
			var fieldObj = ( {
				field : 'naam',
				result : false,
				message : "veld is niet correct"
			});
		//	this.test = "Hello ;)";
			this.fieldsArr = new Array();
			this.setErrorIconUrl(iconUrl);
		},
		
		setErrorIconUrl : function(url){
			this.iconUrl = url;
		},
		
		clearErrors : function(){
			$('.errorIconHolder').remove();
			$("input").removeClass("x-form-invalid");
			this.fieldsArr = new Array();
		},
		
		clearField : function(fieldName){
			$("input[name=" + fieldName + "]").removeClass("x-form-invalid");
			$("input[name=" + fieldName + "]").next('.errorIconHolder').remove();
			for ( var i = 0; i < this.fieldsArr.length; i++) {
				var fieldObj = this.fieldsArr[i];
				if(fieldObj.field == fieldName){
					this.fieldsArr.splice(i, 1);
				}
			}
		},
	
		add : function(result, fieldName, message) {
			var fieldObj = ( {
				field : fieldName,
				result : result,
				message : message
			});
			this.fieldsArr.push(fieldObj);
		},
	
		displayErrors : function() {
			if(this.fieldsArr.length < 1){
				return;
			}
			var bShowErrorHolder = false;
			var sErrContent = '';
			for ( var i = 0; i < this.fieldsArr.length; i++) {
				// var field = testArr[i].field;
				var fieldObj = this.fieldsArr[i];
				if(fieldObj.field == ""){
					sErrContent = (sErrContent == '' ? '' : sErrContent + "<br>") + fieldObj.message; 
					if(!fieldObj.result){					
						$("#errorHolder").addClass('errorMessage');
					}
					bShowErrorHolder = true;
					continue;
				} else if (!fieldObj.result) {
					//var messageHtml = ' <span class="errorMessage errorContent">' + fieldObj.message + '</span>';
					
					var messageHtml = ' <span class="errorIconHolder"><img src="' + this.iconUrl + '" style="vertical-align:middle;" title="' + fieldObj.message + '" class="errorMessage qtipError errorContent"></span>';
					$("input[name=" + fieldObj.field + "]").parent().find("span").remove();
					$("input[name=" + fieldObj.field + "]").parent().append(messageHtml);
					//parentEl.html(newHtml);
					$("input[name=" + fieldObj.field + "]").addClass("x-form-invalid");
					$("select[name=" + fieldObj.field + "]").addClass("x-form-invalid");
					$("textarea[name=" + fieldObj.field + "]").addClass("x-form-invalid");
					$("input[name=" + fieldObj.field + "]").html(fieldObj.message);
				}
			}
			if (bShowErrorHolder == true) {
				$("#errorHolder").html(sErrContent);
				$("#errorHolder").show("fast");
			}
			
			//this.clearField("postcode");
		}
	};
};
*/
 /* Elvin Fortes | efortes@fGwNetworks.nl*/
var ErrorHandler = function() {
	var fieldsArr;
	var iconUrl;
	var commonObj;

	return {
			init : function(iconUrl) {
			var fieldObj = ( {
				field : 'naam',
				result : false,
				message : "veld is niet correct"
			});
			this.fieldsArr = [];
			this.setErrorIconUrl(iconUrl);
		},
		
		setErrorIconUrl : function(url){
			this.iconUrl = url;
		},
		
		clearErrors : function(){

			$('.qtipError').remove();
			$("#errorHolder").removeClass("errorMessage");
			$("#errorHolder").html("");
			
			for (var i = 0; i < this.fieldsArr.length; i++) {
                 if (this.fieldsArr[i].field) {
			        $("#" + this.fieldsArr[i].field).removeClass("x-form-invalid");
                 }
            }
			this.fieldsArr = [];
		},
		
		hasErrors : function(){
			return (this.fieldsArr.length > 0 ? true : false);
		},
		
		clearField : function(fieldName){
            var veld = $("#" + fieldName);
			veld.removeClass("x-form-invalid");
            
            var holderveld = veld.parent().parent().find(".fieldErrorHolder");
            if ( holderveld.length ) {
                holderveld.find(".qtipError").remove();
            } else {
                veld.next('.qtipError').remove();
            }
			for ( var i = this.fieldsArr.length - 1; i > -1; i--) {
				var fieldObj = this.fieldsArr[i];
				if(fieldObj.field == fieldName){
					this.fieldsArr.splice(i, 1);
				}
			}
		},
	
		add : function(result, fieldName, message) {
			var fieldObj = ( {
				field : fieldName,
				result : result,
				message : message
			});
			this.fieldsArr.push(fieldObj);
		},
		
		append : function(result, fName, message, sep) 
			    {    
				    for (var i = 0; i < this.fieldsArr.length; i++)
				    {    if (this.fieldsArr[i].field == fName)
					    {    this.fieldsArr[i].message += (sep + message);
						    return;
					    }
				    }
				    this.add(result, fName, message);
			    },
        
        addAll : function( errorMessages ) {
            this.fieldsArr = [];
            for ( var i = 0; i < errorMessages.length; i++) {
                var fieldobj = errorMessages[i];
                if ( fieldobj.errorMessage !== "" ) {
                    this.add( false, fieldobj.fieldName, fieldobj.errorMessage );
                }
            }
        },
	
		displayErrors : function( doreload ) {
			if(this.fieldsArr.length < 1){
				return;
			}
			var bShowErrorHolder = false;
			var sErrContent = '';
			for ( var i = 0; i < this.fieldsArr.length; i++) {
				// var field = testArr[i].field;
			
				
				var fieldObj = this.fieldsArr[i];
				/**
				 $obj = this;
	                $("#" + this.fieldsArr[i].field).change(function(){
	                	alert(t);
	                	$obj.clearField(fieldObj.field);
	                });					
				*/
				if(fieldObj.field === ""){
					sErrContent = (sErrContent === '' ? '' : sErrContent + "<br />") + fieldObj.message; 
					if(!fieldObj.result){					
						$("#errorHolder").addClass('errorMessage');
					}
					bShowErrorHolder = true;
					continue;
				} else if (!fieldObj.result) {
					var messageHtml = '<span title="' + fieldObj.message + '" class="icon icon-exclamation errorMessage qtipError errorContent" id="' + fieldObj.field + '-error"></span>';
                    $("#" + fieldObj.field + "-error").remove();
                    var veld = $("#" + fieldObj.field);
                    veld.addClass("x-form-invalid");
                    var holderveld = veld.parent().parent().find(".fieldErrorHolder");
                    if ( holderveld.length ) {
                        holderveld.html(messageHtml);
                    } else {
                        veld.after(messageHtml);
                    }
                   

				}
			}
			if (bShowErrorHolder === true) {
				$("#errorHolder").html(sErrContent).show();
			}
			
            /**
            * initializatie van de tooltip
            */            
                this.commonObj.reloadQtip();
			 
			 // Dik van Dalen 7-1-2011
			 // Dit kun je beter niet doen denk ik
			 // Nu zijn alle foutmeldingen en classes niet meer te bereiken
			 // En als je wat met AJAX hebt gedaan krijgt de velden niet meer "schoon"
			 
			 // this.fieldsArr = []; 

		},
        getFirstErrorMessage: function() {
            if ( this.fieldsArr.length !== 0 ) {
                var fieldobj = this.fieldsArr[0];
                
                return fieldobj.message;
            }
        }
	};
};

var errorHandler = new ErrorHandler();

