	/*
	 *
	 * yMS (c) 2003 - 2020 Yal Publicidad - JS
	 * Sistema: Macrodígital Software - de Yal Publicidad
	 *
	 */
	 
	 /* 
	  * funcion para incluir js 
	  */
	function include(url) {
		document.write('<script src="' + url + '"></script>');
		return false;
	}
	
	/*
	 * funcion para inprimir cadena en documento
	 */
	function echo(cadena){
		document.write(cadena);
		return false;
	}

	/* userAgent
	 ========================================================*/
	/*var ua = navigator.userAgent.toLocaleLowerCase(),
		regV = /ipod|ipad|iphone/gi,
		result = ua.match(regV),
		userScale = "";
	if (!result) {
		userScale = ",user-scalable=0"
	}
	
	echo('<meta name="viewport" content="width=device-width,initial-scale=1.0' + userScale + '">');

	/* 
	 * Funcion para obtener el ancho y alto de la ventana del explorador 
	 */
	function WinSize(o) { 
			var myWidth = 0, myHeight = 0; 
			if( typeof( window.innerWidth ) == 'number' ) { 
				//No-IE 
				myWidth = window.innerWidth; 
				myHeight = window.innerHeight; 
			} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
				//IE 6+ 
				myWidth = document.documentElement.clientWidth; 
				myHeight = document.documentElement.clientHeight; 
			} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
				//IE 4 compatible 
				myWidth = document.body.clientWidth; 
				myHeight = document.body.clientHeight; 
			}
			
			return (o == 'Height') ? myHeight : myWidth;
			
	}
	
	/*
	 *
	 */
	function $_(selector){
		return document.querySelector(selector);
	}
	
	/*
	 * Clase propia de Weby+
	 */
	 function msXHRO() {
				if (window.XMLHttpRequest) {
					return new XMLHttpRequest();
				} else if(window.ActiveXObject) {
					return new ActiveXObject("Microsoft.XMLHTTP");
				} else {
					//document.getElementById('p_status').innerHTML = 'No se puede crear objeto XmlHttpRequest.';
				}
	}
	
	$y = {
		ajax: function( ajustes ){
				var msRequest = msXHRO();
				var metodo = (typeof ajustes.metodo == 'undefined') ? 'GET' : ajustes.metodo;
				var data = (typeof ajustes.data !== 'undefined') ? ajustes.data + '&time='+ new Date().getTime() : '';
				var url = (metodo == 'GET') ? ajustes.url + '?' + data : ajustes.url;
				
				if(typeof ajustes.progreso !== 'undefined') msRequest.upload.addEventListener("progress", ajustes.progreso, false);
				if(typeof ajustes.exito !== 'undefined') msRequest.addEventListener("load", ajustes.exito, false);
				if(typeof ajustes.error !== 'undefined') msRequest.addEventListener("error", ajustes.error, false);
				if(typeof ajustes.abortar !== 'undefined') msRequest.addEventListener("abort", ajustes.abortar, false);
				
				msRequest.open(metodo, url, true);
				if(typeof ajustes.contenidoTipo !== 'undefined') msRequest.setRequestHeader('Content-Type',ajustes.contenidoTipo);
				msRequest.onreadystatechange = function(){
														if (msRequest.readyState == 4 && msRequest.status == 200) {
																	ajustes.suceso(msRequest.responseText);
														} else if ( msRequest.status == 200) {
																	ajustes.suceso(msRequest.responseText);
														} else {
																	ajustes.suceso(msRequest.status);
														}
												};															
				if(metodo == 'GET') {
							msRequest.send(null);//alert(metodo);
				}else{
							msRequest.send(data);//alert(url);
				} //alert(url);
		},
		
		formData: function( ajustes ){
			//var Data = new FormData(ajustes.data);
			var msRequest = msXHRO();
			msRequest.open('POST', ajustes.url, true);
						msRequest.onload = function(Event) {
									if (msRequest.status == 200) {
											ajustes.suceso(msRequest.responseText);
									} else {
											ajustes.suceso(msRequest.status);
									}
						};	  
			msRequest.send(ajustes.data);			
			//msRequest.send(Data);
		},
		
		modal: {
			iniciar : function(  ){
										
							var $body = document.body;
							var $overlay = document.createElement('div');
								$overlay.style.position = 'fixed';
								$overlay.style.background = 'rgba(0, 0, 0, 0.5)';
								$overlay.style.overflow = 'auto';
								$overlay.style.top = '0';
								$overlay.style.left = '0';
								$overlay.style.height = '100vh';
								$overlay.style.width = '100vw';
								$overlay.style.transition = 'all .5s';
								$overlay.style.zIndex = '2000';
								$overlay.setAttribute('id','y_modal');
								$overlay.onclick = function(){ 
										$overlay.style.top = '-200vh';
										$overcont.style.top = '-200vh';
										document.body.style.overflowY = 'auto'; 
									};
								$body.appendChild($overlay);
							
							
							var $overcont = document.createElement('div');
								$overcont.style.position = 'fixed';
								$overcont.style.overflow = 'auto';
								$overcont.style.margin = '0 auto';
								$overcont.style.padding = '15px';
								$overcont.style.background = '#ffffff';
								$overcont.style.color = '#343434';
								$overcont.style.display = 'table';
								$overcont.style.borderRadius = '3px';
								$overcont.style.width = 'auto';
								$overcont.style.height = 'auto';
								$overcont.style.minWidth = '40%';
								$overcont.style.maxWidth = '90%';
								$overcont.style.maxHeight = '100vh';
								$overcont.style.transition = 'all .5s';
								$overcont.style.zIndex = '2003';
								$overcont.setAttribute('id','ym_cont');
								$body.appendChild($overcont);
			},
			
			abrir : function( p ){
				var html = '';
				h = ( typeof p.height !== 'undefined' ) ? p.height : 450;
				w = ( typeof p.width !== 'undefined' ) ? p.width : 800;
				//document.body.style.overflow = 'hidden';
				var bcerrar = '<div style="padding: 10px 0px; margin-top:25px; border-top:1px dashed #ccc; text-align:right;"><button type="button" onClick="$y.modal.cerrar()">Close</button></div>';
				
				if( !document.getElementById('y_modal') ){
					this.iniciar();
				}
				var overcont = document.getElementById('ym_cont');
				// defino medidas de contenedor
				if( typeof p.url !== 'undefined' ){
					html = '<iframe style="width:' + w + 'px;height:' + h + 'px;max-width:100%;max-height:100%;" frameborder="0" src="' + p.url + '"></iframe>';
				}
				if( typeof p.html !== 'undefined' ){
					html = p.html;
				}				
				
				overcont.innerHTML = html + bcerrar;
				document.getElementById('y_modal').style.top = '0';
				overcont.style.top = 'calc(50% - ' + (overcont.clientHeight/2) + 'px )';
				overcont.style.left = 'calc(50% - ' + (overcont.clientWidth/2) + 'px )';
			},
									
			cerrar : function(){
					document.getElementById('y_modal').style.top = '-200vh';
					document.getElementById('ym_cont').style.top = '-200vh';
					document.body.style.overflowY = 'auto';
			}
		},
		serialize: function (form) {
			var field, s = [];
			if (typeof form == 'object' && form.nodeName == "FORM") {
				var len = form.elements.length;
				for (i=0; i<len; i++) {
					field = form.elements[i];
					if (field.name && !field.disabled && field.type != 'file' && field.type != 'reset' && field.type != 'submit' && field.type != 'button') {
						if (field.type == 'select-multiple') {
							for (j=form.elements[i].options.length-1; j>=0; j--) {
								if(field.options[j].selected)
									s[s.length] = encodeURIComponent(field.name) + "=" + encodeURIComponent(field.options[j].value);
							}
						} else if ((field.type != 'checkbox' && field.type != 'radio') || field.checked) {
							s[s.length] = encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value);
						}
					}
				}
			}
			return s.join('&').replace(/%20/g, '+');
		}
	}
	
	var mbTimer
	MsjBox = {
		crear : function( cHTML ){
							var $body = document.getElementsByTagName("body")[0];
							var $msj = document.createElement('div');
								$msj.setAttribute('id','MsjBox2');
								
								
								$msj.style.position = 'fixed';
								$msj.style.bottom = '5%';
								$msj.style.margin = '0 auto';
								$msj.style.border = '1px solid #666';
								$msj.style.borderRadius = '5px';
								$msj.style.boxShadow = '0 3px 20px 0px rgba(0, 0, 0, 0.1)';
								$msj.style.background = 'rgba(0,0,0,0.7)';
								$msj.style.color = '#ffffff';
								$msj.style.padding = '5px 15px';
								$msj.style.zIndex = '2999';
								$msj.innerHTML = '<span>' + cHTML + '</span>';
								
								$body.appendChild($msj);
								
								mWidth = ( ( WinSize('Width') / 2 ) - ( $msj.clientWidth / 2 ) );
								$msj.style.left = mWidth + 'px';
			},
			
		mostrar : function( cntHTML ){
			var $miMsjBox = document.getElementById('MsjBox2');
			
			clearInterval(mbTimer);
			
			if( $miMsjBox ){
				$miMsjBox.innerHTML = '<span>' + cntHTML + '</span>';
				mWidth = ( ( WinSize('Width') / 2 ) - ( $miMsjBox.clientWidth / 2 ) );
				$miMsjBox.style.left = mWidth + 'px';
				$miMsjBox.style.display = 'inline';
			}else{
				this.crear( cntHTML );
			}
			
			mbTimer = setTimeout( "MsjBox.ocultar()", 3500 );
		},
								
		ocultar : function(){
				document.getElementById('MsjBox2').style.display = 'none';
			}
	}
	
	function obtCadenaSlug(cadena){
	   // Definimos los caracteres que queremos eliminar
	   var specialChars = "!¡@#$^&%*()+=_[]\/{}|:<>?¿,.";
	   
	   cadena = cadena.trim();
	
	   // Los eliminamos todos
	   for (var i = 0; i < specialChars.length; i++) {
		   cadena= cadena.replace(new RegExp("\\" + specialChars[i], 'gi'), '');
	   }   
	
	   // Lo queremos devolver limpio en minusculas
	   cadena = cadena.toLowerCase();
	
	   // Quitamos espacios y los sustituimos por _ porque nos gusta mas asi
	   cadena = cadena.replace(/ /g,"-");
	
	   // Quitamos acentos y "ñ". Fijate en que va sin comillas el primer parametro
	   cadena = cadena.replace(/á/gi,"a");
	   cadena = cadena.replace(/é/gi,"e");
	   cadena = cadena.replace(/í/gi,"i");
	   cadena = cadena.replace(/ó/gi,"o");
	   cadena = cadena.replace(/ú/gi,"u");
	   cadena = cadena.replace(/ñ/gi,"n");
	   return cadena;
	}
	
	function aTab(hTab) {
		try {
			var id = hTab.id;
			if (id){
				var Tab = hTab.parentNode || unTab.parentElement;
				
				var desde = Tab.getAttribute("data-min");
				if (desde==null) desde = 0;
				var hasta = Tab.getAttribute("data-max");
				if (hasta==null) hasta = MAXTABS;
				
				var idTab = id.split("hTab-");
				var numTab = parseInt(idTab[1]);
				//Las "tabdiv" son los bloques interiores mientras que los "tabck"
				//son las pestañas.
				var esteTabDiv = document.getElementById("bTab-" + numTab);
				for (var i=desde; i<=hasta; i++) {
					var tabdiv = document.getElementById("bTab-" + i);
					if (tabdiv) {
						var tabck = document.getElementById("hTab-" + i);
						if (tabdiv.id == esteTabDiv.id) {
							tabdiv.style.display = "block";
							//tabck.style.color = "slategrey";
							tabck.style.backgroundColor = "#5aa2a2";
							//tabck.style.borderBottomColor = "#fff";
						} else {
							tabdiv.style.display = "none";
							//tabck.style.color = "white";
							tabck.style.backgroundColor = "transparent";
							//tabck.style.borderBottomColor = "gray";
						}
					}
				}
			}
		} catch (e) {
			alert("Error al activar una pestaña. " + e.message);
		}
	}
	
	function desabilitar_input( elemento, resultado ){
					if( elemento.value.length > 0 ){
						resultado.disabled = true;
						resultado.classList.add('input-disabled');
						resultado.style.cursor = 'not-allowed';
					}else{
						resultado.disabled = false;
						resultado.classList.remove('input-disabled');
						resultado.style.cursor = '';
					}
	}
	
// enviar form ajax
	eformAjax = function(e,func){
			$y.ajax({
						url: e.action,
						metodo: e.method,
						data: e.data,
						contenidoTipo: 'application/x-www-form-urlencoded',
						suceso: function(respuesta){ func(respuesta); }
			});
			return false;
	}

// enviar formData ajax 
	eformDat2 = function(e,func){
			$_('#consola_msj').innerHTML = '';
			var Data = new FormData(e);
			$y.formData({
						url: e.action,
						data: Data,
						suceso: function(respuesta){ func(respuesta); }
			});			
			return false;
	}