File "lib.js"
Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/themes/magone/assets/js/lib.js
File size: 12.58 KB
MIME-type: text/plain
Charset: utf-8
/*STORAGE*/
// check if is firefox
var Magone_Is_Firefox = false;
if (jQuery('.is-firefox').css('display') != 'none') {
Magone_Is_Firefox = true;
}
var Magone_Is_Ie9 = false;
if (jQuery('.is-ie9').css('display') != 'none') {
Magone_Is_Ie9 = true;
}
var Magone_Is_Retina = false;
// store content to web browser
function magone_included_cookie() {
if ('cookie' in document) {
return true;
}
return false;
}
function magone_set_cookie(c_name,value,exdays) {
if (!magone_included_cookie()) {
return false;
}
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? '' : '; expires='+exdate.toUTCString())+'; path=/';
document.cookie=c_name + "=" + c_value;
if (magone_get_cookie(c_name) !== value) {
return false;
}
return true;
}
function magone_has_cookie() {
if (magone_set_cookie('test', 'ok')) {
return true;
}
return false;
}
function magone_get_cookie(c_name) {
if (!magone_included_cookie()) {
return '';
}
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
return '';
}
function magone_has_storage() {
if(typeof(localStorage) !== "undefined") {
return true;
}
return false;
}
function magone_set_storage(key,value) {
if (magone_has_storage()) {
localStorage.setItem(key,value);
return true;
}
return false;
}
function magone_get_storage(key) {
if (magone_has_storage()) {
var ret = localStorage.getItem(key);
if (ret) {
return ret;
}
}
return '';
}
function magone_update_option(option_name, option_value) {
if (magone_has_storage()) {
return magone_set_storage(option_name, option_value);
} else if (magone_has_cookie()) {
return magone_set_cookie(option_name, option_value);
}
return false;
}
function magone_get_option(option_name) {
if (magone_has_storage()) {
return magone_get_storage(option_name);
} else if (magone_has_cookie()) {
return magone_get_cookie(option_name);
}
return '';
}
/*remake UI*/
/*IMAGE MASTER*/
function magone_is_high_density(){
return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches)) || (window.devicePixelRatio && window.devicePixelRatio > 1.3));
}
function magone_is_retina(){
return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)').matches)) || (window.devicePixelRatio && window.devicePixelRatio >= 2)) && /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
}
(function() {
var root = (typeof exports === 'undefined' ? window : exports);
function Retina() {}
root.Retina = Retina;
Retina.isRetina = function(){
};
})();
function magone_srcset_parse(srcset) {
var ret = srcset.split(', ');
// colllect sets
for (var i = 0; i < ret.length; i++) {
ret[i] = ret[i].split(' ');
if (ret[i].length == 2) {
ret[i][1] = ret[i][1].replace('w', '');
if (isNaN(ret[i][1])) {
ret[i][1] = 0;
}
ret[i][1] = Number(ret[i][1]);
}
}
// remove blank
for (var i = ret.length - 1; i >= 0; i-=1) {
if (ret[i].length != 2 || ret[i][1] == 0) {
ret.splice(i, 1);
}
}
// sort from low to high
for (var i = 0; i < ret.length - 1; i++) {
for (var j = i+1; j < ret.length; j++) {
if (ret[i][1] > ret[j][1]) {
var temp = ret[j];
ret[j] = ret[i];
ret[i] = temp;
}
}
}
return ret;
}
/*
You must make sure your image container has class name .item-thumbnail and add below css into your style sheet.
.item-thumbnail *, .item-thumbnail img {display:block;max-width: 9999px; max-height: 9999px; padding: 0!important;}
.item-thumbnail {overflow: hidden;display: block;z-index:9;}
*/
function magone_optimize_thumbnail_image(img) {
var img = jQuery(img);
var thumb = img.parent().parent();
var thumb_top = thumb.offset().top;
var thumb_left = thumb.offset().left;
var img_top = img.offset().top;
var img_left = img.offset().left;
var img_w = img.width();
var img_h = img.height();
// very large width, may be browser slow when drawing image
if ((img_w > img_h * 3 || Magone_Is_Firefox) && (!img.is('.special'))) {
img.addClass('special');
// we must delay a bit to wait it drawing image completely
setTimeout(function() {
magone_optimize_thumbnail_image(img)
}, 50);
return;
}
if (thumb_left < img_left && img.parent().is('.item-thumbnail-resize-landscape')) {
img
.parent()
.removeClass('item-thumbnail-resize-landscape')
.addClass('item-thumbnail-resize-portrait');
img.css('bottom', '0');
// magazine cover image which has height larger than width
// so may be main content of image can be on the top of image
// (must update image width and height each time we resize with classes)
var img_w = img.width();
var img_h = img.height();
if (img_h > 1.3 * img_w) {
// we must allow it go to top
img.css('bottom','auto');
}
// fix bug for firefox
if (Magone_Is_Firefox) {
var img_h = img.height();
var thumb_h = thumb.height();
var img_top = ( img_h - thumb_h ) / 2;
img.css('top', '-' + img_top + 'px').css('bottom', 'auto');
}
} else if (thumb_top < img_top && img.parent().is('.item-thumbnail-resize-portrait')) {
img
.parent()
.removeClass('item-thumbnail-resize-portrait')
.addClass('item-thumbnail-resize-landscape');
}
img.addClass('optimized');
}
function magone_optimize_thumbnail(images) {
if (typeof(images) != 'object') {
images = jQuery('.thumbnail img');
}
// replace small images first
images.each(function($){
var img = jQuery(this);
var src = img.attr('src');
// if did not wrapped with resizer
if (img.parent().is('.item-thumbnail')) {
img.wrap('<span class="item-thumbnail-resize-landscape"></span>');
}
// process with images from media library
// to select the right image to display
var srcset = img.attr('data-ss');
var src_ds = img.attr('data-s');
var wid = img.attr('width');
var hei = img.attr('height');
if (typeof(srcset) != 'undefined' && typeof(wid) != 'undefined' && typeof(hei) != 'undefined') {
src = src_ds;
wid = Number(wid);
hei = Number(hei);
var ss = magone_srcset_parse(srcset);
if (ss.length && wid && hei) {
// find desire width
var thumb = img.parents('.thumbnail');
var thumb_h = thumb.height();
var new_w = thumb.width(); // assume image width = thumb width
var new_h = hei * new_w / wid; // so image heigh must be
if (new_h < thumb_h) {
// but seem new height is smaller than need
// so we just increase width a bit
new_w = wid * thumb_h / hei;
}
// search in srcset to find appropriate src
var new_src = '';
// just select the largest image, if retina
if (Magone_Is_Retina) {
new_w = new_w * 2;
}
if (!new_src) {
// find for exactly first
for (var i = 0; i < ss.length; i++) {
if (ss[i][1] == new_w) {
new_src = ss[i][0];
break;
}
}
}
if (!new_src) {
for (var i = 0; i < ss.length; i++) {
if (ss[i][1] > new_w) {
new_src = ss[i][0];
break;
}
}
if (i < ss.length) {
if (0 == i) {
new_src = ss[i][0]; // can not find lower image
} else if (ss[i-1][1] >= new_w * 0.9 || magone.serve_scaled_images) {
new_src = ss[i-1][0]; // if the lower not lower than 90%
} else {
new_src = ss[i][0]; // just pick the nearest higher
}
}
}
if (!new_src) {
new_src = src; // not found, get adta from src
} else {
src = new_src; // update src for next processes
}
img.attr('src', new_src);
}
} else if ((typeof(src) == 'undefined' || !src) && typeof(src_ds) != 'undefined') {
src = src_ds;
img.attr('src', src);
}
// replace youtube thumbnail to largest image
if (src.indexOf('youtube.com') != -1 && src.indexOf('/default.') != -1) {
img.attr('src', src.replace('/default.', '/hqdefault.'));
}
if (img.parent().is('.natural-thumbnail')) {
return;
}
img.each(function(){
// Trigger load event (for Gecko and MSIE)
if (this.complete) {
jQuery(this).trigger('load');
// This fixes IE9 issue
if ( Magone_Is_Ie9 ) {
this.src = this.src;
}
}
}).on('load', function (){
magone_optimize_thumbnail_image(this);
});
});
}
Magone_Is_Retina = (magone_is_high_density() || magone_is_retina());
magone_optimize_thumbnail();
jQuery(window).resize(function(){
Magone_Is_Retina = (magone_is_high_density() || magone_is_retina());
magone_optimize_thumbnail();
});
/*extra lib*/
function magone_is_number (variable) {
return (typeof(variable) != 'undefined' && !isNaN(variable));
}
function magone_ajax_error(data) {
return (!data || ((data.indexOf('<b>Warning:</b> ') != -1 || data.indexOf('Warning: ') != -1 || data.indexOf('Fatal error: ') != -1 || data.indexOf('<b>Fatal error:</b> ') != -1) && data.indexOf(' on line ') != -1));
}
function magone_select_all (elem) {
jQuery(elem).select();
// Work around Chrome's little problem
jQuery(elem).mouseup(function() {
// Prevent further mouseup intervention
jQuery(elem).unbind("mouseup");
return false;
});
}
function magone_selectText(element) {
var doc = document;
var text = doc.getElementById(element);
var range;
var selection;
if (doc.body.createTextRange) { //ms
range = doc.body.createTextRange();
range.moveToElementText(text);
range.select();
} else if (window.getSelection) { //all others
selection = window.getSelection();
range = doc.createRange();
range.selectNodeContents(text);
selection.removeAllRanges();
selection.addRange(range);
}
}
function magone_is_image_src(url) {
return (url.toLowerCase().match/***/(/\.(jpeg|jpg|gif|png)$/)/***/ != null);
}
function magone_scroll_to(elem, delay) {
if (typeof(elem) == 'undefined' || jQuery(elem).length == 0) {
return;
}
if (typeof(delay) == 'undefined') {
delay = 50;
}
jQuery('html, body').animate({
scrollTop: jQuery(elem).offset().top
}, delay);
}
function magone_is_variable_name_character(character) {
var character = character.charCodeAt(0);
if (character >= 'a'.charCodeAt(0) &&
character <= 'z'.charCodeAt(0) ||
character >= 'A'.charCodeAt(0) &&
character <= 'Z'.charCodeAt(0) ||
character >= '0'.charCodeAt(0) &&
character <= '9'.charCodeAt(0) ||
character == '_'.charCodeAt(0)) {
return true;
}
return false;
}
function magone_url_to_slug(url) {
for (var i = 0; i < url.length; i++) {
if (!magone_is_variable_name_character(url[i])) {
url = url.replace(url[i], '_');
}
}
return url;
}
function magone_get_str_between_arrays(original_text, open_keys, close_keys) {
var found = false;
for (var i = 0; i < open_keys.length; i++) {
if (original_text.indexOf(open_keys[i]) != -1) {
original_text = original_text.split(open_keys[i])[1];
found = true;
}
}
if (!found) {
return '';
}
for (var i = 0; i < close_keys.length; i++) {
original_text = original_text.split(close_keys[i])[0];
}
return original_text;
}
function magone_is_image_src(url) {
return (url.toLowerCase().match/***/(/\.(jpeg|jpg|gif|png)$/)/***/ != null);
}
function magone_get_youtube_video_id (url) {
if (url.indexOf('youtube') == -1 && url.indexOf('youtu.be') == -1) {
return '';
}
return magone_get_str_between_arrays(url, ['/embed/','youtu.be/', '/videos/', '/v/', '?v=', '&v='], ['#', '/', '?', '&', '.']);
}
function magone_get_youtube_list_id (url) {
if (url.indexOf('youtube') == -1 && url.indexOf('youtu.be') == -1) {
return '';
}
return magone_get_str_between_arrays(url, ['list='], ['#', '/', '?', '&', '.']);
}
function magone_get_vimeo_video_id (url) {
if (url.indexOf('vimeo') == -1) {
return '';
}
return magone_get_str_between_arrays(url, ['vimeo.com/', '/video/'], ['#', '/', '?', '&', '.']);
}