"use strict";window.$=function(selector){let many=!0,selection;if(typeof selector==='string'){if(selector.indexOf('#')===0){selector=selector.substr(1,selector.length);let index=selector.indexOf(' ');if(index===-1){selection=document.getElementById(selector);many=!1}else{let id=selector.substr(0,index),query=selector.substr(index+1,selector.length);selection=document.getElementById(id);if(selection!==null){selection=selection.querySelectorAll(query)}}}else{selection=document.querySelectorAll(selector)}
if(many&&(!selection||selection.length===0)){console.log('$ - Empty: ',selector);selection=document.createDocumentFragment().querySelectorAll('div')}else if(many&&selection.length===1){selection=selection[0]}
return selection}else if(typeof selector==='undefined'){console.log('$ - No selector');return document.createDocumentFragment().querySelectorAll('div')}else{console.log('$ - Not recognized',selector);return document.createDocumentFragment().querySelectorAll('div')}};FormData.prototype.se_jsonAppend=function(){let el;for(let i=0,cArg;cArg=arguments[i];++i){for(el in cArg){this.append(el,cArg[el])}}};Node.prototype.se_formToObj=function(){let l=this.elements.length,i,cEl,data={};for(i=0;i<l;i++){cEl=this.elements[i];if(cEl.name){if(cEl.type!=='checkbox'){data[cEl.name]=cEl.value}else if(cEl.type==='checkbox'){data[cEl.name]=cEl.checked?cEl.value:!1}}}
return data};Node.prototype.se_formEl=function(elName){return this.elements.namedItem(elName)};Node.prototype.se_formElVal=function(elName,cVal){let cEl=this.elements.namedItem(elName);if(typeof cVal!=='undefined'){cEl.value=cVal;if(cEl.length>1){for(let i=0;i<cEl.length;i++){let curEl=cEl[i];if(curEl.value===cVal){curEl.checked=!0;break}}}else if(cEl.type.toLowerCase()==='checkbox'){cEl.checked=(cVal)}
return this}else{if(cEl.hasOwnProperty('type')&&cEl.type.toLowerCase()==='checkbox'){return this.elements.namedItem(elName).checked}else{return this.elements.namedItem(elName).value}}};Node.prototype.se_remove=function(){this.parentElement.removeChild(this)};Node.prototype.se_index=function(){return Array.prototype.indexOf.call(this.parentNode.children,this)};Node.prototype.se_empty=function(){this.innerHTML='';return this};Node.prototype.se_html=function(html){if(typeof html!=='undefined'){this.innerHTML=html;return this}else{return this.innerHTML}};Node.prototype.se_text=function(text){if(typeof text!=='undefined'){this.innerHTML=se.element.htmlentities(text);return this}else{return se.element.htmlentities(this.innerHTML)}};Node.prototype.se_data=function(var1,var2){var1='data-'+var1;if(typeof var2!=='undefined'){if(var2!==null){this.setAttribute(var1,var2)}else{this.removeAttribute(var1)}
return this}else{return this.getAttribute(var1)}};Node.prototype.se_replaceWith=function(nEl){this.insertAdjacentHTML('afterEnd',nEl);let newElem=this.nextSibling,cParent=this.parentElement;cParent.replaceChild(newElem,this);return newElem};Node.prototype.se_wrap=function(elem){this.insertAdjacentHTML('afterEnd',elem);let newParent=this.nextSibling;newParent.appendChild(this)};Node.prototype.se_closest=function(selector,limit){let el=this,docEl=document.documentElement,matches=docEl.matches||docEl.msMatchesSelector||docEl.oMatchesSelector;limit=(typeof limit!=='undefinded')?limit:document.getElementsByTagName('body')[0];do{if(matches.call(el,selector)){return el}}while((el=el.parentNode)&&el.tagName!=='HTML'&&el!==limit);return null};Node.prototype.se_prev=function(sel){let el=this,docEl=document.documentElement,matches=docEl.matches||docEl.msMatchesSelector||docEl.oMatchesSelector;if(typeof sel==='string'){while((el=el.previousSibling)){if(matches.call(el,sel)){return el}}
return null}else{return this.previousSibling}};Node.prototype.se_prevUntil=function(uEl,sel){let el=this,docEl=document.documentElement,matches=docEl.matches||docEl.msMatchesSelector||docEl.oMatchesSelector;while((el=el.previousSibling)&&uEl!==el){if(matches.call(el,sel)){return el}}
return null};Node.prototype.se_next=function(sel){let el=this,docEl=document.documentElement,matches=docEl.matches||docEl.msMatchesSelector||docEl.oMatchesSelector;if(typeof sel==='string'){while((el=el.nextSibling)){if(matches.call(el,sel)){return el}}
return null}else{return this.nextSibling}};Node.prototype.se_nextUntil=function(uEl,sel){let el=this,docEl=document.documentElement,matches=docEl.matches||docEl.msMatchesSelector||docEl.oMatchesSelector;while((el=el.nextSibling)&&uEl!==el){if(matches.call(el,sel)){return el}}
return null};Node.prototype.se_hasParent=function(parent){let el=this;do{if(el===parent){return !0}}while((el=el.parentNode));return !1};Node.prototype.se_sibling=function(selector){let el=this,docEl=document.documentElement,matches=docEl.matches||docEl.msMatchesSelector||docEl.oMatchesSelector,cEl=this.parentNode.firstElementChild;do{if(el!==cEl&&matches.call(cEl,selector)){return cEl}}while(cEl=cEl.nextSibling);return !1};Node.prototype.se_before=function(cEl){if(typeof cEl==='string'){this.insertAdjacentHTML('beforebegin',cEl)}else if(typeof cEl==='object'){this.parentNode.insertBefore(cEl,this)}else{console.log("Append, caso no definido",typeof cEl,cEl)}
return this.previousElementSibling};Node.prototype.se_after=function(cEl){if(typeof cEl==='string'){this.insertAdjacentHTML('afterend',cEl)}else if(typeof cEl==='object'){this.parentNode.insertBefore(cEl,this.nextSibling)}else{console.log("Append, caso no definido",typeof cEl,cEl)}
return this.nextElementSibling};Node.prototype.se_insertManyFromString=function(mode,structure,content){for(let i=0,len=content.length;i<len;i++){if(mode==='append'){this.se_append(se.struct.stringPopulate(structure,content[i]))}else{this.se_prepend(se.struct.stringPopulate(structure,content[i]))}}
return this};Node.prototype.se_append=function(cEl){if(typeof cEl==='string'){this.insertAdjacentHTML('beforeend',cEl)}else if(typeof cEl==='object'){this.appendChild(cEl)}else{console.log("Append, caso no definido",typeof cEl,cEl)}
return this.lastElementChild};Node.prototype.se_prepend=function(cEl){if(typeof cEl==='string'){this.insertAdjacentHTML('afterbegin',cEl)}else if(typeof cEl==='object'){if(this.children.length!==0){this.insertBefore(cEl,this.children[0])}else{this.append(cEl)}}else{console.log("Append, caso no definido",typeof cEl,cEl)}
return this.firstElementChild};Node.prototype.se_offset=function(){let offset={x:window.scrollX,y:window.scrollY};let box=this.getBoundingClientRect();offset.x+=box.left;offset.y+=box.top;return offset};Node.prototype.se_on=function(var1,var2,var3){let direct=function(cElem,cMethod,cFunc){cElem.addEventListener(cMethod,cFunc)},delegate=function(cElem,cMethod,cDelegate,cFunc){cElem.addEventListener(cMethod,function(e){let rTarget=e.target.se_closest(cDelegate,cElem);if(rTarget!==null){cFunc(e,rTarget)}})},typeVar1=typeof var1,typeVar2=typeof var2,typeVar3=typeof var3,methods,cMethod,i,cSubEl,j;if(typeVar1==='object'){for(let key in var1){let cFunc=var1[key];if(typeVar2==='undefined'){direct(this,key,cFunc)}else if(typeVar2==='string'){delegate(this,key,var2,cFunc)}}}else if(typeVar1==='string'){methods=var1.split(' ');if(typeVar2==='function'){for(i=0;cMethod=methods[i];i++){direct(this,cMethod,var2)}}else if(typeVar2==='object'){if(typeVar3==='function'){for(i=0;cMethod=methods[i];i++){for(j=0;cSubEl=var2[j];j++){delegate(this,cMethod,cSubEl,var3)}}}else{console.log('Element - se_on: Delegate . v1-string, v2-object, v3-not valid',typeVar3)}}else if(typeVar2==='string'){if(typeVar3==='function'){for(i=0;cMethod=methods[i];i++){delegate(this,cMethod,var2,var3)}}else{console.log('Element - se_on: Delegate . v1-string, v2-string, v3-not valid')}}else{console.log('Element - se_on: Delegate . v1-string, v2-not valid',var2)}}else{console.log('Element - se_on: Method . v1-not valid',var1);console.trace()}
return this};Node.prototype.se_once=function(cMethod,action){let tFunc=function(e){e.target.removeEventListener(e.type,tFunc);return action(e)};this.addEventListener(cMethod,tFunc);return this};Node.prototype.se_classAdd=function(nClass){let classes=nClass.split(' ');for(let i=0,len=classes.length;i<len;i++){this.classList.add(classes[i])}
return this};Node.prototype.se_classDel=function(nClass){let classes=nClass.split(' ');for(let i=0,len=classes.length;i<len;i++){this.classList.remove(classes[i])}
return this};Node.prototype.se_classHas=function(nClass){return this.classList.contains(nClass)};Node.prototype.se_classToggle=function(nClass){let classes=nClass.split(' ');for(let i=0,len=classes.length;i<len;i++){this.classList.toggle(classes[i])}
return this};Node.prototype.se_classSwitch=function(rClass,nClass){this.se_classDel(rClass);this.se_classAdd(nClass);return this};Node.prototype.se_css=function(var1,var2){switch(typeof(var1)){case 'object':for(let cStyle in var1){if(var1.hasOwnProperty(cStyle)){let value=(typeof var1[cStyle]!=='undefined')?var1[cStyle]:null;this.style[cStyle]=value}}
return this;break;case 'string':if(typeof(var2)==='undefined'){return this.style[var1]}else{this.style[var1]=var2;return this}
break;default:break}};Node.prototype.se_plugin=function(plugName,data){if(this[plugName]===undefined){if(typeof se.plugin[plugName]==='function'){this[plugName]=new se.plugin[plugName](this,data);let destroyFunction=(typeof this[plugName]._destroy==='function')?this[plugName]._destroy:null;se.pluginManager.pluginList.push({'el':this,'name':plugName,'func':destroyFunction})}else{console.log("Plugin no válido",plugName,se.plugin[plugName])}}else{console.log("Plugin already loaded in element.",plugName,this)}};Node.prototype.se_hide=function(){if(this.style.display!=='none'){this.setAttribute('se-display',this.style.display)}
this.style.display='none'};Node.prototype.se_show=function(){this.style.display=this.getAttribute('se-display')||'block';this.removeAttribute('se-display')};Node.prototype.se_attr=function(var1,var2){if(typeof var2!=='undefined'){if(var2!==''){this.setAttribute(var1,var2)}else{this.removeAttribute(var1)}
return this}else{return this.getAttribute(var1)}};Node.prototype.se_val=NodeList.prototype.se_val=function(var1){if(typeof var1!=='undefined'){this.value=var1;return this}else{return this.value}};NodeList.prototype.se_testSel=HTMLCollection.prototype.se_testSel=function(){if(this.length){for(let i=0,len=this.length;i<len;i++){console.log('testSel',i,this[i])}}else{console.log('Selección vacía.')}};NodeList.prototype.se_text=HTMLCollection.prototype.se_text=function(cText){for(let i=0,len=this.length;i<len;i++){this[i].se_text(cText)}
return this};NodeList.prototype.se_html=HTMLCollection.prototype.se_html=function(cText){for(let i=0,len=this.length;i<len;i++){this[i].se_html(cText)}
return this};NodeList.prototype.se_val=HTMLCollection.prototype.se_val=function(cVal){for(let i=0,len=this.length;i<len;i++){this[i].se_val(cVal)}
return this};NodeList.prototype.se_classAdd=HTMLCollection.prototype.se_classAdd=function(nClass){for(let i=0,len=this.length;i<len;i++){this[i].se_classAdd(nClass)}
return this};NodeList.prototype.se_classDel=HTMLCollection.prototype.se_classDel=function(nClass){for(let i=0,len=this.length;i<len;i++){this[i].se_classDel(nClass)}
return this};NodeList.prototype.se_classSwitch=HTMLCollection.prototype.se_classSwitch=function(rClass,aClass){for(let i=0,len=this.length;i<len;i++){this[i].se_classSwitch(rClass,aClass)}
return this};NodeList.prototype.se_each=HTMLCollection.prototype.se_each=Array.prototype.se_each=function(callback,scope){for(let i=0,len=this.length;i<len;i++){callback.call(scope,i,this[i])}
return this};NodeList.prototype.se_css=HTMLCollection.prototype.se_css=function(var1,var2){for(let i=0,len=this.length;i<len;i++){this[i].se_css(var1,var2)}
return this};NodeList.prototype.se_hide=HTMLCollection.prototype.se_hide=function(){for(let i=0,len=this.length;i<len;i++){this[i].se_hide()}
return this};NodeList.prototype.se_show=HTMLCollection.prototype.se_show=function(){for(let i=0,len=this.length;i<len;i++){this[i].se_show()}
return this};NodeList.prototype.se_data=HTMLCollection.prototype.se_data=function(var1,var2){for(let i=0,len=this.length;i<len;i++){this[i].se_data(var1,var2)}
return this};NodeList.prototype.se_attr=HTMLCollection.prototype.se_attr=function(var1,var2){for(let i=0,len=this.length;i<len;i++){this[i].se_attr(var1,var2)}
return this};NodeList.prototype.se_remove=HTMLCollection.prototype.se_remove=function(){for(let i=0,len=this.length;i<len;i++){if(this[i]&&this[i].parentElement){this[i].parentElement.removeChild(this[i])}}
return this};String.prototype.sprintf=function(obj){let useArguments=!1,_arguments=arguments,i=-1;if(typeof _arguments[0]==="string"){useArguments=!0}
if(obj instanceof Array||useArguments){return this.replace(/\%s/g,function(a,b){i++;if(useArguments){if(typeof _arguments[i]==='string'){return _arguments[i]}
else{throw new Error("Arguments element is an invalid type")}}
return obj[i]})}else{return this.replace(/{([^{}]*)}/g,function(a,b){let r=obj[b];return typeof r==='string'||typeof r==='number'?r:a})}};Node.prototype.se_fadeIn=function(){let transEvent=transitionEndEventName();this.style.transition='opacity 0.5s';this.style.opacity=1;return this};Node.prototype.se_fadeOut=function(destroy){let transEvent=transitionEndEventName();this.style.transition='opacity 0.5s';this.style.opacity=0;if(transEvent){this.addEventListener(transEvent,function(e){if(destroy){this.se_remove()}})}else{if(destroy){this.se_remove()}}
return this};"use strict";window.se={plugin:{},addon:{}};window.site={apps:{},properties:{},user:{}};se.pluginManager={mutationObserver:new MutationObserver(function(mutations){if(se.pluginManager.pluginList.length===0){return}
let i=se.pluginManager.pluginList.length;while(i--){let element=se.pluginManager.pluginList[i];if(!document.body.contains(element.el)){se.pluginManager.purge(element.el);if(typeof element.func==='function'){element.func()}
element.el[element.name]='';se.pluginManager.pluginList.splice(i,1)}}}),pluginList:[],purge:function(d){let a=d.attributes,i,l,n;if(a){for(i=a.length-1;i>=0;i-=1){n=a[i].name;if(typeof d[n]==='function'){d[n]=null}}}
a=d.childNodes;if(a){l=a.length;for(i=0;i<l;i+=1){se.pluginManager.purge(d.childNodes[i])}}}};se.funcs={after:function(times,func){return function(){if(--times<1){return func.apply(this,arguments)}}},before:function(times,func){let memo;return function(){if(--times>0){memo=func.apply(this,arguments)}
if(times<=1){func=null}
return memo}},once:function(func,context){let result;return function(){if(func){result=func.apply(context||this,arguments);func=null}
return result}},delay:function(func,wait){let args=slice.call(arguments,2);return setTimeout(function(){return func.apply(null,args)},wait)},throttle:function(func,threshhold,scope){threshhold=threshhold||250;let last,deferTimer;return function(){let context=scope||this,now=+new Date,args=arguments;if(last&&now<last+threshhold){clearTimeout(deferTimer);deferTimer=setTimeout(function(){last=now;func.apply(context,args)},threshhold)}else{last=now;func.apply(context,args)}}},debounce:function(func,wait,immediate){let timeout;return function(){let context=this,args=arguments,later=function(){timeout=null;if(!immediate){func.apply(context,args)}},callNow=immediate&&!timeout;clearTimeout(timeout);timeout=setTimeout(later,wait);if(callNow)func.apply(context,args)}}};se.element={htmlentities:function(str){return String(str).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;')},toggle:function(id){let el=$(id);if(el!==null){el.style.display=el.style.display==='none'?'':'none'}},fixValues:function(cEl){let fixers=cEl.querySelectorAll('[se-fix]'),fixVal;if(fixers){fixers.se_each(function(i,cEl){fixVal=cEl.se_attr('se-fix');switch(cEl.tagName.toLowerCase()){case 'select':cEl.value=fixVal;break;case 'input':switch(cEl.type){case 'checkbox':fixVal=parseInt(fixVal);cEl.checked=(fixVal===1);break;case 'radio':let cForm=cEl.se_closest('form');cForm.se_formElVal(cEl.name,fixVal);break;default:console.log("AJAXSIMPLE - ElementFix - Input no definido");break}
break;default:console.log("AJAXSIMPLE - ElementFix - caso no definido",cEl.tagName);break}})}},create:function(tag,properties){}};se.windowEvent=function(element,action,func){if(typeof func==='function'&&element){let newFunc=function(event){if(document.contains(element)){func(event)}else{window.removeEventListener(action,newFunc)}};window.addEventListener(action,newFunc)}else{console.log('Función o elemento no válido',element,func)}};se.main={init:function(){document.body.se_on('click','a[se-nav]',function(event,element){event.preventDefault();let post=element.se_data('post');if(typeof post!=='undefined'){try{post=JSON.parse(post)}catch(ex){post={}}}else{post={}}
se.ajax.pageLink(element.href,element.getAttribute('se-nav'),post)});document.body.se_on('click','a[se-scroll]',function(event,element){event.preventDefault();event.stopPropagation();let dataID=element.getAttribute('href'),dataTarget=document.querySelector(dataID),dataSpeed=element.getAttribute('data-speed');if(dataTarget){se.navigation.smoothScroll(dataTarget,dataSpeed||500)}});se.pluginManager.mutationObserver.observe(document.body,{childList:!0,subtree:!0});if(typeof(history.replaceState)!=="undefined"){history.replaceState({'function':'se.ajax.pageInit','target':'se_middle','url':window.location.pathname+window.location.search},null,null)}
window.onpopstate=function(event){if(event.state!==null){let stateObj=event.state;stateObj.target=($('#'+stateObj.target))?stateObj.target:'se_middle';executeFunctionByName(stateObj.function,window,stateObj,!1)}};let fileList=document.head.querySelector('meta[name="se:files"]').se_attr('content');if(fileList!==''){let fileArray=fileList.split(';');se.ajax.filesLoadAsync(fileArray)}
site.properties=document.head.querySelector('meta[name="se:properties"]').dataset;se.main.pluginLoad()},pluginLoad:function(elem){elem=(typeof elem!=='undefined')?elem:document.body;elem.querySelectorAll('[se-plugin]').se_each(function(i,el){let pluginName=el.getAttribute('se-plugin'),settings=el.se_attr('se-settings');if(settings){try{settings=JSON.parse(settings.replace(/'/ig,'"'))}catch(e){console.log('Plugin Load - Not valid',e);settings={}}}else{settings={}}
el.se_plugin(pluginName,settings)})}};se.object={merge:function(){let objectEnd={},attrname;for(let i=0,cArg;cArg=arguments[i];++i){if(cArg!==null){for(attrname in cArg){if(cArg.hasOwnProperty(attrname)){objectEnd[attrname]=cArg[attrname]}}}}
return objectEnd},serialize:function(obj){let str=[],p;for(p in obj){if(obj.hasOwnProperty(p)){str.push(encodeURIComponent(p)+"="+encodeURIComponent(obj[p]))}}
return str.join("&")},each:function(obj,callback,scope){for(let id in obj){if(obj.hasOwnProperty(id)){callback.call(scope,id,obj[id])}}},sort:function(data,key,way='ASC'){return data.sort(function(a,b){let x=a[key],y=b[key];if(way==='ASC'){return((x<y)?-1:((x>y)?1:0))}
else{return((x>y)?-1:((x<y)?1:0))}})}};se.struct={stringPopulate:function(cString,cData){let value,re;for(let cName in cData){if(!cData.hasOwnProperty(cName)){continue}
value=(cData[cName]!==null)?cData[cName]:'';re=new RegExp('!'+cName+';',"g");cString=cString.replace(re,value)}
return cString},stringPopulateMany:function(cString,cData){let rString="",cMod="",rowId,rowCur,cElId,cEl,re;for(rowId in cData){if(!cData.hasOwnProperty(rowId)){continue}
rowCur=cData[rowId];cMod=cString;for(cElId in rowCur){if(!rowCur.hasOwnProperty(cElId)){continue}
cEl=(rowCur[cElId]!==null)?rowCur[cElId]:'';re=new RegExp('!'+cElId+';',"g");cMod=cMod.replace(re,cEl)}
rString+=cMod}
return rString},notifAdvanced:function(element,style,title,content,icon,iconMod){let html='';if(typeof icon!=='undefined'){html+='<div class="icon">';if(icon.indexOf('.')===-1){iconMod=(typeof iconMod==='string')?iconMod:'';html+='<svg class="'+iconMod+'"><use xlink:href="#'+icon+'"></use></svg>'}else{console.log("NOTIFICACION, IMAGEN NO PROGRAMADA")}
html+='</div>'}
html+='<div class="text"><span class="title">'+title+'</span><span class="content">'+content+'</span></div>';this.notifSimple(element,style,html)},notifSimple:function(element,style,content){element.className=style;element.innerHTML=content}};se.ajax={json:function(url,post,config){let xhr=new XMLHttpRequest(),defaults={headers:{},response:null,timeOut:0,onRequest:null,onComplete:null,onSuccess:null,onFail:null,onError:null,onProgress:null,onTimeOut:null,},settings=se.object.merge(defaults,config),method=(typeof post!=='undefined'&&post!==null)?'POST':'GET',i,cVal;if(settings.response!==null){se.struct.notifAdvanced(settings.response,'notification','Enviando información... ','','fa-spinner','spin')}
if(typeof(settings.onRequest)==='function'){settings.onRequest()}
xhr.onload=function(){let title,content,error=!0;if(settings.response!==null){settings.response.innerHTML=''}
if(typeof(settings.onComplete)==='function'){settings.onComplete()}
if(xhr.status===200){let msg,pass=!1;try{msg=JSON.parse(xhr.responseText)}
catch(err){let xhrResponse=xhr.responseText,endPos=xhrResponse.indexOf('{"');if(endPos){xhrResponse=xhrResponse.substr(0,endPos)}
console.error("HTTP Status 200, NOT JSON\nRESPONSE:\n---\n%s\n---",xhrResponse);console.error('ERR:',err);if(settings.response!==null){se.struct.notifAdvanced(settings.response,'notification alert','ERROR','No pudo ser procesada la respuesta.','fa-remove')}
if(typeof(settings.onError)==='function'){settings.onError(xhr)}}
pass=!0;if(msg.s.t===1){if(settings.response!==null){title=('d' in msg.s)?msg.s.d:'Actualizado';content=('ex' in msg.s)?msg.s.ex:('date' in msg.s)?msg.s.date:'';se.struct.notifAdvanced(settings.response,'notification success',title,content,'fa-check')}
if(typeof(settings.onSuccess)==='function'){settings.onSuccess(msg)}}else{console.log("AJAX - 200, t=0:\n---\nE:\t%s \n---\nEX:\t%s",msg.s.e,msg.s.ex);if(settings.response!==null){title=('e' in msg.s)?'ERROR: '+msg.s.e:'ERROR: Caso no definido';content=('ex' in msg.s)?msg.s.ex:('date' in msg.s)?msg.s.date:'';se.struct.notifAdvanced(settings.response,'notification alert',title,content,'fa-remove')}
if(typeof(settings.onFail)==='function'){settings.onFail(msg)}}}else{console.log("---\nASYNC CALL ERROR.\n HTTP Status:%s\nCONTENT:\n%s\n---",xhr.status,xhr.responseText);if(settings.response!==null){se.struct.notifSimple(settings.response,'notification fail','ERROR','Error respuesta del servidor.','check')}
if(typeof(settings.onError)==='function'){settings.onError(xhr)}}};xhr.open(method,url,!0);settings.headers['X-Requested-With']=settings.headers['X-Requested-With']||'XMLHttpRequest';for(const name in settings.headers){if(!settings.headers.hasOwnProperty(name)){continue}
xhr.setRequestHeader(name,settings.headers[name])}
switch(typeof(post)){case 'object':if(!(post instanceof FormData)){post=se.object.serialize(post);xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=UTF-8')}
break;case 'undefined':break;default:console.log("objeto no definido");break}
if(typeof(settings.onProgress)==='function'){xhr.upload.addEventListener('progress',settings.onProgress,!1)}
if(settings.timeOut){xhr.timeout=settings.timeOut;if(typeof(settings.onTimeOut)==='function'){xhr.ontimeout=settings.onTimeOut}}
xhr.send(post)},text:function(url,post,config){let xhr=new XMLHttpRequest(),defaults={headers:{},response:null,onRequest:null,onComplete:null,onSuccess:null,onFail:null,onError:null,onProgress:null},settings=se.object.merge(defaults,config),method=(typeof post!=='undefined'&&post!==null)?'POST':'GET',i,cVal;if(settings.response!==null){se.struct.notifAdvanced(settings.response,'notification','Enviando información... ','','fa-spinner','spin')}
if(typeof(settings.onRequest)==='function'){settings.onRequest()}
xhr.onload=function(){let title,content;if(settings.response!==null){settings.response.innerHTML=''}
if(typeof(settings.onComplete)==='function'){settings.onComplete()}
if(xhr.status===200){if(typeof(settings.onSuccess)==='function'){settings.onSuccess(xhr.responseText)}}else{console.log('TEXT - XHR ERROR:',xhr.status,xhr.responseText);if(settings.response!==null){se.struct.notifSimple(settings.response,'notification success','ERROR','Error respuesta del servidor.','check')}
if(typeof(settings.onError)==='function'){settings.onError('ERROR (SERVIDOR)','El servidor no responde correctamente.')}}};xhr.open(method,url,!0);settings.headers['X-Requested-With']=settings.headers['X-Requested-With']||'XMLHttpRequest';for(const name in settings.headers){if(!settings.headers.hasOwnProperty(name)){continue}
xhr.setRequestHeader(name,settings.headers[name])}
switch(typeof(post)){case 'object':if(!(post instanceof FormData)){post=se.object.serialize(post);xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=UTF-8')}
break;default:console.log("objeto no definido");break}
if(settings.onProgress!==null){xhr.upload.addEventListener('progress',settings.onProgress,!1)}
xhr.send(post)},pageLink:function(url,pTarget,post){if(typeof history.pushState==="undefined"){location.href=url}
if(typeof post==="undefined"){post={}}
se.ajax.pageInit({'url':url,'target':pTarget,'function':'se.ajax.pageInit','post':post},!0)},pageInit:function(stateObj,saveHistory){let loadBar=$('#'+stateObj.target).se_prepend('<div class="loadBar"><div class="loadBarStat"></div></div>'),parser=document.createElement('a');parser.href=stateObj.url;parser.pathname='/partial/'+stateObj.target+parser.pathname;stateObj.rUrl=parser.href;se.ajax.json(stateObj.rUrl,stateObj.post,{onProgress:function(e){if(e.lengthComputable){loadBar.querySelector('div.loadBarStat').style.width=e.loaded/e.total*100+'%'}},onComplete:function(){loadBar.se_remove()},onSuccess:function(msg){se.ajax.pageLoad(msg.d,stateObj,saveHistory)},onFail:function(msg){console.log('Page Load Fail.',stateObj,msg.s);if('et' in msg.s){se.ajax.problemSolver(stateObj,msg)}
else if('e' in msg.s){alert('ERROR Sistema. No pudo cargarse la página.')}},onError:function(){alert("No pudo ser cargada la página.")}})},problemSolver:function(stateObj,response){let problem=parseInt(response.s.et),eMsg=response.s.e+"\n\n"+response.s.ex;switch(problem){case 1:site.user.askLogin();break;case 307:case 308:se.ajax.pageInit({'url':response.s.e,'target':stateObj.target,'function':'se.ajax.pageInit'},!0);break;case 400:alert(eMsg);break;case 401:alert("Permisos insuficientes:\n\n"+eMsg);break;case 403:alert("Permisos insuficientes.");break;case 500:alert("ERROR en el servidor:\n\n"+eMsg);break;default:console.log("Caso no definido",response);alert(eMsg);break}},pageLoad:function(pData,stateObj,saveHistory){let head=document.getElementsByTagName('head')[0],pageTarget=document.getElementById(stateObj.target),cUrl=stateObj.url,lastHead=head.querySelector('meta[property="og:type"]'),rSimple=function(elem,array){return(elem in array&&array[elem]!=='')?array[elem]:''},pluginLoad=function(){se.main.pluginLoad(pageTarget)},cEl;if(saveHistory){history.pushState(stateObj,pData.title,stateObj.url)}
pageTarget.innerHTML=pData.body;if('url_path' in pData){cUrl=pData.url_path}
let cTitle=rSimple('title',pData.head),mDesc=rSimple('metaDesc',pData.head),mUrl=rSimple('url',pData.head),metas=[{meta:'meta[name="keywords"]',content:rSimple('metaWords',pData.head)},{meta:'meta[name="description"]',content:mDesc},{meta:'meta[property="og:title"]',content:cTitle},{meta:'meta[property="og:url"]',content:mUrl},{meta:'meta[property="og:image"]',content:rSimple('image',pData.head.og)},{meta:'meta[property="og:description"]',content:mDesc},{meta:'meta[property="og:type"]',content:rSimple('type',pData.head.og)},{meta:'meta[name="twitter:card"]',content:rSimple('twType',pData.head.og)},{meta:'link[rel="canonical"]',content:mUrl}],elem,meta,i;document.title=(cTitle==='')?site.properties.name:cTitle+' | '+site.properties.name;for(let i=0,len=metas.length;i<len;i++){meta=metas[i];if((elem=head.querySelector(meta.meta))){elem.setAttribute('content',meta.content)}}
head.querySelectorAll('[data-pageOnly="1"]').se_remove();if('data' in pData.head.og&&pData.head.og.data.length!==0){for(i=0;i<pData.head.og.data.length;i++){cEl=pData.head.og.data[i];let propName=(cEl[0]==='twitter')?'name':'property';lastHead.insertAdjacentHTML('afterend','<meta data-ogcustom="1" '+propName+'="'+cEl[1]+'" content="'+cEl[2]+'"/>')}}
if('headExtra' in pData&&pData.head.extra.length!==0){for(i=0;i<pData.head.extra.length;i++){cEl=pData.head.extra[i];lastHead.insertAdjacentHTML('afterend','<'+cEl.type+' data-ogcustom="1" '+cEl.content+'"/>')}}
let snLink=('socnetlink' in site.properties)?site.properties.socnetlink:!0;if(snLink){if(typeof FB!=='undefined'){FB.XFBML.parse(pageTarget)}
if(typeof twttr!=='undefined'){twttr.widgets.load()}
if(typeof gapi!=='undefined'&&typeof gapi.plusone!=='undefined'){gapi.plusone.go()}
if(typeof _gaq!=='undefined'){_gaq.push(['_trackPageview',cUrl])}}
se.ajax.fileLoadAsync(pData,'#jsAjax',pluginLoad);se.navigation.smoothScroll(pageTarget,300,!0)},fileLoadAsync:function(pData,jsTarget,onLoad){let jsElem=$(jsTarget),jsText='',jsReady=function(){window.eval(jsText);if(typeof onLoad==='function'){onLoad()}};if('js' in pData){jsText+=pData.js}
if('mt' in pData){jsText+=pData.mt}
try{jsElem.text=jsText}
catch(e){try{jsElem.innerHTML=jsText}
catch(ee){console.log(ee)}}
if('files' in pData){if('css' in pData.files&&pData.files.css.length!==0){se.ajax.cssLoad(pData.files.css)}
if('js' in pData.files&&pData.files.js.length!==0){se.ajax.jsLoad(pData.files.js,jsReady)}else{jsReady()}
if('svg' in pData.files&&pData.files.svg.length!==0){se.ajax.svgLoad(pData.files.svg)}}else{console.log("NO FILES");jsReady()}},jsFilesRemaining:0,jsLoad:function(file,callback){let head=document.getElementsByTagName('head')[0],curJS=head.getElementsByTagName('script'),notExist,compare,cFile;if(typeof file==='string'){file=[file]}
if(file){for(let i=0,fLen=file.length;i<fLen;i++){cFile=file[i].replace('&amp;','&');notExist=!0;compare=this.fileRealDir(cFile);for(let j=0,oLen=curJS.length;j<oLen;j++){if(compare===curJS[j].src){notExist=!1}}
if(notExist){let js=document.createElement('script');js.async=!0;js.src=cFile;head.appendChild(js);if(typeof callback==='function'){se.ajax.jsFilesRemaining++;js.se_on('load',function(event){se.ajax.jsFilesRemaining--;if(se.ajax.jsFilesRemaining<=0){callback(event);se.ajax.jsFilesRemaining=0}},this)}}}}
if(se.ajax.jsFilesRemaining===0&&typeof callback==='function'){callback(null)}},cssLoad:function(file){let head=document.getElementsByTagName('head')[0],curCSS=head.getElementsByTagName('link'),notExist,compare,cFile;if(typeof file==='string'){file=[file]}
for(let i=0,fLen=file.length;i<fLen;i++){cFile=file[i];notExist=!0;compare=this.fileRealDir(cFile);for(let j=0,oLen=curCSS.length;j<oLen;j++){if(compare===curCSS[j].href){notExist=!1}}
if(notExist){let css=document.createElement('link');css.rel="stylesheet";css.href=cFile;head.appendChild(css)}}},svgLoad:function(file){let ajax;if(typeof file==='string'){file=[file]}
for(let i=0,fLen=file.length;i<fLen;i++){ajax=new XMLHttpRequest();ajax.open("GET",file[i],!0);ajax.onload=function(e){document.body.se_append(e.target.response)};ajax.send()}},fileRealDir:function(file){let compare=file;if(file.indexOf("//")===0){compare=window.location.protocol+file}else if(file.indexOf("/")===0){let port=(intVal(window.location.port)!==0)?':'+window.location.port:'';compare=window.location.protocol+'//'+window.location.hostname+port+file}
return compare},filesLoadAsync:function(files){let i,cFile,fjs=[],fcss=[],fsvg=[];for(i=0;i<files.length;i++){cFile=files[i];if(cFile.endsWith('.js')||cFile.endsWith('.js.gz')){fjs.push(cFile)}else if(cFile.endsWith('.css')||cFile.endsWith('.css.gz')){fcss.push(cFile)}else if(cFile.endsWith('.svg')||cFile.endsWith('.svgz')){fsvg.push(cFile)}else if(cFile.includes('//fonts.googleapis.com')){fcss.push(cFile)}else{console.log("File async not supported: ",cFile)}}
if(fjs.length){se.ajax.jsLoad(fjs)}
if(fcss.length){se.ajax.cssLoad(fcss)}
if(fsvg.length){se.ajax.svgLoad(fsvg)}}};se.url={str_parse:function(string){let result={},vSplit=[],pair,i,iLen,fChar;if(string&&string.lastIndexOf('=')){fChar=string.charAt(0);if(fChar==='?'||fChar==='#'){string=string.substr(1)}
if(string.lastIndexOf('&')){vSplit=string.split('&')}else{vSplit.push(string)}
iLen=vSplit.length;for(i=0;i<iLen;i++){pair=vSplit[i].split('=');result[pair[0]]=pair[1]}}
return result},parse:function(){let pathV=decodeURIComponent(window.location.pathname.substring(1)).split('/'),pathP=[];for(let i=0;i<pathV.length;i++){if(pathV[i]){pathP.push(pathV[i])}}
return{path:pathP,search:se.url.str_parse(decodeURIComponent(window.location.search.substring(1))),hash:se.url.str_parse(decodeURIComponent(window.location.hash.substring(1)))}}};se.form={createFromObj:function(options){let defaults={'method':'post','save_url':'','actName':'Guardar','class':'se_form','enctype':'multipart/form-data','elems':[]},settings=se.object.merge(defaults,options),formContent='',xData='',cElemsL,cElem,x,i,length;if('data' in settings){for(i=0,length=settings.data.length;i<length;i++){xData+=' '+settings.data[i].name+'="'+settings.data[i].value+'"'}}
formContent+='<form class="'+settings.class+'" method="'+settings.method+'" action="'+settings.save_url+'" enctype="'+settings.enctype+'"'+xData+'>';cElemsL=settings.elems.length;for(x=0;x<cElemsL;x++){cElem=settings.elems[x];if(cElem.ftype==='hidden'){formContent+='<input type="hidden" name="'+cElem.vname+'" value="'+cElem.dval+'" />'}else{cElem.fdesc=(typeof cElem.fdesc==='undefined')?'':cElem.fdesc;let dVal=('dval' in cElem)?cElem.dval:'',isReq=('requiered' in cElem&&cElem.requiered)?' required':'',dataBox='<div class="cont"><span class="title">'+cElem.fname+'</span><span class="desc">'+cElem.fdesc+'</span></div>',placeholder=('placeholder' in cElem&&cElem.placeholder!=='')?cElem.placeholder:'',reg=('regexp' in cElem&&cElem.regexp!=='')?regexpsimple[cElem.regexp]:'',lMin=('lMin' in cElem&&cElem.lMin!=='')?intVal(cElem.lMin):0,lMax=('lMax' in cElem&&cElem.lMax!=='')?intVal(cElem.lMax):200,val,name,selected,cPat='';formContent+='<div class="separator'+isReq+'">';switch(cElem.ftype){case 'text':case 'search':if(lMin!==0){reg+='{'+lMin+',';reg+=(lMax!==0)?lMax:'';reg+='}'}else if(reg!==''){reg+='*'}
cPat=(reg!=='')?' pattern="'+reg+'"':'';formContent+='<label>'+dataBox;formContent+='<input type="'+cElem.ftype+'" name="'+cElem.vname+'" value="'+dVal+'" minlength="'+lMin+'" maxlength="'+lMax+'"'+cPat+''+isReq+'/>';formContent+='</label>';break;case 'password':formContent+='<label>'+dataBox;formContent+='<input type="password" name="'+cElem.vname+'" value="'+dVal+'" minlength="'+lMin+'" maxlength="'+lMax+'"'+isReq+' />';formContent+='</label>';break;case 'tel':formContent+='<label>'+dataBox;formContent+='<input type="tel" name="'+cElem.vname+'" value="'+dVal+'" '+isReq+' />';formContent+='</label>';break;case 'url':formContent+='<label>'+dataBox;formContent+='<input type="url" name="'+cElem.vname+'" value="'+dVal+'" '+isReq+' />';formContent+='</label>';break;case 'email':formContent+='<label>'+dataBox;formContent+='<input type="email" name="'+cElem.vname+'" value="'+dVal+'" minlength="'+lMin+'" maxlength="'+lMax+'"'+isReq+' pattern="'+regexpsimple.email+'" />';formContent+='</label>';break;case 'number':let parameters='';parameters+=('step' in cElem&&cElem.step!=='')?' step="'+cElem.step+'"':'';parameters+=('vMin' in cElem&&cElem.vMin!=='')?' min="'+cElem.vMin+'"':'';parameters+=('vMax' in cElem&&cElem.vMax!=='')?' max="'+cElem.vMax+'"':'';formContent+='<label>'+dataBox;formContent+='<input type="number" name="'+cElem.vname+'" value="'+dVal+'"'+parameters+isReq+''+cPat+' />';formContent+='</label>';break;case 'date':formContent+='<label>'+dataBox;formContent+='<input type="date" name="'+cElem.vname+'" value="'+dVal+'"'+isReq+''+cPat+' se-plugin="calendarInput" />';formContent+='</label>';break;case 'time':formContent+='<label>'+dataBox;formContent+='<input type="time" name="'+cElem.vname+'" value="'+dVal+'"'+isReq+''+cPat+' se-plugin="calendarInput" />';formContent+='</label>';break;case 'datetime-local':placeholder=(placeholder!=='')?placeholder:'aaaa-mm-dd hh:mm:ss';formContent+='<label>'+dataBox;formContent+='<input type="datetime-local" name="'+cElem.vname+'" value="'+dVal+'"'+isReq+''+cPat+' se-plugin="calendarInput" />';formContent+='</label>';break;case 'color':placeholder=(placeholder!=='')?placeholder:'#FFFFFF';formContent+='<label>'+dataBox;formContent+='<input type="color" name="'+cElem.vname+'" value="'+dVal+'"'+isReq+' pattern="'+regexpsimple.color+'" />';formContent+='</label>';break;case 'file':let accept=('accept' in cElem&&cElem.accept!=='')?' accept="'+cElem.accept+'"':'';formContent+='<label>'+dataBox;formContent+='<input type="file" name="'+cElem.vname+'" '+isReq+accept+' />';formContent+='</label>';break;case 'textarea':let taRows=('rows' in cElem&&cElem.rows!=='')?' rows="'+cElem.rows+'"':'',taCols=('cols' in cElem&&cElem.cols!=='')?' cols="'+cElem.cols+'"':'';formContent+='<label class="'+isReq+'">'+dataBox+'</label>';formContent+='<textarea name="'+cElem.vname+'" minlength="'+lMin+'" maxlength="'+lMax+'" se-plugin="autoSize"'+taRows+taCols+isReq+'>'+dVal+'</textarea>';break;case 'textareaesp':formContent+='<label class="'+isReq+'">'+dataBox+'</label>';formContent+='<textarea name="'+cElem.vname+'" minlength="'+lMin+'" maxlength="'+lMax+'" data-textwrap="'+cElem.textWrap+'" data-mode="'+cElem.taemode+'" se-plugin="wysiwyg"'+isReq+'>'+dVal+'</textarea>';break;case 'checkbox':formContent+='<label class="checkbox"><input type="checkbox" name="'+cElem.vname+'" value="1" />'+cElem.fname+'</label>';break;case 'radio':formContent+='<div class="cont radioList">'+dataBox+'<div>';for(val in cElem.opts){name=cElem.opts[val];selected=(val===dVal)?'checked data-check="asdf"':'';formContent+='<label><input type="radio" name="'+cElem.vname+'" value="'+val+'" '+isReq+' '+selected+'/>'+name+'</label>'}
formContent+='</div>';break;case 'list':case 'menu':formContent+='<label>'+dataBox;formContent+='<select name="'+cElem.vname+'" '+isReq+'>';for(val in cElem.opts){name=cElem.opts[val];selected=(val===dVal)?'selected':'';formContent+='<option value="'+val+'" '+selected+'>'+name+'</option>'}
formContent+='</select></label>';break;default:console.log(cElem,"Form type not defined");formContent+='ERROR';break}
formContent+='</div>'}}
formContent+='<button type="submit">'+settings.actName+'</button>';formContent+='<output se-elem="response"></output>';formContent+='</form>';return formContent},loadData:function(cForm,cData){let cName;cForm.reset();for(cName in cData){if(!cData.hasOwnProperty(cName)){continue}
let cVal=cData[cName],elem=cForm.elements.namedItem(cName);if(elem!==null){if(elem.tagName==='INPUT'&&elem.type==='checkbox'){elem.checked=(intVal(cVal)===1||cVal===!0)}else if(elem.tagName==='TEXTAREA'&&elem.se_data('mode')==='textareaesp'){elem.value=cVal;let evt=document.createEvent("HTMLEvents");evt.initEvent("change",!1,!0);elem.dispatchEvent(evt)}else if(elem.tagName==='SELECT'&&elem.multiple&&cVal&&cVal instanceof Array){let i,iLen=cVal.length,options=elem.options,cOption,j,jLen=options.length;for(i=0;i<iLen;i++){for(j=0;j<jLen;j++){cOption=elem.options[j];if(cOption.value===cVal[i]){cOption.selected=!0}}}}else{elem.value=cVal}}}},serializeToObj:function(cForm,excludeDisabled,extraOps=null){let elements,data={},len,i,cEl;excludeDisabled=(typeof excludeDisabled==='undefined')?!1:excludeDisabled;if(excludeDisabled){elements=cForm.querySelectorAll('input:enabled, select:enabled, textarea:enabled')}else{elements=cForm.elements}
len=elements.length;if(elements){for(i=0;i<len;i++){cEl=elements[i];if(cEl.name){switch(cEl.tagName){case 'INPUT':switch(cEl.type){case 'radio':data[cEl.name]=cForm.elements.namedItem(cEl.name).value;break;case 'checkbox':data[cEl.name]=(cEl.checked)?1:0;break;default:data[cEl.name]=cEl.value;break}
break;case 'SELECT':console.log("select",cEl);if(cEl.multiple){console.log("multiple");let tResult=[],optList=cEl.options,cOpt,j,jLen=optList.length;for(j=0;j<jLen;j++){cOpt=optList[j];if(cOpt.selected){tResult.push(cOpt.value||cOpt.text)}}
data[cEl.name]=tResult}else{data[cEl.name]=cEl.value}
break;default:data[cEl.name]=cEl.value;break}}}}else{console.error('form.serializeToObj - Formulario vació')}
if(extraOps){for(let cOp in extraOps){if(!extraOps.hasOwnProperty(cOp)){continue}
let cOpContent=extraOps[cOp];switch(cOp){case 'int':for(let cIndex of cOpContent){data[cIndex]=parseInt(data[cIndex])}
break}}}
return data}};se.user={logIn:function(msgs,element){if(msgs.s.l===1){if($('#se_template_root')){se.ajax.pageLink(location.pathname,'se_template_root')}else{window.location=window.location.href}}else{if(msgs.s.c===1){window.location='/usuario/login/'}else{se.struct.notifAdvanced(element.querySelector('[se-elem="response"]'),'notification alert','Error','Usuario y/o contraseña no válido','fa-remove')}}},logOut:function(url){se.ajax.json('/system/user_async/logOut/',{},{onSuccess:function(msg){url=(url!==undefined)?url:'/';console.log("LOGOUT",url);document.body.se_data('userlogin',0);if(msg.s.t===1){if(msg.s.l===0){if($('#se_template_root')){se.ajax.pageLink(url,'se_template_root')}else{window.location=url}}}else{alert(msg.s.e)}}})},logCheck:function(){if(site.user.data){return !0}else{page.user.askLogin();return !1}}};se.uniqueId=function(){let newDate=new Date;return newDate.getTime()};se.randomString=function(strLen){let text="",possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let i=0;i<strLen;i++){text+=possible.charAt(Math.floor(Math.random()*possible.length))}
return text};se.navigation={smoothScroll:function(anchor,duration,visEnough){let startLocation=window.pageYOffset,navigation=document.body.querySelector('.navigation'),navHeigth=(navigation)?navigation.clientHeight:0,endLocation=anchor.se_offset().y-navHeigth,distance=endLocation-startLocation,increments=distance/(duration/16),mCounts=Math.ceil(duration/16)+3,cCounts=0,stopAnimation,runAnim=!0,runAnimation,animateScroll=function(){window.scrollBy(0,increments);cCounts++;stopAnimation()};visEnough=(typeof visEnough!=='undefined')?visEnough:!1;if(visEnough&&endLocation>startLocation&&endLocation<startLocation+window.innerHeight){runAnim=!1}
if(runAnim){if(increments>=0){stopAnimation=function(){let travelled=window.pageYOffset;if(travelled>=(endLocation-increments)||(window.innerHeight+travelled)>=document.body.offsetHeight||cCounts>mCounts){clearInterval(runAnimation)}}}else{stopAnimation=function(){let travelled=window.pageYOffset;if(travelled<=endLocation||cCounts>mCounts||travelled<=0){clearInterval(runAnimation)}}}
runAnimation=setInterval(animateScroll,16)}},redirectPost:function(url,params){let form=document.createElement("form");form.method='post';form.action=url;se.object.each(params,function(name,value){console.log(name,value);let input=document.createElement('input');input.type="hidden";input.name=name;input.value=value;form.appendChild(input)});document.body.se_append(form);form.submit()}};se.number={toMoney:function(n,c,d,t){c=isNaN(c=Math.abs(c))?2:c;d=d===undefined?".":d;t=t===undefined?",":t;let s=n<0?"-":"",i=parseInt(n=Math.abs(+n||0).toFixed(c))+"",j;j=(j=i.length)>3?j%3:0;return s+(j?i.substr(0,j)+t:"")+i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+t)+(c?d+Math.abs(n-i).toFixed(c).slice(2):"")},precisionRound:function(number,precision){let factor=Math.pow(10,precision);return Math.round(number*factor)/factor}};se.time={secondsToTime:function(seconds){let secs=Math.abs(seconds),hr=Math.floor(secs/3600),min=Math.floor((secs-(hr*3600))/60),sec=Math.floor(secs-(hr*3600)-(min*60)),time='';if(hr!==0){if(hr<10){time+='0'}
time+=hr+':'}
if(min!==0){if(min<10){time+='0'}
time+=min+':'}else{time+='00:'}
if(sec<10){time+='0'}
time+=sec;if(seconds<0){time='-'+time}
return time},timeToSecs:function(text){let time,seconds=0,negative;text=text.trim();negative=(text.charAt(0)==='-');time=text.split(':');switch(time.length){case 1:seconds=intVal(time[0]);break;case 2:seconds=intVal(time[0])*60+intVal(time[1]);break;case 3:seconds=intVal(time[0])*3600+intVal(time[1])*60+intVal(time[2]);break}
if(negative){seconds=-seconds}
return seconds},timePad:function(txt){let pad="00";txt=""+txt;return pad.substring(0,pad.length-txt.length)+txt},toHHMMSS:function(sec_numb,hoursHide){let hours=Math.floor(sec_numb/3600),minutes=Math.floor((sec_numb-(hours*3600))/60),seconds=sec_numb-(hours*3600)-(minutes*60);if(hours<10){hours="0"+hours}
if(minutes<10){minutes="0"+minutes}
if(seconds<10){seconds="0"+seconds}
if(hoursHide){return minutes+':'+seconds}else{return hours+':'+minutes+':'+seconds}},stringToDateObject:function(dateString){let reggie=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/,dateArray=reggie.exec(dateString),dateObject=new Date((+dateArray[1]),(+dateArray[2])-1,(+dateArray[3]),(+dateArray[4]),(+dateArray[5]),(+dateArray[6]));return dateObject},dateObjectToString:function(dateObject){let dtMonth=dateObject.getMonth()+1;return dateObject.getFullYear().toString()+'-'+se.time.timePad(dtMonth.toString())+'-'+se.time.timePad(dateObject.getDate().toString())+' '+se.time.timePad(dateObject.getHours().toString())+':'+se.time.timePad(dateObject.getMinutes().toString())+':'+se.time.timePad(dateObject.getSeconds().toString())},prettyDate_esp:function(time){let date=new Date((time||"").replace(/-/g,"/").replace(/[TZ]/g," ")),diff=(((new Date()).getTime()-date.getTime())/1000),day_diff=Math.floor(diff/86400);if(isNaN(day_diff)||day_diff<0||day_diff>=365000){return time}
return day_diff===0&&(diff<60&&"Justo ahora"||diff<120&&"Hace 1 minuto"||diff<3600&&"Hace "+Math.floor(diff/60)+" minutos"||diff<7200&&"Hace 1 hora"||diff<86400&&"Hace "+Math.floor(diff/3600)+" horas")||day_diff===1&&"Ayer"||day_diff<14&&"Hace "+day_diff+" días"||day_diff<60&&"Hace "+Math.floor(day_diff/7)+" semanas"||day_diff<365&&"Hace "+Math.floor(day_diff/30)+" meses"||day_diff<730&&"Hace 1 año"||day_diff<365000&&"Hace "+Math.floor(day_diff/365)+" años"}};se.string={linkify:function(inputText){let replacedText,replacePattern1,replacePattern2,replacePattern3;replacePattern1=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;replacedText=inputText.replace(replacePattern1,'<a href="$1" target="_blank">$1</a>');replacePattern2=/(^|[^\/])(www\.[\S]+(\b|$))/gim;replacedText=replacedText.replace(replacePattern2,'$1<a href="http://$2" target="_blank">$2</a>');replacePattern3=/(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;replacedText=replacedText.replace(replacePattern3,'<a href="mailto:$1">$1</a>');return replacedText}};se.cookie={set:function(name,data,hours,path){path=(typeof path==='undefined')?null:path;hours=(typeof hours==='undefined')?null:hours;let cookie=name+"="+data+";";if(hours){let d=new Date(),expires;d.setTime(d.getTime()+(hours*60*60*1000));cookie+="expires="+d.toUTCString()+";"}
if(path){cookie+="path="+path+";"}
document.cookie=cookie},get:function(cname){let name=cname+"=",ca=document.cookie.split(';'),i,c;for(i=0;i<ca.length;i++){c=ca[i];while(c.charAt(0)===' '){c=c.substring(1)}
if(c.indexOf(name)===0){return c.substring(name.length,c.length)}}
return ""},del:function(name){document.cookie=name+'=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'}};function transitionEndEventName(){let i,undefined,el=document.createElement('div'),transitions={'transition':'transitionend','OTransition':'otransitionend','MozTransition':'transitionend','WebkitTransition':'webkitTransitionEnd'};for(i in transitions){if(transitions.hasOwnProperty(i)&&el.style[i]!=='undefined'){return transitions[i]}}}
function animationEndEventName(){let i,undefined,el=document.createElement('div'),transitions={'transition':'animationend','OTransition':'oanimationend','MozTransition':'animationend','WebkitTransition':'webkitAnimationEnd'};for(i in transitions){if(transitions.hasOwnProperty(i)&&el.style[i]!=='undefined'){return transitions[i]}}}
function executeFunctionByName(functionName,context){let args=[].slice.call(arguments).splice(2);let namespaces=functionName.split(".");let func=namespaces.pop();for(let i=0;i<namespaces.length;i++){context=context[namespaces[i]]}
return context[func].apply(this,args)}
let regexpsimple={'decimal':'[-+]?[0-9]+(\\.[0-9]+)?','number':'[0-9]','letter':'[A-z]','names':'[A-z\\u00C0-\\u00ff\\ ]','password':'[A-z0-9\\.\\,\\_\\-\\!\\¡\\?\\¿]','urlnames':'[A-z0-9\\.\\_\\-]','simpleTitle':'[A-z\\u00C0-\\u00ff0-9\\-., _¡!¿?]','simpleText':'[A-z\\u00C0-\\u00ff0-9\\.\\,\\¡\\!\\¿\\?\\(\\)\\[\\]\\-\\_\\s\\"\\\'\\%\\&\\$\\#\\\]','urlTitle':'[A-z0-9\\-]','urlSimple':'[A-z0-9/\\&\\_\\.\\\\-\\?]','datetime-local':'[0-2][0-9]{3}\\-[0-1][0-9]\\-[0-3][0-9] [0-5][0-9]\\:[0-5][0-9]\\:[0-5][0-9]','time':'[0-9]{1,2}:[0-9]{1,2}','color':'#[a-fA-F0-9]{6}','email':'[A-z0-9_\\-\\.]+[@][A-z0-9_-]+([.][A-z0-9_-]+)*[.][A-z]{2,4}'};function intVal(value){value=parseInt(value);if(isNaN(value)){value=0}
return value}
function floatVal(value){value=parseFloat(value);if(isNaN(value)){value=0}
return value}
function uniqId(){return(new Date()).getTime()}
let isMobile={Android:function(){return navigator.userAgent.match(/Android/i)},BlackBerry:function(){return navigator.userAgent.match(/BlackBerry/i)},iOS:function(){return navigator.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function(){return navigator.userAgent.match(/Opera Mini/i)},Windows:function(){return navigator.userAgent.match(/IEMobile/i)},any:function(){return(isMobile.Android()||isMobile.BlackBerry()||isMobile.iOS()||isMobile.Opera()||isMobile.Windows())}};function isElementInViewport(el){let rect=el.getBoundingClientRect();return(rect.top>=0&&rect.left>=0&&rect.bottom<=(window.innerHeight)&&rect.right<=(window.innerWidth))}
if(typeof String.prototype.endsWith!=='function'){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1}}
String.prototype.sprintf=function(obj){let useArguments=!1,_arguments=arguments,i=-1;if(typeof _arguments[0]==="string"){useArguments=!0}
if(obj instanceof Array||useArguments){return this.replace(/\%s/g,function(a,b){i++;if(useArguments){if(typeof _arguments[i]==='string'){return _arguments[i]}
else{throw new Error("Arguments element is an invalid type")}}
return obj[i]})}else{return this.replace(/{([^{}]*)}/g,function(a,b){let r=obj[b];return typeof r==='string'||typeof r==='number'?r:a})}};"use strict";se.plugin.simpleTab=function(plugElem,plugOptions){let tabList=plugElem.querySelector('div[role="tablist"]'),panelGroup=plugElem.querySelector('div[se-elem="panelGroup"]'),pDefaults={callback:null},pSettings=se.object.merge(pDefaults,plugOptions);function init(){panelGroup.children.se_attr('role','tabpanel').se_attr('aria-hidden','true');tabList.children.se_attr('role','tab').se_attr('aria-selected','false');panelGroup.firstElementChild.se_attr('aria-hidden','false');tabList.firstElementChild.se_attr('aria-selected','true');tabList.se_on('click','div[role="tab"]',cSelect)}
function cSelect(ev,elem){ev.preventDefault();ev.stopPropagation();selector(elem.se_index())}
function selector(elNum){tabList.querySelectorAll(':scope > div[role="tab"][aria-selected="true"]').se_attr('aria-selected','false');tabList.querySelectorAll(':scope > div[role="tab"]')[elNum].se_attr('aria-selected','true');panelGroup.querySelectorAll(':scope > div[role="tabpanel"][aria-hidden="false"]').se_attr('aria-hidden','true');panelGroup.querySelectorAll(':scope > div[role="tabpanel"]')[elNum].se_attr('aria-hidden','false');if(typeof pSettings.callback==='function'){pSettings.callback.call(this,elNum)}}
init();return{outSelect:selector}};se.plugin.calendarInput=function(cEl){let container,i,hInput,btn,oType=cEl.se_attr('type');function init(){let pSettings={};if(oType==='datetime-local'||oType==='date'||oType==='time'){i=document.createElement("input");i.se_attr("type",oType);if(i.type!==oType){switch(oType){case 'datetime-local':pSettings.time=!0;pSettings.date=!0;break;case 'date':pSettings.time=!1;pSettings.date=!0;break;case 'time':pSettings.time=!0;pSettings.date=!1;break}
container=cEl.se_before('<div class="modInput"></div>');container.se_append(cEl);btn=container.se_append('<button type="button"><svg class="icon inline"><use xlink:href="#fa-calendar" /></svg></button>');btn.se_plugin('calendar',pSettings)}else{cEl.se_attr("type","text");let origVal=cEl.value,nVal,origName=cEl.name;cEl.se_attr('type',oType);if(oType==='datetime-local'){cEl.se_attr('step','1')}
cEl.name=origName+'_input';container=cEl.se_before('<div></div>');container.se_append(cEl);hInput=container.se_append('<input type="hidden">');hInput.name=origName;hInput.value=origVal;if(origVal){nVal=toISO(origVal);cEl.value=nVal}
cEl.se_on('change',toMysql)}}}
function toMysql(){hInput.value=cEl.value.replace("T"," ")}
function toISO(cVal){let b=cVal.split(/[- :]/);return b[0]+'-'+b[1]+'-'+b[2]+'T'+b[3]+':'+b[4]+':'+b[5]}
function setUnix(value){let a=new Date(value*1000);cEl.value=a.toISOString().slice(0,19).replace('T',' ')}
function getUnix(){return parseInt((new Date(cEl.value).getTime()/1000).toFixed(0))}
function getDate(){return new Date(cEl.value)}
init();return{setUnix:setUnix,getUnix:getUnix,getDate:getDate}};se.plugin.calendar=function(cEl,options){let defaults={class:'se_calendar',icon:'fa-calendar-o',time:!0,date:!0},pSettings={},pProperties={calendar:null,timer:null,input:null,sDate:null,tDate:null,showing:!1,exist:!1,valid:!1};function init(){pSettings=se.object.merge(defaults,options);pProperties.input=cEl.se_sibling('input');if(pProperties.input){pProperties.valid=!0;cEl.se_on('click',calendarCheck)}}
function calendarBuild(date){let cCal=pProperties.calendar=document.body.se_append('<div class="'+pSettings.class+'"></div>'),box=cEl.getBoundingClientRect(),xPos=box.x+box.width-200,yPos=box.y+box.height;cCal.se_attr('style','top:'+yPos+'px;left:'+xPos+'px');cCal.se_append('<div class="main_control"><div class="date full"></div><button type="button" class="cBut" data-action="close"><svg class="icon"><use xlink:href="#fa-remove"></use></svg></button></div>');if(pSettings.date){cCal.se_append('<div class="month_nav"><button type="button" class="cBut" data-action="year_less">«</button><button type="button" class="cBut" data-action="month_less">‹</button><button type="button" class="cBut full" data-action="today">Hoy</button><button type="button" class="cBut" data-action="month_more">›</button><button type="button" class="cBut" data-action="year_more">»</button></div>');cCal.se_append('<table class="calendar"><thead><tr><th>D</th><th>L</th><th>M</th><th>M</th><th>J</th><th>V</th><th>S</th></tr></thead><tbody></tbody></table>')}
if(pSettings.time){pProperties.timer=cCal.se_append('<div class="time"></div>');pProperties.timer.se_append('<div><input type="number" name="hours" min="0" max="23" value="'+date.getHours()+'" /> : <input type="number"  min="0" max="59" name="minutes" value="'+date.getMinutes()+'" /> : <input type="number" name="seconds"  min="0" max="59" value="'+date.getSeconds()+'" /></div>')}
cCal.se_append('<div class="last_menu"><button type="button" data-action="accept"><svg class="icon inline"><use xlink:href="#fa-check"></use></svg> Aceptar</button></div>');if(pSettings.date){calendarBuildMonth(date.getFullYear(),date.getMonth());pProperties.showing=!0;pProperties.exist=!0}
cCal.se_on('click','button',butActions);cCal.se_on('click','td',pickDate);if(pSettings.time){cCal.se_on('change','input',updTime)}}
function butActions(e,cEl){e.preventDefault();switch(cEl.se_data('action')){case 'accept':let dTime;if(pSettings.date){if(pSettings.time){dTime=mysqlDate(pProperties.sDate,!0)}else{dTime=mysqlDate(pProperties.sDate,!1)}}else{dTime=getTime().hhmmss}
pProperties.input.se_val(dTime);calendarClose();break;case 'close':calendarClose();break;case 'today':pProperties.tDate=new Date();pProperties.sDate=new Date(pProperties.tDate.getTime());calendarBuildMonth(pProperties.tDate.getFullYear(),pProperties.tDate.getMonth());calendarSelectDate(mysqlDate(pProperties.tDate,!1));if(pSettings.time){pProperties.timer.querySelector('input[name=hours]').se_val(pProperties.tDate.getHours());pProperties.timer.querySelector('input[name=minutes]').se_val(pProperties.tDate.getMinutes());pProperties.timer.querySelector('input[name=seconds]').se_val(pProperties.tDate.getSeconds())}
break;case 'year_less':pProperties.tDate.setFullYear(pProperties.tDate.getFullYear()-1);calendarBuildMonth(pProperties.tDate.getFullYear(),pProperties.tDate.getMonth());break;case 'year_more':pProperties.tDate.setFullYear(pProperties.tDate.getFullYear()+1);calendarBuildMonth(pProperties.tDate.getFullYear(),pProperties.tDate.getMonth());break;case 'month_less':pProperties.tDate.setMonth(pProperties.tDate.getMonth()-1);calendarBuildMonth(pProperties.tDate.getFullYear(),pProperties.tDate.getMonth());break;case 'month_more':pProperties.tDate.setMonth(pProperties.tDate.getMonth()+1);calendarBuildMonth(pProperties.tDate.getFullYear(),pProperties.tDate.getMonth());break}}
function mysqlDate(date,time){let tDate=date.getFullYear()+'-'+('00'+(date.getMonth()+1)).slice(-2)+'-'+('00'+date.getDate()).slice(-2);if(time){tDate+=' '+('00'+date.getHours()).slice(-2)+':'+('00'+date.getMinutes()).slice(-2)+':'+('00'+date.getSeconds()).slice(-2)}
return tDate}
function getTime(){let time={};time.hours=pProperties.timer.querySelector('input[name=hours]').se_val();time.minutes=pProperties.timer.querySelector('input[name=minutes]').se_val();time.seconds=pProperties.timer.querySelector('input[name=seconds]').se_val();time.hhmmss=('00'+time.hours).slice(-2)+':'+('00'+time.minutes).slice(-2)+':'+('00'+time.seconds).slice(-2);return time}
function updTime(){let time={};time.hours=pProperties.timer.querySelector('input[name=hours]').se_val();time.minutes=pProperties.timer.querySelector('input[name=minutes]').se_val();time.seconds=pProperties.timer.querySelector('input[name=seconds]').se_val();pProperties.tDate.setHours(time.hours);pProperties.tDate.setMinutes(time.minutes);pProperties.tDate.setSeconds(time.seconds);pProperties.sDate.setHours(time.hours);pProperties.sDate.setMinutes(time.minutes);pProperties.sDate.setSeconds(time.seconds);console.log("time updated")}
function pickDate(e,cEl){e.preventDefault();let date=cEl.se_data('date').split(/[- :]/),time,tDate;if(pSettings.time){time=getTime()}else{time={hours:0,minutes:0,seconds:0}}
tDate=new Date(date[0],date[1]-1,date[2],time.hours,time.minutes,time.seconds);pProperties.tDate=new Date(tDate.getTime());pProperties.sDate=new Date(tDate.getTime());calendarSelectDate(cEl.se_data('date'))}
function calendarSelectDate(date){let tBody=pProperties.calendar.querySelector('tbody');tBody.querySelectorAll('.selected').se_classDel('selected');tBody.querySelector('[data-date="'+date+'"]').se_classAdd('selected')}
function calendarCheck(){if(!pProperties.showing){if(!pProperties.exist){let t=pProperties.input.se_val().split(/[- :]/);let date=new Date(t[0],t[1]-1,t[2],t[3],t[4],t[5]);if(isNaN(date)){date=new Date()}
pProperties.sDate=new Date(date.getTime());pProperties.tDate=new Date(date.getTime());calendarBuild(date)}else{pProperties.showing=!0;pProperties.calendar.se_css('display','block')}}}
function calendarClose(){pProperties.showing=!1;pProperties.calendar.se_css('display','none')}
function calendarBuildMonth(year,month){let controlDate=new Date(year,month+1,0),currDate=new Date(year,month,1),todayDate=new Date(),todayDateTime,iter=0,ready=!0,tBody=pProperties.calendar.querySelector('tbody'),tr,selectedDate,selectedDateTime,monthNames=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octobre","Noviembre","Diciembre"];todayDate.setHours(0,0,0,0);todayDateTime=todayDate.getTime();if(pProperties.sDate){selectedDate=pProperties.sDate;selectedDate.setHours(0,0,0,0);selectedDateTime=selectedDate.getTime()}
if(currDate.getDay()!==0){iter=0-currDate.getDay()}
tBody.se_empty();while(ready){if(currDate.getDay()===6){if(tr){tBody.appendChild(tr)}
tr=null}
if(!tr){tr=document.createElement('tr')}
currDate=new Date(year,month,++iter);tr.appendChild(newDayCell(currDate,iter<1||+currDate>+controlDate,todayDateTime,selectedDateTime));if(+controlDate<+currDate&&currDate.getDay()===0){ready=!1}}
pProperties.calendar.querySelector('.main_control .date').se_text(monthNames[month]+' '+year)}
function newDayCell(dateObj,isOffset,todayDateTime,selectedDateTime){let td=document.createElement('td'),isoDate=dateObj.toISOString(),dateObjTime=dateObj.getTime(),cClass='day';isoDate=isoDate.slice(0,isoDate.indexOf('T'));cClass+=(dateObjTime<todayDateTime)?' past':'';cClass+=(dateObjTime===todayDateTime)?' today':'';cClass+=(dateObjTime===selectedDateTime)?' selected':'';cClass+=(isOffset)?' adj-month':'';td.className=cClass;td.se_attr('data-date',isoDate);td.se_text(dateObj.getDate());return td}
init();return{}};se.plugin.pseudoDialog=function(plugEl,options){let defaults={backgroundHide:!0},settings=se.object.merge(defaults,options),cWindow;function init(){plugEl.se_classAdd('se_dialog');plugEl.se_css('display','none');cWindow=document.createElement('div');cWindow.se_classAdd('se_dialog_win');while(plugEl.childNodes.length>0){cWindow.appendChild(plugEl.childNodes[0])}
plugEl.appendChild(cWindow)}
function show(){plugEl.se_css('display','flex');plugEl.addEventListener('click',hideEvent)}
function hide(){plugEl.se_css('display','none');plugEl.removeEventListener('click',hideEvent)}
function hideEvent(e){let clickedElem=e.target;if(!clickedElem.se_hasParent(cWindow)){hide()}}
init();return{show:show,hide:hide}};se.plugin.menuToggle=function(element,options){let pDefaults={callback:null},pSettings=se.object.merge(pDefaults,options),btn=element.querySelector('.se_menu_button'),menu=element.querySelector('.se_menu_hidden');btn.addEventListener('click',show);function show(e){e.stopPropagation();menu.se_css('display','block');document.addEventListener('click',hide);if(typeof plugin.settings.callback==='function'){plugin.settings.callback.call(this)}}
function hide(e){e.preventDefault();let clickedElem=e.target;if(!clickedElem.se_hasParent(element)){document.removeEventListener('click',hide);menu.se_css('display','none')}}
return{}};se.plugin.slideToggle=function(element,options){let defaults={callback:null},settings=se.object.merge(defaults,options),btn=element.querySelector('[se-elem="btn"]'),menu=element.querySelector('[se-elem="menu"]'),menuChild=menu.children[0];menu.style.transition='height 0.5s';menu.style.overflow='hidden';menu.style.height=0;menuChild.style.transition='margin-top 0.5s';btn.addEventListener('click',menuClick);function menuClick(e,elem){e.preventDefault();if(menu.clientHeight){menu.style.height=0;menuChild.style.marginTop=-menuChild.clientHeight+'px'}else{menuChild.style.marginTop=0;menu.style.height=menuChild.clientHeight+'px'}}
return{}};se.plugin.formLogIn=function(element,options){element.se_plugin('simpleForm',{save_url:'/system/user_async/logIn/email',onSuccess:function(msg){se.user.logIn(msg,element);document.body.se_data('userlogin',1)}})};se.plugin.simpleForm=function(plugElem,options){let defaults={load_url:null,load_data:null,save_url:null,save_data:null,serialized:!1,reset:!1,onRequest:null,onComplete:null,onSuccess:null,onFail:null},settings=se.object.merge(defaults,options),butSubmit=plugElem.querySelector('[type="submit"]'),actName=(butSubmit&&butSubmit.tagName.toLowerCase()==='button')?butSubmit.se_html():'',response=plugElem.querySelector('[se-elem="response"]');function init(){if(settings.load_url!==null){se.ajax.json(settings.load_url,settings.load_data,{response:response,onSuccess:function(msg){response.se_empty();se.form.loadData(plugElem,msg.d)}})}else{se.element.fixValues(plugElem)}
plugElem.se_on('change',['input','textarea','select'],formUpdate);plugElem.se_on('submit',formSubmit)}
function updateButton(exData,iconMod){if(actName!==''){iconMod=(typeof iconMod==='string')?iconMod:'';butSubmit.se_html('<svg class="icon inline mr '+iconMod+'"><use xlink:href="#'+exData+'" /></svg>'+actName)}}
function formUpdate(e){if(response){response.se_empty()}
if(plugElem.checkValidity()){updateButton('fa-circle-o','pulsate')}else{updateButton('fa-warning')}}
function formSuccess(){updateButton('fa-check');if(settings.reset){plugElem.reset()}
if(typeof settings.onSuccess==='function'){settings.onSuccess.apply(this,arguments)}}
function formFail(){updateButton('fa-remove');if(typeof settings.onFail==='function'){settings.onFail.apply(this,arguments)}}
function formComplete(){if(butSubmit){butSubmit.disabled=!1}
if(typeof settings.onComplete==='function'){settings.onComplete.apply(this,arguments)}}
function formOnRequest(){if(butSubmit){butSubmit.disabled=!0}
updateButton('fa-spinner','spin');if(typeof settings.onRequest==='function'){settings.onRequest.apply(this,arguments)}}
function formSubmit(e){e.preventDefault();e.stopPropagation();let url=(plugElem.action!==''&&settings.save_url===null)?plugElem.action:settings.save_url,post;if(settings.serialized){post=new FormData();post.append('data',JSON.stringify(se.form.serializeToObj(plugElem)))}else{post=new FormData(plugElem)}
if(settings.save_data!==null){for(let name in settings.save_data){if(settings.save_data.hasOwnProperty(name)){post.append(name,settings.save_data[name])}}}
if(url){se.ajax.json(url,post,{response:response,onRequest:formOnRequest,onComplete:formComplete,onSuccess:formSuccess,onFail:formFail})}else{console.log("SimpleForm ERROR: No save_url")}}
init();return{}};se.plugin.ajaxSearch=function(pElement,options){let defaults={jsonUrl:null,act_defaults:null,lim:null,cSort:'',eIni:0,eEnd:0,eCur:0,eLim:20,eTot:0,pCur:0,pTot:0,scrollCount:3,reload:!1,isNew:!1,scroll_load:!0,loadFirst:!1,as_table:!1,forms_grid:!0,urlFilter:!0,f_id:'',f_type:'static',container:null,actions:null,preProcessFunc:null},pSettings=se.object.merge(defaults,options),pStatus={'loading':!1,'scrollCount':0,'empty':!1,'isNew':!1,'asTable':!1,'fragmet':'div'},content=pElement.querySelector('[se-ajaxelem="content"]'),response=pElement.querySelector('[se-ajaxelem="response"]'),templateBody=pElement.querySelector('[se-ajaxelem="template"]').se_html(),navBar=pElement.querySelector('[se-ajaxelem="navBar"]'),actBar,filter,sortContent,cSel,loadMoreBtn;function init(){pElement.se_classAdd("se_ajaxSimple");if(pSettings.actions!==null){let btns='',forms='',action,cAct;for(action in pSettings.actions){if(pSettings.actions.hasOwnProperty(action)){cAct=pSettings.actions[action];if('menu' in cAct){btns+=createBtn(cAct.menu.title,action,cAct.menu.icon)}
if(cAct.action==='form'&&'print' in cAct&&cAct.print){switch(cAct['ajax-action']){case 'add':cAct.form.data=[{'name':'se-ajaxact','value':'add'}];break;case 'addMany':cAct.form.data=[{'name':'se-ajaxact','value':'addMany'}];break;case 'upd':cAct.form.data=[{'name':'se-ajaxact','value':'upd'}];break;default:console.log("ajax-action:"+cAct['ajax-action']);break}
forms+='<div>';if('title' in cAct.form){forms+='<h3>'+cAct.form.title+'</h3>'}
forms+=se.form.createFromObj(cAct.form);forms+='</div>'}}}
if(btns!==''){pElement.se_prepend('<div se-ajaxelem="actBar" class="menu"><div>'+btns+'</div></div>');actBar=pElement.querySelector('[se-ajaxelem="actBar"]');actBar.se_on('click','[se-ajaxbtn]',function(e,elem){btnSolver(e,elem,'menu')})}
if(forms!==''){let formClass=(pSettings.forms_grid)?'grid':'gODB gOMB';pElement.se_prepend('<div se-ajaxelem="forms" class="'+formClass+'">'+forms+'</div>');se.main.pluginLoad(pElement)}}
if(navBar){pStatus.asTable=!0;navBar.se_on('click','[se-ajaxnav]',navBarOps);navBar.se_on('change','input',navBarOps)}else{pElement.se_append('<div se-ajaxelem="loadMore" class="btn_loadMore">Mostrar más</div>');loadMoreBtn=pElement.querySelector('div[se-ajaxelem="loadMore"]');loadMoreBtn.se_hide();if(pSettings.eTot>=pSettings.eLim){loadMoreBtn.se_show();loadMoreBtn.addEventListener('click',function(e){pStatus.scrollCount=0;loadMore(!1)});if(pSettings.scroll_load){se.windowEvent(pElement,'scroll',scrollLoad)}}}
filter=(pSettings.f_id!=='')?$('#'+pSettings.f_id):null;if(filter){filter.se_on('click','input[type=checkbox]',cbFilter);filter.se_on('change',['input:not([type=checkbox])','select'],filterInput);switch(pSettings.f_type){case 'fluid':filter.querySelector('.current').se_on('click','li',filterFluidDel);filter.querySelector('.available').se_on('click','li',filterFluidAdd);break;case 'static':filter.se_on('click','button',filterStatic);break;default:console.log("filter not valid",pSettings.filterMode);break}}else{console.log("filtro no definido",filter)}
sortContent=pElement.querySelector('[se-elem="sort"]');if(sortContent){sortContent.se_on('click','.sortable[data-name]',sortManager)}
se.element.fixValues(content);switch(content.tagName.toLowerCase()){case 'table':case 'tbody':pStatus.fragmet='tbody';break;default:pStatus.fragmet='div';break}
content.se_on('click','[se-ajaxbtn]',function(e,elem){btnSolver(e,elem,'obj')});content.se_on('change',['input','select'],rowChange);pElement.se_on('submit','form',formSubmit);if(pSettings.loadFirst){loadMore(!0)}}
function navBarOps(event,pElement){event.preventDefault();let reload=!1;switch(pElement.se_attr('se-ajaxnav')){case 'reload':reload=!0;break;case 'first':if(pSettings.pCur!==0){pSettings.pCur=0;reload=!0}
break;case 'prev':if(pSettings.pCur>0){pSettings.pCur--;reload=!0}
break;case 'next':if(pSettings.pCur<pSettings.pTot-1){pSettings.pCur++;reload=!0}
break;case 'last':if(pSettings.pCur<pSettings.pTot-1){pSettings.pCur=pSettings.pTot-1;reload=!0}
break;case 'cpage':let posiblePage=intVal(pElement.value)-1;if(posiblePage!==pSettings.pCur&&posiblePage>=0&&posiblePage<pSettings.pTot){pSettings.pCur=posiblePage;reload=!0}
break;default:console.log('FAIL - Act:',pElement,pElement.se_attr('se-ajaxnavs'));break}
if(reload){loadMore(!1)}}
function rowChange(e,cObj){let cElem=cObj.se_closest('[se-ajaxelem="obj"]');cElem.se_classAdd('mod')}
function formSubmit(event,cElem){event.preventDefault();event.stopPropagation();console.log(event);let action=cElem.se_attr('se-ajaxact'),shortElem=pSettings.actions[action],url=(cElem.se_attr('action')!=='')?cElem.se_attr('action'):null,post=new FormData(cElem),cResponse=cElem.querySelector('[se-elem="response"]'),defaults=null,onSuccess=null,onFail=null,solver=null;if(typeof shortElem==='undefined'){return}
switch(shortElem.action){case 'form':if('form' in shortElem){solver=shortElem.form}else{console.log('Formulario no definido.')}
break;case 'direct':solver=shortElem;break;default:console.log("JSON MAL DEFINIDO, no action");break}
url=(url===null&&'save_url' in solver)?solver.save_url:url;defaults=(defaults===null&&'save_data' in solver)?solver.save_data:null;if(defaults!==null){for(let i=0,len=defaults.length;i<len;i++){post.append(defaults[i].name,defaults[i].value)}}
post.se_jsonAppend(pSettings.act_defaults);switch(shortElem['ajax-action']){case 'add':onSuccess=function(msg){addElement(msg.d)};break;case 'addMany':console.log("add many form");onSuccess=function(msg){addMultiple(msg.d)};break;case 'upd':post.append('id',cElem.se_data('objid'));onSuccess=function(msg){updateElement(cElem,msg.d)};onFail=function(msg){alert(msg.s.e)};break;case 'none':post.append('id',cElem.se_data('objid'));shortElem.reset=!1;onSuccess=function(msg){cElem.se_classDel('mod')};onFail=function(msg){alert(msg.s.e)};break;case 'custom':if(typeof solver.onSuccess==='function'){onSuccess=function(msg){solver.onSuccess(cElem,msg.d)}}
if(typeof solver.onFail==='function'){onFail=function(msg){solver.onFail(cElem,msg)}}
break;default:break}
if(!('reset' in shortElem&&!shortElem.reset)){cElem.reset();cElem.elements[0].focus()}
if(url!==null&&typeof url!=='undefined'){se.ajax.json(url,post,{response:cResponse,onSuccess:onSuccess,onFail:onFail})}else{console.log('ajaxSearch - No query.',url,solver)}}
function createBtn(name,action,icon){let btnTxt='<button class="btn" title="'+name+'" se-ajaxbtn="'+action+'">';btnTxt+=(typeof icon!=='undefined'&&icon!=='')?'<svg class="icon inline mr"><use xlink:href="#'+icon+'"></use></svg>':'';btnTxt+=name+'</button>';return btnTxt}
function btnSolver(event,object,origin){let action=object.se_attr('se-ajaxbtn'),shortElem=pSettings.actions[action],cElem,objId;if(typeof shortElem!=='undefined'){if(shortElem['ajax-elem']!=='obj'||(shortElem['ajax-elem']==='obj'&&origin==='obj')){switch(shortElem.action){case 'form':let cForm=shortElem.form,formLoadUrl=('load_url' in cForm)?cForm.load_url:null,formLoadData=('load_data' in cForm)?cForm.load_data:null,formSaveUrl=('save_url' in cForm)?cForm.save_url:null,formSaveData=('save_data' in cForm)?cForm.save_data:null,actName=('actName' in cForm)?cForm.actName:null,onSuccess=null;if(shortElem['ajax-elem']&&origin==='obj'&&shortElem['ajax-action']==='edit'){cElem=object.se_closest('[se-ajaxelem="obj"]');objId=cElem.se_data('objid');formLoadData=se.object.merge(pSettings.act_defaults,{'id':objId},formLoadData);formSaveData=se.object.merge(pSettings.act_defaults,{'id':objId},formSaveData);let skipElemUpdate=('ajax-update' in shortElem&&!shortElem['ajax-update']);if(!skipElemUpdate){onSuccess=function(msg){updateElement(cElem,msg.d)}}}else if(shortElem['ajax-action']==='add'){formSaveData=se.object.merge(pSettings.act_defaults,formSaveData);console.log("ADD FORM",formSaveData);onSuccess=function(msg){addElement(msg.d,!0)}}else if(shortElem['ajax-action']==='addMany'){console.log("button form add");formSaveData=se.object.merge(pSettings.act_defaults,formSaveData);onSuccess=function(msg){addMultiple(msg.d,!0)}}else if(shortElem['ajax-action']==='function'){onSuccess=cForm.onSuccess}
se.addon.windowForm({title:cForm.title,load_url:formLoadUrl,load_data:formLoadData,save_url:formSaveUrl,save_data:formSaveData,elems:cForm.elems,actName:actName,onSuccess:onSuccess});break;case 'del':cElem=object.se_closest('[se-ajaxelem="obj"]');objId=cElem.se_data('objid');if(confirm('¿Desea borrar el pElemento "'+cElem.se_data('objtitle')+'" de la base de datos?')){se.ajax.json(shortElem.del_url,se.object.merge(pSettings.act_defaults,{'id':objId}),{onSuccess:function(){cElem.se_remove()}})}else{console.log('fail')}
break;case 'saveAll':let selects=content.querySelectorAll('form.mod');if(selects.length!==0){let cData={},sendData={};selects.se_each(function(i,cEl){cData[cEl.se_data('objid')]=se.form.serializeToObj(cEl)});sendData.data=JSON.stringify(cData);let cSummary=pElement.querySelector('form[se-ajaxelem="summaryForm"]');if(cSummary){sendData.summary=JSON.stringify(se.form.serializeToObj(cSummary))}
se.ajax.json(shortElem.save_url,se.object.merge(pSettings.act_defaults,sendData),{onSuccess:function(){selects.se_classDel('mod')},onFail:function(msg){alert(msg.s.e)}})}else{console.log("Sin cambios")}
break;case 'function':let selected;if(typeof shortElem.function==='function'){switch(shortElem['ajax-elem']){case 'obj':cElem=object.se_closest('[se-ajaxelem="obj"]');shortElem.function(cElem,object,pSettings.act_defaults,cElem.se_data('objid'),cElem.se_data('objtitle'));break;case 'all':break;case 'sel':selected=content.querySelectorAll('input:checked');if(selected.length!==0){let targets=[];selected.se_each(function(id,cEl){targets.push(cEl.se_closest('[se-ajaxelem="obj"]'))});shortElem.function(targets,pSettings.act_defaults)}else{console.log("No se detectan pElementos seleccionados.")}
break;case 'mod':selected=content.querySelectorAll('input:checked');if(selected.length!==0){shortElem.function(selected,pSettings.act_defaults)}else{console.log("No se detectan pElementos modificados.")}
break;case 'none':shortElem.function(content,pSettings.act_defaults);break;default:console.log('shortElem.ajax-elem no definido',shortElem['ajax-elem']);break}}else{console.log("Operación no válida.")}
break;default:console.log('Función no definida',shortElem.action,object);break}}else{content.addEventListener('click',modeUpdate)}}else{console.log('Objeto no definido',object,action,pSettings.actions)}}
function modeUpdate(event,cObj){event.preventDefault();event.stopPropagation();let cElem=cObj.se_closest('[se-ajaxelem="obj"]');if(cElem){cSel=cElem;content.removeEventListener('click',modeUpdate);cElem.se_css('background-color','#DEDEDE');let cForm=pSettings.formData.edit;editForm(cElem,cForm)}
return !1}
function modeDelete(event){event.preventDefault();event.stopPropagation();let cObj=$(event.target),cElement=cObj.se_closest('[se-ajaxelem="obj"]');if(cElement){cSel=cElement;content.removeEventListener('click',modeDelete);deleteObject(cElement)}}
function editForm(cElement,cForm){let objId=cElement.se_data('objid');se.addon.floatWin({'defHead':cForm.title,'defBody':se.form.createFromObj(cForm),'defJS':'','defMT':'','backClose':!0,'onLoad':function(){let window=$('#se_dialog'),form=window.querySelector('form'),response=form.querySelector('[data-elemtype="response"]');if(cForm.load!==''){se.ajax.json(cForm.load,{'objId':objId},{'response':response,onCall:function(){se.struct.notifSimple(response,'notification','<span><svg class="icon inline spin"><use xlink:href="#fa-spinner"></use></svg></span>')},onSuccess:function(msg){se.form.loadData(form,msg.d)}})}
let params={'response':response};params.onSuccess=('onSuccess' in cForm)?cForm.onSuccess:function(msgs){cElement.se_replaceWith(createElement(msgs.d))};form.se_plugin('simpleForm',se.plugin.simpleForm,params);console.log(form.pElements[0]);form.pElements[0].focus();se.main.pluginLoad(window)}})}
function filterFluidAdd(e,cObj){let container=cObj.parentElement,filterGroup=container.parentElement,cValId=cObj.se_attr('data-cfId'),cValIdNm=cObj.se_html(),cValGet=filterGroup.se_attr('data-cfGet'),cValTit=filterGroup.se_attr('data-cfTitle'),html='<li data-cfId="'+cValId+'" data-cfIdNm="'+cValIdNm+'" data-cfGet="'+cValGet+'" data-cfTitle="'+cValTit+'">'+cValTit+': '+cValIdNm+'</li>';filter.querySelector('.current').se_append(html);pSettings.lim[cValGet]=cValId;loadMore(!0);filterGroup.se_hide()}
function filterFluidDel(e,cEl){let cValGet=cEl.se_attr('data-cfGet');filter.querySelector('.available [data-cfGet="'+cValGet+'"]').se_show();delete pSettings.lim[cValGet];loadMore(!0);cEl.se_remove()}
function filterStatic(e,cObj){e.preventDefault();let type=cObj.se_data('type'),name=cObj.se_data('name'),val=cObj.se_data('value'),cCont=cObj.se_closest('div');cCont.querySelectorAll('.sel').se_classDel('sel');cObj.se_classAdd('sel');if(val!==''){pSettings.lim[name]=val}else{delete pSettings.lim[name]}
if(type==='filter'){loadMore(!0)}else if(type==='sort'){loadMore(!1)}else{console.log('Tipo de filtro no definido')}}
function cbFilter(e,el){if(!el.se_data('checked')){if(el.checked){el.se_data('checked',0)}else{el.se_data('checked',2)}}
let name=el.se_attr('name');switch(el.se_data('checked')){case '0':el.se_data('checked',1);el.indeterminate=!0;pSettings.lim[name]=0;break;case '1':el.se_data('checked',2);el.indeterminate=!1;el.checked=!0;pSettings.lim[name]=1;break;default:el.se_data('checked',0);el.indeterminate=!1;el.checked=!1;delete pSettings.lim[name];break}
loadMore(!0)}
function filterInput(e,cObj){console.log("ajaxSimple: ",cObj);let name=cObj.se_attr('name'),val=cObj.value;if(val!==''){pSettings.lim[name]=val}else{delete pSettings.lim[name]}
loadMore(!0)}
function sortManager(e,cEl){e.preventDefault();let name=cEl.se_data('name'),sort=cEl.se_data('sort'),nSort='';if(sort===''){nSort='asc'}else if(sort==='asc'){nSort='desc'}else{nSort=''}
let curSel=sortContent.querySelectorAll('[data-sort]').se_data('sort','');cEl.se_data('sort',nSort);if(nSort===''){pSettings.cSort=''}else{pSettings.cSort=name+','+nSort}
loadMore(!1)}
function scrollLoad(ev){let rect=loadMoreBtn.se_offset(),wintop=window.scrollY,winheight=window.outerHeight,loadMorePos=rect.y;if(((winheight+wintop)>loadMorePos)&&!pStatus.empty&&!pStatus.loading&&pStatus.scrollCount<pSettings.scrollCount){pStatus.scrollCount++;loadMore(!1)}}
function loadMore(vClear){let fCount=0;if(response){se.struct.notifSimple(response,'notification','<span>Cargando...  <svg class="icon inline spin"><use xlink:href="#fa-spinner"></use></svg></span>')}
if(pStatus.asTable){content.se_html(pSettings.container.sprintf('<svg class="icon inline spin"><use xlink:href="#fa-spinner fa-spin"></use></svg>'));if(vClear){pSettings.pCur=0}}else{if(vClear){content.se_html(pSettings.container.sprintf('<svg class="icon inline spin"><use xlink:href="#fa-spinner fa-spin"></use></svg>'));pSettings.pCur=0;fCount=1;pStatus.empty=!1;pSettings.isNew=!0;if(pStatus.asTable){}}else{pSettings.pCur++}}
pStatus.loading=!0;let postData=se.object.merge(pSettings.act_defaults,pSettings.lim,{'sort':pSettings.cSort},{pCur:pSettings.pCur,fCount:fCount,isNew:pSettings.isNew});se.ajax.json(pSettings.jsonUrl,postData,{onComplete:function(){response.se_html('');pStatus.loading=!1;pSettings.isNew=!1},onSuccess:function(msgs){if(pStatus.asTable||vClear){content.se_empty();pSettings.eCur=0}
if(msgs.p.eCur!==0){addMultiple(msgs.d);if(navBar){navBar.querySelector('span[data-count="eIni"]').se_text(msgs.p.eIni);navBar.querySelector('span[data-count="eEnd"]').se_text(msgs.p.eEnd);navBar.querySelector('input[data-count="pCur"]').value=pSettings.pCur+1;if(msgs.p.isNew!==0){navBar.querySelector('span[data-count="eTot"]').se_text(msgs.p.eTot);navBar.querySelector('span[data-count="pTot"]').se_text(msgs.p.pTot);pSettings.pTot=msgs.p.pTot}}
if(loadMoreBtn){if(msgs.p.eCur<msgs.p.eLim){loadMoreBtn.se_hide();pStatus.empty=!0}else{loadMoreBtn.se_show();pStatus.empty=!1}}}else{pStatus.empty=!0;if(pSettings.eCur===0){content.se_html(pSettings.container.sprintf('No hay resultados'))}
if(loadMoreBtn){loadMoreBtn.se_hide()}}}})}
function createElement(data){if(typeof pSettings.preProcessFunc==='function'){data=pSettings.preProcessFunc(data)}
return se.struct.stringPopulate(templateBody,data)}
function addMultiple(msg,dirTop){let tCont=document.createElement(pStatus.fragmet),direction=(dirTop)?'afterbegin':'beforeend';for(let i=0,len=msg.length;i<len;i++){pSettings.eCur++;tCont.insertAdjacentHTML(direction,createElement(msg[i]))}
se.element.fixValues(tCont);while(tCont.childNodes.length>0){if(dirTop){content.insertBefore(tCont.childNodes[0],content.children[0])}else{content.appendChild(tCont.childNodes[0])}}}
function addElement(msg,dirTop){let direction=(dirTop)?'afterbegin':'beforeend',cEl;if(pSettings.eCur===0){content.se_empty()}
content.insertAdjacentHTML(direction,createElement(msg));pSettings.eCur++;cEl=(dirTop)?content.firstElementChild:content.lastElementChild;se.element.fixValues(cEl)}
function updateElement(cEl,msg){let nEl=cEl.se_replaceWith(createElement(msg));se.element.fixValues(nEl);return nEl}
function elementExists(id){let oEl=content.querySelector('[data-objid="'+id+'"]');return oEl}
function updElement(msg){let cData=[],cElemsL=pSettings.elems.length;for(let y=0;y<cElemsL;y++){cData.push(msg.d[pSettings.elems[y]])}
let oEl=content.querySelector('[data-objid="'+msg.d.id+'"]');if(oEl){let nEl=cSel.se_replaceWith(se.struct.stringPopulate(pSettings.struct,cData));se.element.fixValues(nEL)}else{console.log("UPDELEMENT FAIL, not exists",msg.d.id)}}
function removeElement(msgs){cSel.se_remove()}
function reload(){loadMore(!0)}
init();return{addMultiple:addMultiple,addElement:addElement,updElement:updElement,elementExists:elementExists,elementUpd:updateElement,removeElement:removeElement,reload:reload}};se.plugin.slider=function(element,options){let defaults={animation:'fade',duration:'100',wait:4000},plugin=this,container=element.querySelector('.container'),menu=element.querySelector('.menu'),timer,transEvent=transitionEndEventName();plugin.settings={};plugin.status={slides:0,sCurrent:0,sNext:0,nextStop:!1,pause:!1};function init(){plugin.settings=se.object.merge(defaults,options);container.children.se_each(function(index,cElem){if(index!==0){cElem.style.opacity=0;cElem.style.zIndex=0}
plugin.status.slides++});container.children[0].style.zIndex=1;plugin.status.sCurrent=0;plugin.status.sNext=1;if(plugin.status.slides>1){timer=setInterval(nextSlide,plugin.settings.wait);container.se_on({'mouseenter':function(){clearInterval(timer)},'mouseleave':function(){timer=setInterval(nextSlide,plugin.settings.wait)}})}}
function nextSlide(event){let cElem=container.children[plugin.status.sCurrent],cNext=container.children[plugin.status.sNext];cElem.style.opacity=0;cElem.style.zIndex=0;cNext.style.opacity=1;cNext.style.zIndex=1;plugin.status.sCurrent=plugin.status.sNext;plugin.status.sNext++;if(plugin.status.sNext>=plugin.status.slides){plugin.status.sNext=0}}
init();return null};se.plugin.shareAddon=function(element,options){let defaults={socnets:'facebook,twitter,google,whatsapp,email,linkedin,reddit,pinterest'},plugin=this;plugin.settings={};let init=function(){plugin.settings=se.object.merge(defaults,options);let isMobileDevice=isMobile.any(),targets=plugin.settings.socnets.split(","),head=document.head,getData=[{name:'title',query:'meta[property="og:title"]',attribute:'content'},{name:'desc',query:'meta[property="og:description"]',attribute:'content'},{name:'url',query:'meta[property="og:url"]',attribute:'content'},{name:'siteName',query:'meta[property="og:site_name"]',attribute:'content'},{name:'image',query:'meta[property="og:image"]',attribute:'content'},{name:'twName',query:'meta[name="twitter:site:name"]',attribute:'content'},],results={},tempQry,tempVal,btns='',i,cTarget,icon,obj,url,width,height,isMain,valid,direct;for(i=0,obj;obj=getData[i];i++){tempVal='';if((tempQry=head.querySelector(obj.query))){tempVal=encodeURIComponent(tempQry.se_attr(obj.attribute))}
results[obj.name]=tempVal}
for(i=0;cTarget=targets[i];i++){url='';width=500;height=375;valid=!0;direct=!1;isMain=!1;icon=cTarget;switch(cTarget){case 'facebook':url='https://www.facebook.com/sharer/sharer.php?u='+results.url;isMain=!0;icon=cTarget+'-f';break;case 'google':url='https://plus.google.com/share?url='+results.url;width=600;height=600;isMain=!0;icon=cTarget+'-plus';break;case 'twitter':url='https://twitter.com/intent/tweet/?text='+results.title+'&url='+results.url+'&via='+results.twName;isMain=!0;break;case 'linkedin':url='https://www.linkedin.com/shareArticle?mini=true&url='+results.url+'&title='+results.title+'&source='+results.siteName+'&summary='+results.desc;width=520;height=570;break;case 'pinterest':url='https://www.pinterest.com/pin/create/button/?url='+results.url+'&media='+results.image+'&description='+results.desc;break;case 'reddit':url='http://www.reddit.com/submit/?url='+results.url;icon=cTarget+'-alien';break;case 'whatsapp':if(isMobileDevice){url='whatsapp://send?text='+results.title+' '+results.url;direct=!0;isMain=!0}else{valid=!1}
break;case 'email':icon=cTarget='envelope';url='mailto:?subject='+results.title+' '+results.siteName+'&body='+results.desc+'%0A'+results.url;direct=!0;break;default:console.log("Socnet no definido",cTarget);valid=!1;break}
if(valid){btns+='<a class="snb_'+cTarget;btns+=(isMain)?' main"':'"';btns+=(direct)?' ':'target="_blank" data-width="'+width+'" data-height="'+height+'" ';btns+='href="'+url+'"><svg class="icon"><use xlink:href="#fa-'+icon+'"></use></svg></a>'}}
element.se_classAdd('socialshare');element.innerHTML=btns;element.se_on('click','[target="_blank"]',openWindow)},openWindow=function(event,cElem){event.preventDefault();event.stopPropagation();let width=parseInt(cElem.se_data('width')),height=parseInt(cElem.se_data('height')),left=(screen.width/2)-(width/2),top=(screen.height/2)-(height/2);window.open(cElem.href,"","menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width="+width+",height="+height+",top="+top+",left="+left)};init()};se.plugin.simpleContainer=function(element,options){let defaults={},plugin=this,templateBody=element.querySelector('template').se_html(),content=element.querySelector('[se-elem="content"]');plugin.settings={};plugin.properties={};function init(){switch(content.tagName.toLowerCase()){case 'table':case 'tbody':plugin.properties.fragmet='tbody';break;default:plugin.properties.fragmet='div';break}}
plugin.addMultiple=function(msg){let tCont=document.createElement(plugin.properties.fragmet);for(let i=0,len=msg.length;i<len;i++){plugin.settings.eCur++;tCont.se_append(se.struct.stringPopulate(templateBody,msg[i]))}
se.element.fixValues(tCont);while(tCont.childNodes.length>0){content.appendChild(tCont.childNodes[0])}};plugin.addElement=function(msg){let cEl=content.se_append(se.struct.stringPopulate(templateBody,msg))};plugin.delElement=function(id){let el=content.querySelector('[se-id='+id+']');if(el){el.se_remove()}else{console.log("No existe el elemento")}};plugin.clear=function(id){content.se_empty()};init()};se.plugin.formOptUpdater=function(element,options){let defaults={url:null,callback:null},plugin=this;plugin.settings={};plugin.properties={};function init(){plugin.settings=se.object.merge(defaults,options);plugin.properties.cForm=element.se_closest('form');element.se_on('change',plugin.update)}
plugin.update=function(ev){let cEl=ev.target,cVal=cEl.se_val();se.ajax.json(plugin.settings.url,{'cVal':cVal},{onSuccess:function(msg){se.object.each(msg.d,function(cFormName,fElemData){let cElem=plugin.properties.cForm.se_formEl(cFormName);cElem.se_empty();se.object.each(fElemData,function(id,value){cElem.add(new Option(value.title,id))})})}})};init()};se.plugin.se_gallery=function(plugEl,plugOptions){let plugDefaults={zoomType:'inner',cursor:'crosshair',position:'right',width:300,smallWidth:160},plugSettings=se.object.merge(plugDefaults,plugOptions),imageCurrent=plugEl.querySelector('[se-elem="cur"]'),imageMenu=plugEl.querySelector('[se-elem="menu"]');plugSettings.width=plugEl.se_data('imagewidth');function init(){imageMenu=plugEl.se_append('<div se-elem="menu"></div>');plugEl.querySelectorAll('img').se_each(function(index,cEl){imageMenu.se_append('<div></div>').se_append(cEl)});let fileLoc='/server/image/img/w_'+plugSettings.width+'/'+imageMenu.firstChild.firstChild.se_data('fname');imageCurrent=plugEl.se_prepend('<img se-elem="cur" src="'+fileLoc+'" />');plugEl.se_data('ready','1');imageMenu.se_on('click','img',selectImage)}
function selectImage(e,el){e.preventDefault();imageCurrent.src='/server/image/img/w_'+plugSettings.width+'/'+el.se_data('fname')}
init();return{}};se.plugin.autoSize=function(plugElem,options){let defaults={counter:!0},settings=se.object.merge(defaults,options),properties={minHeight:0,charMax:0},cEls={container:null,counter:null};function init(){let cs=plugElem.getBoundingClientRect();properties.minHeight=cs.height;plugElem.se_on('input change',resize);properties.charMax=intVal(plugElem.se_attr('maxlength'));if(settings.counter&&properties.charMax){let curRem=plugElem.se_val().length;cEls.container=plugElem.se_after('<div class="textAreaCounter"><span> / '+properties.charMax+'</span></div>');cEls.counter=cEls.container.se_prepend('<span>'+curRem+'</span>');plugElem.se_on('keyup',reCount)}}
function resize(){let cs=getComputedStyle(plugElem),offset,tSize;plugElem.style.height="0";if(cs.boxSizing==="border-box"){offset=plugElem.offsetHeight}
else if(cs.boxSizing==="content-box"){offset=-plugElem.clientHeight}
tSize=plugElem.scrollHeight+offset;tSize=(tSize>properties.minHeight)?tSize:properties.minHeight;plugElem.style.height=tSize+"px"}
function reCount(){let cRem=plugElem.se_val().length;cEls.counter.se_text(cRem)}
init()};se.plugin.charCounter=function(plugElem,options){let maxSize=intVal(plugElem.se_attr('maxlength'));function init(){plugElem.se_on('input change',updateCounter)}
function updateCounter(ev){}
if(maxSize){init()}};se.plugin.simpleTable=function(plugElem,plugOptions){let tHead=plugElem.querySelector('thead'),tBody=plugElem.querySelector('tbody'),pDefaults={callback:null},pSettings=se.object.merge(pDefaults,plugOptions);function init(){tHead.se_on('click','.sortable',sortColumn)}
function sortColumn(e,cEl){e.preventDefault();let rows,i,x,y,xVal,yVal,shouldSwitch,switching=!0,cIndex=cEl.se_index(),cOrder=cEl.se_data('sort'),nOrder=(cOrder==='desc')?'asc':'desc',oType=(cEl.se_data('sorttype')==='number')?'number':'string';tHead.querySelectorAll('.sortable').se_data('sort','');cEl.se_data('sort',nOrder);while(switching){switching=!1;rows=tBody.getElementsByTagName("TR");for(i=0;i<(rows.length-1);i++){shouldSwitch=!1;x=rows[i].getElementsByTagName("TD")[cIndex];y=rows[i+1].getElementsByTagName("TD")[cIndex];xVal=(oType==='string')?x.innerHTML.toLowerCase():parseInt(x.innerHTML);yVal=(oType==='string')?y.innerHTML.toLowerCase():parseInt(y.innerHTML);if((nOrder==='asc'&&xVal>yVal)||(nOrder==='desc'&&xVal<yVal)){shouldSwitch=!0;break}}
if(shouldSwitch){rows[i].parentNode.insertBefore(rows[i+1],rows[i]);switching=!0}}}
init();return{}};se.addon.floatWin=function(options){let defaults={width:null,height:null,id:'se_dialog',fullScreen:!1,hasHeader:!0,hasClose:!0,isDraggable:!1,isResizeable:!1,backBlock:!0,backClose:!0,customClass:'',iniUrl:'',post:'{}',defHead:'Head',defBody:'Body',defJS:'',defMT:'',onLoad:null,onClose:null},settings=se.object.merge(defaults,options),cDialog,cWindow,cHead,cBody;function init(){if($('#'+settings.id)){return !1}
cDialog=document.body.se_prepend('<div id="'+settings.id+'" class="se_dialog '+settings.customClass+'"><div class="win_main"><div class="win_header"><div class="title"></div></div><div class="win_content"></div><script></script></div></div>');console.log("DIALOG WINDOW ELEMENT",cDialog);cWindow=cDialog.querySelector('.win_main');cHead=cWindow.querySelector('.win_header');cBody=cWindow.querySelector('.win_content');if(settings.fullScreen){cWindow.se_classAdd('fullScreen')}else if(settings.width||settings.height){if(settings.width!==null){cWindow.se_css('width',settings.width+'px')}
if(settings.height!==null){cWindow.se_css('height',settings.height+'px')}}
if(settings.hasClose){cHead.insertAdjacentHTML('beforeend','<div class="close"><svg class="icon"><use xlink:href="#fa-remove"></use></div>');cHead.querySelector('.close').addEventListener('click',closeDialog);cWindow.se_on('keyup',function(ev){if(ev.keyCode===27){closeDialog(ev)}})}
if(settings.isDraggable){let calcLeft=(window.outerWidth>settings.width)?(window.outerWidth-settings.width)/2:0,calcTop=(settings.height!==0&&window.outerHeight>settings.height)?(window.outerHeight-settings.height)/2:0}
if(settings.isResizeable){}
if(settings.backBlock){if(settings.backClose){cDialog.addEventListener('click',function(event){event.preventDefault();closeDialog()});cWindow.addEventListener('click',function(event){event.stopPropagation()})}}
if(settings.iniUrl!==''){let asyncLoadFull=function(){se.main.pluginLoad(cBody);if(typeof settings.onLoad==='function'){settings.onLoad.call(this)}};se.ajax.json(settings.iniUrl,settings.post,{onCall:function(){cHead.querySelector('.title').se_text('Cargando...');cBody.se_html('<span>Cargando...  <svg class="icon inline spin"><use xlink:href="#fa-spinner"></use></svg></span>')},onSuccess:function(msg){let pData=msg.d;cHead.querySelector('.title').se_text(pData.title);cBody.se_html(pData.body);if('defJS' in settings&&settings.defJS!==''){pData.js+=settings.defJS}
se.ajax.fileLoadAsync(pData,'#se_dialog script',asyncLoadFull)},onFail:function(msg){cHead.querySelector('.title').se_text('Error');cBody.se_html('No fue posible cargar el contenido.');console.log(msg)},onError:function(title,content){}})}else{cHead.querySelector('.title').se_text(settings.defHead);cBody.se_html(settings.defBody);let jsText='',jsCont=cWindow.querySelector('script');jsCont.se_text('');if('defJS' in settings){jsText+=settings.defJS}
if('defMT' in settings){jsText+="(function()\n{\n"+settings.defMT+"\n}());"}
if(jsText!==''){jsCont.se_text(jsText);window.eval(jsCont.se_text())}
if(typeof settings.onLoad==='function'){settings.onLoad.call(this)}}}
function closeDialog(ev){ev.preventDefault();if(typeof settings.onClose==='function'){settings.onClose.call(this)}
cDialog.se_remove()}
init();return cDialog};se.addon.windowForm=function(options){let defaults={width:null,height:null,closeSuccess:!0,title:'',load_url:null,load_data:null,save_url:null,save_data:null,actName:null,elems:null,onSuccess:null,onFail:null},settings=se.object.merge(defaults,options);se.addon.floatWin({width:settings.width,height:settings.height,isDraggable:!0,defHead:settings.title,defBody:se.form.createFromObj({save_url:settings.save_url,elems:settings.elems,actName:settings.actName}),onLoad:function(){let form=$('#se_dialog form');if(form){form.se_plugin('simpleForm',{load_url:settings.load_url,load_data:settings.load_data,save_url:settings.save_url,save_data:settings.save_data,onSuccess:settings.onSuccess,onFail:settings.onFail});form.elements[0].focus();se.main.pluginLoad(form)}else{console.log('No fue posible cargar el sitio.')}}})};se.addon.notification=function(content,options){options=(typeof options==='undefined')?{}:options;if(typeof content==="object"){let msg='<div class="notif"><div class="icon"><img src="!image;"/></div><div class="text"><span class="title">!title;</span>';msg+='<span class="desc">!body;</span></div></div>';options.message=se.struct.stringPopulate(msg,content)}else if(typeof content==="string"){options.message=content}else{console.log("error")}
se.addon.sticky(options)};se.addon.sticky=function(options){let defaults={'message':'','onClick':null,'speed':'fast','duplicates':!0,'autoclose':5000,'position':'bottom-right'},uniqID='sticky-'+se.uniqueId(),container=$('#se-sticky'),content='',sticky=null,timer=null,settings=se.object.merge(defaults,options),autoClose=function(elem,time){timer=setTimeout(function(){fadeOut(elem)},time)},closeElem=function(e,btn){e.stopPropagation();let elem=btn.se_closest('.sticky');fadeOut(elem)},fadeOut=function(elem){elem.se_fadeOut(!0);checkClear()},checkClear=function(){};if(!container){document.body.se_prepend('<div id="se-sticky" class="sticky-queue '+settings.position+'"></div>');container=$('#se-sticky')}
content+='<div class="sticky border-'+settings.position+'" id="'+uniqID+'">';content+='<div class="sticky-close" title="Close"><svg class="icon inline"><use xlink:href="#fa-remove"></use></div>';content+='<div class="sticky-note">'+settings.message+'</div>';content+='</div>';container.se_prepend(content);sticky=$('#'+uniqID);sticky.se_fadeIn();if(settings.autoclose){autoClose(sticky,settings.autoclose)}
sticky.se_on('click','.sticky-close',closeElem);let response={'id':uniqID,'position':settings.position}
if(typeof settings.onClick==='function'){callback(response)}
else{return(response)}};"use strict";window.addEventListener('DOMContentLoaded',function firstLoad(){document.removeEventListener("DOMContentLoaded",firstLoad,!1);function jsInitialize(){se.main.init();postLoad()}
if(window.indexedDB&&'idb' in site){console.log("IDB page initialize");if('idb' in se){se.idb.init(jsInitialize)}else{console.error("SNK Engine IDB Component missing.")}}else{jsInitialize()}
if('init' in site&&typeof site.init==="function"){site.init()}
if('serviceWorker' in navigator){navigator.serviceWorker.register('/snkeng_main_sw.js').then(function(reg){console.log("SW Registration:");if(reg.installing){console.log('SW installing')}else if(reg.waiting){console.log('SW installed')}else if(reg.active){console.log('SW active')}}).catch(function(error){console.log("SW REGISTER FAILURE",error)})}else{console.log('Service workers aren\'t supported in this browser.')}})