You are on page 1of 49

conferinta

AUTHOR
Version
06/04/2015

Table of Contents
Table of contents

File Index
File List
Here is a list of all files with brief descriptions:
C:/wamp/www/conferinta/fisier.php ....................................................................................................8
C:/wamp/www/conferinta/footer.php ..................................................................................................9
C:/wamp/www/conferinta/header.php ...............................................................................................10
C:/wamp/www/conferinta/index.php .................................................................................................11
C:/wamp/www/conferinta/librarie.php .............................................................................................44
C:/wamp/www/conferinta/login.php ..................................................................................................47
C:/wamp/www/conferinta/main.php .................................................................................................48
C:/wamp/www/conferinta/js/auxiliary.js ...........................................................................................12
C:/wamp/www/conferinta/js/bootstrap.js .........................................................................................16
C:/wamp/www/conferinta/js/bootstrap.min.js ..................................................................................18
C:/wamp/www/conferinta/js/formValidation/js/formValidation.min.js .........................................23
C:/wamp/www/conferinta/js/formValidation/js/formValidation.popular.min.js ...........................32
C:/wamp/www/conferinta/js/formValidation/js/framework/bootstrap.min.js ..............................22
C:/wamp/www/conferinta/js/formValidation/js/language/en_US.js ...............................................42
C:/wamp/www/conferinta/js/formValidation/js/language/ro_RO.js ...............................................43

File Documentation
C:/wamp/www/conferinta/fisier.php File Reference

C:/wamp/www/conferinta/footer.php File Reference

C:/wamp/www/conferinta/header.php File Reference

10

C:/wamp/www/conferinta/index.php File Reference

11

C:/wamp/www/conferinta/js/auxiliary.js File Reference


