/**
 * @author bumz
 */
//$(document).ready(function(){
	
	Ext.apply(Ext.form.VTypes, {
		daterange : function(val, field) {
			var date = field.parseDate(val);
	
			if(!date){
				return;
			}
			if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
				var start = Ext.getCmp(field.startDateField);
				start.setMaxValue(date);
				start.validate();
				this.dateRangeMax = date;
			}
			else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
				var end = Ext.getCmp(field.endDateField);
				end.setMinValue(date);
				end.validate();
				this.dateRangeMin = date;
			}
			/*
			 * Always return true since we're only using this vtype to set the
			 * min/max allowed values (these are tested for after the vtype test)
			 */
			return true;
		},
	
		password : function(val, field) {
			if (field.initialPassField) {
				var pwd = Ext.getCmp(field.initialPassField);
				return (val == pwd.getValue());
			}
			return true;
		},
		
		hexvalue : function(val, field) {
			var value = field.getValue();
			value = value.replace(/[^#a-fA-F0-9]/g, ''); // non [#a-f0-9]
			if(value.match(/#/g) && value.match(/#/g).length > 1) value = value.replace(/#/g, ''); // ##
			if(value.indexOf('#') == -1) value = '#'+value; // no #
			if(value.length > 7) value = value.substr(0,7); // too many chars
			
			field.setValue(value);
			return true;
		},
		
		readable : function(val, field) {
			return !(val.match(/[^A-Za-z0-9\s/._]/g) && val.match(/[^A-Za-z0-9\s/._]/g).length > 0);
		},
		
		IPAddress:  function(v) {
	        return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v);
	    },
		
	    IPAddressText: 'Must be a numeric IP address',
		passwordText : 'Passwords do not match',
		readableText : 'Only letters, numbers, dot, space and underscore allowed!'
	});
//});