// Highlight elements in frontend, if local storage variable is set. jQuery( document ).ready( function () { function is_enabled() { if ( ! advads.supports_localstorage() || ! localStorage.getItem( 'advads_frontend_picker' ) ) { return false; } // Check if the frontend picker was started on the current blog. if ( window.advads_options.blog_id && localStorage.getItem( 'advads_frontend_blog_id' ) && window.advads_options.blog_id !== localStorage.getItem( 'advads_frontend_blog_id' ) ) { return false; } // Deactivate the frontend picker if it was started more than 45 minutes ago. if ( localStorage.getItem( 'advads_frontend_starttime' ) && parseInt( localStorage.getItem( 'advads_frontend_starttime' ), 10 ) < ( new Date().getTime() ) - 45 * 60 * 1000 ) { localStorage.removeItem( 'advads_frontend_action' ); localStorage.removeItem( 'advads_frontend_element' ); localStorage.removeItem( 'advads_frontend_picker' ); localStorage.removeItem( 'advads_prev_url' ); localStorage.removeItem( 'advads_frontend_pathtype' ); localStorage.removeItem( 'advads_frontend_boundary' ); localStorage.removeItem( 'advads_frontend_blog_id' ); localStorage.removeItem( 'advads_frontend_starttime' ); advads.set_cookie( 'advads_frontend_picker', '', - 1 ); return false; } return true; } // only trigger if local storage is available if ( is_enabled() ) { var advads_picker_cur, advads_picker_overlay = jQuery( "
" ), advads_picker_no = [document.body, document.documentElement, document]; advads_picker_overlay.css( { position: 'absolute', border: 'solid 2px #428bca', backgroundColor: 'rgba(66,139,202,0.5)', boxSizing: 'border-box', zIndex: 1000000, pointerEvents: 'none' } ).prependTo( 'body' ); if ( 'true' === localStorage.getItem( 'advads_frontend_boundary' ) ) { jQuery( 'body' ).css( 'cursor', 'not-allowed' ); } /** * Check if we can traverse up the dom tree. * * We cannot use event delegation because: * - the content can be loaded via AJAX dynamically * - we cannot wrap the content in a `div` that represents post boundary * because that may prevent css rules from working * * @param HTMLElement The current element. * return bool */ window.advads.is_boundary_reached = function ( advads_picker_cur ) { if ( 'true' !== localStorage.getItem( 'advads_frontend_boundary' ) ) { return false; } $advads_picker_cur = jQuery( advads_picker_cur ); // A boundary helper is the `ins` element inside of the post content // that is used to determine the post boundary (where the content starts and ends). var $boundary_helpers = jQuery( '.advads-frontend-picker-boundary-helper' ); $boundaries = $boundary_helpers.parent(); $boundaries.css( 'cursor', 'pointer' ); return $advads_picker_cur.is( $boundaries ) || ! $advads_picker_cur.closest( $boundaries ).length; } if ( 'xpath' === localStorage.getItem( 'advads_frontend_pathtype' ) ) { var fn = 'getXPath'; } else { var fn = 'getPath'; } jQuery( document ).mousemove( function ( e ) { if ( e.target === advads_picker_cur ) { return; } if ( ~ advads_picker_no.indexOf( e.target ) ) { advads_picker_cur = null; advads_picker_overlay.hide(); return; } var target = jQuery( e.target ), offset = target.offset(), width = target.outerWidth(), height = target.outerHeight(); advads_picker_cur = e.target; var path = jQuery( advads_picker_cur )[fn](); if ( ! path ) { // A click outside of the boundary. // @see `is_boundary_reached`. return; } // log path console.log( path ); advads_picker_overlay.css( { top: offset.top, left: offset.left, width: width, height: height } ).show(); } ); // save on click jQuery( document ).click( function ( e ) { var path = jQuery( advads_picker_cur )[fn](); if ( advads.is_boundary_reached( advads_picker_cur ) ) { return; } localStorage.setItem( 'advads_frontend_element', path ); window.location = localStorage.getItem( 'advads_prev_url' ); } ); }; } ); /* Derrived from jQuery-GetPath v0.01, by Dave Cardwell. (2007-04-27) http://davecardwell.co.uk/javascript/jquery/plugins/jquery-getpath/ Usage: var path = $('#foo').getPath(); */ jQuery.fn.extend( { getPath: function ( path, depth ) { // The first time this function is called, path won't be defined. if ( typeof path === 'undefined' ) { path = ''; } if ( typeof depth === 'undefined' ) { depth = 0; } // If this element is we've reached the end of the path. // also end after 2 elements if ( this.is( 'html' ) ) { return 'html > ' + path; } else if ( 3 === depth ) { return path; } // Add the element name. var cur = this.get( 0 ).nodeName.toLowerCase(); // Determine the IDs and path. var el_id = this.attr( 'id' ), el_class = this.attr( 'class' ); depth = depth + 1; // Add the #id if there is one. Ignore ID with number. if ( typeof el_id !== 'undefined' && ! /\d/.test( el_id ) ) { cur += '#' + el_id; } else if ( typeof el_class !== 'undefined' ) { // Add classes if there is no id. el_class = el_class.split( /[\s\n]+/ ); // Skip classes with numbers. el_class = jQuery.grep( el_class, function ( element, index ) { return ! /\d/.test( element ) } ); // Add 2 classes. if ( el_class.length ) { cur += '.' + el_class.slice( 0, 2 ).join( '.' ); } } // add index if this element is not unique among its siblings if ( this.siblings( cur ).length ) { cur += ":eq(" + this.siblings( cur ).addBack().not( '#advads-picker-overlay' ).index( this ) + ")"; } // Recurse up the DOM. if ( path === '' ) { return this.parent().getPath( cur, depth ); } else { return this.parent().getPath( cur + ' > ' + path, depth ); } }, /** * Get XPath. */ getXPath: function ( path, depth ) { // The first time this function is called, path won't be defined. if ( typeof path === 'undefined' ) { path = ''; } if ( typeof depth === 'undefined' ) { depth = 0; } // If this element is we've reached the end of the path. // also end after 2 elements if ( this.is( 'body' ) || 3 === depth ) { return path; } if ( advads.is_boundary_reached( this ) ) { return path; } // Add the element name. var tag = this.get( 0 ).nodeName.toLowerCase(); var cur = tag; // Determine the IDs and path. var el_id = this.attr( 'id' ), el_class = this.attr( 'class' ); var classes = []; // Add the #id if there is one. Ignore ID with number. if ( typeof el_id !== 'undefined' && ! /\d/.test( el_id ) ) { return cur + '[@id and id="' + el_id + '"]/' + path; } else if ( typeof el_class !== 'undefined' ) { // Add classes if there is no id. el_class = el_class.split( /[\s\n]+/ ); // Skip classes with numbers. el_class = jQuery.grep( el_class, function ( element, index ) { return ! /\d/.test( element ) } ); // Add 2 classes. if ( el_class.length ) { depth = depth + 1; var classes = el_class.slice( 0, 2 ); var xpath_classes = []; for ( var i = 0, l = classes.length; i < l; i ++ ) { xpath_classes.push( '(@class and contains(concat(" ", normalize-space(@class), " "), " ' + classes[i] + ' "))' ); } cur += '[' + xpath_classes.join( ' and ' ) + ']'; } } // Add index if this element is not unique among its siblings. if ( classes.length ) { var $siblings = this.siblings( tag + '.' + classes.join( '.' ) ); } else { var $siblings = this.siblings( tag ); } if ( $siblings.length ) { var index = $siblings.addBack().not( '#advads-picker-overlay' ).index( this ); cur += '[' + index + ']'; } // Recurse up the DOM. if ( path === '' ) { return this.parent().getXPath( cur, depth ); } else { return this.parent().getXPath( cur + '/' + path, depth ); } } } ); News – SMAN 17 BATAM

SMAN 17 BATAM

Website Resmi SMA NEGERI 17 BATAM

News

News

Официальное Казино Банда Онлайн. Личный Кабинет, Регистрация, Игровые Автоматы. Актуальное Зеркало Banda

Официальное казино Банда онлайн Регистрация Личный кабинет и игровые автоматы Актуальное зеркало Banda Мир виртуальных развлечений постоянно развивается, предлагая все

Read More