%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/upgrade.lightco.com.au/libraries/cegcore/assets/gplugins/gvalidation/
Upload File :
Create Path :
Current File : /home/lightco1/upgrade.lightco.com.au/libraries/cegcore/assets/gplugins/gvalidation/gvalidation.js

jQuery.gvalidation = {

	rules : {

		required : /[^.*]/,

		alpha : /^[a-z ._-]+$/i,

		alphanum : /^[a-z0-9 ._-]+$/i,

		digit : /^[-+]?[0-9]+$/,

		nodigit : /^[^0-9]+$/,

		nospace : /^[^ ]+$/,

		number : /^[-+]?\d*\.?\d+$/,

		email : /^([a-zA-Z0-9_\.\-\+%])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,

		image : /.(jpg|jpeg|png|gif|bmp)$/i,

		phone : /^\+{0,1}[0-9 \(\)\.\-]+$/, // alternate regex : /^[\d\s ().-]+$/,/^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/

		phone_inter : /^\+{0,1}[0-9 \(\)\.\-]+$/,

		url : /^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&%\$#\=~])*$/i

	},

	errors : {

		required : 'This field is required.',

		alpha : 'This field accepts alphabetic characters only.',

		alphanum : 'This field accepts alphanumeric characters only.',

		digit : 'Please enter a valid integer.',

		nodigit : 'No digits are accepted.',

		nospace : 'No spaces are accepted.',

		number : 'Please enter a valid number.',

		email : 'Please enter a valid email.',

		image : 'This field should only contain image types',

		phone : 'Please enter a valid phone.',

		phone_inter : 'Please enter a valid international phone number.',

		url : 'Please enter a valid url.',

		group: 'Please make at least %1 selection(s).',

		confirm: 'Please make sure that the value matches the %1 field value.',

		custom: 'The value entered is not valid.',

	},

	display : 'tooltip',

	'css':{

		'background-color':'#ff4242',

		'border-color':'#ff0000',

		'padding':'4px',

	},

};

