// ------------------------------------------------------------------------------------------------------------------------------- // PHOTOSWIPE
var initPhotoSwipeFromDOM = function(gallerySelector) {
// parse slide data (url, title, size ...) from DOM elements // (children of gallerySelector) var parseThumbnailElements = function(el) { var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item;
for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //
// include only element nodes if(figureEl.nodeType !== 1) { continue; }
linkEl = figureEl.children[0]; // element
size = linkEl.getAttribute('data-size').split('x');
// create slide object item = { src: linkEl.getAttribute('href'), w: parseInt(size[0], 10), h: parseInt(size[1], 10) };
if(figureEl.children.length > 1) {
//
if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute('src');
}
item.el = figureEl; // save link to element for getThumbBoundsFn items.push(item); }
return items; };
// find nearest parent element var closest = function closest(el, fn) { return el && ( fn(el) ? el : closest(el.parentNode, fn) ); };
// triggers when user clicks on thumbnail var onThumbnailsClick = function(e) { e = e || window.event; e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
// find root element of slide var clickedListItem = closest(eTarget, function(el) { return (el.tagName && el.tagName.toUpperCase() === 'FIGURE'); });
if(!clickedListItem) { return; }
// find index of clicked item by looping through all child nodes // alternatively, you may define index via data- attribute var clickedGallery = clickedListItem.parentNode, childNodes = clickedListItem.parentNode.childNodes, numChildNodes = childNodes.length, nodeIndex = 0, index;
for (var i = 0; i < numChildNodes; i++) { if(childNodes[i].nodeType !== 1) { continue; } if(childNodes[i] === clickedListItem) { index = nodeIndex; break; } nodeIndex++; } if(index >= 0) { // open PhotoSwipe if valid index found openPhotoSwipe( index, clickedGallery ); } return false; };
// parse picture index and gallery index from URL (#&pid=1&gid=2) var photoswipeParseHash = function() { var hash = window.location.hash.substring(1), params = {};
if(hash.length < 5) { return params; } var vars = hash.split('&'); for (var i = 0; i < vars.length; i++) { if(!vars[i]) { continue; } var pair = vars[i].split('='); if(pair.length < 2) { continue; } params[pair[0]] = pair[1]; } if(params.gid) { params.gid = parseInt(params.gid, 10); } return params; }; var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) { var pswpElement = document.querySelectorAll('.pswp')[0], gallery, options, items; items = parseThumbnailElements(galleryElement); // define options (if needed) options = { // define gallery index (for URL) galleryUID: galleryElement.getAttribute('data-pswp-uid'), getThumbBoundsFn: function(index) { // See Options -> getThumbBoundsFn section of documentation for more info var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}; }
};
// PhotoSwipe opened from URL if(fromURL) { if(options.galleryPIDs) { // parse real index when custom PIDs are used // http://photoswipe.com/documentation/faq.html#custom-pid-in-url for(var j = 0; j < items.length; j++) { if(items[j].pid == index) { options.index = j; break; } } } else { // in URL indexes start from 1 options.index = parseInt(index, 10) - 1; } } else { options.index = parseInt(index, 10); } // exit if index not found if( isNaN(options.index) ) { return; } if(disableAnimation) { options.showAnimationDuration = 0; } // Pass data to PhotoSwipe and initialize it gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); gallery.init(); }; // loop through all gallery elements and bind events var galleryElements = document.querySelectorAll( gallerySelector ); for(var i = 0, l = galleryElements.length; i < l; i++) { galleryElements[i].setAttribute('data-pswp-uid', i+1); galleryElements[i].onclick = onThumbnailsClick; } // Parse URL and open gallery if it contains #&pid=3&gid=1 var hashData = photoswipeParseHash(); if(hashData.pid && hashData.gid) { openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true ); } }; // execute above function initPhotoSwipeFromDOM('.my-gallery'); // ====================================== // FIN SCRIPTS PHOTOSWIPE // ======================================
11:42
11:42
Este viernes, el Tribunal Electoral confirmó que las próximas elecciones a gobernador y vice será este 2 de julio. La medida es tomada tras la orden de la Corte Suprema de Justicia que consideró inconstitucional la presentación de Sergio Uñac y con esto la necesidad inmediata de cambiar ese lugar por otro candidato.
Adriana García Nieto, miembro del tribunal, expresó que "la norma es clara, solamente se impugnó el candidato a gobernador. El artículo 180 establece que se debe readecuar el cargo que produjo la vacancia. Por eso el Tribunal Electoral en los considerandos, por más que fue extenso, dejó expresado cuáles son los puntos cumplidos. En qué no ha quedado cumplido es el único que fue suspendido, que fue la candidato a gobernador. En función de la sentencia de la Corte Suprema Justicia y del artículo 180 deberá reemplazar el candidato a gobernador".
Por su parte, Eduardo Quattropani explicó que el fallo de la Corte Suprema de Justicia de la Nación, inhabilitó una categoría que es la de gobernador pero no la de vice. Por ende, Cristian Andino puede seguir adelante como vicegobernador.
En este contexto, la subagrupación Vamos San Juan, del Frente San Juan por Todos, deberá presentar el nuevo candidato a gobernador antes del martes 6 de junio que vence el plazo. De esta forma se pondrá a consideración y luego se oficializará para que entre en campaña.
García Nieto destacó que las nuevas boletas "las tienen que traer sí o sí" las nuevas subagrupaciones. "A las autoridades de mesa tenemos que decir cuáles son válidas. Se les pide a las subagrupaciones que acerquen la condición del voto que ahora se tiene que validar para el 2 de julio. El único cambio es la leyenda", destacó.
Vale destacar que para todo el resto de los partidos que compiten para gobernador, la campaña se inicia este sábado 3 de junio y se extiende hasta el viernes 30 de junio que empieza la veda electoral.
Luego el 2 de julio los sanjuaninos deberán ir a las urnas para emitir el voto. Este día se contará con las mismas autoridades de mesa que el 14 de mayo pasado. Por su actuación se les abonará 25 mil pesos.