Functions
document ready (function(){if($('#autentificare').length){$('#autentificare').formValidation({framework:
'bootstrap', message: 'Cmp completat incorect', icon:{valid: 'glyphicon glyphicon-ok', invalid:
'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh'}, fields:{inputEmail:
{message: 'V rugm completai adresa de email', validators:{notEmpty:{message: 'V
rugm completai adresa de email'}, stringLength:{min:3, message: 'V rugm completai
minim trei caractere'}, emailAddress:{message: 'V rugm completai o adres de email
valid'},}}, inputPassword:{message: 'V rugm completai parola', validators:{notEmpty:
{message: 'V rugm completai parola'}, stringLength:{min:6, message: 'V rugm
completai minim ase caractere'},}},}});$('#autentificare').on('success.form.fv', function(e, data)
{e.preventDefault();$('#ajax-loader').modal('show');$.ajax({method:"POST", url:"login.php", data:
{inputEmail:encodeURIComponent($('#inputEmail').val()), inputPassword:encodeURIComponent($
('#inputPassword').val())}}).done(function(msg){if(msg=="eroare"){$
('#autentificare').data('formValidation').resetForm();$('#eroare').html("Adresa de email sau parola
incorecte");}else $('#container').html(msg);$('#ajax-loader').modal('hide');});});$
('#autentificare').on('err.form.fv', function(e, data)
{});}butonPaginaStatica('deconectare');butonPaginaStatica('despre');butonPaginaStatica('lista');bu
tonPaginaStatica('sectiune');butonPaginaStatica('calificativ');butonPaginaStatica('administrator');b
utonContact();})
function butonPaginaStatica (buton)
function butonContact ()
function butonStergere (tabel)
function butonEditeaza (entitate)
function confirmareStergere ()
function butonAdauga (entitate)
function validareFormular (entitate, actiune)
function schimbaParametruLista (entitate)
function butonAdaugaLucrare ()
function butonEditeazaLucrare ()
function validareFormularLucrare (actiune)
function curataFiltre ()
function cautareAutor ()

Function Documentation
function butonAdauga ( entitate)

Functia de inserare in pagina a formularului pentru adaugarea unei entitati


Version:
1
Parameters:
entitate
{String} Numele entitatii cu majuscula (Calificativ, Sectiune)
Definition at line 303 of file auxiliary.js.
function butonAdaugaLucrare ()

Functia de inserare in pagina a formularului pentru adaugarea unei lucrari


Version:
1

12

Definition at line 439 of file auxiliary.js.


function butonContact ()

Functia executata la apasarea butonului Contact


Version:
1
Definition at line 186 of file auxiliary.js.
function butonEditeaza ( entitate)

Functia pentru adaugarea actiunii de editare entitate pentru link-urile din tabelele din
diferitele pagini
Version:
1
Parameters:
tabel

{String} Numele tabelului asa cum figureaza in baza de date, inclusiv cu prefixul
tbl_
Definition at line 240 of file auxiliary.js.
function butonEditeazaLucrare ()

Functia de inserare in pagina a formularului pentru editarea unei lucrari


Version:
1
Definition at line 466 of file auxiliary.js.
function butonPaginaStatica ( buton)

Functia de afisare pentru o sectiune


Version:
1
Parameters:
buton
{String} Numele sectiunii ce se va afisa
Definition at line 107 of file auxiliary.js.
function butonStergere ( tabel)

Functia pentru adaugarea actiunii de stergere entitate pentru link-urile din tabelele din
diferitele pagini
Version:
1
Parameters:
tabel

{String} Numele tabelului asa cum figureaza in baza de date, inclusiv cu prefixul
tbl_
Definition at line 208 of file auxiliary.js.

13

function cautareAutor ()

Functia pentru cautarea dupa autor


Version:
1
Definition at line 619 of file auxiliary.js.
function confirmareStergere ()

Functia pentru includerea ferestrei modale de confirmare ce va aparea la click pe link-urile de


stergere entitati
Version:
1
Returns:
str {String} Codul HTML al ferestrei modale de confirmare stergere
Definition at line 274 of file auxiliary.js.
function curataFiltre ()

Functia pentru resetarea filtrelor


Version:
1
Definition at line 594 of file auxiliary.js.
document ready (function(){if($('#autentificare').length){$
('#autentificare').formValidation({framework: 'bootstrap', message: 'Cmp completat
incorect', icon:{valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'}, fields:{inputEmail:{message: 'V rugm
completai adresa de email', validators:{notEmpty:{message: 'V rugm completai
adresa de email'}, stringLength:{min:3, message: 'V rugm completai minim trei
caractere'}, emailAddress:{message: 'V rugm completai o adres de email
valid'},}}, inputPassword:{message: 'V rugm completai parola', validators:
{notEmpty:{message: 'V rugm completai parola'}, stringLength:{min:6, message:
'V rugm completai minim ase caractere'},}},}});$
('#autentificare').on('success.form.fv', function(e, data){e.preventDefault();$('#ajaxloader').modal('show');$.ajax({method:"POST", url:"login.php", data:
{inputEmail:encodeURIComponent($('#inputEmail').val()),
inputPassword:encodeURIComponent($('#inputPassword').val())}}).done(function(msg)
{if(msg=="eroare"){$('#autentificare').data('formValidation').resetForm();$
('#eroare').html("Adresa de email sau parola incorecte");}else $('#container').html(msg);$
('#ajax-loader').modal('hide');});});$('#autentificare').on('err.form.fv', function(e, data)
{});}butonPaginaStatica('deconectare');butonPaginaStatica('despre');butonPaginaStatica('li
sta');butonPaginaStatica('sectiune');butonPaginaStatica('calificativ');butonPaginaStatica('a
dministrator');butonContact();} )

Fisierul ce contine implementarea functionalitatii JavaScript


Author:
Andries Marian 31111b RCC marian.andries@gmail.com
Version:
1 Functia care se executa dupa incarcarea paginii in browser

14

1
Returns:
void
function schimbaParametruLista ( entitate)

Functia pentru schimbarea valorii parametrilor unei lucrari la modificarea selectiei


Version:
1
Parameters:
entitate
{String} Numele entitatii (sectiune, calificativ)
Definition at line 394 of file auxiliary.js.
function validareFormular ( entitate, actiune)

Functia pentru validarea unui formular de adaugare/editare a unei entitati de tipul Calificativ
sau Sectiune
Version:
1
Parameters:
entitate
{String} Numele entitatii cu majuscula, ex.: Calificativ
actiune
{String} Numele actiunii cu majuscula, ex.: Adauga
Definition at line 332 of file auxiliary.js.
function validareFormularLucrare ( actiune)

Functia pentru validarea unui formular de adaugare/editare a unei lucrari


Version:
1
Parameters:
actiune
{String} Numele actiunii (adauga/editeaza)
Definition at line 498 of file auxiliary.js.

15

C:/wamp/www/conferinta/js/bootstrap.js File Reference


Functions
if (typeof jQuery=== 'undefined')
function transitionEnd ()

Variables
var version
fn emulateTransitionEnd
var dismiss
var Button
var Carousel
var Collapse
var backdrop

Function Documentation
if (typeof jQuery = ==

'undefined')

Bootstrap v3.3.4 (http://getbootstrap.com) Copyright 2011-2015 Twitter, Inc.


Licensed
under
MIT
(https://github.com/twbs/bootstrap/blob/master/LICENSE)
Definition at line 7 of file bootstrap.js.
function transitionEnd ()

Definition at line 34 of file bootstrap.js.

Variable Documentation
var backdrop

Definition at line 756 of file bootstrap.js.


var Button

Definition at line 189 of file bootstrap.js.


var Carousel

Definition at line 306 of file bootstrap.js.

16

var Collapse

Definition at line 544 of file bootstrap.js.


var dismiss

Definition at line 94 of file bootstrap.js.


fn emulateTransitionEnd
Initial value:= function (duration) {
var called = false
var $el = this
$(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end)
}
setTimeout(callback, duration)
return this
}
$(function () {
$.support.transition = transitionEnd()
if (!$.support.transition) return
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function (e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
}
}
})
}(jQuery)

Definition at line 54 of file bootstrap.js.


var version
Initial value:= $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 &&
version[2] < 1)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
}
}(jQuery)

Definition at line 13 of file bootstrap.js.

17

C:/wamp/www/conferinta/js/bootstrap.min.js File Reference


Functions
if ("undefined"==typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery")
if (b[0]< 2 &&b[1]< 9||1==b[0]&&9==b[1]&&b[2]< 1) throw new Error("Bootstrap's JavaScript requires
jQuery version 1.9.1 or higher")}(jQuery)
function b ()
a fn a (function(){a.support.transition=b(), a.support.transition
&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,
delegateType:a.support.transition.end, handle:function(b){return a(b.target).is(this)?
b.handleObj.handler.apply(this, arguments):void 0}})})}(jQuery)
function b (b)
a fn a fn alert a fn alert d prototype close (jQuery)
d hasClass ("btn")||(d

Variables
function a {"use strict"
var b =a.fn.jquery.split(" ")[0].split(".")
a fn emulateTransitionEnd =function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!
0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this}
var c ='[data-dismiss="alert"]'
var d =function(b){a(b).on("click",c,this.close)}
d VERSION ="3.3.4"
d d TRANSITION_DURATION =150
d d d prototype close =function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var
e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var
g=a(f);b&&b.preventDefault(),g.length||
(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||
(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?
g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())}
var e =a.fn.alert
a fn alert =b
a fn a fn alert Constructor =d
a fn a fn alert a fn alert noConflict =function(){return a.fn.alert=e,this}
c c DEFAULTS ={loadingText:"loading..."}
c c c prototype setState =function(b){var c="disabled",d=this.
$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[
e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?
(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!
1,d.removeClass(c).removeAttr(c))},this),0)}
c c c prototype c prototype toggle =function(){var a=!0,b=this.$element.closest('[datatoggle="buttons"]');if(b.length){var c=this.
$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.
$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!
this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.
$element.hasClass("active"));a&&this.$element.toggleClass("active")}
a fn button =b

18

Function Documentation
a fn a ( function(){a.support.transition=b(), a.support.transition
&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,
delegateType:a.support.transition.end, handle:function(b){return a(b.target).is(this)?
b.handleObj.handler.apply(this, arguments):void 0}})})
function b ()

Definition at line 6 of file bootstrap.min.js.


function b ( b)

Definition at line 6 of file bootstrap.min.js.


a fn a fn alert a fn alert d prototype close ( jQuery)
d hasClass ("btn" )
if ("undefined" = =typeof

jQuery)[new]

Bootstrap v3.3.4 (http://getbootstrap.com) Copyright 2011-2015 Twitter, Inc.


Licensed
under
MIT
(https://github.com/twbs/bootstrap/blob/master/LICENSE)
if ()[new]

Variable Documentation
function a {"use strict"

Definition at line 6 of file bootstrap.min.js.


a fn alert =b

Definition at line 6 of file bootstrap.min.js.


function b =a.fn.jquery.split(" ")[0].split(".")

Definition at line 6 of file bootstrap.min.js.


a fn button =b

19

Definition at line 6 of file bootstrap.min.js.


function c ='[data-dismiss="alert"]'

Definition at line 6 of file bootstrap.min.js.


d d d prototype close =function(b){function c()
{g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||
(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var
g=a(f);b&&b.preventDefault(),g.length||
(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||
(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?
g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())}

Definition at line 6 of file bootstrap.min.js.


a fn a fn button Constructor =d

Definition at line 6 of file bootstrap.min.js.


var d =function(b){a(b).on("click",c,this.close)}

Definition at line 6 of file bootstrap.min.js.


c c DEFAULTS ={loadingText:"loading..."}

Definition at line 6 of file bootstrap.min.js.


var e =a.fn.alert

Definition at line 6 of file bootstrap.min.js.


a fn emulateTransitionEnd =function(b){var c=!
1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||
a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this}

Definition at line 6 of file bootstrap.min.js.


a fn a fn button a fn button noConflict =function(){return a.fn.alert=e,this}

Definition at line 6 of file bootstrap.min.js.

20

c c c prototype setState =function(b){var c="disabled",d=this.


$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("rese
tText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?
this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!
0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!
1,d.removeClass(c).removeAttr(c))},this),0)}

Definition at line 6 of file bootstrap.min.js.


c c c prototype c prototype toggle =function(){var a=!0,b=this.$element.closest('[datatoggle="buttons"]');if(b.length){var c=this.
$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.
$element.hasClass("active")?a=!
1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.
$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.
$element.hasClass("active"));a&&this.$element.toggleClass("active")}

Definition at line 6 of file bootstrap.min.js.


d d TRANSITION_DURATION =150

Definition at line 6 of file bootstrap.min.js.


c VERSION ="3.3.4"

Definition at line 6 of file bootstrap.min.js.

21

C:/wamp/www/conferinta/js/formValidation/js/framework/bootstr
ap.min.js File Reference
Functions
!function (a)

Variables
jQuery

Function Documentation
!function ( a)

FormValidation (http://formvalidation.io) The best jQuery plugin to validate


form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
Version:
v0.6.3-dev, built on 2015-05-01 11:21:03 AM
Author:
https://twitter.com/formvalidation
Copyright:
(c) 2013 - 2015 Nguyen Huu Phuoc http://formvalidation.io/license/
Definition at line 10 of file bootstrap.min.js.

Variable Documentation
jQuery

Definition at line 10 of file bootstrap.min.js.

22

C:/wamp/www/conferinta/js/formValidation/js/formValidation.min
.js File Reference
Functions
if (window.FormValidation={AddOn:{}, Framework:{}, I18n:{}, Validator:{}},"undefined"==typeof
jQuery) throw new Error("FormValidation requires jQuery")
!function (a)

Variables
jQuery
function a

Function Documentation
!function ( a)

Definition at line 10 of file formValidation.min.js.


if (window. FormValidation = {AddOn:{}, Framework:{},
{}}, "undefined" = =typeof jQuery)[new]

I18n:{},

Validator:

FormValidation (http://formvalidation.io) The best jQuery plugin to validate


form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
Version:
v0.6.3-dev, built on 2015-05-01 11:21:01 AM
Author:
https://twitter.com/formvalidation
Copyright:
(c) 2013 - 2015 Nguyen Huu Phuoc http://formvalidation.io/license/

Variable Documentation
function a
Initial
value:{FormValidation.Base=function(b,c,d){this.
$form=a(b),this.options=a.extend({},a.fn.formValidation.DEFAULT_OPTIONS,c),this._namespace=d|
|"fv",this.$invalidFields=a([]),this.$submitButton=null,this.
$hiddenButton=null,this.STATUS_NOT_VALIDATED="NOT_VALIDATED",this.STATUS_VALIDA
TING="VALIDATING",this.STATUS_INVALID="INVALID",this.STATUS_VALID="VALID",this.S
TATUS_IGNORED="IGNORED",this._ieVersion=function(){for(var
a=3,b=document.createElement("div"),c=b.all||[];b.innerHTML="<!--[if gt IE "+ ++a+"]><br><!
[endif]-->",c[0];);return
a>4?a:!a}();var
e=document.createElement("div");this._changeEvent=9!
==this._ieVersion&&"oninput"in
e?"input":"keyup",this._submitIfValid=null,this._cacheFields={},this._init()},FormValidation.Base.pro
totype={constructor:FormValidation.Base,_exceedThreshold:function(b){var
c=this._namespace,d=b.attr("data-"+c+"-field"),e=this.options.fields[d].threshold||

23

this.options.threshold;if(!e)return!0;var
f=-1!==a.inArray(b.attr("type"),
["button","checkbox","file","hidden","image","radio","reset","submit"]);return
f||
b.val().length>=e},_init:function(){var
b=this,c=this._namespace,d={addOns:{},autoFocus:this.
$form.attr("data-"+c+"-autofocus"),button:{selector:this.$form.attr("data-"+c+"-button-selector")||this.
$form.attr("data-"+c+"-submitbuttons"),disabled:this.$form.attr("data-"+c+"-buttondisabled")},control:{valid:this.$form.attr("data-"+c+"-control-valid"),invalid:this.
$form.attr("data-"+c+"-control-invalid")},err:{clazz:this.$form.attr("data-"+c+"-errclazz"),container:this.$form.attr("data-"+c+"-err-container")||this.$form.attr("data-"+c+"container"),parent:this.$form.attr("data-"+c+"-err-parent")},events:{formInit:this.
$form.attr("data-"+c+"-events-form-init"),formPreValidate:this.$form.attr("data-"+c+"-events-formprevalidate"),formError:this.$form.attr("data-"+c+"-events-form-error"),formSuccess:this.
$form.attr("data-"+c+"-events-form-success"),fieldAdded:this.$form.attr("data-"+c+"-events-fieldadded"),fieldRemoved:this.$form.attr("data-"+c+"-events-field-removed"),fieldInit:this.
$form.attr("data-"+c+"-events-field-init"),fieldError:this.$form.attr("data-"+c+"-events-fielderror"),fieldSuccess:this.$form.attr("data-"+c+"-events-field-success"),fieldStatus:this.
$form.attr("data-"+c+"-events-field-status"),localeChanged:this.$form.attr("data-"+c+"-events-localechanged"),validatorError:this.$form.attr("data-"+c+"-events-validator-error"),validatorSuccess:this.
$form.attr("data-"+c+"-events-validator-success"),validatorIgnored:this.$form.attr("data-"+c+"-eventsvalidator-ignored")},excluded:this.$form.attr("data-"+c+"-excluded"),icon:{valid:this.
$form.attr("data-"+c+"-icon-valid")||this.$form.attr("data-"+c+"-feedbackicons-valid"),invalid:this.
$form.attr("data-"+c+"-icon-invalid")||this.$form.attr("data-"+c+"-feedbackiconsinvalid"),validating:this.$form.attr("data-"+c+"-icon-validating")||this.$form.attr("data-"+c+"feedbackicons-validating"),feedback:this.$form.attr("data-"+c+"-icon-feedback")},live:this.
$form.attr("data-"+c+"-live"),locale:this.$form.attr("data-"+c+"-locale"),message:this.
$form.attr("data-"+c+"-message"),onPreValidate:this.$form.attr("data-"+c+"onprevalidate"),onError:this.$form.attr("data-"+c+"-onerror"),onSuccess:this.$form.attr("data-"+c+"onsuccess"),row:{selector:this.$form.attr("data-"+c+"-row-selector")||this.$form.attr("data-"+c+"group"),valid:this.$form.attr("data-"+c+"-row-valid"),invalid:this.$form.attr("data-"+c+"-rowinvalid"),feedback:this.$form.attr("data-"+c+"-row-feedback")},threshold:this.$form.attr("data-"+c+"threshold"),trigger:this.$form.attr("data-"+c+"-trigger"),verbose:this.$form.attr("data-"+c+"verbose"),fields:{}};this.
$form.attr("novalidate","novalidate").addClass(this.options.elementClass).on("submit."+c,function(a)
{a.preventDefault(),b.validate()}).on("click."+c,this.options.button.selector,function(){b.
$submitButton=a(this),b._submitIfValid=!0}),(this.options.declarative===!
0||"true"===this.options.declarative)&&this.$form.find("[name], [data-"+c+"-field]").each(function()
{var
e=a(this),f=e.attr("name")||e.attr("data-"+c+"field"),g=b._parseOptions(e);g&&(e.attr("data-"+c+"field",f),d.fields[f]=a.extend({},g,d.fields[f]))}),this.options=a.extend(!
0,this.options,d),"string"==typeof
this.options.err.parent&&(this.options.err.parent=new
RegExp(this.options.err.parent)),this.options.container&&(this.options.err.container=this.options.conta
iner,delete
this.options.container),this.options.feedbackIcons&&(this.options.icon=a.extend(!
0,this.options.icon,this.options.feedbackIcons),delete
this.options.feedbackIcons),this.options.group&&(this.options.row.selector=this.options.group,delete
this.options.group),this.options.submitButtons&&(this.options.button.selector=this.options.submitButt
ons,delete
this.options.submitButtons),FormValidation.I18n[this.options.locale]||
(this.options.locale=a.fn.formValidation.DEFAULT_OPTIONS.locale),(this.options.declarative===!
0||"true"===this.options.declarative)&&(this.options=a.extend(!0,this.options,
{addOns:this._parseAddOnOptions()})),this.
$hiddenButton=a("<button/>").attr("type","submit").prependTo(this.$form).addClass("fv-hiddensubmit").css({display:"none",width:0,height:0}),this.
$form.on("click."+this._namespace,'[type="submit"]',function(c){if(!c.isDefaultPrevented()){var
d=a(c.target),e=d.is('[type="submit"]')?d.eq(0):d.parent('[type="submit"]').eq(0);!
b.options.button.selector||e.is(b.options.button.selector)||e.is(b.$hiddenButton)||b.
$form.off("submit."+b._namespace).submit()}});for(var
e
in
this.options.fields)this._initField(e);for(var
f
in
this.options.addOns)"function"==typeof
FormValidation.AddOn[f].init&&FormValidation.AddOn[f].init(this,this.options.addOns[f]);this.

24

$form.trigger(a.Event(this.options.events.formInit),
{bv:this,fv:this,options:this.options}),this.options.onPreValidate&&this.
$form.on(this.options.events.formPreValidate,function(a)
{FormValidation.Helper.call(b.options.onPreValidate,[a])}),this.options.onSuccess&&this.
$form.on(this.options.events.formSuccess,function(a)
{FormValidation.Helper.call(b.options.onSuccess,[a])}),this.options.onError&&this.
$form.on(this.options.events.formError,function(a){FormValidation.Helper.call(b.options.onError,
[a])})},_initField:function(b){var
c=this._namespace,d=a([]);switch(typeof
b)
{case"object":d=b,b=b.attr("data-"+c+"field");break;case"string":d=this.getFieldElements(b),d.attr("data-"+c+"-field",b)}if(0!
==d.length&&null!==this.options.fields[b]&&null!==this.options.fields[b].validators){var e;for(e in
this.options.fields[b].validators)FormValidation.Validator[e]||delete
this.options.fields[b].validators[e];null===this.options.fields[b].enabled&&(this.options.fields[b].enabl
ed=!0);for(var
f=this,g=d.length,h=d.attr("type"),i=1===g||"radio"===h||"checkbox"===h,j=this._getFieldTrigger(d.e
q(0)),k=a.map(j,function(a){return
a+".update."+c}).join("
"),l=0;g>l;l++){var
m=d.eq(l),n=this.options.fields[b].row||
this.options.row.selector,o=m.closest(n),p="function"==typeof(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container)?(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container).call(this,m,this):this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container,q=p&&"tooltip"!==p&&"popover"!==p?
a(p):this._getMessageContainer(m,n);p&&"tooltip"!==p&&"popover"!
==p&&q.addClass(this.options.err.clazz),q.find("."+this.options.err.clazz.split("
").join(".")
+"[data-"+c+"-validator][data-"+c+'-for="'+b+'"]').remove(),o.find("i[data-"+c+'-iconfor="'+b+'"]').remove(),m.off(k).on(k,function()
{f.updateStatus(a(this),f.STATUS_NOT_VALIDATED)}),m.data(c+".messages",q);for(e
in
this.options.fields[b].validators)m.data(c+".result."+e,this.STATUS_NOT_VALIDATED),i&&l!==g-1||
a("<small/>").css("display","none").addClass(this.options.err.clazz).attr("data-"+c+"validator",e).attr("data-"+c+"-for",b).attr("data-"+c+"result",this.STATUS_NOT_VALIDATED).html(this._getMessage(b,e)).appendTo(q),"function"==type
of
FormValidation.Validator[e].init&&FormValidation.Validator[e].init(this,m,this.options.fields[b].valida
tors[e]);if(this.options.fields[b].icon!==!1&&"false"!
==this.options.fields[b].icon&&this.options.icon&&this.options.icon.valid&&this.options.icon.invalid
&&this.options.icon.validating&&(!i||l===g-1)){o.addClass(this.options.row.feedback);var
r=a("<i/>").css("display","none").addClass(this.options.icon.feedback).attr("data-"+c+"-iconfor",b).insertAfter(m);(i?d:m).data(c+".icon",r),("tooltip"===p||"popover"===p)&&((i?
d:m).on(this.options.events.fieldError,function(){o.addClass("fv-hastooltip")}).on(this.options.events.fieldSuccess,function(){o.removeClass("fv-hastooltip")}),m.off("focus.container."+c).on("focus.container."+c,function()
{f._showTooltip(m,p)}).off("blur.container."+c).on("blur.container."+c,function()
{f._hideTooltip(m,p)})),"string"==typeof
this.options.fields[b].icon&&"true"!
==this.options.fields[b].icon?
r.appendTo(a(this.options.fields[b].icon)):this._fixIcon(m,r)}}d.on(this.options.events.fieldSuccess,fun
ction(a,b){var
c=f.getOptions(b.field,null,"onSuccess");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.fieldError,function(a,b){var
c=f.getOptions(b.field,null,"onError");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.fieldStatus,function(a,b){var
c=f.getOptions(b.field,null,"onStatus");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.validatorError,function(a,b){var
c=f.getOptions(b.field,b.validator,"onError");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.validatorIgnored,function(a,b){var
c=f.getOptions(b.field,b.validator,"onIgnored");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.validatorSuccess,function(a,b){var
c=f.getOptions(b.field,b.validator,"onSuccess");c&&FormValidation.Helper.call(c,
[a,b])}),this.onLiveChange(d,"live",function()

25

{f._exceedThreshold(a(this))&&f.validateField(a(this))}),d.trigger(a.Event(this.options.events.fieldInit
),{bv:this,fv:this,field:b,element:d})}},_isExcluded:function(b){var
c=this._namespace,d=b.attr("data-"+c+"-excluded"),e=b.attr("data-"+c+"-field")||
b.attr("name");switch(!0){case!!
e&&this.options.fields&&this.options.fields[e]&&("true"===this.options.fields[e].excluded||
this.options.fields[e].excluded===!0):case"true"===d:case""===d:return!0;case!!
e&&this.options.fields&&this.options.fields[e]&&("false"===this.options.fields[e].excluded||
this.options.fields[e].excluded===!1):case"false"===d:return!1;case!!
e&&this.options.fields&&this.options.fields[e]&&"function"==typeof
this.options.fields[e].excluded:return
this.options.fields[e].excluded.call(this,b,this);case!!
e&&this.options.fields&&this.options.fields[e]&&"string"==typeof
this.options.fields[e].excluded:case d:return FormValidation.Helper.call(this.options.fields[e].excluded,
[b,this]);default:if(this.options.excluded){"string"==typeof
this.options.excluded&&(this.options.excluded=a.map(this.options.excluded.split(","),function(b)
{return
a.trim(b)}));for(var
f=this.options.excluded.length,g=0;f>g;g++)if("string"==typeof
this.options.excluded[g]&&b.is(this.options.excluded[g])||"function"==typeof
this.options.excluded[g]&&this.options.excluded[g].call(this,b,this)===!0)return!0}return!
1}},_getFieldTrigger:function(a){var
b=this._namespace,c=a.data(b+".trigger");if(c)return
c;var
d=a.attr("type"),e=a.attr("data-"+b+"field"),f="radio"===d||"checkbox"===d||"file"===d||"SELECT"===a.get(0).tagName?"change":this._i
eVersion>=10&&a.attr("placeholder")?"keyup":this._changeEvent;return
c=((this.options.fields[e]?
this.options.fields[e].trigger:null)||this.options.trigger||f).split("
"),a.data(b+".trigger",c),c},_getMessage:function(a,b){if(!
(this.options.fields[a]&&FormValidation.Validator[b]&&this.options.fields[a].validators&&this.option
s.fields[a].validators[b]))return"";switch(!0){case!!this.options.fields[a].validators[b].message:return
this.options.fields[a].validators[b].message;case!!this.options.fields[a].message:return
this.options.fields[a].message;case!!FormValidation.I18n[this.options.locale]&&!!
FormValidation.I18n[this.options.locale][b]&&!!FormValidation.I18n[this.options.locale][b]
["default"]:return
FormValidation.I18n[this.options.locale][b]["default"];default:return
this.options.message}},_getMessageContainer:function(a,b){if(!this.options.err.parent)throw
new
Error("The err.parent option is not defined");var c=a.parent();if(c.is(b))return c;var
d=c.attr("class");return
d&&this.options.err.parent.test(d)?
c:this._getMessageContainer(c,b)},_parseAddOnOptions:function(){var
a=this._namespace,b=this.
$form.attr("data-"+a+"-addons"),c=this.options.addOns||{};if(b){b=b.replace(/\s/g,"").split(",");for(var
d=0;d<b.length;d++)c[b[d]]||(c[b[d]]={})}var
e,f,g,h;for(e
in
c)if(FormValidation.AddOn[e])
{if(f=FormValidation.AddOn[e].html5Attributes)for(g
in
f)h=this.$form.attr("data-"+a+"addons-"+e.toLowerCase()+"-"+g.toLowerCase()),h&&(c[e][f[g]]=h)}else
delete
c[e];return
c},_parseOptions:function(b){var
c,d,e,f,g,h,i,j,k,l=this._namespace,m=b.attr("name")||
b.attr("data-"+l+"-field"),n={};for(d
in
FormValidation.Validator)if(c=FormValidation.Validator[d],e="data-"+l+"-"+d.toLowerCase(),f=b.attr(
e)+"",k="function"==typeof
c.enableByHtml5?c.enableByHtml5(b):null,k&&"false"!==f||k!==!
0&&(""===f||"true"===f||e===f.toLowerCase())){c.html5Attributes=a.extend({},
{message:"message",onerror:"onError",onsuccess:"onSuccess",transformer:"transformer"},c.html5Attr
ibutes),n[d]=a.extend({},k===!0?{}:k,n[d]);for(j
in
c.html5Attributes)g=c.html5Attributes[j],h="data-"+l+"-"+d.toLowerCase()
+"-"+j,i=b.attr(h),i&&("true"===i||h===i.toLowerCase()?i=!0:"false"===i&&(i=!1),n[d][g]=i)}var
o={autoFocus:b.attr("data-"+l+"-autofocus"),err:b.attr("data-"+l+"-err-container")||b.attr("data-"+l+"container"),excluded:b.attr("data-"+l+"-excluded"),icon:b.attr("data-"+l+"-icon")||b.attr("data-"+l+"feedbackicons")||(this.options.fields&&this.options.fields[m]?
this.options.fields[m].feedbackIcons:null),message:b.attr("data-"+l+"message"),onError:b.attr("data-"+l+"-onerror"),onStatus:b.attr("data-"+l+"onstatus"),onSuccess:b.attr("data-"+l+"-onsuccess"),row:b.attr("data-"+l+"-row")||b.attr("data-"+l+"group")||(this.options.fields&&this.options.fields[m]?
this.options.fields[m].group:null),selector:b.attr("data-"+l+"-selector"),threshold:b.attr("data-"+l+"threshold"),transformer:b.attr("data-"+l+"-transformer"),trigger:b.attr("data-"+l+"trigger"),verbose:b.attr("data-"+l+"-

26

verbose"),validators:n},p=a.isEmptyObject(o),q=a.isEmptyObject(n);return!q||!
p&&this.options.fields&&this.options.fields[m]?(o.validators=n,o):null},_submit:function(){var
b=this.isValid();if(null!==b){var
c=b?
this.options.events.formSuccess:this.options.events.formError,d=a.Event(c);this.$form.trigger(d),this.
$submitButton&&(b?this._onSuccess(d):this._onError(d))}},_onError:function(b){if(!
b.isDefaultPrevented()){if("submitted"===this.options.live){this.options.live="enabled";var
c=this;for(var
d
in
this.options.fields)!function(b){var
d=c.getFieldElements(b);d.length&&c.onLiveChange(d,"live",function()
{c._exceedThreshold(a(this))&&c.validateField(a(this))})}(d)}for(var e=this._namespace,f=0;f<this.
$invalidFields.length;f++){var g=this.$invalidFields.eq(f),h=this.isOptionEnabled(g.attr("data-"+e+"field"),"autoFocus");if(h){g.focus();break}}}},_onFieldValidated:function(b,c){var
d=this._namespace,e=b.attr("data-"+d+"field"),f=this.options.fields[e].validators,g={},h=0,i={bv:this,fv:this,field:e,element:b,validator:c,result
:b.data(d+".response."+c)};if(c)switch(b.data(d+".result."+c)){case
this.STATUS_INVALID:b.trigger(a.Event(this.options.events.validatorError),i);break;case
this.STATUS_VALID:b.trigger(a.Event(this.options.events.validatorSuccess),i);break;case
this.STATUS_IGNORED:b.trigger(a.Event(this.options.events.validatorIgnored),i)}g[this.STATUS_N
OT_VALIDATED]=0,g[this.STATUS_VALIDATING]=0,g[this.STATUS_INVALID]=0,g[this.STATU
S_VALID]=0,g[this.STATUS_IGNORED]=0;for(var
j
in
f)if(f[j].enabled!==!1){h++;var
k=b.data(d+".result."+j);k&&g[k]++}g[this.STATUS_VALID]+g[this.STATUS_IGNORED]===h?
(this.$invalidFields=this.$invalidFields.not(b),b.trigger(a.Event(this.options.events.fieldSuccess),i)):
(0===g[this.STATUS_NOT_VALIDATED]||!
this.isOptionEnabled(e,"verbose"))&&0===g[this.STATUS_VALIDATING]&&g[this.STATUS_INVA
LID]>0&&(this.$invalidFields=this.
$invalidFields.add(b),b.trigger(a.Event(this.options.events.fieldError),i))},_onSuccess:function(a)
{a.isDefaultPrevented()||this.disableSubmitButtons(!0).defaultSubmit()},_fixIcon:function()
{},_createTooltip:function(){},_destroyTooltip:function(){},_hideTooltip:function()
{},_showTooltip:function(){},defaultSubmit:function(){var
b=this._namespace;this.
$submitButton&&a("<input/>").attr({type:"hidden",name:this.
$submitButton.attr("name")}).attr("data-"+b+"-submit-hidden","").val(this.
$submitButton.val()).appendTo(this.$form),this.
$form.off("submit."+b).submit()},disableSubmitButtons:function(a){return
a?"disabled"!
==this.options.live&&this.
$form.find(this.options.button.selector).attr("disabled","disabled").addClass(this.options.button.disable
d):this.
$form.find(this.options.button.selector).removeAttr("disabled").removeClass(this.options.button.disabl
ed),this},getFieldElements:function(b){if(!
this._cacheFields[b])if(this.options.fields[b]&&this.options.fields[b].selector){var
c=this.
$form.find(this.options.fields[b].selector);this._cacheFields[b]=c.length?
c:a(this.options.fields[b].selector)}else this._cacheFields[b]=this.$form.find('[name="'+b+'"]');return
this._cacheFields[b]},getFieldValue:function(a,b){var c,d=this._namespace;if("string"==typeof a)
{if(c=this.getFieldElements(a),0===c.length)return null}else c=a,a=c.attr("data-"+d+"-field");if(!a||!
this.options.fields[a])return
c.val();var
e=(this.options.fields[a].validators&&this.options.fields[a].validators[b]?
this.options.fields[a].validators[b].transformer:null)||this.options.fields[a].transformer;return
e?
FormValidation.Helper.call(e,[c,b,this]):c.val()},getNamespace:function(){return
this._namespace},getOptions:function(a,b,c){var
d=this._namespace;if(!a)return
c?
this.options[c]:this.options;if("object"==typeof
a&&(a=a.attr("data-"+d+"-field")),!
this.options.fields[a])return null;var e=this.options.fields[a];return b?e.validators&&e.validators[b]?c?
e.validators[b][c]:e.validators[b]:null:c?e[c]:e},getStatus:function(a,b){var
c=this._namespace;switch(typeof
a){case"object":return
a.data(c+".result."+b);case"string":default:return
this.getFieldElements(a).eq(0).data(c+".result."+b)}},isOptionEnabled:function(a,b){return!
this.options.fields[a]||"true"!==this.options.fields[a][b]&&this.options.fields[a][b]!==!0?!
this.options.fields[a]||"false"!==this.options.fields[a][b]&&this.options.fields[a][b]!==!
1?"true"===this.options[b]||this.options[b]===!0:!1:!0},isValid:function(){for(var
a
in

27

this.options.fields){var
b=this.isValidField(a);if(null===b)return
null;if(b===!1)return!1}return!
0},isValidContainer:function(b){var
c=this,d=this._namespace,e=[],f="string"==typeof
b?
a(b):b;if(0===f.length)return!0;f.find("[data-"+d+"-field]").each(function(){var
b=a(this);c._isExcluded(b)||e.push(b)});for(var
g=e.length,h=0;g>h;h++){var
i=e[h],j=i.attr("data-"+d+"-field"),k=i.data(d+".messages").find("."+this.options.err.clazz.split("
").join(".")+"[data-"+d+"-validator][data-"+d+'-for="'+j+'"]');if(k.filter("[data-"+d+'result="'+this.STATUS_INVALID+'"]').length>0)return!1;if(k.filter("[data-"+d+'result="'+this.STATUS_NOT_VALIDATED+'"]').length>0||k.filter("[data-"+d+'result="'+this.STATUS_VALIDATING+'"]').length>0)return
null}return!0},isValidField:function(b)
{var
c=this._namespace,d=a([]);switch(typeof
b){case"object":d=b,b=b.attr("data-"+c+"field");break;case"string":d=this.getFieldElements(b)}if(0===d.length||!this.options.fields[b]||
this.options.fields[b].enabled===!1)return!0;for(var
e,f,g,h=d.attr("type"),i="radio"===h||"checkbox"===h?1:d.length,j=0;i>j;j++)if(e=d.eq(j),!
this._isExcluded(e))for(f
in
this.options.fields[b].validators)if(this.options.fields[b].validators[f].enabled!==!1)
{if(g=e.data(c+".result."+f),g===this.STATUS_VALIDATING||
g===this.STATUS_NOT_VALIDATED)return null;if(g===this.STATUS_INVALID)return!1}return!
0},offLiveChange:function(b,c){if(null===b||0===b.length)return
this;var
d=this._namespace,e=this._getFieldTrigger(b.eq(0)),f=a.map(e,function(a){return
a+"."+c+"."+d}).join("
");return
b.off(f),this},onLiveChange:function(b,c,d){if(null===b||
0===b.length)return
this;var
e=this._namespace,f=this._getFieldTrigger(b.eq(0)),g=a.map(f,function(a){return
a+"."+c+"."+e}).join("
");switch(this.options.live)
{case"submitted":break;case"disabled":b.off(g);break;case"enabled":default:b.off(g).on(g,function()
{d.apply(this,arguments)})}return
this},updateMessage:function(b,c,d){var
e=this,f=this._namespace,g=a([]);switch(typeof
b){case"object":g=b,b=b.attr("data-"+f+"field");break;case"string":g=this.getFieldElements(b)}return
g.each(function()
{a(this).data(f+".messages").find("."+e.options.err.clazz+"[data-"+f+'-validator="'+c+'"][data-'+f+'for="'+b+'"]').html(d)}),this},updateStatus:function(b,c,d){var
e=this._namespace,f=a([]);switch(typeof
b){case"object":f=b,b=b.attr("data-"+e+"field");break;case"string":f=this.getFieldElements(b)}if(!b||!this.options.fields[b])return
this;c===this.STATUS_NOT_VALIDATED&&(this._submitIfValid=!1);for(var
g=this,h=f.attr("type"),i=this.options.fields[b].row||
this.options.row.selector,j="radio"===h||"checkbox"===h?1:f.length,k=0;j>k;k++){var l=f.eq(k);if(!
this._isExcluded(l)){var
m,n,o=l.closest(i),p=l.data(e+".messages"),q=p.find("."+this.options.err.clazz.split("
").join(".")
+"[data-"+e+"-validator][data-"+e+'-for="'+b+'"]'),r=d?q.filter("[data-"+e+'validator="'+d+'"]'):q,s=l.data(e+".icon"),t="function"==typeof(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container)?(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container).call(this,l,this):this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container,u=null;if(d)l.data(e+".result."+d,c);else for(var v in
this.options.fields[b].validators)l.data(e+".result."+v,c);switch(r.attr("data-"+e+"-result",c),c){case
this.STATUS_VALIDATING:u=null,this.disableSubmitButtons(!
0),l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid),o.removeClass(t
his.options.row.valid).removeClass(this.options.row.invalid),s&&s.removeClass(this.options.icon.valid
).removeClass(this.options.icon.invalid).addClass(this.options.icon.validating).show();break;case
this.STATUS_INVALID:u=!1,this.disableSubmitButtons(!
0),l.removeClass(this.options.control.valid).addClass(this.options.control.invalid),o.removeClass(this.o
ptions.row.valid).addClass(this.options.row.invalid),s&&s.removeClass(this.options.icon.valid).remov
eClass(this.options.icon.validating).addClass(this.options.icon.invalid).show();break;case
this.STATUS_IGNORED:case
this.STATUS_VALID:m=q.filter("[data-"+e+'result="'+this.STATUS_VALIDATING+'"]').length>0,n=q.filter("[data-"+e+'result="'+this.STATUS_NOT_VALIDATED+'"]').length>0;var
w=q.filter("[data-"+e+'result="'+this.STATUS_IGNORED+'"]').length;u=m||n?null:q.filter("[data-"+e+'result="'+this.STATUS_VALID+'"]').length+w===q.length,l.removeClass(this.options.control.valid).re
moveClass(this.options.control.invalid),u===!0?(this.disableSubmitButtons(this.isValid()===!

28

1),c===this.STATUS_VALID&&l.addClass(this.options.control.valid)):u===!
1&&(this.disableSubmitButtons(!
0),c===this.STATUS_VALID&&l.addClass(this.options.control.invalid)),s&&(s.removeClass(this.opti
ons.icon.invalid).removeClass(this.options.icon.validating).removeClass(this.options.icon.valid),
(c===this.STATUS_VALID||w!==q.length)&&s.addClass(null===u?"":u?this.options.icon.valid:m?
this.options.icon.validating:this.options.icon.invalid).show());var
x=this.isValidContainer(o);null!
==x&&(o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid),
(c===this.STATUS_VALID||w!==q.length)&&o.addClass(x?
this.options.row.valid:this.options.row.invalid));break;case
this.STATUS_NOT_VALIDATED:default:u=null,this.disableSubmitButtons(!
1),l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid),o.removeClass(t
his.options.row.valid).removeClass(this.options.row.invalid),s&&s.removeClass(this.options.icon.valid
).removeClass(this.options.icon.invalid).removeClass(this.options.icon.validating).hide()}!s||"tooltip"!
==t&&"popover"!==t?c===this.STATUS_INVALID?r.show():r.hide():u===!1?
this._createTooltip(l,q.filter("[data-"+e+'result="'+g.STATUS_INVALID+'"]').eq(0).html(),t):this._destroyTooltip(l,t),l.trigger(a.Event(this.opti
ons.events.fieldStatus),{bv:this,fv:this,field:b,element:l,status:c}),this._onFieldValidated(l,d)}}return
this},validate:function(){if(a.isEmptyObject(this.options.fields))return
this._submit(),this;this.
$form.trigger(a.Event(this.options.events.formPreValidate)),this.disableSubmitButtons(!
0),this._submitIfValid=!1;for(var
b
in
this.options.fields)this.validateField(b);return
this._submit(),this._submitIfValid=!0,this},validateField:function(b){var
c=this._namespace,d=a([]);switch(typeof
b){case"object":d=b,b=b.attr("data-"+c+"field");break;case"string":d=this.getFieldElements(b)}if(0===d.length||!this.options.fields[b]||
this.options.fields[b].enabled===!1)return
this;for(var
e,f,g=this,h=d.attr("type"),i="radio"===h||"checkbox"===h?
1:d.length,j="radio"===h||"checkbox"===h,k=this.options.fields[b].validators,l=this.isOptionEnabled(
b,"verbose"),m=0;i>m;m++){var
n=d.eq(m);if(!this._isExcluded(n)){var
o=!1;for(e
in
k)
{if(n.data(c+".dfs."+e)&&n.data(c+".dfs."+e).reject(),o)break;var
p=n.data(c+".result."+e);if(p!
==this.STATUS_VALID&&p!==this.STATUS_INVALID)if(k[e].enabled!==!
1)if(n.data(c+".result."+e,this.STATUS_VALIDATING),f=FormValidation.Validator[e].validate(this,n,
k[e]),"object"==typeof
f&&f.resolve)this.updateStatus(j?
b:n,this.STATUS_VALIDATING,e),n.data(c+".dfs."+e,f),f.done(function(a,b,d)
{a.removeData(c+".dfs."+b).data(c+".response."+b,d),d.message&&g.updateMessage(a,b,d.message),
g.updateStatus(j?a.attr("data-"+c+"-field"):a,d.valid===!0?g.STATUS_VALID:d.valid===!1?
g.STATUS_INVALID:g.STATUS_IGNORED,b),d.valid&&g._submitIfValid===!0?
g._submit():d.valid!==!1||l||(o=!0)});else
if("object"==typeof
f&&void
0!==f.valid)
{if(n.data(c+".response."+e,f),f.message&&this.updateMessage(j?b:n,e,f.message),this.updateStatus(j?
b:n,f.valid===!0?this.STATUS_VALID:f.valid===!1?
this.STATUS_INVALID:this.STATUS_IGNORED,e),f.valid===!1&&!l)break}else
if("boolean"==typeof
f){if(n.data(c+".response."+e,f),this.updateStatus(j?b:n,f?
this.STATUS_VALID:this.STATUS_INVALID,e),!f&&!l)break}else
null===f&&(n.data(c+".response."+e,f),this.updateStatus(j?b:n,this.STATUS_IGNORED,e));else
this.updateStatus(j?b:n,this.STATUS_IGNORED,e);else
this._onFieldValidated(n,e)}}}return
this},addField:function(b,c){var
d=this._namespace,e=a([]);switch(typeof
b)
{case"object":e=b,b=b.attr("data-"+d+"-field")||b.attr("name");break;case"string":delete
this._cacheFields[b],e=this.getFieldElements(b)}e.attr("data-"+d+"-field",b);for(var
f=e.attr("type"),g="radio"===f||"checkbox"===f?1:e.length,h=0;g>h;h++){var
i=e.eq(h),j=this._parseOptions(i);j=null===j?c:a.extend(!0,j,c),this.options.fields[b]=a.extend(!
0,this.options.fields[b],j),this._cacheFields[b]=this._cacheFields[b]?
this._cacheFields[b].add(i):i,this._initField("checkbox"===f||"radio"===f?b:i)}return
this.disableSubmitButtons(!1),this.$form.trigger(a.Event(this.options.events.fieldAdded),
{field:b,element:e,options:this.options.fields[b]}),this},destroy:function(){var
a,b,c,d,e,f,g,h=this._namespace;for(b
in
this.options.fields)for(c=this.getFieldElements(b),a=0;a<c.length;a++){d=c.eq(a);for(e
in
this.options.fields[b].validators)d.data(h+".dfs."+e)&&d.data(h+".dfs."+e).reject(),d.removeData(h+".r
esult."+e).removeData(h+".response."+e).removeData(h+".dfs."+e),"function"==typeof

29

FormValidation.Validator[e].destroy&&FormValidation.Validator[e].destroy(this,d,this.options.fields[b
].validators[e])}for(b in this.options.fields)for(c=this.getFieldElements(b),g=this.options.fields[b].row||
this.options.row.selector,a=0;a<c.length;a++)
{d=c.eq(a),d.data(h+".messages").find("."+this.options.err.clazz.split("
").join(".")+"[data-"+h+"validator][data-"+h+'for="'+b+'"]').remove().end().end().removeData(h+".messages").closest(g).removeClass(this.options.ro
w.valid).removeClass(this.options.row.invalid).removeClass(this.options.row.feedback).end().off("."+h
).removeAttr("data-"+h+"-field");var
i="function"==typeof(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container)?(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container).call(this,d,this):this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container;
("tooltip"===i||"popover"===i)&&this._destroyTooltip(d,i),f=d.data(h+".icon"),f&&f.remove(),d.remo
veData(h+".icon").removeData(h+".trigger")}for(var j in this.options.addOns)"function"==typeof
FormValidation.AddOn[j].destroy&&FormValidation.AddOn[j].destroy(this,this.options.addOns[j]);thi
s.disableSubmitButtons(!1),this.$hiddenButton.remove(),this.
$form.removeClass(this.options.elementClass).off("."+h).removeData("bootstrapValidator").removeDa
ta("formValidation").find("[data-"+h+"-submithidden]").remove().end().find('[type="submit"]').off("click."+h)},enableFieldValidators:function(a,b,c)
{var
d=this.options.fields[a].validators;if(c&&d&&d[c]&&d[c].enabled!
==b)this.options.fields[a].validators[c].enabled=b,this.updateStatus(a,this.STATUS_NOT_VALIDATE
D,c);else if(!c&&this.options.fields[a].enabled!==b){this.options.fields[a].enabled=b;for(var e in
d)this.enableFieldValidators(a,b,e)}return
this},getDynamicOption:function(a,b){var
c="string"==typeof
a?this.getFieldElements(a):a,d=c.val();if("function"==typeof
b)return
FormValidation.Helper.call(b,[d,this,c]);if("string"==typeof b){var e=this.getFieldElements(b);return
e.length?e.val():FormValidation.Helper.call(b,[d,this,c])||b}return null},getForm:function(){return this.
$form},getInvalidFields:function(){return
this.$invalidFields},getLocale:function(){return
this.options.locale},getMessages:function(b,c){var d=this,e=this._namespace,f=[],g=a([]);switch(!0)
{case
b&&"object"==typeof
b:g=b;break;case
b&&"string"==typeof
b:var
h=this.getFieldElements(b);if(h.length>0){var
i=h.attr("type");g="radio"===i||"checkbox"===i?
h.eq(0):h}break;default:g=this.$invalidFields}var
j=c?"[data-"+e+'-validator="'+c+'"]':"";return
g.each(function(){f=f.concat(a(this).data(e+".messages").find("."+d.options.err.clazz+"[data-"+e+'for="'+a(this).attr("data-"+e+"-field")+'"][data-'+e+'result="'+d.STATUS_INVALID+'"]'+j).map(function(){var
b=a(this).attr("data-"+e+"validator"),c=a(this).attr("data-"+e+"-for");return
d.options.fields[c].validators[b].enabled===!
1?"":a(this).html()}).get())}),f},getSubmitButton:function(){return
this.
$submitButton},removeField:function(b){var
c=this._namespace,d=a([]);switch(typeof
b)
{case"object":d=b,b=b.attr("data-"+c+"-field")||b.attr("name"),d.attr("data-"+c+"field",b);break;case"string":d=this.getFieldElements(b)}if(0===d.length)return
this;for(var
e=d.attr("type"),f="radio"===e||"checkbox"===e?1:d.length,g=0;f>g;g++){var
h=d.eq(g);this.
$invalidFields=this.$invalidFields.not(h),this._cacheFields[b]=this._cacheFields[b].not(h)}return
this._cacheFields[b]&&0!==this._cacheFields[b].length||delete
this.options.fields[b],
("checkbox"===e||"radio"===e)&&this._initField(b),this.disableSubmitButtons(!1),this.
$form.trigger(a.Event(this.options.events.fieldRemoved),
{field:b,element:d}),this},resetField:function(b,c){var d=this._namespace,e=a([]);
switch(typeof b){case"object":e=b,b=b.attr("data-"+d+"field");break;case"string":e=this.getFieldElements(b)}var
f=e.length;if(this.options.fields[b])for(var g=0;f>g;g++)for(var h in
this.options.fields[b].validators)e.eq(g).removeData(d+".dfs."+h);if(c){var
i=e.attr("type");"radio"===i||"checkbox"===i?e.prop("checked",!
1).removeAttr("selected"):e.val("")}return
this.updateStatus(b,this.STATUS_NOT_VALIDATED),this},resetForm:function(b){for(var c
in this.options.fields)this.resetField(c,b);return this.$invalidFields=a([]),this.
$submitButton=null,this.disableSubmitButtons(!1),this},revalidateField:function(a)
{return
this.updateStatus(a,this.STATUS_NOT_VALIDATED).validateField(a),this},setLocale:functi
on(b){return this.options.locale=b,this.
$form.trigger(a.Event(this.options.events.localeChanged),
{locale:b,bv:this,fv:this}),this},updateOption:function(a,b,c,d){var

30

e=this._namespace;return"object"==typeof a&&(a=a.attr("data-"+e+"field")),this.options.fields[a]&&this.options.fields[a].validators[b]&&(this.options.f
ields[a].validators[b]
[c]=d,this.updateStatus(a,this.STATUS_NOT_VALIDATED,b)),this},validateContainer:functi
on(b){var c=this,d=this._namespace,e=[],f="string"==typeof b?
a(b):b;if(0===f.length)return this;f.find("[data-"+d+"-field]").each(function(){var
b=a(this);c._isExcluded(b)||e.push(b)});for(var g=e.length,h=0;g>h;h+
+)this.validateField(e[h]);return this}},a.fn.formValidation=function(b){var
c=arguments;return this.each(function(){var
d=a(this),e=d.data("formValidation"),f="object"==typeof b&&b;if(!e){var
g=(f.framework||d.attr("data-fvframework")||"bootstrap").toLowerCase(),h=g.substr(0,1).toUpperCase()
+g.substr(1);if("undefined"==typeof FormValidation.Framework[h])throw new Error("The
class FormValidation.Framework."+h+" is not implemented");e=new
FormValidation.Framework[h](this,f),d.addClass("fvform-"+g).data("formValidation",e)}"string"==typeof
b&&e[b].apply(e,Array.prototype.slice.call(c,1))})},a.fn.formValidation.Constructor=Fo
rmValidation.Base,a.fn.formValidation.DEFAULT_OPTIONS={autoFocus:!0,declarative:!
0,elementClass:"fv-form",events:
{formInit:"init.form.fv",formPreValidate:"prevalidate.form.fv",formError:"err.form.fv"
,formSuccess:"success.form.fv",fieldAdded:"added.field.fv",fieldRemoved:"removed.field
.fv",fieldInit:"init.field.fv",fieldError:"err.field.fv",fieldSuccess:"success.field.f
v",fieldStatus:"status.field.fv",localeChanged:"changed.locale.fv",validatorError:"err
.validator.fv",validatorSuccess:"success.validator.fv",validatorIgnored:"ignored.valid
ator.fv"},excluded:
[":disabled",":hidden",":not(:visible)"],fields:null,live:"enabled",locale:"en_US",mes
sage:"This value is not valid",threshold:null,verbose:!0,button:
{selector:'[type="submit"]:not([formnovalidate])',disabled:""},control:
{valid:"",invalid:""},err:{clazz:"",container:null,parent:null},icon:
{valid:null,invalid:null,validating:null,feedback:""},row:
{selector:null,valid:"",invalid:"",feedback:""}}}(jQuery)

Definition at line 10 of file formValidation.min.js.


jQuery

Definition at line 10 of file formValidation.min.js.

31

C:/wamp/www/conferinta/js/formValidation/js/formValidation.pop
ular.min.js File Reference
Functions
if (window.FormValidation={AddOn:{}, Framework:{}, I18n:{}, Validator:{}},"undefined"==typeof
jQuery) throw new Error("FormValidation requires jQuery")
!function (a)

Variables
jQuery
function a

Function Documentation
!function ( a)

Definition at line 35 of file formValidation.popular.min.js.


if (window. FormValidation = {AddOn:{}, Framework:{},
{}}, "undefined" = =typeof jQuery)[new]

I18n:{},

Validator:

FormValidation (http://formvalidation.io) The best jQuery plugin to validate


form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
This is a custom build that does NOT consist of all validators. Only popular validators are
included:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

between
callback
choice
color
creditCard
date
different
digits
emailAddress
file
greaterThan
identical
integer
lessThan
notEmpty
numeric
promise
regexp
remote
stringLength
uri

Use formValidation(.min).js file if you want to have all validators.

32

Version:
v0.6.3-dev, built on 2015-05-01 11:20:59 AM
Author:
https://twitter.com/formvalidation
Copyright:
(c) 2013 - 2015 Nguyen Huu Phuoc http://formvalidation.io/license/

Variable Documentation
function a
Initial
value:{FormValidation.Base=function(b,c,d){this.
$form=a(b),this.options=a.extend({},a.fn.formValidation.DEFAULT_OPTIONS,c),this._namespace=d|
|"fv",this.$invalidFields=a([]),this.$submitButton=null,this.
$hiddenButton=null,this.STATUS_NOT_VALIDATED="NOT_VALIDATED",this.STATUS_VALIDA
TING="VALIDATING",this.STATUS_INVALID="INVALID",this.STATUS_VALID="VALID",this.S
TATUS_IGNORED="IGNORED",this._ieVersion=function(){for(var
a=3,b=document.createElement("div"),c=b.all||[];b.innerHTML="<!--[if gt IE "+ ++a+"]><br><!
[endif]-->",c[0];);return
a>4?a:!a}();var
e=document.createElement("div");this._changeEvent=9!
==this._ieVersion&&"oninput"in
e?"input":"keyup",this._submitIfValid=null,this._cacheFields={},this._init()},FormValidation.Base.pro
totype={constructor:FormValidation.Base,_exceedThreshold:function(b){var
c=this._namespace,d=b.attr("data-"+c+"-field"),e=this.options.fields[d].threshold||
this.options.threshold;if(!e)return!0;var
f=-1!==a.inArray(b.attr("type"),
["button","checkbox","file","hidden","image","radio","reset","submit"]);return
f||
b.val().length>=e},_init:function(){var
b=this,c=this._namespace,d={addOns:{},autoFocus:this.
$form.attr("data-"+c+"-autofocus"),button:{selector:this.$form.attr("data-"+c+"-button-selector")||this.
$form.attr("data-"+c+"-submitbuttons"),disabled:this.$form.attr("data-"+c+"-buttondisabled")},control:{valid:this.$form.attr("data-"+c+"-control-valid"),invalid:this.
$form.attr("data-"+c+"-control-invalid")},err:{clazz:this.$form.attr("data-"+c+"-errclazz"),container:this.$form.attr("data-"+c+"-err-container")||this.$form.attr("data-"+c+"container"),parent:this.$form.attr("data-"+c+"-err-parent")},events:{formInit:this.
$form.attr("data-"+c+"-events-form-init"),formPreValidate:this.$form.attr("data-"+c+"-events-formprevalidate"),formError:this.$form.attr("data-"+c+"-events-form-error"),formSuccess:this.
$form.attr("data-"+c+"-events-form-success"),fieldAdded:this.$form.attr("data-"+c+"-events-fieldadded"),fieldRemoved:this.$form.attr("data-"+c+"-events-field-removed"),fieldInit:this.
$form.attr("data-"+c+"-events-field-init"),fieldError:this.$form.attr("data-"+c+"-events-fielderror"),fieldSuccess:this.$form.attr("data-"+c+"-events-field-success"),fieldStatus:this.
$form.attr("data-"+c+"-events-field-status"),localeChanged:this.$form.attr("data-"+c+"-events-localechanged"),validatorError:this.$form.attr("data-"+c+"-events-validator-error"),validatorSuccess:this.
$form.attr("data-"+c+"-events-validator-success"),validatorIgnored:this.$form.attr("data-"+c+"-eventsvalidator-ignored")},excluded:this.$form.attr("data-"+c+"-excluded"),icon:{valid:this.
$form.attr("data-"+c+"-icon-valid")||this.$form.attr("data-"+c+"-feedbackicons-valid"),invalid:this.
$form.attr("data-"+c+"-icon-invalid")||this.$form.attr("data-"+c+"-feedbackiconsinvalid"),validating:this.$form.attr("data-"+c+"-icon-validating")||this.$form.attr("data-"+c+"feedbackicons-validating"),feedback:this.$form.attr("data-"+c+"-icon-feedback")},live:this.
$form.attr("data-"+c+"-live"),locale:this.$form.attr("data-"+c+"-locale"),message:this.
$form.attr("data-"+c+"-message"),onPreValidate:this.$form.attr("data-"+c+"onprevalidate"),onError:this.$form.attr("data-"+c+"-onerror"),onSuccess:this.$form.attr("data-"+c+"onsuccess"),row:{selector:this.$form.attr("data-"+c+"-row-selector")||this.$form.attr("data-"+c+"group"),valid:this.$form.attr("data-"+c+"-row-valid"),invalid:this.$form.attr("data-"+c+"-rowinvalid"),feedback:this.$form.attr("data-"+c+"-row-feedback")},threshold:this.$form.attr("data-"+c+"threshold"),trigger:this.$form.attr("data-"+c+"-trigger"),verbose:this.$form.attr("data-"+c+"-

33

verbose"),fields:{}};this.
$form.attr("novalidate","novalidate").addClass(this.options.elementClass).on("submit."+c,function(a)
{a.preventDefault(),b.validate()}).on("click."+c,this.options.button.selector,function(){b.
$submitButton=a(this),b._submitIfValid=!0}),(this.options.declarative===!
0||"true"===this.options.declarative)&&this.$form.find("[name], [data-"+c+"-field]").each(function()
{var
e=a(this),f=e.attr("name")||e.attr("data-"+c+"field"),g=b._parseOptions(e);g&&(e.attr("data-"+c+"field",f),d.fields[f]=a.extend({},g,d.fields[f]))}),this.options=a.extend(!
0,this.options,d),"string"==typeof
this.options.err.parent&&(this.options.err.parent=new
RegExp(this.options.err.parent)),this.options.container&&(this.options.err.container=this.options.conta
iner,delete
this.options.container),this.options.feedbackIcons&&(this.options.icon=a.extend(!
0,this.options.icon,this.options.feedbackIcons),delete
this.options.feedbackIcons),this.options.group&&(this.options.row.selector=this.options.group,delete
this.options.group),this.options.submitButtons&&(this.options.button.selector=this.options.submitButt
ons,delete
this.options.submitButtons),FormValidation.I18n[this.options.locale]||
(this.options.locale=a.fn.formValidation.DEFAULT_OPTIONS.locale),(this.options.declarative===!
0||"true"===this.options.declarative)&&(this.options=a.extend(!0,this.options,
{addOns:this._parseAddOnOptions()})),this.
$hiddenButton=a("<button/>").attr("type","submit").prependTo(this.$form).addClass("fv-hiddensubmit").css({display:"none",width:0,height:0}),this.
$form.on("click."+this._namespace,'[type="submit"]',function(c){if(!c.isDefaultPrevented()){var
d=a(c.target),e=d.is('[type="submit"]')?d.eq(0):d.parent('[type="submit"]').eq(0);!
b.options.button.selector||e.is(b.options.button.selector)||e.is(b.$hiddenButton)||b.
$form.off("submit."+b._namespace).submit()}});for(var
e
in
this.options.fields)this._initField(e);for(var
f
in
this.options.addOns)"function"==typeof
FormValidation.AddOn[f].init&&FormValidation.AddOn[f].init(this,this.options.addOns[f]);this.
$form.trigger(a.Event(this.options.events.formInit),
{bv:this,fv:this,options:this.options}),this.options.onPreValidate&&this.
$form.on(this.options.events.formPreValidate,function(a)
{FormValidation.Helper.call(b.options.onPreValidate,[a])}),this.options.onSuccess&&this.
$form.on(this.options.events.formSuccess,function(a)
{FormValidation.Helper.call(b.options.onSuccess,[a])}),this.options.onError&&this.
$form.on(this.options.events.formError,function(a){FormValidation.Helper.call(b.options.onError,
[a])})},_initField:function(b){var
c=this._namespace,d=a([]);switch(typeof
b)
{case"object":d=b,b=b.attr("data-"+c+"field");break;case"string":d=this.getFieldElements(b),d.attr("data-"+c+"-field",b)}if(0!
==d.length&&null!==this.options.fields[b]&&null!==this.options.fields[b].validators){var e;for(e in
this.options.fields[b].validators)FormValidation.Validator[e]||delete
this.options.fields[b].validators[e];null===this.options.fields[b].enabled&&(this.options.fields[b].enabl
ed=!0);for(var
f=this,g=d.length,h=d.attr("type"),i=1===g||"radio"===h||"checkbox"===h,j=this._getFieldTrigger(d.e
q(0)),k=a.map(j,function(a){return
a+".update."+c}).join("
"),l=0;g>l;l++){var
m=d.eq(l),n=this.options.fields[b].row||
this.options.row.selector,o=m.closest(n),p="function"==typeof(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container)?(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container).call(this,m,this):this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container,q=p&&"tooltip"!==p&&"popover"!==p?
a(p):this._getMessageContainer(m,n);p&&"tooltip"!==p&&"popover"!
==p&&q.addClass(this.options.err.clazz),q.find("."+this.options.err.clazz.split("
").join(".")
+"[data-"+c+"-validator][data-"+c+'-for="'+b+'"]').remove(),o.find("i[data-"+c+'-iconfor="'+b+'"]').remove(),m.off(k).on(k,function()
{f.updateStatus(a(this),f.STATUS_NOT_VALIDATED)}),m.data(c+".messages",q);for(e
in
this.options.fields[b].validators)m.data(c+".result."+e,this.STATUS_NOT_VALIDATED),i&&l!==g-1||
a("<small/>").css("display","none").addClass(this.options.err.clazz).attr("data-"+c+"validator",e).attr("data-"+c+"-for",b).attr("data-"+c+"result",this.STATUS_NOT_VALIDATED).html(this._getMessage(b,e)).appendTo(q),"function"==type

34

of
FormValidation.Validator[e].init&&FormValidation.Validator[e].init(this,m,this.options.fields[b].valida
tors[e]);if(this.options.fields[b].icon!==!1&&"false"!
==this.options.fields[b].icon&&this.options.icon&&this.options.icon.valid&&this.options.icon.invalid
&&this.options.icon.validating&&(!i||l===g-1)){o.addClass(this.options.row.feedback);var
r=a("<i/>").css("display","none").addClass(this.options.icon.feedback).attr("data-"+c+"-iconfor",b).insertAfter(m);(i?d:m).data(c+".icon",r),("tooltip"===p||"popover"===p)&&((i?
d:m).on(this.options.events.fieldError,function(){o.addClass("fv-hastooltip")}).on(this.options.events.fieldSuccess,function(){o.removeClass("fv-hastooltip")}),m.off("focus.container."+c).on("focus.container."+c,function()
{f._showTooltip(m,p)}).off("blur.container."+c).on("blur.container."+c,function()
{f._hideTooltip(m,p)})),"string"==typeof
this.options.fields[b].icon&&"true"!
==this.options.fields[b].icon?
r.appendTo(a(this.options.fields[b].icon)):this._fixIcon(m,r)}}d.on(this.options.events.fieldSuccess,fun
ction(a,b){var
c=f.getOptions(b.field,null,"onSuccess");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.fieldError,function(a,b){var
c=f.getOptions(b.field,null,"onError");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.fieldStatus,function(a,b){var
c=f.getOptions(b.field,null,"onStatus");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.validatorError,function(a,b){var
c=f.getOptions(b.field,b.validator,"onError");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.validatorIgnored,function(a,b){var
c=f.getOptions(b.field,b.validator,"onIgnored");c&&FormValidation.Helper.call(c,
[a,b])}).on(this.options.events.validatorSuccess,function(a,b){var
c=f.getOptions(b.field,b.validator,"onSuccess");c&&FormValidation.Helper.call(c,
[a,b])}),this.onLiveChange(d,"live",function()
{f._exceedThreshold(a(this))&&f.validateField(a(this))}),d.trigger(a.Event(this.options.events.fieldInit
),{bv:this,fv:this,field:b,element:d})}},_isExcluded:function(b){var
c=this._namespace,d=b.attr("data-"+c+"-excluded"),e=b.attr("data-"+c+"-field")||
b.attr("name");switch(!0){case!!
e&&this.options.fields&&this.options.fields[e]&&("true"===this.options.fields[e].excluded||
this.options.fields[e].excluded===!0):case"true"===d:case""===d:return!0;case!!
e&&this.options.fields&&this.options.fields[e]&&("false"===this.options.fields[e].excluded||
this.options.fields[e].excluded===!1):case"false"===d:return!1;case!!
e&&this.options.fields&&this.options.fields[e]&&"function"==typeof
this.options.fields[e].excluded:return
this.options.fields[e].excluded.call(this,b,this);case!!
e&&this.options.fields&&this.options.fields[e]&&"string"==typeof
this.options.fields[e].excluded:case d:return FormValidation.Helper.call(this.options.fields[e].excluded,
[b,this]);default:if(this.options.excluded){"string"==typeof
this.options.excluded&&(this.options.excluded=a.map(this.options.excluded.split(","),function(b)
{return
a.trim(b)}));for(var
f=this.options.excluded.length,g=0;f>g;g++)if("string"==typeof
this.options.excluded[g]&&b.is(this.options.excluded[g])||"function"==typeof
this.options.excluded[g]&&this.options.excluded[g].call(this,b,this)===!0)return!0}return!
1}},_getFieldTrigger:function(a){var
b=this._namespace,c=a.data(b+".trigger");if(c)return
c;var
d=a.attr("type"),e=a.attr("data-"+b+"field"),f="radio"===d||"checkbox"===d||"file"===d||"SELECT"===a.get(0).tagName?"change":this._i
eVersion>=10&&a.attr("placeholder")?"keyup":this._changeEvent;return
c=((this.options.fields[e]?
this.options.fields[e].trigger:null)||this.options.trigger||f).split("
"),a.data(b+".trigger",c),c},_getMessage:function(a,b){if(!
(this.options.fields[a]&&FormValidation.Validator[b]&&this.options.fields[a].validators&&this.option
s.fields[a].validators[b]))return"";switch(!0){case!!this.options.fields[a].validators[b].message:return
this.options.fields[a].validators[b].message;case!!this.options.fields[a].message:return
this.options.fields[a].message;case!!FormValidation.I18n[this.options.locale]&&!!
FormValidation.I18n[this.options.locale][b]&&!!FormValidation.I18n[this.options.locale][b]
["default"]:return
FormValidation.I18n[this.options.locale][b]["default"];default:return
this.options.message}},_getMessageContainer:function(a,b){if(!this.options.err.parent)throw
new

35

Error("The err.parent option is not defined");var c=a.parent();if(c.is(b))return c;var


d=c.attr("class");return
d&&this.options.err.parent.test(d)?
c:this._getMessageContainer(c,b)},_parseAddOnOptions:function(){var
a=this._namespace,b=this.
$form.attr("data-"+a+"-addons"),c=this.options.addOns||{};if(b){b=b.replace(/\s/g,"").split(",");for(var
d=0;d<b.length;d++)c[b[d]]||(c[b[d]]={})}var
e,f,g,h;for(e
in
c)if(FormValidation.AddOn[e])
{if(f=FormValidation.AddOn[e].html5Attributes)for(g
in
f)h=this.$form.attr("data-"+a+"addons-"+e.toLowerCase()+"-"+g.toLowerCase()),h&&(c[e][f[g]]=h)}else
delete
c[e];return
c},_parseOptions:function(b){var
c,d,e,f,g,h,i,j,k,l=this._namespace,m=b.attr("name")||
b.attr("data-"+l+"-field"),n={};for(d
in
FormValidation.Validator)if(c=FormValidation.Validator[d],e="data-"+l+"-"+d.toLowerCase(),f=b.attr(
e)+"",k="function"==typeof
c.enableByHtml5?c.enableByHtml5(b):null,k&&"false"!==f||k!==!
0&&(""===f||"true"===f||e===f.toLowerCase())){c.html5Attributes=a.extend({},
{message:"message",onerror:"onError",onsuccess:"onSuccess",transformer:"transformer"},c.html5Attr
ibutes),n[d]=a.extend({},k===!0?{}:k,n[d]);for(j
in
c.html5Attributes)g=c.html5Attributes[j],h="data-"+l+"-"+d.toLowerCase()
+"-"+j,i=b.attr(h),i&&("true"===i||h===i.toLowerCase()?i=!0:"false"===i&&(i=!1),n[d][g]=i)}var
o={autoFocus:b.attr("data-"+l+"-autofocus"),err:b.attr("data-"+l+"-err-container")||b.attr("data-"+l+"container"),excluded:b.attr("data-"+l+"-excluded"),icon:b.attr("data-"+l+"-icon")||b.attr("data-"+l+"feedbackicons")||(this.options.fields&&this.options.fields[m]?
this.options.fields[m].feedbackIcons:null),message:b.attr("data-"+l+"message"),onError:b.attr("data-"+l+"-onerror"),onStatus:b.attr("data-"+l+"onstatus"),onSuccess:b.attr("data-"+l+"-onsuccess"),row:b.attr("data-"+l+"-row")||b.attr("data-"+l+"group")||(this.options.fields&&this.options.fields[m]?
this.options.fields[m].group:null),selector:b.attr("data-"+l+"-selector"),threshold:b.attr("data-"+l+"threshold"),transformer:b.attr("data-"+l+"-transformer"),trigger:b.attr("data-"+l+"trigger"),verbose:b.attr("data-"+l+"verbose"),validators:n},p=a.isEmptyObject(o),q=a.isEmptyObject(n);return!q||!
p&&this.options.fields&&this.options.fields[m]?(o.validators=n,o):null},_submit:function(){var
b=this.isValid();if(null!==b){var
c=b?
this.options.events.formSuccess:this.options.events.formError,d=a.Event(c);this.$form.trigger(d),this.
$submitButton&&(b?this._onSuccess(d):this._onError(d))}},_onError:function(b){if(!
b.isDefaultPrevented()){if("submitted"===this.options.live){this.options.live="enabled";var
c=this;for(var
d
in
this.options.fields)!function(b){var
d=c.getFieldElements(b);d.length&&c.onLiveChange(d,"live",function()
{c._exceedThreshold(a(this))&&c.validateField(a(this))})}(d)}for(var e=this._namespace,f=0;f<this.
$invalidFields.length;f++){var g=this.$invalidFields.eq(f),h=this.isOptionEnabled(g.attr("data-"+e+"field"),"autoFocus");if(h){g.focus();break}}}},_onFieldValidated:function(b,c){var
d=this._namespace,e=b.attr("data-"+d+"field"),f=this.options.fields[e].validators,g={},h=0,i={bv:this,fv:this,field:e,element:b,validator:c,result
:b.data(d+".response."+c)};if(c)switch(b.data(d+".result."+c)){case
this.STATUS_INVALID:b.trigger(a.Event(this.options.events.validatorError),i);break;case
this.STATUS_VALID:b.trigger(a.Event(this.options.events.validatorSuccess),i);break;case
this.STATUS_IGNORED:b.trigger(a.Event(this.options.events.validatorIgnored),i)}g[this.STATUS_N
OT_VALIDATED]=0,g[this.STATUS_VALIDATING]=0,g[this.STATUS_INVALID]=0,g[this.STATU
S_VALID]=0,g[this.STATUS_IGNORED]=0;for(var
j
in
f)if(f[j].enabled!==!1){h++;var
k=b.data(d+".result."+j);k&&g[k]++}g[this.STATUS_VALID]+g[this.STATUS_IGNORED]===h?
(this.$invalidFields=this.$invalidFields.not(b),b.trigger(a.Event(this.options.events.fieldSuccess),i)):
(0===g[this.STATUS_NOT_VALIDATED]||!
this.isOptionEnabled(e,"verbose"))&&0===g[this.STATUS_VALIDATING]&&g[this.STATUS_INVA
LID]>0&&(this.$invalidFields=this.
$invalidFields.add(b),b.trigger(a.Event(this.options.events.fieldError),i))},_onSuccess:function(a)
{a.isDefaultPrevented()||this.disableSubmitButtons(!0).defaultSubmit()},_fixIcon:function()
{},_createTooltip:function(){},_destroyTooltip:function(){},_hideTooltip:function()
{},_showTooltip:function(){},defaultSubmit:function(){var
b=this._namespace;this.
$submitButton&&a("<input/>").attr({type:"hidden",name:this.
$submitButton.attr("name")}).attr("data-"+b+"-submit-hidden","").val(this.

36

$submitButton.val()).appendTo(this.$form),this.
$form.off("submit."+b).submit()},disableSubmitButtons:function(a){return
a?"disabled"!
==this.options.live&&this.
$form.find(this.options.button.selector).attr("disabled","disabled").addClass(this.options.button.disable
d):this.
$form.find(this.options.button.selector).removeAttr("disabled").removeClass(this.options.button.disabl
ed),this},getFieldElements:function(b){if(!
this._cacheFields[b])if(this.options.fields[b]&&this.options.fields[b].selector){var
c=this.
$form.find(this.options.fields[b].selector);this._cacheFields[b]=c.length?
c:a(this.options.fields[b].selector)}else this._cacheFields[b]=this.$form.find('[name="'+b+'"]');return
this._cacheFields[b]},getFieldValue:function(a,b){var c,d=this._namespace;if("string"==typeof a)
{if(c=this.getFieldElements(a),0===c.length)return null}else c=a,a=c.attr("data-"+d+"-field");if(!a||!
this.options.fields[a])return
c.val();var
e=(this.options.fields[a].validators&&this.options.fields[a].validators[b]?
this.options.fields[a].validators[b].transformer:null)||this.options.fields[a].transformer;return
e?
FormValidation.Helper.call(e,[c,b,this]):c.val()},getNamespace:function(){return
this._namespace},getOptions:function(a,b,c){var
d=this._namespace;if(!a)return
c?
this.options[c]:this.options;if("object"==typeof
a&&(a=a.attr("data-"+d+"-field")),!
this.options.fields[a])return null;var e=this.options.fields[a];return b?e.validators&&e.validators[b]?c?
e.validators[b][c]:e.validators[b]:null:c?e[c]:e},getStatus:function(a,b){var
c=this._namespace;switch(typeof
a){case"object":return
a.data(c+".result."+b);case"string":default:return
this.getFieldElements(a).eq(0).data(c+".result."+b)}},isOptionEnabled:function(a,b){return!
this.options.fields[a]||"true"!==this.options.fields[a][b]&&this.options.fields[a][b]!==!0?!
this.options.fields[a]||"false"!==this.options.fields[a][b]&&this.options.fields[a][b]!==!
1?"true"===this.options[b]||this.options[b]===!0:!1:!0},isValid:function(){for(var
a
in
this.options.fields){var
b=this.isValidField(a);if(null===b)return
null;if(b===!1)return!1}return!
0},isValidContainer:function(b){var
c=this,d=this._namespace,e=[],f="string"==typeof
b?
a(b):b;if(0===f.length)return!0;f.find("[data-"+d+"-field]").each(function(){var
b=a(this);c._isExcluded(b)||e.push(b)});for(var
g=e.length,h=0;g>h;h++){var
i=e[h],j=i.attr("data-"+d+"-field"),k=i.data(d+".messages").find("."+this.options.err.clazz.split("
").join(".")+"[data-"+d+"-validator][data-"+d+'-for="'+j+'"]');if(k.filter("[data-"+d+'result="'+this.STATUS_INVALID+'"]').length>0)return!1;if(k.filter("[data-"+d+'result="'+this.STATUS_NOT_VALIDATED+'"]').length>0||k.filter("[data-"+d+'result="'+this.STATUS_VALIDATING+'"]').length>0)return
null}return!0},isValidField:function(b)
{var
c=this._namespace,d=a([]);switch(typeof
b){case"object":d=b,b=b.attr("data-"+c+"field");break;case"string":d=this.getFieldElements(b)}if(0===d.length||!this.options.fields[b]||
this.options.fields[b].enabled===!1)return!0;for(var
e,f,g,h=d.attr("type"),i="radio"===h||"checkbox"===h?1:d.length,j=0;i>j;j++)if(e=d.eq(j),!
this._isExcluded(e))for(f
in
this.options.fields[b].validators)if(this.options.fields[b].validators[f].enabled!==!1)
{if(g=e.data(c+".result."+f),g===this.STATUS_VALIDATING||
g===this.STATUS_NOT_VALIDATED)return null;if(g===this.STATUS_INVALID)return!1}return!
0},offLiveChange:function(b,c){if(null===b||0===b.length)return
this;var
d=this._namespace,e=this._getFieldTrigger(b.eq(0)),f=a.map(e,function(a){return
a+"."+c+"."+d}).join("
");return
b.off(f),this},onLiveChange:function(b,c,d){if(null===b||
0===b.length)return
this;var
e=this._namespace,f=this._getFieldTrigger(b.eq(0)),g=a.map(f,function(a){return
a+"."+c+"."+e}).join("
");switch(this.options.live)
{case"submitted":break;case"disabled":b.off(g);break;case"enabled":default:b.off(g).on(g,function()
{d.apply(this,arguments)})}return
this},updateMessage:function(b,c,d){var
e=this,f=this._namespace,g=a([]);switch(typeof
b){case"object":g=b,b=b.attr("data-"+f+"field");break;case"string":g=this.getFieldElements(b)}return
g.each(function()
{a(this).data(f+".messages").find("."+e.options.err.clazz+"[data-"+f+'-validator="'+c+'"][data-'+f+'for="'+b+'"]').html(d)}),this},updateStatus:function(b,c,d){var
e=this._namespace,f=a([]);switch(typeof
b){case"object":f=b,b=b.attr("data-"+e+"-

37

field");break;case"string":f=this.getFieldElements(b)}if(!b||!this.options.fields[b])return
this;c===this.STATUS_NOT_VALIDATED&&(this._submitIfValid=!1);for(var
g=this,h=f.attr("type"),i=this.options.fields[b].row||
this.options.row.selector,j="radio"===h||"checkbox"===h?1:f.length,k=0;j>k;k++){var l=f.eq(k);if(!
this._isExcluded(l)){var
m,n,o=l.closest(i),p=l.data(e+".messages"),q=p.find("."+this.options.err.clazz.split("
").join(".")
+"[data-"+e+"-validator][data-"+e+'-for="'+b+'"]'),r=d?q.filter("[data-"+e+'validator="'+d+'"]'):q,s=l.data(e+".icon"),t="function"==typeof(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container)?(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container).call(this,l,this):this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container,u=null;if(d)l.data(e+".result."+d,c);else for(var v in
this.options.fields[b].validators)l.data(e+".result."+v,c);switch(r.attr("data-"+e+"-result",c),c){case
this.STATUS_VALIDATING:u=null,this.disableSubmitButtons(!
0),l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid),o.removeClass(t
his.options.row.valid).removeClass(this.options.row.invalid),s&&s.removeClass(this.options.icon.valid
).removeClass(this.options.icon.invalid).addClass(this.options.icon.validating).show();break;case
this.STATUS_INVALID:u=!1,this.disableSubmitButtons(!
0),l.removeClass(this.options.control.valid).addClass(this.options.control.invalid),o.removeClass(this.o
ptions.row.valid).addClass(this.options.row.invalid),s&&s.removeClass(this.options.icon.valid).remov
eClass(this.options.icon.validating).addClass(this.options.icon.invalid).show();break;case
this.STATUS_IGNORED:case
this.STATUS_VALID:m=q.filter("[data-"+e+'result="'+this.STATUS_VALIDATING+'"]').length>0,n=q.filter("[data-"+e+'result="'+this.STATUS_NOT_VALIDATED+'"]').length>0;var
w=q.filter("[data-"+e+'result="'+this.STATUS_IGNORED+'"]').length;u=m||n?null:q.filter("[data-"+e+'result="'+this.STATUS_VALID+'"]').length+w===q.length,l.removeClass(this.options.control.valid).re
moveClass(this.options.control.invalid),u===!0?(this.disableSubmitButtons(this.isValid()===!
1),c===this.STATUS_VALID&&l.addClass(this.options.control.valid)):u===!
1&&(this.disableSubmitButtons(!
0),c===this.STATUS_VALID&&l.addClass(this.options.control.invalid)),s&&(s.removeClass(this.opti
ons.icon.invalid).removeClass(this.options.icon.validating).removeClass(this.options.icon.valid),
(c===this.STATUS_VALID||w!==q.length)&&s.addClass(null===u?"":u?this.options.icon.valid:m?
this.options.icon.validating:this.options.icon.invalid).show());var
x=this.isValidContainer(o);null!
==x&&(o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid),
(c===this.STATUS_VALID||w!==q.length)&&o.addClass(x?
this.options.row.valid:this.options.row.invalid));break;case
this.STATUS_NOT_VALIDATED:default:u=null,this.disableSubmitButtons(!
1),l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid),o.removeClass(t
his.options.row.valid).removeClass(this.options.row.invalid),s&&s.removeClass(this.options.icon.valid
).removeClass(this.options.icon.invalid).removeClass(this.options.icon.validating).hide()}!s||"tooltip"!
==t&&"popover"!==t?c===this.STATUS_INVALID?r.show():r.hide():u===!1?
this._createTooltip(l,q.filter("[data-"+e+'result="'+g.STATUS_INVALID+'"]').eq(0).html(),t):this._destroyTooltip(l,t),l.trigger(a.Event(this.opti
ons.events.fieldStatus),{bv:this,fv:this,field:b,element:l,status:c}),this._onFieldValidated(l,d)}}return
this},validate:function(){if(a.isEmptyObject(this.options.fields))return
this._submit(),this;this.
$form.trigger(a.Event(this.options.events.formPreValidate)),this.disableSubmitButtons(!
0),this._submitIfValid=!1;for(var
b
in
this.options.fields)this.validateField(b);return
this._submit(),this._submitIfValid=!0,this},validateField:function(b){var
c=this._namespace,d=a([]);switch(typeof
b){case"object":d=b,b=b.attr("data-"+c+"field");break;case"string":d=this.getFieldElements(b)}if(0===d.length||!this.options.fields[b]||
this.options.fields[b].enabled===!1)return
this;for(var
e,f,g=this,h=d.attr("type"),i="radio"===h||"checkbox"===h?
1:d.length,j="radio"===h||"checkbox"===h,k=this.options.fields[b].validators,l=this.isOptionEnabled(
b,"verbose"),m=0;i>m;m++){var
n=d.eq(m);if(!this._isExcluded(n)){var
o=!1;for(e
in
k)
{if(n.data(c+".dfs."+e)&&n.data(c+".dfs."+e).reject(),o)break;var
p=n.data(c+".result."+e);if(p!
==this.STATUS_VALID&&p!==this.STATUS_INVALID)if(k[e].enabled!==!
1)if(n.data(c+".result."+e,this.STATUS_VALIDATING),f=FormValidation.Validator[e].validate(this,n,

38

k[e]),"object"==typeof
f&&f.resolve)this.updateStatus(j?
b:n,this.STATUS_VALIDATING,e),n.data(c+".dfs."+e,f),f.done(function(a,b,d)
{a.removeData(c+".dfs."+b).data(c+".response."+b,d),d.message&&g.updateMessage(a,b,d.message),
g.updateStatus(j?a.attr("data-"+c+"-field"):a,d.valid===!0?g.STATUS_VALID:d.valid===!1?
g.STATUS_INVALID:g.STATUS_IGNORED,b),d.valid&&g._submitIfValid===!0?
g._submit():d.valid!==!1||l||(o=!0)});else
if("object"==typeof
f&&void
0!==f.valid)
{if(n.data(c+".response."+e,f),f.message&&this.updateMessage(j?b:n,e,f.message),this.updateStatus(j?
b:n,f.valid===!0?this.STATUS_VALID:f.valid===!1?
this.STATUS_INVALID:this.STATUS_IGNORED,e),f.valid===!1&&!l)break}else
if("boolean"==typeof
f){if(n.data(c+".response."+e,f),this.updateStatus(j?b:n,f?
this.STATUS_VALID:this.STATUS_INVALID,e),!f&&!l)break}else
null===f&&(n.data(c+".response."+e,f),this.updateStatus(j?b:n,this.STATUS_IGNORED,e));else
this.updateStatus(j?b:n,this.STATUS_IGNORED,e);else
this._onFieldValidated(n,e)}}}return
this},addField:function(b,c){var
d=this._namespace,e=a([]);switch(typeof
b)
{case"object":e=b,b=b.attr("data-"+d+"-field")||b.attr("name");break;case"string":delete
this._cacheFields[b],e=this.getFieldElements(b)}e.attr("data-"+d+"-field",b);for(var
f=e.attr("type"),g="radio"===f||"checkbox"===f?1:e.length,h=0;g>h;h++){var
i=e.eq(h),j=this._parseOptions(i);j=null===j?c:a.extend(!0,j,c),this.options.fields[b]=a.extend(!
0,this.options.fields[b],j),this._cacheFields[b]=this._cacheFields[b]?
this._cacheFields[b].add(i):i,this._initField("checkbox"===f||"radio"===f?b:i)}return
this.disableSubmitButtons(!1),this.$form.trigger(a.Event(this.options.events.fieldAdded),
{field:b,element:e,options:this.options.fields[b]}),this},destroy:function(){var
a,b,c,d,e,f,g,h=this._namespace;for(b
in
this.options.fields)for(c=this.getFieldElements(b),a=0;a<c.length;a++){d=c.eq(a);for(e
in
this.options.fields[b].validators)d.data(h+".dfs."+e)&&d.data(h+".dfs."+e).reject(),d.removeData(h+".r
esult."+e).removeData(h+".response."+e).removeData(h+".dfs."+e),"function"==typeof
FormValidation.Validator[e].destroy&&FormValidation.Validator[e].destroy(this,d,this.options.fields[b
].validators[e])}for(b in this.options.fields)for(c=this.getFieldElements(b),g=this.options.fields[b].row||
this.options.row.selector,a=0;a<c.length;a++)
{d=c.eq(a),d.data(h+".messages").find("."+this.options.err.clazz.split("
").join(".")+"[data-"+h+"validator][data-"+h+'for="'+b+'"]').remove().end().end().removeData(h+".messages").closest(g).removeClass(this.options.ro
w.valid).removeClass(this.options.row.invalid).removeClass(this.options.row.feedback).end().off("."+h
).removeAttr("data-"+h+"-field");var
i="function"==typeof(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container)?(this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container).call(this,d,this):this.options.fields[b].container||
this.options.fields[b].err||this.options.err.container;
("tooltip"===i||"popover"===i)&&this._destroyTooltip(d,i),f=d.data(h+".icon"),f&&f.remove(),d.remo
veData(h+".icon").removeData(h+".trigger")}for(var j in this.options.addOns)"function"==typeof
FormValidation.AddOn[j].destroy&&FormValidation.AddOn[j].destroy(this,this.options.addOns[j]);thi
s.disableSubmitButtons(!1),this.$hiddenButton.remove(),this.
$form.removeClass(this.options.elementClass).off("."+h).removeData("bootstrapValidator").removeDa
ta("formValidation").find("[data-"+h+"-submithidden]").remove().end().find('[type="submit"]').off("click."+h)},enableFieldValidators:function(a,b,c)
{var
d=this.options.fields[a].validators;if(c&&d&&d[c]&&d[c].enabled!
==b)this.options.fields[a].validators[c].enabled=b,this.updateStatus(a,this.STATUS_NOT_VALIDATE
D,c);else if(!c&&this.options.fields[a].enabled!==b){this.options.fields[a].enabled=b;for(var e in
d)this.enableFieldValidators(a,b,e)}return
this},getDynamicOption:function(a,b){var
c="string"==typeof
a?this.getFieldElements(a):a,d=c.val();if("function"==typeof
b)return
FormValidation.Helper.call(b,[d,this,c]);if("string"==typeof b){var e=this.getFieldElements(b);return
e.length?e.val():FormValidation.Helper.call(b,[d,this,c])||b}return null},getForm:function(){return this.
$form},getInvalidFields:function(){return
this.$invalidFields},getLocale:function(){return
this.options.locale},getMessages:function(b,c){var d=this,e=this._namespace,f=[],g=a([]);switch(!0)
{case
b&&"object"==typeof
b:g=b;break;case
b&&"string"==typeof
b:var
h=this.getFieldElements(b);if(h.length>0){var
i=h.attr("type");g="radio"===i||"checkbox"===i?
h.eq(0):h}break;default:g=this.$invalidFields}var
j=c?"[data-"+e+'-validator="'+c+'"]':"";return

39

g.each(function(){f=f.concat(a(this).data(e+".messages").find("."+d.options.err.clazz+"[data-"+e+'for="'+a(this).attr("data-"+e+"-field")+'"][data-'+e+'result="'+d.STATUS_INVALID+'"]'+j).map(function(){var
b=a(this).attr("data-"+e+"validator"),c=a(this).attr("data-"+e+"-for");return
d.options.fields[c].validators[b].enabled===!
1?"":a(this).html()}).get())}),f},getSubmitButton:function(){return
this.
$submitButton},removeField:function(b){var
c=this._namespace,d=a([]);switch(typeof
b)
{case"object":d=b,b=b.attr("data-"+c+"-field")||b.attr("name"),d.attr("data-"+c+"field",b);break;case"string":d=this.getFieldElements(b)}if(0===d.length)return
this;for(var
e=d.attr("type"),f="radio"===e||"checkbox"===e?1:d.length,g=0;f>g;g++){var
h=d.eq(g);this.
$invalidFields=this.$invalidFields.not(h),this._cacheFields[b]=this._cacheFields[b].not(h)}return
this._cacheFields[b]&&0!==this._cacheFields[b].length||delete
this.options.fields[b],
("checkbox"===e||"radio"===e)&&this._initField(b),this.disableSubmitButtons(!1),this.
$form.trigger(a.Event(this.options.events.fieldRemoved),
{field:b,element:d}),this},resetField:function(b,c){var d=this._namespace,e=a([]);
switch(typeof b){case"object":e=b,b=b.attr("data-"+d+"field");break;case"string":e=this.getFieldElements(b)}var
f=e.length;if(this.options.fields[b])for(var g=0;f>g;g++)for(var h in
this.options.fields[b].validators)e.eq(g).removeData(d+".dfs."+h);if(c){var
i=e.attr("type");"radio"===i||"checkbox"===i?e.prop("checked",!
1).removeAttr("selected"):e.val("")}return
this.updateStatus(b,this.STATUS_NOT_VALIDATED),this},resetForm:function(b){for(var c
in this.options.fields)this.resetField(c,b);return this.$invalidFields=a([]),this.
$submitButton=null,this.disableSubmitButtons(!1),this},revalidateField:function(a)
{return
this.updateStatus(a,this.STATUS_NOT_VALIDATED).validateField(a),this},setLocale:functi
on(b){return this.options.locale=b,this.
$form.trigger(a.Event(this.options.events.localeChanged),
{locale:b,bv:this,fv:this}),this},updateOption:function(a,b,c,d){var
e=this._namespace;return"object"==typeof a&&(a=a.attr("data-"+e+"field")),this.options.fields[a]&&this.options.fields[a].validators[b]&&(this.options.f
ields[a].validators[b]
[c]=d,this.updateStatus(a,this.STATUS_NOT_VALIDATED,b)),this},validateContainer:functi
on(b){var c=this,d=this._namespace,e=[],f="string"==typeof b?
a(b):b;if(0===f.length)return this;f.find("[data-"+d+"-field]").each(function(){var
b=a(this);c._isExcluded(b)||e.push(b)});for(var g=e.length,h=0;g>h;h+
+)this.validateField(e[h]);return this}},a.fn.formValidation=function(b){var
c=arguments;return this.each(function(){var
d=a(this),e=d.data("formValidation"),f="object"==typeof b&&b;if(!e){var
g=(f.framework||d.attr("data-fvframework")||"bootstrap").toLowerCase(),h=g.substr(0,1).toUpperCase()
+g.substr(1);if("undefined"==typeof FormValidation.Framework[h])throw new Error("The
class FormValidation.Framework."+h+" is not implemented");e=new
FormValidation.Framework[h](this,f),d.addClass("fvform-"+g).data("formValidation",e)}"string"==typeof
b&&e[b].apply(e,Array.prototype.slice.call(c,1))})},a.fn.formValidation.Constructor=Fo
rmValidation.Base,a.fn.formValidation.DEFAULT_OPTIONS={autoFocus:!0,declarative:!
0,elementClass:"fv-form",events:
{formInit:"init.form.fv",formPreValidate:"prevalidate.form.fv",formError:"err.form.fv"
,formSuccess:"success.form.fv",fieldAdded:"added.field.fv",fieldRemoved:"removed.field
.fv",fieldInit:"init.field.fv",fieldError:"err.field.fv",fieldSuccess:"success.field.f
v",fieldStatus:"status.field.fv",localeChanged:"changed.locale.fv",validatorError:"err
.validator.fv",validatorSuccess:"success.validator.fv",validatorIgnored:"ignored.valid
ator.fv"},excluded:
[":disabled",":hidden",":not(:visible)"],fields:null,live:"enabled",locale:"en_US",mes
sage:"This value is not valid",threshold:null,verbose:!0,button:
{selector:'[type="submit"]:not([formnovalidate])',disabled:""},control:
{valid:"",invalid:""},err:{clazz:"",container:null,parent:null},icon:
{valid:null,invalid:null,validating:null,feedback:""},row:
{selector:null,valid:"",invalid:"",feedback:""}}}(jQuery)

Definition at line 35 of file formValidation.popular.min.js.


jQuery

40

Definition at line 35 of file formValidation.popular.min.js.

41

C:/wamp/www/conferinta/js/formValidation/js/language/en_US.js
File Reference
Variables
function jQuery

Variable Documentation
function jQuery

Definition at line 1 of file en_US.js.

42

C:/wamp/www/conferinta/js/formValidation/js/language/ro_RO.js
File Reference
Variables
function jQuery

Variable Documentation
function jQuery

Definition at line 1 of file ro_RO.js.

43

C:/wamp/www/conferinta/librarie.php File Reference


Functions
conectareDb ()
deconectareDb ($db)
verificareSesiune ()
stergeEntitate ($numeTabel, $identificator)
formularEntitate ($entitateActiune, $valoare="", $identificator="")
listaSelectie ($entitate, $identificator, $identificatorLucrare)
prefixTabel ($entitate)
formularLucrare ($actiune, $arrValori=array('lucr_id'=> '', 'lucr_nume'=> '', 'lucr_titlu'=> '',
'lucr_rezumat'=> '', 'lucr_calificativ'=> '', 'lucr_sectiune'=> ''))

Function Documentation
conectareDb ()

Fisierul ce contine o serie de functii ajutatoare pe partea de php


Author:
Andries Marian 31111b RCC marian.andries@gmail.com
Version:
1 Conectare la baza de date - in caz de eroare se va afisa un mesaj specific
1
Returns:
Obiectul de tip mysqli ce contine conexiunea la baza de date
Definition at line 19 of file librarie.php.
deconectareDb ( $db)

Deconectare de la baza de date - inchiderea conexiunii


Version:
1
Parameters:
$db
- Obiect de tip mysqli ce contine conexiunea
Definition at line 45 of file librarie.php.
formularEntitate ( $entitateActiune, $valoare = "", $identificator = "")

Formular adaugare/editare calificative/sectiuni


Version:
1
Parameters:
$entitateActiune
$valoare
$identificator

string Numele entitatii cu majuscula: Calificativ sau Sectiune, concatenat cu


numele actiunii cu majuscula: Adauga sau Editeaza
string Valoarea campului denumire pentru formularul de editare, implicit sirul vid
string Valoarea campului identificator pentru inregistrare, implicit sirul vid

44

Returns:
$formular string Cod HTML cu formularul generat
Definition at line 118 of file librarie.php.
formularLucrare ( $actiune, $arrValori = array('lucr_id' => '',
=> '', 'lucr_titlu' => '', 'lucr_rezumat' => '',
'lucr_calificativ' => '', 'lucr_sectiune' => ''))

'lucr_nume'

Functia pentru construirea formularului de adaugare/editare lucrare


Version:
1
Parameters:
$actiune
$arrValori

string Adaugare/editare
array Tablou cu valorile pentru campuri, la editarea unei inregistrari. Implicit are
specificate cheile, iar valorile sunt siruri vide.

Returns:
Cod HTML cu formularul generat
Definition at line 188 of file librarie.php.
listaSelectie ( $entitate, $identificator, $identificatorLucrare)

Functia pentru afisarea listei de selectie in cadrul paginii cu lucrari, folosite pentru a schimba
sectiunea sau calificativul unei lucrari
Version:
1
Parameters:
$entitate
$identificator

string Numele entitatii ce va umple lista de selectie


int Identificatorul optiunii selectate din lista

Returns:
$lista string Codul HTML al listei generate pe baza parametrilor
Definition at line 143 of file librarie.php.
prefixTabel ( $entitate)

Functie auxiliara utilizata pentru a obtine prefixul campurilor dintr-un tabel


Version:
1
Parameters:
$entitate

string Numele tabelului fara "tbl_"

Returns:
Prefixul utilizat de tabel
Definition at line 173 of file librarie.php.
stergeEntitate ( $numeTabel, $identificator)

Stergere entitate din baza de date


Version:
1

45

Parameters:
$numeTabel
$identificator

string Numele tabelului din care se va sterge entitatea


string Numarul de identificare al entitatii

Returns:
void
Definition at line 93 of file librarie.php.
verificareSesiune ()

Verificarea daca este conectat sau nu un utilizator


Version:
1
Returns:
boolean true daca este conectat un utilizator, false in caz contrar
Definition at line 56 of file librarie.php.

46

C:/wamp/www/conferinta/login.php File Reference

47

C:/wamp/www/conferinta/main.php File Reference


Variables
if(!verificareSesiune()) else

Variable Documentation
if (!verificareSesiune()) else
Initial value:{
require 'header.php'

Fisierul ce contine interfata principala a paginii web


Author:
Andries Marian 31111b RCC marian.andries@gmail.com
Version:
1
Definition at line 16 of file main.php.

48

Index
INDEX

49

You might also like