/**
* @preserve
* Filename:	form-utils.lib.js
*
* Created: 	06/10/2016 (17:19:41)
* Created by: 	Lorenzo Saibal Forti <saibal@lorenzone.it>
*
* Last Updated:	06/10/2016 (17:19:41)
* Updated by: 	Lorenzo Saibal Forti <saibal@lorenzone.it>
*
* Copyleft:	2016 - Tutti i diritti riservati
*
* Comments: questo file contiene funzioni per la gestione e validazione dei moduli. http://www.runningcoder.org/jqueryvalidation/
**/
!function(e){"use strict";e.fn.resetSelect=function(t,a,o){void 0!==a&&e("option:selected",e(t)).removeAttr("selected"),e(t).map((function(){e(this).get(0).selectedIndex=0})),void 0!==o&&e(t).attr("disabled",!0)},e.fn.emptySelect=function(t){e(t).empty()},e.fn.getAjaxForSelect=function(t){var a,o,i,n,s,l=e(this),r=e.extend(!0,{},{callType:"ajax",disabledText:"",targetPage:"",additionalData:"",additionalVal:"",passingName:!1,concatValue:!1,trigger:!1,allowEmptyVal:!1,sendHeaders:!1,callbackError:"",idbPromiseCallback:""},t),d={init:function(){var t=a.val();if(!1===r.allowEmptyVal&&""===t)return d.disableAll(),!1;r.sendHeaders&&(n=e("meta[name='_csrf_header']").length?e("meta[name='_csrf_header']").attr("content"):"0",s=e("meta[name='_csrf']").length?e("meta[name='_csrf']").attr("content"):"0");var l={source:o,selval:t,trigger:r.trigger};switch(void 0!==i&&(l.name=i),""!==r.additionalData&&r.additionalData.split(",").map((function(t){l[t]=e("#"+t).val()})),""!==r.additionalVal&&r.additionalVal.split(",").map((function(e){var t=e.split(":");l[t[0]]=t[1]})),r.callType){case"ajax":default:e.ajax({url:r.targetPage,cache:!1,timeout:opt.funcTimeOut,dataType:"json",data:l,beforeSend:function(e){r.sendHeaders&&e.setRequestHeader(n,s)}}).done((function(e){d.successQuery(e)})).fail((function(e){d.failQuery(e)}));break;case"indexeddb":"function"==typeof window[r.idbPromiseCallback]&&window[r.idbPromiseCallback](l).then((function(e){d.successQuery(e)})).catch((function(e){d.failQuery(e)}))}},successQuery:function(t){if("object"==typeof t&&null!==t){var a=t;e.fn.toggleLoader("show"),void 0===a.subdataConcat&&void 0!==a.subdata&&(a=e.extend(!0,{},a,{subdataConcat:"y"})),d.refreshIt(a)}else e.fn.showDialog({type:"danger",title:"Errore!",bodyMsg:"Si è verificato un errore nell'elaborazione dei dati",buttonLabel:"Chiudi"}),e.fn.resetSelect(e("#"+o)),d.disableAll()},failQuery:function(t){if("function"==typeof r.callbackError&&!1===r.callbackError(t))return!1;e.fn.showDialog({type:"danger",title:"Errore!",bodyMsg:"Si è verificato un errore nell'elaborazione dei dati!",buttonLabel:"Chiudi"}),e.fn.resetSelect(e("#"+o)),d.disableAll()},refreshIt:function(t){var i,n="n"===t.subdataConcat;if(d.disableAll(t),void 0===a.data("nextid")){if(a.parent(opt.eGroupFormCont).data("dynamic-next-group")){var s=a.parent(opt.eGroupFormCont).data("dynamic-next-group");i=a.parentsUntil(s).next().find("select"+opt.eSelectDynamic).attr("id"),e.fn.toLog("modalità ricerca select successiva: estesa")}else i=a.parents(opt.eGroupFormCont).next().find("select"+opt.eSelectDynamic).attr("id"),e.fn.toLog("modalità ricerca select successiva: classica");i=void 0!==i?i:"",a.data("nextid",i),e.fn.toLog("registro il nextid per "+o)}var l=a.data("nextid");if(""!==l){var c=""!==r.disabledText?r.disabledText:t.label;c="n"===t.subdataConcat?c:e("#"+l).data("choice"),"y"===t.subdataConcat&&t.subdata.length>0&&e("#"+l).html('<option value="" selected>'+c+"</option>").promise().done((function(){e(this).append(e.map(t.subdata,(function(t){var a=r.concatValue?t.code+"__"+encodeURI(t.label):t.code,o=void 0!==t.selected&&"y"===t.selected;return e(e.parseHTML("<option>")).attr({value:a,selected:o,disabled:n}).text(t.label)}))),e(this).prop("disabled",n)}))}e.fn.toggleLoader("hide")},disableAll:function(t){var i,n=r.disabledText;if(void 0===a.data("group")){if(i=a.parents(opt.eGroupFormCont).nextUntil().find("select"+opt.eSelectDynamic),e("#"+i.attr("id")).parent(opt.eGroupFormCont).data("dynamic-next-group")||a.parent(opt.eGroupFormCont).data("dynamic-next-group")){var s=a.parent(opt.eGroupFormCont).data("dynamic-next-group");i=a.parentsUntil(s).next().find("select"+opt.eSelectDynamic)}i=i.length>0?i:"",a.data("group",i),e.fn.toLog("registro il group per "+o)}var l=a.data("group");""!==l?e.each(l,(function(){var a=e(this).attr("id"),o=e("#"+a);if(void 0===o.data("title")){var i=e("#"+a+" option:selected").text();o.data("title",i),e.fn.toLog("registro il title per "+a)}if(""===r.disabledText)if(void 0!==t){var s=void 0!==t.label?t.label:"-";n="n"===t.subdataConcat?s:o.data("title")}else n=o.data("title");o.html('<option value=" " selected disabled>'+n+"</option>").promise().done((function(){e(this).prop("disabled",!0)})),e.fn.toLog("disabilito select "+a)})):e.fn.toLog("non sono stati trovati figli nel disabled")}};return l.length&&(o=l.attr("id"),a=e("#"+o),!0===r.passingName&&void 0!==a.attr("name")&&(i=a.attr("name")),d.init()),d},e.fn.reloadSelectedValues=function(t,a){""!==e(t).val()&&null!==e(t).val()?e(t).getAjaxForSelect({targetPage:a,trigger:"onload",passingName:!0,allowEmptyVal:!1}):setTimeout((function(){e.fn.reloadSelectedValues(t,a)}),400)},e.fn.autoCompleteAddon=function(t,a){var o={elem:"",suffix:"_autocomplete",type:"hidden",name:"",value:"",keypressed:"",keyprevent:"9, 13",debug:!1},i=e.extend(!0,{},o,t);if("object"==typeof i.elem&&""!==i.elem){var n=e(i.elem).attr("id"),s=n+i.suffix,l={init:function(){0===e("#"+s).length&&e(e.parseHTML("<input>")).attr({id:s,name:s,value:i.value,type:i.type}).insertAfter("#"+n)},remove:function(){var t=i.keyprevent.split(",").map((function(e){return parseInt(e,10)}));e("#"+s).length&&-1===e.inArray(i.keypressed,t)&&e("#"+s).remove()},reset:function(){e("#"+n).length&&(0!==e("#"+s).length&&""!==e("#"+s).val()||e("#"+n).val(""))}};if(l[a])return l[a].apply(this,Array.prototype.slice.call(arguments,1));if("object"==typeof a||!a)return l.init.apply(this,Array.prototype.slice.call(arguments,1));i.debug&&e.fn.toLog("Il metodo "+a+"non esiste")}},e.fn.validDate=function(e,t){var a=void 0!==t?t:"/",o=e.split(a),i=new Date(o[2]+"/"+o[1]+"/"+o[0]);return 4===o[2].length&&(Boolean(i)&&i.getMonth()+1===Number(o[1])&&i.getDate()===Number(o[0]))},e.fn.submitFromOutButton=function(){e(opt.eJsSubmitOutForm).click((function(){var t=e(this).data("form-id");void 0!==t&&e("#"+t).submit()}))},e.fn.toggleTemporarySubmit=function(t,a){var o=void 0!==a?a:"hide";if(e(t).hasClass(validationParams.hideBtnClass)&&!e(t).hasClass(validationParams.eFormClass)||e(t).hasClass(opt.hideBtnOnly))switch(o){case"hide":e(t).parent("div").css("position","relative").promise().done((function(){e(t).append('<div class="'+validationParams.disableOverlay+'"></div>')}));break;default:case"show":e("."+validationParams.disableOverlay).remove()}}}(jQuery),$(document).ready((function(){"use strict";$(opt.eReadOnly).on("focus",(function(e){e.preventDefault();var t,a=$(this);"select"===this.nodeName.toLowerCase()&&(e.preventDefault(),window.focus(),a.blur(),a.attr("disabled",!0),t=!0),$.fn.showDialog({typecast:"info",type:"info",title:"Informazione",bodyMsg:"Questo campo non pu&ograve; essere modificato",buttonLabel:"Chiudi",callbackFunc:function(){void 0!==t&&a.attr("disabled",!1)}})})),$(opt.eShowPolicy).focus((function(){var e=$(this).data("popoverid");!0!==$(this).data("viewed")&&($("#"+e).popover("show"),$("#"+e).on("click",(function(){$("#"+e).popover("hide").removeAttr("id")})),$(this).data("viewed","y"))})),$(opt.eShowPolicy).on("blur change focusout keydown",(function(e){var t=$(this).data("popoverid");("keydown"!==e.type||$(opt.eShowPolicy).hasClass(opt.hidePolicyOnKeyDown))&&$("#"+t).popover("hide").removeAttr("id")})),$(opt.eTareaCountChars).on("focus keyup keypress",(function(){var e=$(this),t=[e.attr("maxlength")-e.val().length];e.parent().children(opt.eCharsLeft).removeClass("invisible"),e.parent().children(opt.eCharsLeft).find("span").text(t)})),$(opt.ePassShow).click((function(e){e.preventDefault();var t=$(this),a=t.parent("div").find("input");"password"===a.attr("type")?(a.attr({type:"text",autocomplete:"off"}).focus(),t.children("span").removeClass("miur-eye").addClass("miur-eye-slash-close")):(a.attr({type:"password",autocomplete:"on"}),t.children("span").removeClass("miur-eye-slash-close").addClass("miur-eye"))})),$("[data-"+opt.eChainSelGroup+"]").on("change ecsg-now",(function(){var e=$(this).find("option:selected"),t=$(this).data(opt.eChainSelGroup);$(this).parents().nextAll().find("[data-"+opt.eChainSelGroup+"="+t+"]").each((function(){var e=$(this);e.parent(opt.eIsChainselHide).addClass("hidden"),!1===e.hasClass("hidden")&&e.find("option:selected").attr("selected",!1)})),void 0!==e.data(opt.eIsChildData)&&$("#"+e.data(opt.eIsChildData)).removeClass("hidden")})).trigger("ecsg-now"),$("[data-"+opt.switchDataInput+"]").on("click sdi-now",(function(e){var t=$(this),a=t.attr("data-"+opt.switchDataInput),o=t.prop("checked");"sdi-now"===e.type&&$("#"+a).hasClass(opt.disableOnLoad)&&$("#"+a).find("input, select, textarea").prop("disabled",!0),"click"===e.type&&(!1===$(opt.eSwitchInputToggle).hasClass("switch-input-onlydisable")&&$(opt.eSwitchInputToggle).addClass("hidden"),$(opt.eSwitchInputToggle).find("input, select, textarea").prop("disabled",!0).promise().done((function(){$(this).each((function(){var e=$(this);(e.is("input:text")||e.is("textarea"))&&$(e).val(""),e.is("select")&&$.fn.resetSelect(e)})),void 0!==validationParams.errorListClass&&($.fn.resetErrorOnForms(),$.fn.resetErrorBox()),$("[data-"+opt.switchDataInput+"='"+a+"']").next("span").removeClass(opt.switchInputActive)})),$.fn.resizeSidebar()),o&&(!1===$("#"+a).hasClass("switch-input-onlydisable")&&$("#"+a).removeClass("hidden"),$("#"+a).find("input, select, textarea").not(opt.eLeaveDisabled).prop("disabled",!1).promise().done((function(){$("[data-"+opt.switchDataInput+"='"+a+"']").next("span").addClass(opt.switchInputActive)})))})).trigger("sdi-now"),$(opt.eCheckBoxAll).on("change ecba-now",(function(e){var t,a=$(this);a.is(":visible")&&(t=void 0!==a.data("checkall-limit-to")?a.closest($('form [data-checkall-wrapper="'+a.data("checkall-limit-to")+'"]')).find(":checkbox"):a.closest("form").find(":checkbox"),a.is(":checked")?t.prop("checked",!0):(!a.hasClass(opt.disableOnLoad)&&"ecba-now"===e.type||"ecba-now"!==e.type)&&t.prop("checked",!1))})).trigger("ecba-now"),$(opt.eCheckBoxAllDisable).change((function(){var e,t=$(this),a=t.closest("form [data-checkall-wrapper]").find(opt.eCheckBoxAll),o=a.data("checkall-limit-to");e=void 0!==a.data("checkall-limit-to")?a.closest($('form [data-checkall-wrapper="'+o+'"]')).find(opt.eCheckBoxAll):t.closest("form").find(opt.eCheckBoxAll),t.not(":checked")&&e.is(":checked")&&e.prop("checked",!1)}))}));