{"version":3,"sources":["jquery-validate.js","AutocompleteBox.js","conditional-validation.js","SearchBox.js","GlobalVariables.js","MediaQueryDetector.js","Spinner.js","Notification.js","SpinnerLockedNUnlocked.js","PasswordRevealer.js","Main.js"],"names":["convertBytesToMegabytes","bytes","getDateDMY","dateDMY","sDate","undefined","split","moment","isValidDate","date","dateParse","Date","parse","isNaN","compareDate","dateToValidate","dateToCompare","compareType","isAfter","isSame","isBefore","errMsg","console","log","getDate","from","getModelPrefix","fieldName","substr","lastIndexOf","splitAndTrim","value","replace","appendModelPrefix","prefix","indexOf","global","AutocompleteBox","options","normalize","str","setDefaultCity","defaultCity","setDefaultNormalizedCity","defaultNormalizedCity","bhSrc","$typeahead","taMinLength","taLimit","citiesData","promiseBhCities","$input","hasClass","eeGlobal","mqDetector","isDevice","Bloodhound","datumTokenizer","d","normalizedName","normalized","name","tokenizers","whitespace","normalizedNameWithSpace","queryTokenizer","q","prefetch","url","filter","response","dfltCityName","dfltDepartmentName","isHbtlpAlerts","map","x","departmentName","cities","id","nameToShow","default","defaultNormalizedName","typeahead","minLength","highlight","limit","display","item","source","sync","index","all","search","initialize","done","previousAutocompleteBox","noConflict","this","isAsyncFileUploadCapable","isFileCapable","isXHR2Capable","iOS","$htmlBody","$invalidElement","XMLHttpRequest","window","File","FileReader","FileList","Blob","navigator","platform","test","$","jQuery","validator","setDefaults","focusInvalid","validClass","element","errorClass","elementType","prop","$targetElement","closest","children","parent","addClass","removeClass","find","unhighlight","val","onkeyup","event","$el","data","valid","unobtrusive","errorPlacement","$error","$element","$helpBlock","next","appendTo","invalidHandler","form","errorList","length","animate","scrollTop","offset","top","focus","is","hasAttribute","attr","methods","join","optional","isValid","addMethod","check","dateFormatString","adapters","add","rules","params","messages","message","param","dateValue","e","min","max","checked","addBool","ignore","compareProperty","conditionalProperty","conditionalValue","conditionalPropertyValue","toString","comparetype","checkToday","minDate","maxDate","addSingleVal","minSize","files","size","parseFloat","maxSize","validFileTypes","fileType","i","toLowerCase","validfilename","fileName","pop","reg","RegExp","result","exec","clientvalidationmethods","parameters","errormessages","validationrules","patterns","rulesErrormessages","validNameErrorMessage","Array","pattern","trim","rule","parameter","Object","call","fileuploadvalidator","$targetInput","other","valueSplit","typeaheadVal","maxLength","parseInt","maxlength","isSubmitEvt","isKeyUpEvt","evt","previous","previousValue","type","old","startRequest","ajax","method","dataType","success","prepareElement","successList","push","invalid","showErrors","errors","defaultMessage","stopRequest","each","additionalfields","paramName","remotevalidation","$control","controlValue","charsCounted","newLines","match","addition","regularExp","dataInfo","JSON","html","control","regularExpresion","minimum","validationName","lastDot","substring","dependentProperty","targetvalue","actualvalue","ruleparam","rp","dependentproperty","charAt","eval","SearchBox","setPlaceHolder","placeHolderText","capitalizeFirstLetter","removeSpecialChars","text","encodeURI","toUpperCase","slice","getQuery","$inputs","queryReturn","idx","ctrl","$ctrl","goToSearch","query","cleanQuery","isFirstSearch","searchUrl","location","href","includes","searchBoxAutocomplete","$form","bind","keyCode","submit","on","suggestion","previousSearchBox","MediaQueryDetector","isMobile","$target","visibleElement","arguments","previousMediaQueryDetector","Spinner","toggleSpinner","spinnerState","$spinner","showSpinner","hideSpinner","$selectSpinner","initSpinner","toggle","show","hide","previousSpinner","Notification","render","content","context","extend","closeBtn","hbTpl","append","$container","scroll","alertType","iconType","info","warning","danger","clean","empty","sourceTpl","Handlebars","compile","previousNotification","SpinnerLockedNUnlocked","locked","hasModal","hasForm","configInputs","$idContext","configAnchors","configCloseModal","$context","configIconSpinner","unlocked","inputs","isDisabled","anchors","$anchor","$modal","remove","$icon","$classButtonSpinner","parents","previouscallSpinnerLockedNUnlocked","PasswordRevealer","wrap","after","$this","$reveal","nextAll","inputField","prev","prevAll","preventDefault","previousPasswordRevealer","removeBrandsLocalStorage","store","enabled","get","notification","searchBox","intervalId","$globalConf","userIsLoggued","$previousQueriesWrapper","$browser","$navbarBtn","$stateNav","$btnLogOff","document","ajaxComplete","xhr","settings","status","reload","jsonObject","responseJSON","hasOwnProperty","isSessionExpired","ready","trunk8","lines","tooltip","detectIE","ua","userAgent","msie","version","clearInterval","setInterval","userId","toggleClass"],"mappings":"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","file":"layout.main.ee.min.js","sourcesContent":["var isAsyncFileUploadCapable;\r\nvar isFileCapable;\r\nvar isXHR2Capable;\r\n\r\n// Vars to invalidHandler default method\r\nvar iOS;\r\nvar $htmlBody;\r\nvar $invalidElement;\r\n\r\n// Testing browser\r\nisXHR2Capable = (new XMLHttpRequest().upload);\r\nisFileCapable = (window.File && window.FileReader && window.FileList && window.Blob);\r\nisAsyncFileUploadCapable = isXHR2Capable && isFileCapable;\r\n\r\n// Init vars to invalidHandler default method\r\niOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\r\n$htmlBody = $('html, body');\r\n\r\njQuery.validator.setDefaults({\r\n focusInvalid: false,\r\n validClass: 'has-success',\r\n highlight: function (element, errorClass, validClass) {\r\n var elementType = $(element).prop('type');\r\n var $targetElement = $(element).closest('.form-group');\r\n // Special case, because that data special input\r\n if ($targetElement.children('label').hasClass('sr-only')) {\r\n $targetElement = $targetElement.parent().closest('.form-group');\r\n }\r\n $targetElement.addClass(errorClass).removeClass(validClass);\r\n if (elementType === 'checkbox' || elementType === 'radio') {\r\n $targetElement\r\n .find('.checkbox, .radio')\r\n .addClass('has-error');\r\n }\r\n },\r\n unhighlight: function (element, errorClass, validClass) {\r\n var elementType = $(element).prop('type');\r\n var $targetElement = $(element).closest('.form-group');\r\n // Special case, because that data special input\r\n if ($targetElement.children('label').hasClass('sr-only')) {\r\n $targetElement = $targetElement.parent().closest('.form-group');\r\n }\r\n if (!$targetElement.hasClass('js-customDate')\r\n && !$targetElement.hasClass('js-customDateMonthYear')) {\r\n $targetElement.addClass(validClass).removeClass(errorClass);\r\n if (elementType === 'checkbox' || elementType === 'radio') {\r\n $targetElement\r\n .find('.checkbox, .radio')\r\n .removeClass('has-error');\r\n }\r\n }\r\n // Custom validation for DateControl\r\n else if (($targetElement.hasClass('js-customDate') || $targetElement.hasClass('js-customDateMonthYear'))\r\n && !$targetElement.hasClass('has-error')\r\n && $targetElement.find('.js-datemodel').val() !== undefined\r\n && $targetElement.find('.js-datemodel').val() !== null\r\n && $targetElement.find('.js-datemodel').val() !== '') {\r\n $targetElement.addClass(validClass).removeClass(errorClass);\r\n }\r\n },\r\n onkeyup: function(element, event) {\r\n var $el = $(element);\r\n\r\n if($el.data('val-remotevalidation')) {\r\n $el.valid();\r\n };\r\n }\r\n});\r\n\r\njQuery.validator.unobtrusive.options = {\r\n focusInvalid: false,\r\n errorClass: 'has-error',\r\n errorPlacement: function ($error, $element) {\r\n var elementType = $element.prop('type');\r\n var $helpBlock;\r\n if (elementType === 'checkbox' || elementType === 'radio' || elementType === 'password' ) {\r\n $helpBlock = $element.closest('.form-group').find('.help-block');\r\n } else {\r\n $helpBlock = $element.next('.help-block');\r\n }\r\n $error.appendTo($helpBlock);\r\n },\r\n invalidHandler: function(form, validator) {\r\n /*\r\n TODO: This event not is detected in jquery validator defaults, change to\r\n that library if this is fixed.\r\n */\r\n if (validator.errorList.length <= 0) {\r\n return;\r\n }\r\n $invalidElement = $(validator.errorList[0].element);\r\n\r\n if(iOS) {\r\n $htmlBody.animate({\r\n scrollTop: $invalidElement.offset().top - 100\r\n }, 800, function(){\r\n $invalidElement.focus();\r\n });\r\n } else {\r\n if (!$invalidElement.is(':visible') && $invalidElement[0].hasAttribute('focusId')) {\r\n $htmlBody.animate({\r\n scrollTop: $(\"#\" + $invalidElement.attr(\"focusId\")).offset().top - 100\r\n }, 100);\r\n } else {\r\n $invalidElement.focus();\r\n }\r\n }\r\n }\r\n};\r\n\r\n// Fix validation for dates un Chrome and Safari\r\njQuery.validator.methods.date = function (value, element) {\r\n var dateToValidate = value.split(\"/\").join('-');\r\n return this.optional(element) || moment(dateToValidate, 'DD-MM-YYYY').isValid();\r\n};\r\n\r\n// Add validation format\r\njQuery.validator.addMethod(\r\n \"dateFormat\",\r\n function (value, element) {\r\n var check = false;\r\n var re = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/;\r\n if (re.test(value)) {\r\n var dateFormatString = value.split('/').join('-');\r\n\r\n if (moment(dateFormatString, 'DD-MM-YYYY').isValid()) check = true;\r\n else check = false;\r\n } else {\r\n check = false;\r\n }\r\n return this.optional(element) || check;\r\n },\r\n \"Please enter a valid date (dd/mm/yyyy)\"\r\n);\r\n\r\n// Adding Validaton to jQuery Validation API\r\njQuery.validator.unobtrusive.adapters.add(\r\n 'dateFormat', ['properties'], function (options) {\r\n options.rules['dateFormat'] = options.params;\r\n options.messages['dateFormat'] = options.message;\r\n }\r\n);\r\n\r\n$.validator.addMethod('rangeDate', function (value, element, param) {\r\n var dateValue;\r\n\r\n if (!value) return true;\r\n\r\n try {\r\n dateValue = getDate(value);\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n\r\n return param.min.isBefore(dateValue) && dateValue.isBefore(param.max);\r\n });\r\n\r\n// The adapter to support ASP.NET MVC unobtrusive validation\r\n$.validator.unobtrusive.adapters.add('rangedate', ['min', 'max'], function(options) {\r\n var params = {\r\n min: getDate(options.params.min),\r\n max: getDate(options.params.max)\r\n };\r\n\r\n options.rules['rangeDate'] = params;\r\n if (options.message) {\r\n options.messages['rangeDate'] = options.message;\r\n }\r\n});\r\n\r\njQuery.validator.addMethod(\"enforcetrue\", function (value, element, param) {\r\n return element.checked;\r\n});\r\njQuery.validator.unobtrusive.adapters.addBool(\"enforcetrue\");\r\n\r\njQuery.validator.setDefaults({\r\n ignore: \"not:hidden, .js-ignore-validate\"\r\n});\r\n\r\n// Adapter for client side validation for date values.\r\njQuery.validator.addMethod('conditionaldate', function (value, element, params) {\r\n\r\n var dateToValidate = getDateDMY(value);\r\n var compareProperty = $(element).data('val-conditionaldate-compareproperty');\r\n var compareType = $(element).data('val-conditionaldate-comparetype');\r\n var conditionalProperty = $(element).data('val-conditionaldate-conditionalproperty');\r\n var conditionalValue = $(element).data('val-conditionaldate-conditionalvalue');\r\n\r\n var dateToCompare = getDateDMY($(element).closest('form')\r\n .find(\"[name='\" + compareProperty + \"']\")\r\n .val());\r\n\r\n if (!dateToValidate) return true;\r\n\r\n if (conditionalProperty != undefined && conditionalProperty != '') {\r\n var conditionalPropertyValue = $(element).closest('form')\r\n .find(\"[name='\" + conditionalProperty + \"']\")\r\n .val();\r\n\r\n if (conditionalValue.toString() != conditionalPropertyValue) {\r\n return true;\r\n }\r\n\r\n return compareDate(dateToValidate, dateToCompare, compareType);\r\n }\r\n\r\n return compareDate(dateToValidate, dateToCompare, compareType);\r\n\r\n}, '');\r\n\r\njQuery.validator.unobtrusive.adapters.add('conditionaldate', {}, function (options) {\r\n options.rules['conditionaldate'] = true;\r\n options.messages['conditionaldate'] = options.message;\r\n});\r\n\r\n$.validator.addMethod('restricteddate', function (value, element, param) {\r\n var dateValue;\r\n\r\n if (!value) return true;\r\n\r\n try {\r\n dateValue = getDate(value);\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n\r\n var compareType = param.comparetype;\r\n return compareDate(dateValue, param.limit, compareType);\r\n});\r\n\r\n// The adapter to support ASP.NET MVC unobtrusive validation\r\n$.validator.unobtrusive.adapters.add('restricteddate', ['limit', 'comparetype'], function (options) {\r\n var params = {\r\n limit: getDate(options.params.limit),\r\n comparetype: options.params.comparetype\r\n };\r\n\r\n options.rules['restricteddate'] = params;\r\n if (options.message) {\r\n options.messages['restricteddate'] = options.message;\r\n }\r\n});\r\n\r\n\r\njQuery.validator.addMethod('validdate', function (value, element, params) {\r\n var dateToValidate = getDateDMY(value);\r\n var checkToday = $(element).data('val-validdate-checktoday');\r\n var minDate = moment('1900-01-01', 'YYYY-MM-DD');\r\n var maxDate = (checkToday === true)? moment() : moment(8640000000000000);\r\n\r\n if (dateToValidate === null) return true;\r\n\r\n if (dateToValidate.isBefore(minDate)) return false;\r\n\r\n if (dateToValidate.isAfter(maxDate)) return false;\r\n\r\n return true;\r\n}, '');\r\n\r\njQuery.validator.unobtrusive.adapters.add('validdate', {}, function (options) {\r\n options.rules['validdate'] = true;\r\n options.messages['validdate'] = options.message;\r\n});\r\n\r\njQuery.validator.unobtrusive.adapters.addSingleVal(\"minimumfilesize\", \"size\");\r\n\r\njQuery.validator.addMethod('minimumfilesize', function (value, element, minSize) {\r\n if (isAsyncFileUploadCapable) {\r\n return convertBytesToMegabytes(element.files[0].size) >= parseFloat(minSize);\r\n } else {\r\n return true;\r\n }\r\n});\r\n\r\njQuery.validator.addMethod('maximumfilesize', function (value, element, maxSize) {\r\n if (isAsyncFileUploadCapable && element.files[0]) {\r\n return convertBytesToMegabytes(element.files[0].size) <= parseFloat(maxSize);\r\n } else {\r\n return true;\r\n }\r\n});\r\n\r\njQuery.validator.unobtrusive.adapters.add('maximumfilesize', {}, function (options) {\r\n options.rules['maximumfilesize'] = $(options.element).data('valMaximumfilesizeSize');\r\n options.messages['maximumfilesize'] = options.message;\r\n});\r\n\r\njQuery.validator.unobtrusive.adapters.addSingleVal(\"validfiletype\", \"filetypes\");\r\n\r\njQuery.validator.addMethod('validfiletype', function (value, element, validFileTypes) {\r\n if (validFileTypes.indexOf(',') > -1) {\r\n validFileTypes = validFileTypes.split(',');\r\n } else {\r\n validFileTypes = [validFileTypes];\r\n }\r\n\r\n var fileType = value.split('.')[value.split('.').length - 1];\r\n\r\n for (var i = 0; i < validFileTypes.length; i++) {\r\n if (validFileTypes[i].toLowerCase() === fileType.toLowerCase()) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n});\r\n\r\njQuery.validator.unobtrusive.adapters.addSingleVal(\"validfilename\", \"filenames\");\r\n\r\njQuery.validator.addMethod('validfilename', function (value, element, validfilename) {\r\n var fileName = value.split('\\\\').pop();\r\n var reg = new RegExp(validfilename);\r\n\r\n if (reg.test(fileName)) {\r\n var result = reg.exec(fileName);\r\n\r\n if (result.length > 0) {\r\n return (result[0] == fileName);\r\n }\r\n }\r\n\r\n return false;\r\n});\r\n\r\njQuery.validator.unobtrusive.adapters.add('fileuploadvalidator', ['clientvalidationmethods', 'parameters', 'errormessages'], function (options) {\r\n options.rules['fileuploadvalidator'] = {\r\n clientvalidationmethods: options.params['clientvalidationmethods'].split(','),\r\n parameters: options.params['parameters'].split('|'),\r\n errormessages: options.params['errormessages'].split(',')\r\n };\r\n});\r\n\r\njQuery.validator.addMethod(\"fileuploadvalidator\", function (value, element, param) {\r\n if (value === \"\" || value === null || value === undefined) {\r\n return true;\r\n }\r\n //array of jquery validation rule names\r\n var validationrules = param[\"clientvalidationmethods\"];\r\n\r\n //array of paramteres required by rules, in this case regex patterns\r\n var patterns = param[\"parameters\"];\r\n\r\n //array of error messages for each rule\r\n var rulesErrormessages = param[\"errormessages\"];\r\n\r\n var validNameErrorMessage = new Array();\r\n var index = 0;\r\n\r\n for (i = 0; i < patterns.length; i++) {\r\n var valid = true;\r\n var pattern = patterns[i].trim();\r\n\r\n //get a jquery validator method.\r\n var rule = $.validator.methods[validationrules[i].trim()];\r\n\r\n //create a paramtere object\r\n var parameter = new Object();\r\n parameter = pattern;\r\n\r\n //execute the rule\r\n var isValid = rule.call(this, value, element, parameter);\r\n\r\n if (!isValid) {\r\n //if rule fails, add error message\r\n validNameErrorMessage[index] = rulesErrormessages[i];\r\n index++;\r\n }\r\n }\r\n //if we have more than on error message, one of the rule has failed\r\n if (validNameErrorMessage.length > 0) {\r\n //update the error message for 'validname' rule\r\n $.validator.messages.fileuploadvalidator = validNameErrorMessage.toString();\r\n return false;\r\n }\r\n return true;\r\n}, \"This is not a valid individual name\"//default error message\r\n);\r\n\r\njQuery.validator.unobtrusive.adapters.add(\r\n 'notequalto', ['other'], function (options) {\r\n var $targetInput = $('[name=' + options.params.other + ']');\r\n options.rules['notEqualTo'] = '#' + options.params.other;\r\n if ($targetInput) {\r\n options.rules['notEqualTo'] = '#' + $targetInput.attr('id');\r\n }\r\n if (options.message) {\r\n options.messages['notEqualTo'] = options.message;\r\n }\r\n });\r\n\r\njQuery.validator.addMethod('notEqualTo', function (value, element, param) {\r\n var $targetInput = $(param);\r\n var valueSplit = $targetInput.val();\r\n\r\n return this.optional(element) || valueSplit.indexOf(value) < 0;\r\n}, '');\r\n\r\n// Configure Typeahead adapters BEGIN\r\njQuery.validator.addMethod('typeaheadrequired', function (value, element, params) {\r\n var typeaheadVal = $(element).typeahead('val');\r\n\r\n if ($(element).hasClass('tt-input')\r\n && (typeaheadVal === undefined || typeaheadVal === null || typeaheadVal === '')) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}, '');\r\n\r\njQuery.validator.unobtrusive.adapters.add('typeaheadrequired', {}, function (options) {\r\n options.rules['typeaheadrequired'] = $(options.element).attr('name');\r\n options.messages['typeaheadrequired'] = options.message;\r\n});\r\n\r\njQuery.validator.addMethod('typeaheadmaxlength', function (value, element, params) {\r\n var typeaheadVal = $(element).typeahead('val');\r\n var maxLength = parseInt(params['maxlength']);\r\n\r\n if ($(element).hasClass('tt-input')\r\n && (typeaheadVal.length > maxLength)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}, '');\r\n\r\njQuery.validator.unobtrusive.adapters.add('typeaheadmaxlength', ['maxlength'], function (options) {\r\n options.rules['typeaheadmaxlength'] = {\r\n maxlength: options.params['maxlength']\r\n };\r\n\r\n options.messages['typeaheadmaxlength'] = options.message;\r\n});\r\n// Configure Typeahead adapter END\r\n\r\n// Remote validation BEGIN\r\njQuery.validator.addMethod('remotevalidation', function (value, element, params) {\r\n var $el = $(element);\r\n var isValid;\r\n var validator = this;\r\n var evt = window.event;\r\n var isSubmitEvt;\r\n var isKeyUpEvt;\r\n var previous = validator.previousValue( element );\r\n\r\n isSubmitEvt = (evt.type == 'submit')? true : false;\r\n isKeyUpEvt = (evt.type == 'keyup')? true : false;\r\n\r\n if((isKeyUpEvt && $el.val().length >= params.maxlength) || (!isKeyUpEvt && !isSubmitEvt)) {\r\n var jqxhr;\r\n\r\n if ( previous.old === value) {\r\n return previous.valid;\r\n }\r\n\r\n previous.old = value;\r\n validator.startRequest( element );\r\n jqxhr = $.ajax({\r\n method: params.method || 'GET',\r\n url: params.url,\r\n dataType: \"json\",\r\n data: params.data,\r\n success: function(data) {\r\n isValid = data;\r\n previous.valid = isValid;\r\n if(isValid) {\r\n validator.prepareElement( element );\r\n validator.successList.push( element );\r\n delete validator.invalid[ element.name ];\r\n validator.showErrors();\r\n } else {\r\n var errors = {};\r\n var message = data || validator.defaultMessage( element, \"remotevalidation\" );\r\n errors[element.name] = message;\r\n validator.showErrors(errors);\r\n }\r\n }\r\n });\r\n validator.stopRequest( element, isValid );\r\n } else {\r\n isValid = true;\r\n return isValid;\r\n }\r\n\r\n return \"pending\";\r\n}, '');\r\n\r\n/*\r\n maxlength = Data about chars length to remotevalidation init (number).\r\n url = Url for endpoint (string).\r\n method = Query method maybe POST or GET.\r\n additionalfields = Add with separate comma the name of fields that data is sent (string).\r\n*/\r\njQuery.validator.unobtrusive.adapters.add('remotevalidation', ['maxlength', 'url', 'method', 'additionalfields'], function (options) {\r\n var prefix = getModelPrefix(options.element.name);\r\n\r\n options.rules['remotevalidation'] = {\r\n maxlength: options.params['maxlength'],\r\n url: options.params['url'],\r\n method: options.params['method'],\r\n data : {},\r\n };\r\n\r\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\r\n var paramName = appendModelPrefix(fieldName, prefix);\r\n options.rules.remotevalidation.data[paramName] = function () {\r\n var field = $(options.form).find(\":input\").filter(\"[name='\" + paramName + \"']\");\r\n return field.val();\r\n };\r\n });\r\n\r\n options.messages['remotevalidation'] = options.message;\r\n});\r\n// Remote validation END\r\n\r\n\r\njQuery.validator.addMethod('maxlengthcharcounter', function (value, element, params) {\r\n var maxLength = parseInt(params['maxlength']);\r\n var $control = $(element);\r\n var controlValue = $control.val();\r\n var charsCounted = controlValue.length;\r\n var newLines = controlValue.match(/(\\r\\n|\\n|\\r)/g);\r\n var addition = 0;\r\n var totalChars;\r\n\r\n if (newLines != null) {\r\n addition = newLines.length;\r\n }\r\n\r\n totalChars = charsCounted + addition;\r\n\r\n if (totalChars > maxLength) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}, '');\r\n\r\njQuery.validator.unobtrusive.adapters.add('maxlengthcharcounter', ['maxlength'], function (options) {\r\n options.rules['maxlengthcharcounter'] = {\r\n maxlength: options.params['maxlength']\r\n };\r\n\r\n options.messages['maxlengthcharcounter'] = options.message;\r\n});\r\n\r\n\r\n\r\n\r\n\r\n$.validator.addMethod('customexpression', function (value, element, param) {\r\n var dataInfo = JSON.parse($(\".\" + param.element).html());\r\n var id = $(\"select[name='\" + param.control + \"']\").val();\r\n var val = \"\";\r\n var regularExp;\r\n\r\n if (id == \"\" && id == null) {\r\n return false;\r\n }\r\n\r\n for (i = 0; i < dataInfo.length; i++) {\r\n if (dataInfo[i].id == id)\r\n {\r\n val = dataInfo[i].regularExpresion;\r\n }\r\n }\r\n\r\n regularExp = new RegExp(val);\r\n \r\n if (regularExp.test(value)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n});\r\n\r\n// The adapter to support ASP.NET MVC unobtrusive validation\r\n$.validator.unobtrusive.adapters.add('customexpression', ['element', 'control'], function (options) {\r\n var params = {\r\n element: options.params.element,\r\n control: options.params.control,\r\n };\r\n\r\n options.rules['customexpression'] = params;\r\n if (options.message) {\r\n options.messages['customexpression'] = options.message;\r\n }\r\n});\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\njQuery.validator.addMethod('minimumchecks', function (value, element, params) {\r\n var minimum = parseInt(params['minimum']);\r\n var selectedInputs = $('input:checked[data-name=' + $(element).data(\"name\") + ']').length;\r\n\r\n return (selectedInputs >= minimum);\r\n}, '');\r\n\r\njQuery.validator.unobtrusive.adapters.add('minimumchecks', ['minimum'], function (options) {\r\n options.rules['minimumchecks'] = {\r\n minimum: options.params['minimum']\r\n };\r\n\r\n options.messages['minimumchecks'] = options.message;\r\n});\r\n\r\n\r\n\r\n\r\n\r\n\r\nfunction convertBytesToMegabytes(bytes) {\r\n return (bytes / 1024) / 1024;\r\n}\r\n\r\nfunction getDateDMY(dateDMY) {\r\n var sDate;\r\n\r\n if (dateDMY === undefined || dateDMY === '') return null;\r\n\r\n sDate = dateDMY.split('/');\r\n\r\n return moment(sDate[2] + '-' + sDate[1] + '-' + sDate[0], 'YYYY-MM-DD');\r\n}\r\n\r\nfunction isValidDate(date) {\r\n var dateParse = Date.parse(date);\r\n return isNaN(dateParse) === false;\r\n}\r\n\r\nfunction compareDate(dateToValidate, dateToCompare, compareType) {\r\n switch (compareType) {\r\n case 'GreatherThen':\r\n return (dateToValidate.isAfter(dateToCompare));\r\n case 'GreatherThenOrEqualTo':\r\n return (dateToValidate.isAfter(dateToCompare) || dateToValidate.isSame(dateToCompare));\r\n case 'EqualTo':\r\n return (dateToValidate.isSame(dateToCompare));\r\n case 'LessThenOrEqualTo':\r\n return (dateToValidate.isBefore(dateToCompare) || dateToValidate.isSame(dateToCompare));\r\n case 'LessThen':\r\n return (dateToValidate.isBefore(dateToCompare));\r\n default:\r\n {\r\n errMsg = \"Compare validation cannot be executed: '\" + compareType + \"' is invalid for comparetype parameter\";\r\n console.log(errMsg);\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nfunction getDate(date) {\r\n var from = date.split('/');\r\n return moment(new Date(from[2], from[1] - 1, from[0]));\r\n}\r\n\r\n// Functions for remotevalidation custom method\r\nfunction getModelPrefix(fieldName) {\r\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n}\r\n\r\nfunction splitAndTrim(value) {\r\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\r\n}\r\n\r\nfunction appendModelPrefix(value, prefix) {\r\n if (value.indexOf(\"*.\") === 0) {\r\n value = value.replace(\"*.\", prefix);\r\n }\r\n return value;\r\n}\r\n","!function(global) {\r\n 'use strict';\r\n\r\n var previousAutocompleteBox = global.AutocompleteBox;\r\n\r\n function AutocompleteBox(options) {\r\n var options = options || {};\r\n var bhSrc;\r\n var $typeahead;\r\n var taMinLength;\r\n var taLimit;\r\n var citiesData;\r\n var defaultCity;\r\n var defaultNormalizedCity;\r\n var promiseBhCities;\r\n\r\n function normalize(str){\r\n return str.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\r\n }\r\n\r\n function init() {\r\n $typeahead = options.$input;\r\n\r\n taMinLength = $typeahead.hasClass('js-searchbox-input') || options.$input.hasClass('js-keyword-autocomplete-alerts')? 3 : 0;\r\n\r\n if($typeahead.hasClass('js-searchbox-input') && eeGlobal.mqDetector.isDevice('xs')) {\r\n taLimit = 4;\r\n } else if($typeahead.hasClass('js-searchbox-input')) {\r\n taLimit = 6;\r\n } else {\r\n taLimit = 21;\r\n }\r\n\r\n /* Init bloodhound */\r\n // reference: http://stackoverflow.com/a/22072244/284136\r\n bhSrc = new Bloodhound({\r\n datumTokenizer: function (d) {\r\n if (typeof d.normalizedName === 'undefined') {\r\n const normalized = normalize(d.name);\r\n return Bloodhound.tokenizers.whitespace(normalized);\r\n } else {\r\n const normalizedNameWithSpace = d.normalizedName.replace(\"-\", \" \");\r\n return Bloodhound.tokenizers.whitespace(normalizedNameWithSpace);\r\n }\r\n },\r\n queryTokenizer: function (q) {\r\n const normalized = normalize(q);\r\n return Bloodhound.tokenizers.whitespace(normalized);\r\n },\r\n prefetch:{\r\n url: options.url,\r\n filter: function(response) {\r\n var dfltCityName;\r\n var dfltDepartmentName;\r\n\r\n if (options.$input.hasClass('js-searchbox-input') || options.$input.hasClass('js-keyword-autocomplete-alerts') || options.isHbtlpAlerts == true) {\r\n return response.map(function(x) {\r\n return {name: x};\r\n });\r\n\r\n return\r\n }\r\n\r\n dfltCityName = response.defaultCity.name;\r\n dfltDepartmentName = response.defaultCity.departmentName;\r\n\r\n return response.cities.map(function(x) {\r\n return {\r\n id: x.id,\r\n nameToShow: (x.departmentName == \"\")? x.name: x.name + ', ' + x.departmentName,\r\n name: (x.departmentName == \"\")? x.normalizedName: x.name + ', ' + x.departmentName,\r\n normalizedName: x.normalizedName,\r\n default: dfltDepartmentName != \"\" ? dfltCityName + ', ' + dfltDepartmentName : dfltCityName,\r\n defaultNormalizedName: response.defaultCity.normalizedName\r\n };\r\n });\r\n }\r\n }\r\n });\r\n\r\n $typeahead.typeahead(\r\n {\r\n minLength: taMinLength,\r\n highlight: true\r\n },\r\n {\r\n name: 'search',\r\n limit: taLimit,\r\n display: function (item) {\r\n if (options.isHbtlpAlerts == true) {\r\n return item.name;\r\n } else {\r\n return (options.$input.hasClass('js-searchbox-input') || options.$input.hasClass('js-keyword-autocomplete-alerts')) ? item.name : item.nameToShow;\r\n }\r\n },\r\n source: function (q, sync) {\r\n if (q === '') {\r\n sync(bhSrc.index.all());\r\n }\r\n else {\r\n bhSrc.search(q, sync);\r\n } \r\n }\r\n }\r\n );\r\n\r\n // Getting defaultCity\r\n if(!$typeahead.hasClass('js-searchbox-input')) {\r\n promiseBhCities = bhSrc.initialize();\r\n promiseBhCities.done(function() {\r\n citiesData = bhSrc.all();\r\n defaultCity = citiesData[0].default;\r\n defaultNormalizedCity = citiesData[0].defaultNormalizedName;\r\n });\r\n }\r\n }\r\n\r\n function setDefaultCity() {\r\n return defaultCity;\r\n }\r\n\r\n function setDefaultNormalizedCity() {\r\n return defaultNormalizedCity;\r\n }\r\n\r\n init();\r\n\r\n return {\r\n promiseBhCities: promiseBhCities,\r\n setDefaultCity: setDefaultCity,\r\n setDefaultNormalizedCity: setDefaultNormalizedCity\r\n }\r\n }\r\n\r\n AutocompleteBox.noConflict = function noConflict() {\r\n global.AutocompleteBox = previousAutocompleteBox;\r\n return AutocompleteBox;\r\n };\r\n\r\n global.AutocompleteBox = AutocompleteBox;\r\n}(this);\r\n","(function() {\r\n $([\"requiredif\"]).each(function(index, validationName) {\r\n $.validator.addMethod(validationName,\r\n function(value, element, parameters) {\r\n // Get the name prefix for the target control, depending on the validated control name\r\n var prefix = \"\";\r\n var lastDot = element.name.lastIndexOf(\".\");\r\n if (lastDot != -1) {\r\n prefix = element.name.substring(0, lastDot + 1).replace(\".\", \"_\");\r\n }\r\n var dependentProperty = parameters[\"dependentproperty\"].replace(\"_\", \".\");\r\n var name = prefix + dependentProperty;\r\n // get the target value\r\n var targetvalue = parameters[\"targetvalue\"];\r\n targetvalue = (targetvalue == null ? \"\" : targetvalue).toString();\r\n // get the actual value of the target control\r\n var control = $(\"[name='\" + name + \"']\");\r\n\r\n if (control.length == 0 && prefix.length > 0) {\r\n // Target control not found, try without the prefix\r\n control = $(\"[name='\" + dependentProperty + \"']\");\r\n }\r\n if (control.length > 0) {\r\n var actualvalue = \"\";\r\n if (control.is(\"checkbox\"))\r\n actualvalue = control.is(\":checked\") ? \"true\" : \"false\";\r\n else {\r\n actualvalue = control.val();\r\n }\r\n\r\n if (targetvalue == null || targetvalue == undefined || actualvalue == null || actualvalue == undefined)\r\n return false;\r\n\r\n // if the condition is true, reuse the existing validator functionality\r\n if (targetvalue.toLowerCase() === actualvalue.toLowerCase()) {\r\n var rule = parameters[\"rule\"];\r\n var ruleparam = parameters[\"ruleparam\"];\r\n return $.validator.methods[rule].call(this, value, element, ruleparam);\r\n }\r\n }\r\n return true;\r\n }\r\n );\r\n\r\n $.validator.unobtrusive.adapters.add(validationName, [\"dependentproperty\", \"targetvalue\", \"rule\", \"ruleparam\"], function(options) {\r\n var rp = options.params[\"ruleparam\"];\r\n options.rules[validationName] = {\r\n dependentproperty: options.params[\"dependentproperty\"],\r\n targetvalue: options.params[\"targetvalue\"],\r\n rule: options.params[\"rule\"]\r\n };\r\n if (rp) {\r\n options.rules[validationName].ruleparam = rp.charAt(0) == \"[\" ? eval(rp) : rp;\r\n }\r\n options.messages[validationName] = options.message;\r\n });\r\n });\r\n})();\r\n","!function (global) {\r\n 'use strict';\r\n\r\n var previousSearchBox = global.SearchBox;\r\n\r\n function SearchBox(options) {\r\n var options = options || {};\r\n var searchBoxAutocomplete;\r\n var searchUrl;\r\n var $input;\r\n var $form;\r\n\r\n // Helpers\r\n var isFirstSearch = true;\r\n\r\n // Previous queries\r\n var queryList = [];\r\n var $previousQueries;\r\n\r\n function init() {\r\n $input = options.$input;\r\n $form = options.$form;\r\n\r\n searchUrl = $form.data('search-url');\r\n\r\n // Init typeahead\r\n searchBoxAutocomplete = new AutocompleteBox({\r\n $input: $input,\r\n url: $input.data('search-url')\r\n });\r\n\r\n // Bindings\r\n // Form\r\n $form.bind('keypress keydown keyup', function (e) {\r\n if (e.keyCode == 13) {\r\n goToSearch(getQuery($input));\r\n return false;\r\n }\r\n });\r\n\r\n $form.submit(function (event) {\r\n goToSearch(getQuery($input));\r\n return false;\r\n });\r\n\r\n // Typeahead\r\n $input.on('typeahead:select', function (event, suggestion) {\r\n goToSearch(suggestion);\r\n });\r\n }\r\n\r\n function setPlaceHolder(placeHolderText) {\r\n $input.attr(\"placeholder\", capitalizeFirstLetter(placeHolderText));\r\n }\r\n\r\n function removeSpecialChars(text) {\r\n return encodeURI(text.replace(/[;,: /\\\\|]+/g, '-').replace(/[^a-zA-ZÀ-ú0-9 +&\"'-]/g, \"\").replace('&', '%26').trim());\r\n }\r\n\r\n function capitalizeFirstLetter(text) {\r\n text = text.toLowerCase();\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n }\r\n\r\n function getQuery($inputs) {\r\n var queryReturn = \"\";\r\n if ($inputs.length === 1) {\r\n queryReturn= $inputs.typeahead('val');\r\n } else {\r\n $inputs.each(function(idx, ctrl) {\r\n var $ctrl = $(ctrl);\r\n if ($ctrl.is(':visible')) {\r\n queryReturn=$ctrl.typeahead('val');\r\n }\r\n });\r\n }\r\n return queryReturn;\r\n }\r\n\r\n function goToSearch(query) {\r\n var search;\r\n var cleanQuery;\r\n\r\n if (query != null && query != undefined && query.length > 0) {\r\n cleanQuery = removeSpecialChars(query.replace(/\\s+/g, '-'));\r\n cleanQuery = cleanQuery.replace(/\\+/g, '%2B').replace(/\\s/g, '+').replace(/-{2,}/g, '-').toLowerCase();\r\n if (isFirstSearch) {\r\n isFirstSearch = false;\r\n search = searchUrl + \"trabajo-\" + cleanQuery + \"?typeSearch=2\";\r\n window.location.href = search;\r\n }\r\n else {\r\n search = searchUrl.replace(/\\/[^\\/]*$/, '/') + \"trabajo-\" + cleanQuery + \"?typeSearch=2\";\r\n window.location.href = search;\r\n }\r\n }\r\n else {\r\n search = searchUrl.includes('/trabajo-') ? searchUrl.replace(/\\/[^\\/]*$/, '/').replace('?', '') : searchUrl;\r\n window.location.href = search + \"?typeSearch=2\";\r\n }\r\n }\r\n\r\n init();\r\n\r\n return {\r\n setPlaceHolder: setPlaceHolder\r\n }\r\n }\r\n\r\n SearchBox.noConflict = function noConflict() {\r\n global.SearchBox = previousSearchBox;\r\n return SearchBox;\r\n };\r\n\r\n global.SearchBox = SearchBox;\r\n}(this);\r\n","// TODO: Review this way to set global variables\r\n// TAG: GlobalVariable\r\nvar eeGlobal = eeGlobal || {};\r\n\r\n","// Inspired on the following technique http://stackoverflow.com/a/28373319\r\n!function(global) {\r\n 'use strict';\r\n\r\n var previousMediaQueryDetector = global.MediaQueryDetector;\r\n\r\n function MediaQueryDetector(options) {\r\n var options = options || {};\r\n var $target;\r\n\r\n function init() {\r\n $target = options.$target;\r\n }\r\n\r\n function isMobile() {\r\n var visibleElement;\r\n\r\n visibleElement = $target.find(':visible').attr('class');\r\n\r\n return visibleElement == 'visible-xs' ? true: false;\r\n }\r\n\r\n // Evaluate one or multiple breakpoints (params: xs, sm, md, lg)\r\n function isDevice() {\r\n var visibleElement;\r\n\r\n visibleElement = $target.find(':visible').attr('class');\r\n\r\n for (var i in arguments) {\r\n if(('visible-' + arguments[i]) == visibleElement) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n init();\r\n\r\n return {\r\n isMobile: isMobile,\r\n isDevice: isDevice\r\n }\r\n }\r\n\r\n MediaQueryDetector.noConflict = function noConflict() {\r\n global.MediaQueryDetector = previousMediaQueryDetector;\r\n return MediaQueryDetector;\r\n };\r\n\r\n global.MediaQueryDetector = MediaQueryDetector;\r\n}(this);\r\n","!function(global) {\r\n 'use strict';\r\n\r\n var previouscallSpinner = global.Spinner;\r\n\r\n function Spinner(options) {\r\n var options = options || {};\r\n var $spinner;\r\n var spinnerState;\r\n\r\n function init() {\r\n $spinner = options.$selectSpinner;\r\n spinnerState = false;\r\n\r\n if (options.initSpinner) {\r\n toggleSpinner();\r\n }\r\n }\r\n\r\n function toggleSpinner() {\r\n if (spinnerState === true) {\r\n $spinner.addClass('hidden');\r\n spinnerState = false;\r\n } else {\r\n $spinner.removeClass('hidden');\r\n spinnerState = true;\r\n }\r\n }\r\n\r\n function showSpinner() {\r\n $spinner.removeClass('hidden');\r\n spinnerState = true;\r\n }\r\n\r\n function hideSpinner() {\r\n $spinner.addClass('hidden');\r\n spinnerState = false;\r\n }\r\n\r\n init();\r\n\r\n return {\r\n toggle: toggleSpinner,\r\n show: showSpinner,\r\n hide: hideSpinner\r\n }\r\n\r\n }\r\n\r\n Spinner.noConflict = function noConflict() {\r\n global.Spinner = previousSpinner;\r\n return Spinner;\r\n };\r\n\r\n global.Spinner = Spinner;\r\n}(this);\r\n","/* DEVELOPER NOTE:\r\n\r\n Find and replace this string, '// DevComment: ' with '' if you want get some\r\n sweets debug messages. But you have to revert the changes for two reasons:\r\n 1. We want to keep those lines in order to debug again.\r\n 2. No production enviroment should have console o other test committed to\r\n production.\r\n\r\n Also, help us improve our debugging code. Thanks\r\n*/\r\n!function(global) {\r\n 'use strict';\r\n\r\n var previousNotification = global.Notification;\r\n\r\n function Notification(options) {\r\n // var options = options || {};\r\n var $container = $('.js-notifications');\r\n var $htmlBody = $('html, body');\r\n var context = {};\r\n var sourceTpl;\r\n var hbTpl;\r\n\r\n function init() {\r\n // $container = options.$container;\r\n sourceTpl = $('#hbtpl-notifications').html();\r\n hbTpl = Handlebars.compile(sourceTpl);\r\n }\r\n\r\n /*\r\n content = {\r\n title: '',\r\n copy: '',\r\n alertType: '' ,\r\n $target: jQuery Object,\r\n closeBtn: boolean\r\n }\r\n */\r\n function render(content) {\r\n var html;\r\n var entry;\r\n // DevComment: var t0;\r\n // DevComment: var t1;\r\n // DevComment: t0 = performance.now();\r\n\r\n context = jQuery.extend(context, content);\r\n\r\n if (!('closeBtn' in context)) {\r\n context.closeBtn = true;\r\n }\r\n\r\n html = hbTpl(context);\r\n\r\n if ('$target' in content) {\r\n content.$target.append(html);\r\n } else {\r\n //TODO: Fragments\r\n $container.append(html);\r\n\r\n if (context != null && context.scroll === true) {\r\n $htmlBody.animate(\r\n { scrollTop: $container.offset().top - 20 },\r\n 1000\r\n );\r\n }\r\n }\r\n // DevComment: t1 = performance.now();\r\n // DevComment: console.warn('Render executed in ' + (t1 - t0) + ' ms.');\r\n }\r\n\r\n function success(content) {\r\n context.alertType = 'success';\r\n context.iconType = 'check';\r\n render(content);\r\n }\r\n\r\n function info(content) {\r\n context.alertType = 'info';\r\n context.iconType = 'information';\r\n render(content);\r\n }\r\n\r\n function warning(content) {\r\n context.alertType = 'warning';\r\n context.iconType = 'alert';\r\n render(content);\r\n }\r\n\r\n function danger(content) {\r\n context.alertType = 'danger';\r\n context.iconType = 'error';\r\n render(content);\r\n }\r\n\r\n function clean() {\r\n $container.empty();\r\n }\r\n\r\n init();\r\n\r\n return {\r\n render: render,\r\n success: success,\r\n info: info,\r\n warning: warning,\r\n danger: danger,\r\n clean: clean\r\n }\r\n }\r\n\r\n Notification.noConflict = function noConflict() {\r\n global.Notification = previousNotification;\r\n return Notification;\r\n };\r\n\r\n global.Notification = Notification;\r\n}(this);\r\n","!function (global) {\r\n 'use strict';\r\n\r\n // Capture context global variable.\r\n var previouscallSpinnerLockedNUnlocked = global.SpinnerLockedNUnlocked;\r\n\r\n // Global function for working with current context.\r\n function SpinnerLockedNUnlocked(options) {\r\n\r\n // Variable declaration.\r\n var $classButtonSpinner;\r\n var $idContext;\r\n var $modal;\r\n var $form;\r\n var $input;\r\n var $anchor;\r\n var $modalId;\r\n var hasModal;\r\n var hasForm;\r\n\r\n // Init for spinner.\r\n function init() {\r\n\r\n // Get the class attribute of context.\r\n $classButtonSpinner = options.$context.attr('class').split(' ').pop();\r\n\r\n // Get context of modal.\r\n $modal = $('.' + $classButtonSpinner).parents('div.modal');\r\n hasModal = $modal.length > 0;\r\n\r\n // Check if has modal.\r\n if (hasModal) {\r\n\r\n // Get the modal id.\r\n $idContext = $modal.attr('id');\r\n } else {\r\n\r\n // Get context form.\r\n $form = $('.' + $classButtonSpinner).parents('form');\r\n hasForm = $form.length > 0;\r\n\r\n // Get the form id.\r\n $idContext = $form.attr('id');\r\n }\r\n }\r\n\r\n //------- Begin functions exposed api --------//\r\n\r\n function locked() {\r\n\r\n // If no modal or form send context only button CTA.\r\n if (!hasModal && !hasForm) {\r\n\r\n // Call function for disabled input.\r\n configInputs(options.$context, true);\r\n } else {\r\n\r\n // Call function for disabled all inputs and anchors of the form context.\r\n configInputs($('#' + $idContext + ' :input'), true);\r\n configAnchors($('#' + $idContext).find('a'), true);\r\n\r\n if (hasModal) {\r\n\r\n // Call function for prevent close modal.\r\n configCloseModal(true);\r\n }\r\n }\r\n\r\n //Call function for remove icon spinner.\r\n configIconSpinner(true);\r\n }\r\n\r\n function unlocked() {\r\n\r\n // If no modal or form send context only button CTA.\r\n if (!hasModal && !hasForm) {\r\n\r\n // Call function for disabled input.\r\n configInputs(options.$context, false);\r\n } else {\r\n\r\n // Call function for disabled all inputs and anchors of the form context.\r\n configInputs($('#' + $idContext + ' :input'), false);\r\n configAnchors($('#' + $idContext).find('a'), false);\r\n\r\n if (hasModal) {\r\n\r\n // Call function for prevent close modal.\r\n configCloseModal(false);\r\n }\r\n }\r\n\r\n //Call function for remove icon spinner.\r\n configIconSpinner(false);\r\n }\r\n\r\n //-------- End functions exposed api ---------//\r\n\r\n //------- Begin constructor functions -------//\r\n\r\n // Disabled or enabled all inputs defined.\r\n function configInputs(inputs, isDisabled) {\r\n\r\n // Iterate over each of the inputs.\r\n inputs.each(function () {\r\n\r\n // Get context of the input.\r\n $input = $(this);\r\n\r\n // Config property 'disabled' to input.\r\n $input.prop('disabled', isDisabled);\r\n });\r\n }\r\n\r\n // Disabled or enabled all anchors defined.\r\n function configAnchors(anchors, isDisabled) {\r\n\r\n // Iterate over each of the anchors.\r\n anchors.each(function () {\r\n\r\n // Get context of the input.\r\n $anchor = $(this);\r\n\r\n if (isDisabled) {\r\n\r\n // Disabled the anchor.\r\n $anchor.addClass(\"disabled\");\r\n } else {\r\n\r\n // Enabled the anchor.\r\n $anchor.removeClass(\"disabled\");\r\n }\r\n });\r\n }\r\n\r\n // Config event of close/open and hide/show button of modal.\r\n function configCloseModal(isDisabled) {\r\n\r\n if (isDisabled) {\r\n\r\n // Hide close button.\r\n $modal.find('.close').hide();\r\n\r\n //Append container to prevent closing the modal.\r\n $modal.append('
');\r\n\r\n } else {\r\n\r\n // Show close button.\r\n $modal.find('.close').show();\r\n\r\n //Remove container to allow closing the modal.\r\n $modal.find('.js-modal-overlay').remove();\r\n }\r\n }\r\n\r\n // Add or removed icon spinner.\r\n function configIconSpinner(isDisabled) {\r\n\r\n // Variable declaration.\r\n var $icon;\r\n var $iconSpinner = '';\r\n\r\n // Get the icon that can get to have input.\r\n $icon = $('.' +$classButtonSpinner).find('i');\r\n\r\n // Remove or add class 'hidden'.\r\n if (isDisabled) {\r\n\r\n //Add class and add icon spinner.\r\n $icon.addClass('hidden');\r\n $('.' +$classButtonSpinner).append($iconSpinner);\r\n } else {\r\n\r\n //Remove class and remove icon spinner.\r\n $icon.removeClass('hidden');\r\n $('.' + $classButtonSpinner).find('i.fa-spinner').remove();\r\n }\r\n }\r\n\r\n //------- End constructor functions -------//\r\n\r\n // Call init module.\r\n init();\r\n\r\n // Exposed method to control locking and unlocking.\r\n return {\r\n locked: locked,\r\n unlocked: unlocked\r\n }\r\n }\r\n\r\n // Instance no conflict between modules.\r\n SpinnerLockedNUnlocked.noConflict = function noConflict() {\r\n global.SpinnerLockedNUnlocked = previouscallSpinnerLockedNUnlocked;\r\n return SpinnerLockedNUnlocked;\r\n };\r\n\r\n // Module globalization.\r\n global.SpinnerLockedNUnlocked = SpinnerLockedNUnlocked;\r\n\r\n}(this);\r\n","!function (global) {\r\n 'use strict';\r\n\r\n var previousPasswordRevealer = global.PasswordRevealer;\r\n\r\n function PasswordRevealer(options) {\r\n var options = options || {};\r\n var $target;\r\n\r\n function init() {\r\n $target = options.$target;\r\n\r\n $target\r\n .wrap('
')\r\n .after('');\r\n\r\n $target.on(\"contextmenu\", function (e) {\r\n return false;\r\n });\r\n\r\n \r\n $target.on('keyup change', function () {\r\n var $this = $(this);\r\n var $reveal = $this.nextAll('.js-password-revealer');\r\n\r\n if ($this.val() == '') {\r\n $reveal.removeClass('active');\r\n } else {\r\n $reveal.addClass('active');\r\n }\r\n });\r\n\r\n $target.nextAll('.js-password-revealer').on('click', function () {\r\n var $this = $(this);\r\n var $icon = $this.find('.fa');\r\n var inputField = $this.prev();\r\n\r\n if ($icon.hasClass('fa-eye')) {\r\n $icon.removeClass('fa-eye').addClass('fa-eye-slash');\r\n $this.prevAll('input[type=\"password\"]').attr('type', 'text');\r\n } else {\r\n $icon.removeClass('fa-eye-slash').addClass('fa-eye');\r\n $this.prevAll('input[type=\"text\"]').attr('type', 'password');\r\n\r\n }\r\n\r\n inputField.bind('cut copy paste', function (e) {\r\n e.preventDefault();\r\n });\r\n\r\n inputField.prev().on(\"contextmenu\", function (e) {\r\n return false;\r\n });\r\n\r\n })\r\n }\r\n\r\n init();\r\n // return {}\r\n\r\n }\r\n\r\n PasswordRevealer.noConflict = function noConflict() {\r\n global.PasswordRevealer = previousPasswordRevealer;\r\n return PasswordRevealer;\r\n };\r\n\r\n global.PasswordRevealer = PasswordRevealer;\r\n}(this);\r\n","(function () {\r\n var $globalConf = $('.js-global-conf');\r\n var userIsLoggued = $globalConf.data('user-is-loggued');\r\n\r\n var mqDetector;\r\n var notification;\r\n var searchBox;\r\n var $previousQueriesWrapper = $('.js-previous-searches-wrapper');\r\n var $browser = $('.js-browser');\r\n var intervalId;\r\n var $navbarBtn = $('.ee-mod .navbar-toggle');\r\n var $stateNav = $('.ee-ico-state-nav');\r\n var $btnLogOff = $('.js-logOff');\r\n\r\n notification = new Notification();\r\n\r\n eeGlobal.notification = notification;\r\n\r\n mqDetector = new MediaQueryDetector({\r\n $target: $('#mq-detector')\r\n });\r\n\r\n eeGlobal.mqDetector = mqDetector;\r\n\r\n /*\r\n Init SearchBox module\r\n */\r\n searchBox = new SearchBox({\r\n $input: $('.js-searchbox-input'),\r\n $form: $('.js-searchbox-form')\r\n });\r\n eeGlobal.searchBox = searchBox;\r\n\r\n //ajaxComplete permite interceptar la request Ajax y examinar la repuesta para determinar si la session caduco\r\n //Se realiza por seguridad ya que no deberia continuar en la vista actual si la session caduco\r\n //Archivos modificados: Main.js, MainSimple.js\r\n $(document).ajaxComplete(function (event, xhr, settings) {\r\n if (xhr.status === 401) {\r\n location.reload();\r\n return;\r\n }\r\n\r\n var jsonObject = xhr.responseJSON;\r\n if (jsonObject !== null && jsonObject !== undefined && jsonObject.hasOwnProperty('isSessionExpired') && jsonObject.isSessionExpired) {\r\n window.location.href = jsonObject.url;\r\n }\r\n });\r\n\r\n // Remove local storage for brands\r\n function removeBrandsLocalStorage() {\r\n if (store.enabled && store.get('se-brands-selected')) {\r\n store.remove('se-brands-selected');\r\n }\r\n }\r\n\r\n // Truncate previous search\r\n $(document).ready(function () {\r\n if (!eeGlobal.mqDetector.isDevice('xs', 'lg')) {\r\n $previousQueriesWrapper.trunk8({\r\n lines: 2,\r\n tooltip: false\r\n });\r\n }\r\n });\r\n\r\n //Function to detect navigator ie\r\n detectIE = function () {\r\n var ua = window.navigator.userAgent;\r\n var msie = ua.indexOf('MSIE ');\r\n var version = -1;\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n version = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n if (version === -1 || version > 8) {\r\n clearInterval(intervalId);\r\n }\r\n else {\r\n $browser.removeClass('hide');\r\n }\r\n };\r\n detectIE();\r\n intervalId = setInterval(detectIE, 216000000);\r\n\r\n // Log off functions\r\n $btnLogOff.on('click', function () {\r\n removeBrandsLocalStorage();\r\n });\r\n\r\n // Expired session\r\n if (!userIsLoggued && store.enabled && store.get('userIdSites')) {\r\n // Remove user id when user is not loggued\r\n store.remove('userIdSites');\r\n userId = 0;\r\n }\r\n\r\n /*\r\n Doble binding*/\r\n $navbarBtn.on('click', function (event) {\r\n $stateNav.toggleClass(\"hidden-ico\");\r\n });\r\n})();\r\n"],"sourceRoot":"/source/"}