(function($){

	$.fn.gvalidate = function(options, params){

		if(this.length > 0){

			if($.type(params) === 'undefined' && $.type(options) === 'object'){

				params = options;

			}

			

			if($.type(options) === 'undefined' || $.type(options) === 'object'){

				params = $.extend({}, $.gvalidation, params);

				return this.each(function(){

					if(!$(this).data('gvalidation')){

						$(this).data('gvalidation', new GValidation(this, params));

					}

				});

			}

			

			if($.type(options) === 'string'){

				params = $.extend({}, $.gvalidation, params);

				var gval = $(this).data('gvalidation');

				

				if(typeof gval == 'undefined' || !gval){

					return null;

				}

				

				switch (options){

					case 'get':

						return gval.get();

				}

			}

		}

	}

	

	var GValidation = function(elem, params){

		this.element = elem;

		this.settings = params;

		this.rules = [];

		this.errors = {};

		this.invalid_rule = '';

		this.error_shown = false;

		this.disabled = false;

		

		this.init();

	};

	

	GValidation.prototype = {

		init: function(){

			var gval = this;

			if($(gval.element).is(':input')){

				gval.validate(false);

				//validate the field when some events occur

				$(gval.element).on('change', function(){

					gval.validate(true);

				});

				$(gval.element).on('blur', function(){

					gval.validate(true);

				});

			}else{

				//check on form submit

				if($(gval.element).prop('tagName') == 'FORM'){

					/*$(gval.element).find(':input').on('blur', function(){

						$(this).gvalidate();

					});

					$(gval.element).find(':input').on('change', function(){

						$(this).gvalidate();

					});*/

					$(gval.element).find(':input').each(function(i, inp){

						$(inp).gvalidate();

					});

					$(gval.element).on('submit', function(e){

						//gval.init();

						$(gval.element).find(':input').each(function(i, inp){

							$(inp).gvalidate();

						});

						

						if(gval.validate_area() == true){

							$(gval.element).trigger('success.gvalidation');

							return true;

						}else{

							e.stopImmediatePropagation();

							$(gval.element).trigger('fail.gvalidation');

							return false;

						}

					});

					$(gval.element).on('reset', function(e){

						setTimeout(function(){

							$(gval.element).find(':input').trigger('change');

						}, 500);

					});

				}else{

					return gval.validate_area();

				}

			}

		},

		

		validate_area: function(){

			var gval = this;

			var focus_gval = null;

			$(gval.element).find(':input').each(function(i, inp){

				$(inp).gvalidate();

				if(focus_gval == null){

					var gval_inp = $(inp).gvalidate('get');

					if(!gval_inp.validate()){

						focus_gval = gval_inp;

						return false;//break

					}

				}

			});

			if(focus_gval != null){

				$(focus_gval.element).focus();

				$('html, body').animate({

					scrollTop: $(focus_gval.element).offset().top - 100

				}, 300);

				focus_gval.show_error();

				return false;

			}

			return true;

		},

		

		get: function(){

			var gval = this;

			

			return gval;

		},

		

		reset: function(){

			var gval = this;

			

			$(gval.element).data('gvalidation', null);

		},

		

		validate: function(showError){

			var gval = this;

			gval.inspect();

			

			var result = gval.check();

			if(result){

				if(gval.rule_name(gval.invalid_rule) == 'group'){

					$('input[class*="'+gval.invalid_rule+'"]').each(function(i, chk){

						var gval_other = $(chk).gvalidate('get');

						if(gval_other != null){

							gval_other.remove_error();

						}

					});

				}else if(gval.rules.length && gval.rule_name(gval.rules[0]) == 'group'){

					$('input[class*="'+gval.rules[0]+'"]').each(function(i, chk){

						var gval_other = $(chk).gvalidate('get');

						if(gval_other != null){

							gval_other.remove_error();

						}

					});

				}else{

					gval.remove_error();

				}

			}else{

				if(gval.rule_name(gval.invalid_rule) == 'group'){

					$('input[class*="'+gval.invalid_rule+'"]').each(function(i, chk){

						var gval_other = $(chk).gvalidate('get');

						if(gval_other != null){

							gval_other.check();

						}

					});

				}

				if(showError == true){

					gval.show_error();

				}

			}

			return result;

		},

		

		inspect: function(){

			var gval = this;

			var validate_matches = $(gval.element).prop('class').match(/validate\[(.*?)\]/g);

			if(validate_matches){

				$.each(validate_matches, function(vm, validate_match){

					var matches = validate_match.match(/validate\[(.*?)\]/);

					if(matches && typeof matches[1] != 'undefined'){

						var rules = matches[1].split(',');

						var clean_rules = [];

						$.each(rules, function(i, rule){

							rule = rule.replace(/("|')/g, '');

							clean_rules.push(rule);

						});

						gval.set_rules(clean_rules);

					}

				});

			}

		},

		

		check: function(){

			var gval = this;

			var toReturn = true;

			$(gval.element).trigger('check.gvalidation');

			

			$.each(gval.rules, function(i, rule){

				if(!gval.check_rule(rule)){

					gval.invalid_rule = rule;

					toReturn = false;

					return false;//break

				}

			});

			

			if(toReturn == false){

				$(gval.element).trigger('invalid.gvalidation');

			}

			

			if(gval.disabled == true){

				return true;

			}

			if($(gval.element).is(':hidden')){

				return true;

			}

			

			return toReturn;

		},

		

		set_rules: function(rules){

			var gval = this;

			gval.rules = rules;

		},

		

		check_rule: function(rule){

			var gval = this;

			if($(gval.element).prop('disabled')){

				return true;

			}

			var $type = $(gval.element).prop('type');

			var $rule_parts = rule.split(':');

			if($.gvalidation.rules.hasOwnProperty($rule_parts[0])){

				if($.inArray($type, ['checkbox','radio']) > -1){

					return $(gval.element).prop('checked');

				}else{

					if($rule_parts[0] == 'required'){

						if($(gval.element).val() == null){

							return false;//for multi select with nothing selected

						}else if($.isArray($(gval.element).val())){

							if($(gval.element).val().length == 0){

								return false;//for multi select

							}else{

								return true;

							}

						}else{

							return $(gval.element).val().trim().match($.gvalidation.rules[$rule_parts[0]]);

						}

					}else{

						return (!$(gval.element).val().trim() || $(gval.element).val().trim().match($.gvalidation.rules[$rule_parts[0]]));

					}

				}

			}else{

				if($rule_parts[0] == 'group'){

					var count = 0;

					$('input[class*="'+rule+'"]').each(function(i, chk){

						if($(chk).prop('checked')){

							count = count + 1;

						}

					});

					var limit = ($rule_parts[2] ? $rule_parts[2] : 1);

					return (count >= limit);

				}else if($rule_parts[0] == 'confirm'){

					return ($('#'+$rule_parts[1]).val() == $(gval.element).val());

				}else if($rule_parts[0] == 'custom'){

					var fn = $rule_parts[1];

					if(fn in window){

						return window[fn]($(gval.element));

					}

					return true;

				}

			}

		},

		

		show_error: function(){

			var gval = this;

			

			if(!gval.invalid_rule){

				return;

			}

			

			var $rule_parts = gval.invalid_rule.split(':');

			rule = $rule_parts[0];

			if(typeof gval.errors[rule] == 'undefined'){

				if($(gval.element).prop('title')){

					gval.errors[rule] = $(gval.element).prop('title');

				}else{

					var error_string = $.gvalidation.errors[rule];

					if(rule == "group"){

						var skip = false;

						$('input[class*="'+gval.invalid_rule+'"]').each(function(i, chk){

							var gval_other = $(chk).gvalidate('get');

							var another_error_shown = (gval_other == null ? false : gval_other.error_shown);

							if(another_error_shown !== false){

								skip = true;

								return false;

							}

						});

						if(skip){

							return;

						}

					}

					if(rule == "group"){

						if(typeof $rule_parts[2] == 'undefined'){

							//dirty fix for the group validtaions

							$rule_parts[1] = 1;

						}

					}

					$.each($rule_parts, function(i, val){

						error_string = error_string.replace('%'+i, val);

					});

					gval.errors[rule] = error_string;

				}

			}

			

			gval.display_error();

			gval.error_shown = true;

		},

		

		display_error: function(){

			var gval = this;

			

			$(gval.element).trigger('display.gvalidation');

			

			var error_target = $(gval.element);

			if($(gval.element).data('gvalidation-target')){

				var error_target = $(gval.element).data('gvalidation-target');

			}

			

			if($.gvalidation.display == 'tooltip'){

				error_target.data('content', '<span class="gvalidation-error-text">'+gval.errors[gval.rule_name(gval.invalid_rule)]+'</span>');

				error_target.gtooltip({'tipclass':'gtooltip gvalidation-error-tip', 'closable': 1, 'tid':'gval', 'trigger':'manual', 'css':gval.settings.css});

				error_target.gtooltip('reset', {'tid':'gval'});

				error_target.gtooltip('show', {'tid':'gval'});

			}else{

				//$(gval.element).parent().after($($(gval.element).data('content')).css('display', 'block'));

			}

		},

		

		remove_error: function(){

			var gval = this;

			

			if(!gval.invalid_rule){

				return;

			}

			

			gval.errors = {};

			gval.error_shown = false;

			gval.invalid_rule = '';

			

			if($.gvalidation.display == 'tooltip'){

				$(gval.element).gtooltip('destroy', {'tid':'gval'});

			}else{

				

			}

		},

		

		disable: function(){

			var gval = this;

			

			gval.disabled = true;

		},

		

		enable: function(){

			var gval = this;

			

			gval.disabled = false;

		},

		

		rule_name: function(rule){

			var $rule_parts = rule.split(':');

			return $rule_parts[0];

		},

		

		rule_params: function(rule){

			var $rule_parts = rule.split(':');

			$rule_parts.splice(0, 1);

			return $rule_parts;

		},

		

	};

}(jQuery));

Zerion Mini Shell 1.0