var CDMGValidator = (function($) {
	CDMGValidator = function CDMGValidator(form_id,fields) {
		if (form_id.indexOf('#')===0) {
			form_id = form_id.substr(1,form_id.length);
		};
		this.validator = new Validator(form_id);
		this.validator.formobj.onsubmit = null;

		/** -- Template -- **
		 *	fields = {
		 *		'fname':['Please enter your First Name','maxlen=50'],
		 *		'email':['Please enter your Email Address','maxlen=50']
		 *	};		
		 */
		
		for (var n in fields) {
			var  _name = n
				,_li = chunk(fields[n],2);
			
			for (var i=0;i<_li.length;i++) {
				if (_li[i].length==1) {
					this.validator.addValidation(_name,_li[i][0]);
				} else {
					this.validator.addValidation(_name,_li[i][0],_li[i][1]);
				};
			};								
		};
		
		if (this.validator.formobj['cemail']) {
			var _this = this;
			$(this.validator.formobj['cemail']).blur(function() {
				_this.validate_confirm_email(this);
			});
		}
	};
	
	CDMGValidator.prototype.validate = function validate() {
		return form_submit_handler.call(this.validator.formobj)		
	};
	
	CDMGValidator.prototype.validate_confirm_email = function validate_confirm_email(elem) {
		if(elem.value!='') { 
			if (this.validator.formobj['email'].value!=elem.value) {
				alert('The retype email is incorrect, please type again.') ;
				elem.value ='';
			};
		};
	};
	return CDMGValidator;
})(jQuery);


function chunk(a, s){
    for(var x, i = 0, c = -1, l = a.length, n = []; i < l; i++)
        (x = i % s) ? n[c][x] = a[i] : n[++c] = [a[i]];
    return n;
}
