Avatars Plus! and More for Google+

Google+ is now lively and fun! No more small, static and low resolution avatars, also restore In Your Circles section. Other cool features are waiting for you to discover!

/*

Following code belongs to Avatars Plus! and More for Google+.
Copyright (C) 2013 Jackson Tan
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

*/

// ==UserScript==
// @id             AvatarsPlusnMore
// @name         Avatars Plus! and More for Google+
// @version        5.30.6
// @namespace      gplus.avatarsPlus
// @author         Jackson Tan
// @description    Google+ is now lively and fun! No more small, static and low resolution avatars, also restore In Your Circles section. Other cool features are waiting for you to discover!
// @include        https://plus.google.com/*
// @exclude        /https://plus\.google\.com(/u/\d+)?/?stream/circles/.+/i
// @exclude	       /https://plus\.google\.com(/u/\d+)?/?b/.+/i
// @run-at         document-end
// @grant          GM_xmlhttpRequest
// ==/UserScript==

GM_addStyle = function (css) {
    var head = document.getElementsByTagName('head')[0], style = document.createElement('style');
    if (!head) { return }
    style.type = 'text/css';
    try { style.innerHTML = css } catch (x) { style.innerText = css }
    head.appendChild(style);
}

if (localStorage["IYC_Display"] == 'undefined' || localStorage["IYC_Display"] == undefined)
    localStorage["IYC_Display"] = 'Display';
if (localStorage["WallofAvatars"] == 'undefined' || localStorage["WallofAvatars"] == undefined)
    localStorage["WallofAvatars"] = '400';
if (localStorage["IYC_Num"] == 'undefined' || localStorage["IYC_Num"] == undefined)
    localStorage["IYC_Num"] = '30';
if (localStorage["IYC_Size"] == 'undefined' || localStorage["IYC_Size"] == undefined)
    localStorage["IYC_Size"] = '62';
if (localStorage["GIF_Avatars"] == 'undefined' || localStorage["GIF_Avatars"] == undefined)
    localStorage["GIF_Avatars"] = 'Enabled';
if (localStorage["IYC_Animations"] == 'undefined' || localStorage["IYC_Animations"] == undefined)
    localStorage["IYC_Animations"] = 'Disabled';
if (localStorage["Scaling_Animations"] == 'undefined' || localStorage["Scaling_Animations"] == undefined)
    localStorage["Scaling_Animations"] = 'Enabled';
if (localStorage["NotiWin_Animations"] == 'undefined' || localStorage["NotiWin_Animations"] == undefined)
    localStorage["NotiWin_Animations"] = 'Enabled';
if (localStorage["CmtBox_Animations"] == 'undefined' || localStorage["CmtBox_Animations"] == undefined)
    localStorage["CmtBox_Animations"] = 'Enabled';
if (localStorage["ShareBox_Animations"] == 'undefined' || localStorage["ShareBox_Animations"] == undefined)
    localStorage["ShareBox_Animations"] = 'Enabled';
if (localStorage["Btn_Animations"] == 'undefined' || localStorage["Btn_Animations"] == undefined)
    localStorage["Btn_Animations"] = 'Enabled';
if (localStorage["Clock_Fonts"] == 'undefined' || localStorage["Clock_Fonts"] == undefined)
    localStorage["Clock_Fonts"] = 'Segoe UI Mono';
if (localStorage["Clock_Font_Size"] == 'undefined' || localStorage["Clock_Font_Size"] == undefined)
    localStorage["Clock_Font_Size"] = '32';
if (localStorage["Clock_TS"] == 'undefined' || localStorage["Clock_TS"] == undefined)
    localStorage["Clock_TS"] = 'Enabled';
if (localStorage["Clock_Day_Indctr"] == 'undefined' || localStorage["Clock_Day_Indctr"] == undefined)
    localStorage["Clock_Day_Indctr"] = '☼';
if (localStorage["Clock_Night_Indctr"] == 'undefined' || localStorage["Clock_Night_Indctr"] == undefined)
    localStorage["Clock_Night_Indctr"] = '☪';
if (localStorage["Clock_Show"] == 'undefined' || localStorage["Clock_Show"] == undefined)
    localStorage["Clock_Show"] = 'Show';
if (localStorage["Remove_Borders"] == 'undefined' || localStorage["Remove_Borders"] == undefined)
    localStorage["Remove_Borders"] = 'Enabled';
if (localStorage["Remove_Gaps"] == 'undefined' || localStorage["Remove_Gaps"] == undefined)
    localStorage["Remove_Gaps"] = 'Enabled';
if (localStorage["Resize_NotiWindow"] == 'undefined' || localStorage["Resize_NotiWindow"] == undefined)
    localStorage["Resize_NotiWindow"] = 'Default';
if (localStorage["Background_Content_Type"] == 'undefined' || localStorage["Background_Content_Type"] == undefined)
    localStorage["Background_Content_Type"] = 'Default';
if (localStorage["Background_URL"] == 'undefined' || localStorage["Background_URL"] == undefined)
    localStorage["Background_URL"] = 'None';
if (localStorage["Background_Opacity"] == 'undefined' || localStorage["Background_Opacity"] == undefined)
    localStorage["Background_Opacity"] = '1';
if (localStorage["Posts_Opacity"] == 'undefined' || localStorage["Posts_Opacity"] == undefined)
    localStorage["Posts_Opacity"] = '0.8';
if (localStorage["Background_Display"] == 'undefined' || localStorage["Background_Display"] == undefined)
    localStorage["Background_Display"] = 'Tile';
if (localStorage["Background_Color"] == 'undefined' || localStorage["Background_Color"] == undefined)
    localStorage["Background_Color"] = '#F1F1F1';
if (localStorage["currentLatitude"] == 'undefined' || localStorage["currentLatitude"] == undefined)
    localStorage["currentLatitude"] = 'undefined';
if (localStorage["currentLongitude"] == 'undefined' || localStorage["currentLongitude"] == undefined)
    localStorage["currentLongitude"] = 'undefined';
if (localStorage["cityName1033"] == 'undefined' || localStorage["cityName1033"] == undefined)
    localStorage["cityName1033"] = 'undefined';
if (localStorage["countryName"] == 'undefined' || localStorage["countryName"] == undefined)
    localStorage["countryName"] = 'undefined';
if (localStorage["cityNameLocalized"] == 'undefined' || localStorage["cityNameLocalized"] == undefined)
    localStorage["cityNameLocalized"] = 'undefined';

function onLoad() {
    var languagePairs = {
        '首页': { language: 'zh-CN' },
        '主頁': { language: 'zh-HK' },
        '首頁': { language: 'zh-TW' },
        'ホーム': { language: 'ja' },
        'Default': { language: 'en-US' }
    }

    var matchPair;
    if (document.getElementsByClassName("lCd Hyc fJb").length > 0) {
        matchPair = languagePairs[document.getElementsByClassName("lCd Hyc fJb")[0].textContent];
        if (!matchPair)
            matchPair = languagePairs['Default'];
    }
    else
        matchPair = languagePairs['Default'];
    var language = matchPair.language;

    var currentLocation;
    if (currentLocation == undefined) {
        navigator.geolocation.getCurrentPosition(function (position) {
            currentLocation = position;
            console.log(position);
        }, function (positionError) {
            console.error(positionError);
        });
    }

    if (localStorage["currentLatitude"] != currentLocation.coords.latitude || localStorage["currentLongitude"] != currentLocation.coords.longitude) {
        localStorage["currentLatitude"] = currentLocation.coords.latitude;
        localStorage["currentLongitude"] = currentLocation.coords.longitude;
    }

    var cityName1033Original = localStorage["cityName1033"];

    var ajaxFetch = new XMLHttpRequest();
    ajaxFetch.onreadystatechange = function () {
        if (ajaxFetch.readyState == 4 && ajaxFetch.status == 200) {
            var locationResponseXML = ajaxFetch.responseXML;
            for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                if (locationResponseXML.getElementsByTagName('type')[i].textContent == "locality") {
                    localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                    break;
                }
            }
            if (localStorage["cityName1033"] == "undefined" || localStorage["cityName1033"] == undefined || localStorage["cityName1033"] == null || localStorage["cityName1033"] == "") {
                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_3") {
                        localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                        break;
                    }
                }
            }
            if (localStorage["cityName1033"] == "undefined" || localStorage["cityName1033"] == undefined || localStorage["cityName1033"] == null || localStorage["cityName1033"] == "") {
                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_2") {
                        localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                        break;
                    }
                }
            }
            if (localStorage["cityName1033"] == "undefined" || localStorage["cityName1033"] == undefined || localStorage["cityName1033"] == null || localStorage["cityName1033"] == "") {
                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_1") {
                        localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                        break;
                    }
                }
            }
            localStorage["countryName"] = locationResponseXML.getElementsByTagName('result')[5].getElementsByTagName('long_name')[1].textContent;
        }
    };
    ajaxFetch.open('GET', 'https://maps.googleapis.com/maps/api/geocode/xml?language=en-US&&latlng=' + localStorage["currentLatitude"] + ',' + localStorage["currentLongitude"] + '&&sensor=false&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j', true);
    ajaxFetch.send();

    var ajaxSecondFetch = new XMLHttpRequest();
    ajaxSecondFetch.onreadystatechange = function () {
        if (ajaxSecondFetch.readyState == 4 && ajaxSecondFetch.status == 200) {
            var locationResponseXML = ajaxSecondFetch.responseXML;
            for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                if (locationResponseXML.getElementsByTagName('type')[i].textContent == "locality") {
                    localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                    break;
                }
            }
            if (localStorage["cityNameLocalized"] == "undefined" || localStorage["cityNameLocalized"] == undefined || localStorage["cityNameLocalized"] == null || localStorage["cityNameLocalized"] == "") {
                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_3") {
                        localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                        break;
                    }
                }
            }
            if (localStorage["cityNameLocalized"] == "undefined" || localStorage["cityNameLocalized"] == undefined || localStorage["cityNameLocalized"] == null || localStorage["cityNameLocalized"] == "") {
                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_2") {
                        localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                        break;
                    }
                }
            }
            if (localStorage["cityNameLocalized"] == "undefined" || localStorage["cityNameLocalized"] == undefined || localStorage["cityNameLocalized"] == null || localStorage["cityNameLocalized"] == "") {
                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_1") {
                        localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                        break;
                    }
                }
            }
        }
    };
    ajaxSecondFetch.open('GET', 'https://maps.googleapis.com/maps/api/geocode/xml?language=' + language + '&&latlng=' + localStorage["currentLatitude"] + ',' + localStorage["currentLongitude"] + '&&sensor=false&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j', true);
    ajaxSecondFetch.send();
}

setTimeout(onLoad, 10000);

var IYC_Display = localStorage["IYC_Display"];
var WallofAvatars = localStorage["WallofAvatars"];
var IYC_Num = localStorage["IYC_Num"];
var IYC_Size = localStorage["IYC_Size"];
var GIF_Avatars = localStorage["GIF_Avatars"];
var IYC_Animations = localStorage["IYC_Animations"];
var Scaling_Animations = localStorage["Scaling_Animations"];
var NotiWin_Animations = localStorage["NotiWin_Animations"];
var CmtBox_Animations = localStorage["CmtBox_Animations"];
var ShareBox_Animations = localStorage["ShareBox_Animations"];
var Btn_Animations = localStorage["Btn_Animations"];
var Clock_Fonts = localStorage["Clock_Fonts"];
var Clock_Font_Size = localStorage["Clock_Font_Size"];
var Clock_TS = localStorage["Clock_TS"];
var Clock_Day_Indctr = localStorage["Clock_Day_Indctr"];
var Clock_Night_Indctr = localStorage["Clock_Night_Indctr"];
var Clock_Show = localStorage["Clock_Show"];
var Remove_Borders = localStorage["Remove_Borders"];
var Remove_Gaps = localStorage["Remove_Gaps"];
var Resize_NotiWindow = localStorage["Resize_NotiWindow"];
var Resize_NotiWindow_Actual_Size = Resize_NotiWindow - 30;
var Resize_NotiWindow_Post_Text_Size = Resize_NotiWindow - 50;
var Background_Content_Type = localStorage["Background_Content_Type"];
var Background_URL = localStorage["Background_URL"];
var Background_Opacity = localStorage["Background_Opacity"];
var Posts_Opacity = localStorage["Posts_Opacity"];
var Background_Display = localStorage["Background_Display"];
var Background_Color = localStorage["Background_Color"];

function getIYC() {
    var languagePairs = {
        '首页': { head: '人在您的圈子中', weather: '天气', middle: '更新排名', foot: '查看全部', loading: '正在载入天气信息...' },
        '主頁': { head: '人在你的社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        '首頁': { head: '人在你的社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        'ホーム': { head: '人をサークルに追加', weather: '天気', middle: 'アップデート', foot: 'すべて表示', loading: '気象情報読み込み中...' },
        'Default': { head: 'In your circles', weather: 'Weather', middle: 'Update', foot: 'View all', loading: 'Loading weather...' }
    }

    var languagePairsThin = {
        '首页': { head: '人在 </br> 您的圈子中', weather: '天气', middle: '更新排名', foot: '查看全部', loading: '正在载入天气信息...' },
        '主頁': { head: '人在你的 </br> 社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        '首頁': { head: '人在你的 </br> 社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        'ホーム': { head: '人を </br> サークルに追加', weather: '天気', middle: 'アップデート', foot: 'すべて表示', loading: '気象情報読み込み中...' },
        'Default': { head: 'In </br> your circles', weather: 'Weather', middle: 'Update', foot: 'View all', loading: 'Loading weather...' }
    }

    if (document.URL.match(/https:\/\/plus\.google\.com(\/u\/\d)?/)) {
        var ajax = new XMLHttpRequest();
        ajax.onreadystatechange = function () {
            if (ajax.readyState == 4 && ajax.status == 200) {
                var arr = eval('//' + ajax.responseText);
                var userptr = arr[0][0][2];
                var userRanksArr = new Array();
                var userRankUpdateDate = new Array();
                localStorage.setItem('IYC_Data', ajax.responseText);
                var IYC_Data = localStorage["IYC_Data"];

                var matchPair;
                if (document.getElementsByClassName("lCd Hyc fJb").length > 0) {
                    if (document.getElementsByClassName("Ypa jw Yc am").length > 0 && document.getElementsByClassName("Ypa jw Yc am")[0].clientWidth >= 400) {
                        matchPair = languagePairs[document.getElementsByClassName("lCd Hyc fJb")[0].textContent];
                        if (!matchPair)
                            matchPair = languagePairs['Default'];
                    }
                    else {
                        matchPair = languagePairsThin[document.getElementsByClassName("lCd Hyc fJb")[0].textContent];
                        if (!matchPair)
                            matchPair = languagePairsThin['Default'];
                    }
                }
                else
                    matchPair = languagePairs['Default'];

                var container;
                if (document.getElementsByClassName('ona Fdb bsa')[0] != undefined) {
                    if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 1080)
                        container = document.getElementsByClassName('Ypa jw Yc am')[2];
                    else if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 720)
                        container = document.getElementsByClassName('Ypa jw Yc am')[1];
                }
                var html = '<div class="B3 Kg"><ul class="Bx wg"><li class="Zz fj c7c" rowindex="0"><div class="N5 Mq"><div><div class="Sla">';
                for (var i = 0; i < Math.min(userptr.length, WallofAvatars) ; i++) {
                    userRanksArr[i] = new Array(13);
                    if (userptr[i] != undefined && userptr[i] != null) {
                        if (userptr[i][0] != undefined && userptr[i][2] != undefined && userptr[i][0] != null && userptr[i][2] != null) {
                            if (userptr[i][0][2] != undefined && userptr[i][2][0] != undefined && userptr[i][0][2] != null && userptr[i][2][0] != null) {
                                var userid = userptr[i][0][2];
                                var username = userptr[i][2][0];
                                var relevance, userimg;
                                if (userptr[i][2][3] != undefined && userptr[i][2][3] != null)
                                    relevance = userptr[i][2][3];
                                else
                                    relevance = 0.0;
                                var relevanceAprox = userptr[i][2][19];
                                var usermail = userptr[i][0][0];
                                if (userptr[i][0][0] == undefined)
                                    usermail = 'N\/A';
                                if (userptr[i][2][8] != undefined && userptr[i][2][8] != null)
                                    userimg = userptr[i][2][8];
                                else
                                    userimg = "ssl.gstatic.com/s2/profiles/images/silhouette64.png";
                                var imgid = 'gbimg' + i
                                userimg = userimg.replace('/photo.jpg', '/s' + 2 * IYC_Size + '-c-k/photo.jpg');
                                var tmp1 = '<div class="w0a d-k-l qgc o-U-s" colindex="' + i + '" style="float: left;"><div class="gbrlvc">' + '' + '</div><a href="./' + userid + '" class="ob Jk" oid="' + userid + '"><img src="' + userimg + '" width="' + IYC_Size + 'px" height="' + IYC_Size + 'px" alt="' + username + '" class="ho rgc" id="' + imgid + '" oid="' + userid + '" title="' + userid + ' ' + username + ' ' + relevance + ' ' + usermail + '"></a></div>';
                                if (i < Math.min(userptr.length, IYC_Num))
                                    html += tmp1;
                                userRanksArr[i][0] = userid;
                                userRanksArr[i][1] = username;
                                userRanksArr[i][2] = relevance;
                                userRanksArr[i][3] = relevanceAprox;
                                userRanksArr[i][7] = username;
                                userRanksArr[i][10] = userimg;
                            }
                        }
                    }
                }
                Date.prototype.getDOY = function () {
                    var onejan = new Date(this.getFullYear(), 0, 1);
                    return Math.ceil((this - onejan) / 86400000);
                }
                function commafy(num) {
                    var str = num.toString().split('.');
                    if (str[0].length >= 4) {
                        str[0] = str[0].replace(/(\d)(?=(\d{3})+$)/g, '$1,');
                    }
                    if (str[1] && str[1].length >= 4) {
                        str[1] = str[1].replace(/(\d{3})/g, '$1 ');
                    }
                    return str.join('.');
                }
                if (localStorage["userRankArrPresent"] == undefined || localStorage["userRankArrPresent"] == "") {
                    userRankUpdateDate[0] = new Date().getFullYear();
                    userRankUpdateDate[1] = new Date().getMonth();
                    userRankUpdateDate[2] = new Date().getDate();
                    for (var i = 0; i < userRanksArr.length; i++) {
                        if (userRanksArr[i] != undefined) {
                            userRanksArr[i][6] = true;
                            userRanksArr[i][8] = false;
                            userRanksArr[i][11] = false;
                        }
                    }
                    localStorage["userRankArrPresent"] = JSON.stringify(userRanksArr);
                    localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                }
                if (localStorage["userRankUpdateDate"] == undefined) {
                    userRankUpdateDate[0] = new Date().getFullYear();
                    userRankUpdateDate[1] = new Date().getMonth();
                    userRankUpdateDate[2] = new Date().getDate();
                    localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                }
                else if (JSON.stringify(userRanksArr) != localStorage["userRankArrPresent"]) {
                    var storedUserRankArr = JSON.parse(localStorage["userRankArrPresent"]);
                    var storedUpdateDateArr = JSON.parse(localStorage["userRankUpdateDate"]);
                    var storedUpdateDate = new Date(storedUpdateDateArr[0], storedUpdateDateArr[1], storedUpdateDateArr[2]);
                    if ((storedUpdateDateArr[0] == new Date().getFullYear() && new Date().getDOY() - storedUpdateDate.getDOY() > 1) || (storedUpdateDateArr[0] < new Date().getFullYear())) {
                        var rankDifference;
                        var relevanceDifference;
                        for (var j = 0; j < userRanksArr.length; j++) {
                            var searchUIDTarget = storedUserRankArr[j][0];
                            for (k = 0; k < userRanksArr.length; k++) {
                                if (userRanksArr[k] != undefined) {
                                    if (userRanksArr[k][0] == searchUIDTarget) {
                                        rankDifference = j - k;
                                        relevanceDifference = (storedUserRankArr[k][2] * 100 - userRanksArr[j][2] * 100).toFixed(1);
                                        userRanksArr[k][4] = rankDifference;
                                        userRanksArr[k][5] = relevanceDifference;
                                        if (j > IYC_Num - 1 && k <= IYC_Num - 1) {
                                            userRanksArr[k][6] = true;
                                        }
                                        else if (j == k) {
                                            userRanksArr[k][6] = false;
                                        }
                                        else if (j < IYC_Num - 1 && k <= IYC_Num - 1) {
                                            userRanksArr[k][6] = false;
                                        }
                                        if (userRanksArr[k][9] == null) {
                                            userRanksArr[k][9] = userRanksArr[k][7];
                                        }
                                        if (storedUserRankArr[k][7] == userRanksArr[k][7]) {
                                            userRanksArr[k][8] = false;
                                            userRanksArr[k][9] = userRanksArr[k][7];
                                        }
                                        else if (storedUserRankArr[k][7] != userRanksArr[k][7]) {
                                            userRanksArr[k][8] = true;
                                        }
                                        if (userRanksArr[k][12] == null) {
                                            userRanksArr[k][12] = userRanksArr[k][10];
                                        }
                                        if (storedUserRankArr[k][10] == userRanksArr[k][10]) {
                                            userRanksArr[k][11] = false;
                                            userRanksArr[k][12] = userRanksArr[k][10];
                                        }
                                        else if (storedUserRankArr[k][9] != userRanksArr[k][9]) {
                                            userRanksArr[k][11] = true;
                                        }
                                    }
                                }
                            }
                        }
                        localStorage["userRankArrPresent"] = JSON.stringify(userRanksArr);
                        userRankUpdateDate[0] = new Date().getFullYear();
                        userRankUpdateDate[1] = new Date().getMonth();
                        userRankUpdateDate[2] = new Date().getDate();
                        localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                    }
                }
                else {
                    var storedUserRankArr = JSON.parse(localStorage["userRankArrPresent"]);
                    var storedUpdateDateArr = JSON.parse(localStorage["userRankUpdateDate"]);
                    var storedUpdateDate = new Date(storedUpdateDateArr[0], storedUpdateDateArr[1], storedUpdateDateArr[2]);
                    if ((storedUpdateDateArr[0] == new Date().getFullYear() && new Date().getDOY() - storedUpdateDate.getDOY() > 1) || (storedUpdateDateArr[0] < new Date().getFullYear())) {
                        if (JSON.stringify(userRanksArr) == localStorage["userRankArrPresent"]) {
                            for (var j = 0; j < userRanksArr.length; j++) {
                                if (userRanksArr[j] != undefined) {
                                    userRanksArr[j][4] = 0;
                                    userRanksArr[j][6] = false;
                                    userRanksArr[j][8] = false;
                                    userRanksArr[j][11] = false;
                                }
                            }
                            localStorage["userRankArrPresent"] = JSON.stringify(userRanksArr);
                            userRankUpdateDate[0] = new Date().getFullYear();
                            userRankUpdateDate[1] = new Date().getMonth();
                            userRankUpdateDate[2] = new Date().getDate();
                            localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                        }
                    }
                }
                html += '</div></div></div><div class="Xp"></li></ul></div></div>';
                var nav_wrap = document.createElement('div');
                //var linkOptions = "chrome-extension://" + extid + "/avatarsWall.html";
                //var linkOptions2 = "'" + linkOptions + "'";
                var linkOptions2 = "'" + "https://plus.google.com/circles" + "'";
                nav_wrap.innerHTML += '<div class="Tr TA" componentid="6"><div class="card"><div class="Ee fP Ue front"><div class="a5 Gi"><h3 class="EY Ni zj"><span>' + commafy(userptr.length) + '&nbsp;' + matchPair.head + '</span></h3><span role="button" class="d-s Hy Xc" id="gbweather" title="Flip to local weather card" tabindex="0" style="right: 135px;">' + matchPair.weather + '</span><span role="button" class="d-s Hy Xc" id="gbaupdt" title="Update circle ranks"tabindex="0" style="right: 65px;">' + matchPair.middle + '</span><span role="button" class="d-s Hy Xc" id="gbabtn" title="View all" tabindex="0" onclick="javascript:window.open(' + linkOptions2 + ')">' + matchPair.foot + '</span></div>' + html + '<div class="Ee fP back" style="display: none;"><font style="font-weight: bold;text-transform: uppercase;font-size: 26px;">' + matchPair.loading + '</font></div></div></div></div>';
                function flip() {
                    if (document.getElementsByClassName('card')[0].childNodes[0].style.display != 'none') {
                        document.getElementsByClassName('card')[0].className = 'card flipped';
                        setTimeout(function () { document.getElementsByClassName('card')[0].childNodes[1].style.display = ''; document.getElementsByClassName('card')[0].childNodes[0].style.display = 'none'; }, 200);
                    }
                    else if (document.getElementsByClassName('card')[0].childNodes[0].style.display == 'none') {
                        document.getElementsByClassName('card')[0].className = 'card';
                        setTimeout(function () { document.getElementsByClassName('card')[0].childNodes[0].style.display = ''; document.getElementsByClassName('card')[0].childNodes[1].style.display = 'none'; }, 200);
                    }
                }

                setInterval(function () {
                    if (document.getElementsByClassName('Sla').length == 0) {
                        var container;
                        if (document.getElementsByClassName('ona Fdb bsa')[0] != undefined) {
                            if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 1080)
                                container = document.getElementsByClassName('Ypa jw Yc am')[2];
                            else if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 720)
                                container = document.getElementsByClassName('Ypa jw Yc am')[1];
                        }
                        if (typeof (container) == 'undefined')
                            return;
                        container.insertBefore(nav_wrap, container.childNodes[0]);
                        for (var i = 0; i < userRanksArr.length; i++) {
                            var storedUserRankArr = JSON.parse(localStorage["userRankArrPresent"]);
                            var rankChangeText, relevanceChangeText, debutText;
                            var nameChangeText, avatarChangeHTML;
                            if (storedUserRankArr[i][4] != null && storedUserRankArr[i][4] != undefined) {
                                if (storedUserRankArr[i][4] > 0)
                                    rankChangeText = "▲" + storedUserRankArr[i][4] + " ";
                                else if (storedUserRankArr[i][4] == 0)
                                    rankChangeText = "〓 " + " ";
                                else if (storedUserRankArr[i][4] < 0)
                                    rankChangeText = "▼" + -storedUserRankArr[i][4] + " ";
                            }
                            else
                                //rankChangeText = "N/A ";
                                rankChangeText = "";
                            if (storedUserRankArr[i][5] != null && storedUserRankArr[i][5] != undefined) {
                                if (storedUserRankArr[i][5] > 0)
                                    relevanceChangeText = "(+" + storedUserRankArr[i][5] + ") ";
                                else if (storedUserRankArr[i][5] == 0)
                                    relevanceChangeText = "";
                                else if (storedUserRankArr[i][5] < 0)
                                    relevanceChangeText = "(" + storedUserRankArr[i][5] + ") ";
                            }
                            else
                                //relevanceChangeText = "(N/A) ";
                                relevanceChangeText = "";
                            if (storedUserRankArr[i][6] == true)
                                debutText = "NEW";
                            else
                                debutText = "";
                            if (storedUserRankArr[i][8] == true) {
                                nameChangeText = storedUserRankArr[i][9];
                            }
                            else if (storedUserRankArr[i][8] == false) {
                                nameChangeText = "";
                            }
                            if (storedUserRankArr[i][11] == true) {
                                avatarChangeHTML = "<img src='https://" + storedUserRankArr[i][12] + " width='32px' height='32px' class='ho rgc'>";
                            }
                            else if (storedUserRankArr[i][11] == false) {
                                avatarChangeHTML = "";
                            }
                            document.getElementsByClassName("gbrlvc")[i].innerText = rankChangeText + relevanceChangeText + debutText;
                            if (storedUserRankArr[i][4] > 0)
                                document.getElementsByClassName("gbrlvc")[i].style.color = "#259b24";
                            else if (storedUserRankArr[i][4] == 0) {
                                document.getElementsByClassName("gbrlvc")[i].style.color = "#9e9e9e";
                                document.getElementsByClassName("gbrlvc")[i].style.display = "none";
                            }
                            else if (storedUserRankArr[i][4] < 0 || storedUserRankArr[i][4] < 0)
                                document.getElementsByClassName("gbrlvc")[i].style.color = "#e51c23";
                            else
                                document.getElementsByClassName("gbrlvc")[i].style.color = "#ff9800";
                            if (storedUserRankArr[i][12] == "ssl.gstatic.com/s2/profiles/images/silhouette64.png") {
                                document.getElementsByClassName("gbrlvc")[i].innerHTML = "NOT FOUND";
                                document.getElementsByClassName("gbrlvc")[i].style.color = "#d01716";
                                document.getElementsByClassName("gbrlvc")[i].style.opacity = "1";
                            }
                            document.getElementById("gbaupdt").addEventListener('click', updateManually);
                        }
                    }
                    else if (document.getElementsByClassName('ona Fdb bsa')[0] != undefined) {
                        if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 1080) {
                            if (document.getElementsByClassName('Ypa jw Yc am')[2].childNodes[0].childNodes[0].className != "Tr TA") {
                                document.getElementsByClassName("Ypa jw Yc am")[2].insertBefore(document.getElementsByClassName("Tr TA")[0], document.getElementsByClassName("Ypa jw Yc am")[2].firstChild);
                            }
                        }
                        else if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 720) {
                            if (document.getElementsByClassName('Ypa jw Yc am')[1].childNodes[0].childNodes[0].className != "Tr TA") {
                                document.getElementsByClassName("Ypa jw Yc am")[1].insertBefore(document.getElementsByClassName("Tr TA")[0], document.getElementsByClassName("Ypa jw Yc am")[1].firstChild);
                            }
                        }
                    }
                    if (document.getElementById('gbweather') != undefined && document.getElementsByClassName("Ee fP back")[0] != undefined) {
                        document.getElementById('gbweather').removeEventListener('click', flip, false);
                        document.getElementsByClassName("Ee fP back")[0].removeEventListener('click', flip, false);
                        document.getElementById('gbweather').addEventListener('click', flip, false);
                        document.getElementsByClassName("Ee fP back")[0].addEventListener('click', flip, false);
                    }
                }, 3000);
            }
        };
        ajax.open('GET', document.URL.match(/https:\/\/plus\.google\.com(\/b\/\d+)/) != undefined ? document.URL.match(/https:\/\/plus\.google\.com(\/b\/\d+)/)[0] + '/_/socialgraph/lookup/circles/?ct=2&m=true&tag=fg&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j' : document.URL.match(/https:\/\/plus\.google\.com(\/u\/\d)?/)[0] + '/_/socialgraph/lookup/circles/?ct=2&m=true&tag=fg&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j', true);
        ajax.send();
    }
}

function updateManually() {
    var languagePairs = {
        '首页': { head: '人在您的圈子中', weather: '天气', middle: '更新排名', foot: '查看全部', loading: '正在载入天气信息...' },
        '主頁': { head: '人在你的社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        '首頁': { head: '人在你的社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        'ホーム': { head: '人をサークルに追加', weather: '天気', middle: 'アップデート', foot: 'すべて表示', loading: '気象情報読み込み中...' },
        'Default': { head: 'In your circles', weather: 'Weather', middle: 'Update', foot: 'View all', loading: 'Loading weather...' }
    }

    var languagePairsThin = {
        '首页': { head: '人在 </br> 您的圈子中', weather: '天气', middle: '更新排名', foot: '查看全部', loading: '正在载入天气信息...' },
        '主頁': { head: '人在你的 </br> 社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        '首頁': { head: '人在你的 </br> 社交圈中', weather: '天氣', middle: '更新排名', foot: '檢視全部', loading: '正在載入天氣信息...' },
        'ホーム': { head: '人を </br> サークルに追加', weather: '天気', middle: 'アップデート', foot: 'すべて表示', loading: '気象情報読み込み中...' },
        'Default': { head: 'In </br> your circles', weather: 'Weather', middle: 'Update', foot: 'View all', loading: 'Loading weather...' }
    }

    if (document.URL.match(/https:\/\/plus\.google\.com(\/u\/\d)?/)) {
        var ajax = new XMLHttpRequest();
        ajax.onreadystatechange = function () {
            if (ajax.readyState == 4 && ajax.status == 200) {
                var arr = eval('//' + ajax.responseText);
                var userptr = arr[0][0][2];
                var userRanksArr = new Array();
                var userRankUpdateDate = new Array();
                localStorage.setItem('IYC_Data', ajax.responseText);
                var IYC_Data = localStorage["IYC_Data"];

                var matchPair;
                if (document.getElementsByClassName("lCd Hyc fJb").length > 0) {
                    if (document.getElementsByClassName("Ypa jw Yc am").length > 0 && document.getElementsByClassName("Ypa jw Yc am")[0].clientWidth >= 400) {
                        matchPair = languagePairs[document.getElementsByClassName("lCd Hyc fJb")[0].textContent];
                        if (!matchPair)
                            matchPair = languagePairs['Default'];
                    }
                    else {
                        matchPair = languagePairsThin[document.getElementsByClassName("lCd Hyc fJb")[0].textContent];
                        if (!matchPair)
                            matchPair = languagePairsThin['Default'];
                    }
                }
                else
                    matchPair = languagePairs['Default'];

                var container;
                if (document.getElementsByClassName('ona Fdb bsa')[0] != undefined) {
                    if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 1080)
                        container = document.getElementsByClassName('Ypa jw Yc am')[2];
                    else if (document.getElementsByClassName('ona Fdb bsa')[0].clientWidth >= 720)
                        container = document.getElementsByClassName('Ypa jw Yc am')[1];
                }
                var html = '<div class="B3 Kg"><ul class="Bx wg"><li class="Zz fj c7c" rowindex="0"><div class="N5 Mq"><div><div class="Sla">';
                for (var i = 0; i < Math.min(userptr.length, WallofAvatars) ; i++) {
                    userRanksArr[i] = new Array(13);
                    if (userptr[i] != undefined && userptr[i] != null) {
                        if (userptr[i][0] != undefined && userptr[i][2] != undefined && userptr[i][0] != null && userptr[i][2] != null) {
                            if (userptr[i][0][2] != undefined && userptr[i][2][0] != undefined && userptr[i][0][2] != null && userptr[i][2][0] != null) {
                                var userid = userptr[i][0][2];
                                var username = userptr[i][2][0];
                                var relevance, userimg;
                                if (userptr[i][2][3] != undefined && userptr[i][2][3] != null)
                                    relevance = userptr[i][2][3];
                                else
                                    relevance = 0.0;
                                var relevanceAprox = userptr[i][2][19];
                                var usermail = userptr[i][0][0];
                                if (userptr[i][0][0] == undefined)
                                    usermail = 'N\/A';
                                if (userptr[i][2][8] != undefined && userptr[i][2][8] != null)
                                    userimg = userptr[i][2][8];
                                else
                                    userimg = "ssl.gstatic.com/s2/profiles/images/silhouette64.png";
                                var imgid = 'gbimg' + i
                                userimg = userimg.replace('/photo.jpg', '/s' + 2 * IYC_Size + '-c-k/photo.jpg');
                                var tmp1 = '<div class="w0a d-k-l qgc o-U-s" colindex="' + i + '" style="float: left;"><div class="gbrlvc">' + '' + '</div><a href="./' + userid + '" class="ob Jk" oid="' + userid + '"><img src="' + userimg + '" width="' + IYC_Size + 'px" height="' + IYC_Size + 'px" alt="' + username + '" class="ho rgc" id="' + imgid + '" oid="' + userid + '" title="' + userid + ' ' + username + ' ' + relevance + ' ' + usermail + '"></a></div>';
                                if (i < Math.min(userptr.length, IYC_Num))
                                    html += tmp1;
                                userRanksArr[i][0] = userid;
                                userRanksArr[i][1] = username;
                                userRanksArr[i][2] = relevance;
                                userRanksArr[i][3] = relevanceAprox;
                                userRanksArr[i][7] = username;
                                userRanksArr[i][10] = userimg;
                            }
                        }
                    }
                }
                Date.prototype.getDOY = function () {
                    var onejan = new Date(this.getFullYear(), 0, 1);
                    return Math.ceil((this - onejan) / 86400000);
                }
                function commafy(num) {
                    var str = num.toString().split('.');
                    if (str[0].length >= 4) {
                        str[0] = str[0].replace(/(\d)(?=(\d{3})+$)/g, '$1,');
                    }
                    if (str[1] && str[1].length >= 4) {
                        str[1] = str[1].replace(/(\d{3})/g, '$1 ');
                    }
                    return str.join('.');
                }
                if (localStorage["userRankArrPresent"] == undefined || localStorage["userRankArrPresent"] == "") {
                    userRankUpdateDate[0] = new Date().getFullYear();
                    userRankUpdateDate[1] = new Date().getMonth();
                    userRankUpdateDate[2] = new Date().getDate();
                    for (var i = 0; i < userRanksArr.length; i++) {
                        if (userRanksArr[i] != undefined) {
                            userRanksArr[i][6] = true;
                            userRanksArr[i][8] = false;
                            userRanksArr[i][11] = false;
                        }
                    }
                    localStorage["userRankArrPresent"] = JSON.stringify(userRanksArr);
                    localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                }
                if (localStorage["userRankUpdateDate"] == undefined) {
                    userRankUpdateDate[0] = new Date().getFullYear();
                    userRankUpdateDate[1] = new Date().getMonth();
                    userRankUpdateDate[2] = new Date().getDate();
                    localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                }
                else if (JSON.stringify(userRanksArr) != localStorage["userRankArrPresent"]) {
                    var storedUserRankArr = JSON.parse(localStorage["userRankArrPresent"]);
                    var storedUpdateDateArr = JSON.parse(localStorage["userRankUpdateDate"]);
                    var storedUpdateDate = new Date(storedUpdateDateArr[0], storedUpdateDateArr[1], storedUpdateDateArr[2]);
                    var rankDifference;
                    var relevanceDifference;
                    for (var j = 0; j < userRanksArr.length; j++) {
                        var searchUIDTarget = storedUserRankArr[j][0];
                        for (k = 0; k < userRanksArr.length; k++) {
                            if (userRanksArr[k] != undefined) {
                                if (userRanksArr[k][0] == searchUIDTarget) {
                                    rankDifference = j - k;
                                    relevanceDifference = (storedUserRankArr[k][2] * 100 - userRanksArr[j][2] * 100).toFixed(1);
                                    userRanksArr[k][4] = rankDifference;
                                    userRanksArr[k][5] = relevanceDifference;
                                    if (j > IYC_Num - 1 && k <= IYC_Num - 1) {
                                        userRanksArr[k][6] = true;
                                    }
                                    else if (j == k) {
                                        userRanksArr[k][6] = false;
                                    }
                                    else if (j < IYC_Num - 1 && k <= IYC_Num - 1) {
                                        userRanksArr[k][6] = false;
                                    }
                                    if (userRanksArr[k][9] == null) {
                                        userRanksArr[k][9] = userRanksArr[k][7];
                                    }
                                    if (storedUserRankArr[k][7] == userRanksArr[k][7]) {
                                        userRanksArr[k][8] = false;
                                        userRanksArr[k][9] = userRanksArr[k][7];
                                    }
                                    else if (storedUserRankArr[k][7] != userRanksArr[k][7]) {
                                        userRanksArr[k][8] = true;
                                    }
                                    if (userRanksArr[k][12] == null) {
                                        userRanksArr[k][12] = userRanksArr[k][10];
                                    }
                                    if (storedUserRankArr[k][10] == userRanksArr[k][10]) {
                                        userRanksArr[k][11] = false;
                                        userRanksArr[k][12] = userRanksArr[k][10];
                                    }
                                    else if (storedUserRankArr[k][9] != userRanksArr[k][9]) {
                                        userRanksArr[k][11] = true;
                                    }
                                }
                            }
                        }
                    }
                    localStorage["userRankArrPresent"] = JSON.stringify(userRanksArr);
                    userRankUpdateDate[0] = new Date().getFullYear();
                    userRankUpdateDate[1] = new Date().getMonth();
                    userRankUpdateDate[2] = new Date().getDate();
                    localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                }
                else {
                    var storedUserRankArr = JSON.parse(localStorage["userRankArrPresent"]);
                    var storedUpdateDateArr = JSON.parse(localStorage["userRankUpdateDate"]);
                    var storedUpdateDate = new Date(storedUpdateDateArr[0], storedUpdateDateArr[1], storedUpdateDateArr[2]);
                    if ((storedUpdateDateArr[0] == new Date().getFullYear() && new Date().getDOY() - storedUpdateDate.getDOY() > 1) || (storedUpdateDateArr[0] < new Date().getFullYear())) {
                        if (JSON.stringify(userRanksArr) == localStorage["userRankArrPresent"]) {
                            for (var j = 0; j < userRanksArr.length; j++) {
                                if (userRanksArr[j] != undefined) {
                                    userRanksArr[j][4] = 0;
                                    userRanksArr[j][6] = false;
                                    userRanksArr[j][8] = false;
                                    userRanksArr[j][11] = false;
                                }
                            }
                            localStorage["userRankArrPresent"] = JSON.stringify(userRanksArr);
                            userRankUpdateDate[0] = new Date().getFullYear();
                            userRankUpdateDate[1] = new Date().getMonth();
                            userRankUpdateDate[2] = new Date().getDate();
                            localStorage["userRankUpdateDate"] = JSON.stringify(userRankUpdateDate);
                        }
                    }
                }
                html += '</div></div></div><div class="Xp"></li></ul></div></div>';
                var nav_wrap = document.createElement('div');
                //var linkOptions = "chrome-extension://" + extid + "/avatarsWall.html";
                //var linkOptions2 = "'" + linkOptions + "'";
                var linkOptions2 = "'" + "https://plus.google.com/circles" + "'";
                nav_wrap.innerHTML += '<div class="Tr TA" componentid="6"><div class="card"><div class="Ee fP Ue front"><div class="a5 Gi"><h3 class="EY Ni zj"><span>' + commafy(userptr.length) + '&nbsp;' + matchPair.head + '</span></h3><span role="button" class="d-s Hy Xc" id="gbweather" title="Flip to local weather card" tabindex="0" style="right: 135px;">' + matchPair.weather + '</span><span role="button" class="d-s Hy Xc" id="gbaupdt" title="Update circle ranks"tabindex="0" style="right: 65px;">' + matchPair.middle + '</span><span role="button" class="d-s Hy Xc" id="gbabtn" title="View all" tabindex="0" onclick="javascript:window.open(' + linkOptions2 + ')">' + matchPair.foot + '</span></div>' + html + '<div class="Ee fP back" style="display: none;"><font style="font-weight: bold;text-transform: uppercase;font-size: 26px;">' + matchPair.loading + '</font></div></div></div></div>';
                if (document.getElementsByClassName('Ypa jw Yc am')[2] != undefined) {
                    document.getElementsByClassName('Ypa jw Yc am')[2].firstChild.innerHTML = nav_wrap.innerHTML;
                    for (var i = 0; i < userRanksArr.length; i++) {
                        var storedUserRankArr = JSON.parse(localStorage["userRankArrPresent"]);
                        var rankChangeText, relevanceChangeText, debutText;
                        var nameChangeText, avatarChangeHTML;
                        if (storedUserRankArr[i][4] != null && storedUserRankArr[i][4] != undefined) {
                            if (storedUserRankArr[i][4] > 0)
                                rankChangeText = "▲" + storedUserRankArr[i][4] + " ";
                            else if (storedUserRankArr[i][4] == 0)
                                rankChangeText = "〓 " + " ";
                            else if (storedUserRankArr[i][4] < 0)
                                rankChangeText = "▼" + -storedUserRankArr[i][4] + " ";
                        }
                        else
                            //rankChangeText = "N/A ";
                            rankChangeText = "";
                        if (storedUserRankArr[i][5] != null && storedUserRankArr[i][5] != undefined) {
                            if (storedUserRankArr[i][5] > 0)
                                relevanceChangeText = "(+" + storedUserRankArr[i][5] + ") ";
                            else if (storedUserRankArr[i][5] == 0)
                                relevanceChangeText = "";
                            else if (storedUserRankArr[i][5] < 0)
                                relevanceChangeText = "(" + storedUserRankArr[i][5] + ") ";
                        }
                        else
                            //relevanceChangeText = "(N/A) ";
                            relevanceChangeText = "";
                        if (storedUserRankArr[i][6] == true)
                            debutText = "NEW";
                        else
                            debutText = "";
                        if (storedUserRankArr[i][8] == true) {
                            nameChangeText = storedUserRankArr[i][9];
                        }
                        else if (storedUserRankArr[i][8] == false) {
                            nameChangeText = "";
                        }
                        if (storedUserRankArr[i][11] == true) {
                            avatarChangeHTML = "<img src='https://" + storedUserRankArr[i][12] + " width='32px' height='32px' class='ho rgc'>";
                        }
                        else if (storedUserRankArr[i][11] == false) {
                            avatarChangeHTML = "";
                        }
                        document.getElementsByClassName("gbrlvc")[i].innerText = rankChangeText + relevanceChangeText + debutText;
                        if (storedUserRankArr[i][4] > 0)
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#259b24";
                        else if (storedUserRankArr[i][4] == 0) {
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#9e9e9e";
                        }
                        else if (storedUserRankArr[i][4] < 0 || storedUserRankArr[i][4] < 0)
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#e51c23";
                        else
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#ff9800";
                        if (storedUserRankArr[i][12] == "ssl.gstatic.com/s2/profiles/images/silhouette64.png") {
                            document.getElementsByClassName("gbrlvc")[i].innerHTML = "NOT FOUND";
                            document.getElementsByClassName("gbrlvc")[i].style.color = "rgba(255, 10, 0, 0.9)";
                            document.getElementsByClassName("gbrlvc")[i].style.opacity = "#d01716";
                        }
                        document.getElementById("gbaupdt").addEventListener('click', updateManually);
                    }
                }
                else if (document.getElementsByClassName('Ypa jw Yc am')[1] != undefined) {
                    document.getElementsByClassName('Ypa jw Yc am')[1].firstChild.innerHTML = nav_wrap.innerHTML;
                    for (var i = 0; i < userRanksArr.length; i++) {
                        var storedUserRankArr = JSON.parse(localStorage["userRankArrPresent"]);
                        var rankChangeText, relevanceChangeText, debutText;
                        var nameChangeText, avatarChangeHTML;
                        if (storedUserRankArr[i][4] != null && storedUserRankArr[i][4] != undefined) {
                            if (storedUserRankArr[i][4] > 0)
                                rankChangeText = "▲" + storedUserRankArr[i][4] + " ";
                            else if (storedUserRankArr[i][4] == 0)
                                rankChangeText = "〓 " + " ";
                            else if (storedUserRankArr[i][4] < 0)
                                rankChangeText = "▼" + -storedUserRankArr[i][4] + " ";
                        }
                        else
                            //rankChangeText = "N/A ";
                            rankChangeText = "";
                        if (storedUserRankArr[i][5] != null && storedUserRankArr[i][5] != undefined) {
                            if (storedUserRankArr[i][5] > 0)
                                relevanceChangeText = "(+" + storedUserRankArr[i][5] + ") ";
                            else if (storedUserRankArr[i][5] == 0)
                                relevanceChangeText = "";
                            else if (storedUserRankArr[i][5] < 0)
                                relevanceChangeText = "(" + storedUserRankArr[i][5] + ") ";
                        }
                        else
                            //relevanceChangeText = "(N/A) ";
                            relevanceChangeText = "";
                        if (storedUserRankArr[i][6] == true)
                            debutText = "NEW";
                        else
                            debutText = "";
                        if (storedUserRankArr[i][8] == true) {
                            nameChangeText = storedUserRankArr[i][9];
                        }
                        else if (storedUserRankArr[i][8] == false) {
                            nameChangeText = "";
                        }
                        if (storedUserRankArr[i][11] == true) {
                            avatarChangeHTML = "<img src='https://" + storedUserRankArr[i][12] + " width='32px' height='32px' class='ho rgc'>";
                        }
                        else if (storedUserRankArr[i][11] == false) {
                            avatarChangeHTML = "";
                        }
                        document.getElementsByClassName("gbrlvc")[i].innerText = rankChangeText + relevanceChangeText + debutText;
                        if (storedUserRankArr[i][4] > 0)
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#259b24";
                        else if (storedUserRankArr[i][4] == 0) {
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#9e9e9e";
                        }
                        else if (storedUserRankArr[i][4] < 0 || storedUserRankArr[i][4] < 0)
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#e51c23";
                        else
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#ff9800";
                        if (storedUserRankArr[i][12] == "ssl.gstatic.com/s2/profiles/images/silhouette64.png") {
                            document.getElementsByClassName("gbrlvc")[i].innerHTML = "NOT FOUND";
                            document.getElementsByClassName("gbrlvc")[i].style.color = "#d01716";
                            document.getElementsByClassName("gbrlvc")[i].style.opacity = "1";
                        }
                        document.getElementById("gbaupdt").addEventListener('click', updateManually);
                    }
                }
            }
        };
        ajax.open('GET', document.URL.match(/https:\/\/plus\.google\.com(\/b\/\d+)/) != undefined ? document.URL.match(/https:\/\/plus\.google\.com(\/b\/\d+)/)[0] + '/_/socialgraph/lookup/circles/?ct=2&m=true&tag=fg&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j' : document.URL.match(/https:\/\/plus\.google\.com(\/u\/\d)?/)[0] + '/_/socialgraph/lookup/circles/?ct=2&m=true&tag=fg&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j', true);
        ajax.send();
    }
}

if (IYC_Display == 'Display') {
    getIYC();
}

var css_Stream_Profile_Photo = ".Uk.wi.hE {\nheight: 64px !important;\nmargin-top: 10px !important;\nwidth: 64px !important;\n}\n\n.Ol.Rf, .fK {\n-webkit-transition:all .5s ease;\n-moz-transition:all .5s ease;\n-o-transition:all .5s ease;\n}\n\n.Ol.Rf:hover {\n-webkit-transform:scale(1.5);\n-moz-transform:scale(1.5);\n-o-transform:scale(1.5);\n-webkit-transition:all .5s ease;\n-moz-transition:all .5s ease;\n-o-transition:all .5s ease;\n}\n}";

var css_Profile_Photo_Animations = ".Ol.Rf:hover, .fK:hover, .Ut:hover {\n-webkit-transform:scale(1.5);\n-moz-transform:scale(1.5);\n-o-transform:scale(1.5);\n-webkit-transition:all .5s ease;\n-moz-transition:all .5s ease;\n-o-transition:all .5s ease;\n}\n}";

var css_Upper_Right = ".hp, .qu {\nbackground-color: transparent !important;\n}\n\n.Om {\nwidth: 275px !important;\n}\n\n.bja {\nwidth: auto;\n}\n\n.TA {\npadding-top: 0px !important;\n}\n\n.ag, .fK, .Zb {\nheight: 48px !important;\nwidth: 48px !important;\n}\n\n#gbimg0, #gbimg1 {\nwidth: 128px;\nheight: 128px;\n-webkit-transform:scale(1);\n-moz-transform:scale(1);\n-o-transform:scale(1);\n-webkit-transform:rotate(0deg);\n-moz-transform:rotate(0deg);\n-o-transform:rotate(0deg);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg0:hover, #gbimg1:hover {\n-webkit-transform:scale(1);\n-moz-transform:scale(1);\n-o-transform:scale(1);\n-webkit-transform:rotate(360deg);\n-moz-transform:rotate(360deg);\n-o-transform:rotate(360deg);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg2, #gbimg3, #gbimg4 {\nwidth: 85.33px;\nheight: 85.33px;\n-webkit-transform:scale(1);\n-moz-transform:scale(1);\n-o-transform:scale(1);\n-webkit-transform:rotate(0deg);\n-moz-transform:rotate(0deg);\n-o-transform:rotate(0deg);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg2:hover, #gbimg3:hover, #gbimg4:hover {\n-webkit-transform:scale(1);\n-moz-transform:scale(1);\n-o-transform:scale(1);\n-webkit-transform:rotate(360deg);\n-moz-transform:rotate(360deg);\n-o-transform:rotate(360deg);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg5, #gbimg6, #gbimg7, #gbimg8 {\nwidth: 64px;\nheight: 64px;\n-webkit-transform:scale(1);\n-moz-transform:scale(1);\n-o-transform:scale(1);\n-webkit-transform:rotate(0deg);\n-moz-transform:rotate(0deg);\n-o-transform:rotate(0deg);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg5:hover, #gbimg6:hover, #gbimg7:hover, #gbimg8:hover {\n-webkit-transform:scale(1);\n-moz-transform:scale(1);\n-o-transform:scale(1);\n-webkit-transform:rotate(360deg);\n-moz-transform:rotate(360deg);\n-o-transform:rotate(360deg);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg9, #gbimg10, #gbimg11, #gbimg12, #gbimg13 {\nwidth: 51.2px;\nheight: 51.2px;\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg9:hover, #gbimg10:hover, #gbimg11:hover, #gbimg12:hover, #gbimg13:hover {\n-webkit-transform:scale(3);\n-moz-transform:scale(3);\n-o-transform:scale(3);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg14, #gbimg15, #gbimg16, #gbimg17, #gbimg18, #gbimg19 {\nwidth: 42.66px;\nheight: 42.66px;\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg14:hover, #gbimg15:hover, #gbimg16:hover, #gbimg17:hover, #gbimg18:hover, #gbimg19:hover {\n-webkit-transform:scale(3);\n-moz-transform:scale(3);\n-o-transform:scale(3);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg20, #gbimg21, #gbimg22, #gbimg23, #gbimg24, #gbimg25, #gbimg26 {\nwidth: 36.57px;\nheight: 36.57px;\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg20:hover, #gbimg21:hover, #gbimg22:hover, #gbimg23:hover, #gbimg24:hover, #gbimg25:hover, #gbimg26:hover {\n-webkit-transform:scale(3);\n-moz-transform:scale(3);\n-o-transform:scale(3);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg27, #gbimg28, #gbimg29, #gbimg30, #gbimg31, #gbimg32, #gbimg33, #gbimg34 {\nwidth: 32px;\nheight: 32px;\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg27:hover, #gbimg28:hover, #gbimg29:hover, #gbimg30:hover, #gbimg31:hover, #gbimg32:hover, #gbimg33:hover, #gbimg34:hover {\n-webkit-transform:scale(3);\n-moz-transform:scale(3);\n-o-transform:scale(3);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg35, #gbimg36, #gbimg37, #gbimg38, #gbimg39, #gbimg40, #gbimg41, #gbimg42, #gbimg43 {\nwidth: 28.44px;\nheight: 28.44px;\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg35:hover, #gbimg36:hover, #gbimg37:hover, #gbimg38:hover, #gbimg39:hover, #gbimg40:hover, #gbimg41:hover, #gbimg42:hover, #gbimg43:hover {\n-webkit-transform:scale(3);\n-moz-transform:scale(3);\n-o-transform:scale(3);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg44, #gbimg45, #gbimg46, #gbimg47, #gbimg48, #gbimg49, #gbimg50, #gbimg51, #gbimg52, #gbimg53 {\nwidth: 25.6px;\nheight: 25.6px;\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n\n#gbimg44:hover, #gbimg45:hover, #gbimg46:hover, #gbimg47:hover, #gbimg48:hover, #gbimg49:hover, #gbimg50:hover, #gbimg51:hover, #gbimg52:hover, #gbimg53:hover {\n-webkit-transform:scale(3);\n-moz-transform:scale(3);\n-o-transform:scale(3);\n-webkit-transition:all 1s ease;\n-moz-transition:all 1s ease;\n-o-transition:all 1s ease;\n}\n}";

var css_Icons = ".hp, .qu {\nbackground-color: transparent !important;\n}\n\n.bja {\nwidth: auto;\n}\n\n.Ala {\npadding-top: 20px !important;\nmargin-top: 0px !important;\ntop: initial !important;\n}\n\n.go {\nheight: 48px !important;\nwidth: 48px !important;\n}\n\n.go {\nborder-radius: 50% !important;\n}\n\n.roster_row>button>img, .ho {\nborder-radius: 50% !important;\n}\n\n.co {\nborder-radius: 50% !important;\n}\n\n.om {\nborder-radius: 50% !important;\n}.Wh {\nmargin: 0 0 0 -52px !important;\n}\n\n.oBNzfb {\npadding-left: 0 !important;\n}\n}";

var css_Settings_Card_Your_Photo = "#gbmpi {\nheight: 128px !important;\nwidth: 128px !important;\n}\n}";

var css_Mention_List = ".t-C-J {\nheight: 48px !important;\nwidth: 48px !important;\n}\n}";

var css_Notification_Photos_and_Border = ".om {\nborder: 0px solid #444 !important;\nheight: 56px !important;\nwidth: 56px !important;\nmargin-top: -6px !important;\n}\n\n.Lv {\nheight: 56px !important;\nwidth: 56px !important;\n}\n\n.Kaa {\nborder: 0px solid black !important;\ntop: -4px !important;\nleft: 2px !important;\n}\n\n.Jaa {\nborder: 0px solid #3D3D3D !important;\ntop: -2px !important;\nleft: 4px !important;\n}\n\n.Gf.Lu {\nheight: 56px !important;\nwidth: 56px !important;\nmargin-top: -6px !important;\n}\n\n.WtbUqb.Wm.F76eVc {\nborder: 0px solid black !important;\ntop: -2px !important;\nleft: 4px !important;\n}\n\n.WtbUqb.Wm.G31rIe {\nborder: 0px solid #3D3D3D !important;top: -4px !important;\nleft: 2px !important;\n}\n\n.wE.dPbJNd.iK.ek {\nwidth: 56px !important;\nheight: 56px !important;\n}\n\n.dPbJNd.iK.ek.Lu {\nwidth: 56px !important;\nheight: 56px !important;\n}\n\nspan.Xm, img.Xm {\nborder: 0px solid #444 !important;\n}\n\ndiv.Gf.no {\nheight: 52px !important;\nwidth: 52px !important;\n}\n}";

var css_Notifications_Animations = ".Jc.yl.jfa.en:hover {\n background-color: red;\n -webkit-transition: background-color 1s linear, color 1s linear, width 1s linear;\n -moz-transition: background-color 1s linear, color 1s linear, width 1s linear;\n -o-transition: background-color 1s linear, color 1s linear, width 1s linear;\n-webkit-transition-duration:1s;\n-moz-transition-duration:1s;\n-o-transition-duration:1s;\n}\n\n.Jc.yl.jfa.mfa:hover {\n background-color: aqua;\n -webkit-transition: background-color 1s linear, color 1s linear, width 1s linear;\n -moz-transition: background-color 1s linear, color 1s linear, width 1s linear;\n -o-transition: background-color 1s linear, color 1s linear, width 1s linear;\n-webkit-transition-duration:1s;\n-moz-transition-duration:1s;\n-o-transition-duration:1s;\n}\n}";

var css_Buttons_Animations = ".d-k-l.b-c:hover {\n-webkit-transform: scale(1.2);\n-moz-transform: scale(1.2);\n-o-transform: scale(1.2);\n-webkit-transition-duration:.0s;\n-moz-transition-duration:.0s;\n-o-transition-duration:.0s;\n}\n}";

var css_Share_Box_Animations = ".Ff {\nbackground: white;\n-webkit-transition: background-color 1s linear, color 1s linear, width 1s linear !important;\n-moz-transition: background-color 1s linear, color 1s linear, width 1s linear !important;\n-o-transition: background-color 1s linear, color 1s linear, width 1s linear !important;\n}\n\n.Ff:hover {\nbackground: aqua;\n-webkit-transition: background-color 1s linear, color 1s linear, width 1s linear;\n-moz-transition: background-color 1s linear, color 1s linear, width 1s linear;\n-o-transition: background-color 1s linear, color 1s linear, width 1s linear;\n}\n}";

var css_Notifications_Resize_Arrangement = "#gbwc {\nwidth: " + Resize_NotiWindow + "px !important;\n}\n\n#gbsf {\nwidth: " + Resize_NotiWindow + "px !important;\n}\n\n#gbd1 {\nwidth: " + Resize_NotiWindow + "px !important;\n}\n\n.lfa {\nwidth: " + Resize_NotiWindow_Post_Text_Size + "px !important;\n}\n\n.Laa {\nmax-height: 64px !important;\n}.Yy>.Tg.Sb {\nwidth: auto !important;\n}\n\n.Yy.oeIGR {\nwidth: auto !important;\n}\n\n.ws .Yy {\npadding-bottom: 0 !important;\npadding-top: 0 !important;\n}\n\n.zl .ws {\npadding-left: 0 !important;\npadding-right: 0 !important;\n}\n\n.gbmwc.gbmwca.gbem, .gbmwc.gbmwca.gbexxl {\nright: 0 !important;\n}\n}";

var css_Notifications_Fix = ".wm.VC {\npadding-left: 0px !important;\n}\n}";

var css_Remove_Photos_Border = ".Fg {\nbackground-color: white !important;\n}\n\n.Km, .Lm, .Jt, .It {border-left: 0px solid transparent !important;\nborder-right: 0px solid transparent !important;\nborder-top: 0px solid transparent !important;\nborder-bottom: 0px solid transparent !important;}\n\n\n}";

var css_Comment_Box_Animations = ".Tt.bj {\nheight: 30px;\n-webkit-transition:all .5s ease;\n-moz-transition:all .5s ease;\n-o-transition:all .5s ease;\n}\n\n.Tt.bj:hover {\nheight: 58px;\n-webkit-transition:all .5s ease;\n-moz-transition:all .5s ease;\n-o-transition:all .5s ease;\n}\n}";

var css_Suggestions_Text_Arrangement = ".ala {\nmargin-left: 20px !important;\n}\n\n.QK {\nmargin-top: 20px !important;\n}\n}";

var css_Photo_Wall = ".yp {\nmin-height: 180px !important;\nwidth: 940px !important;\n}\n\n.uc {\nheight: 180px !important;\nwidth: 180px !important;\nmargin: 0px !important;\n}\n\n.fz {\nheight: 180px !important;\nwidth: 180px !important;\n}\n\n.aq {\nmargin-top: 0px !important;\n}\n\n.GT {\nwidth: 0px !important;\n}.Vt {\n-webkit-box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.1) !important;\n-moz-box-shadow: 0px 0px 0px rgba(0,0,0,0.1) !important;\nbox-shadow: 0px 0px 0px rgba(0, 0, 0, 0.1) !important;\nbackground-color: transparent !important;\nborder: 0px solid #E3E3E3 !important;\n}\n\n.lCa {\nbackground-color: transparent !important;\n}\n\n.vCa {\n-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .1) !important;\n-moz-box-shadow: 0 0 0 rgba(0,0,0,.1) !important;\nbox-shadow: 0 0 0 rgba(0, 0, 0, .1) !important;\nbackground-color: transparent !important;\nborder: 0px solid #CCC !important;\n}\n\n.g-oa-Sa-R-ca {\nbackground-color: transparent !important;\n}\n\n.Oka {\nborder-right: 0px solid #CCC !important;\nborder-left: 0px solid #CCC !important;\nborder-bottom: 0px solid #CCC !important;\nmargin: -5px 3px 0 5px !important;\nwidth: 250px !important;\n}\n\n.KC {\npadding: 10px 0px 5px 15px !important;\n}\n\n.Xt {\nbackground-color: transparent !important;\nborder: 0px solid #DDD !important;\n}\n}";

var css_Background_Image_Norm = ".CF.he {\nbackground: no-repeat url(" + Background_URL + ");\nposition: fixed;\nopacity: " + Background_Opacity + ";\n}\n\n#contentPane {\nbackground: no-repeat url(" + Background_URL + ");\nposition: fixed;\nopacity: " + Background_Opacity + ";\n}\n}";

var css_Background_Image_Tile = ".CF.he {\nbackground: url(" + Background_URL + ");\nposition: fixed;\nopacity: " + Background_Opacity + ";\n}\n\n#contentPane {\nbackground: url(" + Background_URL + ");\nposition: fixed;\nopacity: " + Background_Opacity + ";\n}\n}";

var css_Background_Color = "#contentPane {\nbackground: " + Background_Color + ";\n}\n\n.Vra {\nbackground: " + Background_Color + " !important;\n}\n}";

var css_Posts_Opacity = ".Sb, .Pvkdsd, .kJHn5, .Fg, .Hw, .bI, .ii, .Je, .EyKftc.HWTYYe .Ng, #sync_container, .Um8btf, .RWa.KiWa0b .Teb, .xWa, .ZX, .cuuzrf {\nbackground-color: transparent !important;\n}\n\n.r6Rtbe, .Om, .On, .EyKftc {\nbackground-color: rgba(245,245,245," + Posts_Opacity + ") !important;\n-webkit-border-radius: 0px !important;\nborder-radius: 0px !important;\n}\n\n.ZuZuKf, .xe, .i-j-h-tb-x, .Od.esw, .dk, .iYjCM, .wH3YRe, .c-b-T, .Rm {\nbackground-color: rgba(245,245,245," + Posts_Opacity + ") !important;\n}\n\n.a-q, .u8yTrb {\nbackground-color: rgba(255,255,255," + Posts_Opacity + ") !important;\n}\n.dJa, .Yo, .Bb, .Xp, .YA {\nbackground-color: transparent !important;\n}\n\n.Xb {\nbackground-color: rgba(245,245,245," + Posts_Opacity + ") !important;\n}\n\n.Teb, .gbnotify, .jt {\nbackground-color: rgba(245, 245, 245, " + Posts_Opacity + ") !important;\n}\n\n.woHNpb {\nopacity: 0 !important;\n}\n}";

//var css_Relevance_Aprox = ".gbrlvc {\nopacity: 0;\ntext-align: right;\nposition: absolute;\ncolor: #DD4B39;\nbackground-color: rgba(0, 0, 0, 0.6);\n-webkit-border-radius: 16px;\n-moz-border-radius: 16px;\nborder-radius: 16px;\n-webkit-transition:all .5s ease;\n-moz-transition:all .5s ease;\n-o-transition:all .5s ease;\nz-index: 1;\n}\n\n.gbrlvc:hover {\nopacity: 1;\ntext-align: right;\nposition: absolute;\ncolor: #DD4B39;\nbackground-color: rgba(0, 0, 0, 0.6);\n-webkit-border-radius: 16px;\n-moz-border-radius: 16px;\nborder-radius: 16px;\n-webkit-transition:all .5s ease;\n-moz-transition:all .5s ease;\n-o-transition:all .5s ease;\nz-index: 1;\n}\n}";

var css_Relevance_Aprox = ".gbrlvc:hover {opacity: 1;-webkit-transition: all .5s ease-in-out;font-weight: bold;}.gbrlvc {opacity: 0.9;position: absolute;background-color: #fff;-webkit-transition: all .5s ease-in-out;z-index: 1;font-weight: normal;font-size: 12px;}";

var css_Time_Div = ".Yc {font: 11px arial,sans-serif;margin-top: -7px;position: relative;-webkit-transition: opacity .218s;-moz-transition: opacity .218s;-o-transition: opacity .218s;transition: opacity .218s;filter: alpha(opacity=0);opacity: 0;}.Yc:hover {font: 11px arial,sans-serif;margin-top: -7px;position: relative;-webkit-transition: opacity .218s;-moz-transition: opacity .218s;-o-transition: opacity .218s;transition: opacity .218s;filter: alpha(opacity=1);opacity: 1;}";

var css_Time_Text = ".time {\n-webkit-transition:all 2s ease;\n-moz-transition:all 2s ease;\n-o-transition:all 2s ease;\nmax-height: 300px;\n}\n\n.time_Text{\nborder-radius: 16px;\nline-height: 32px;\nmargin-right: 6px;\n}\n}";

//var css_Auto_Refresh = ".pdsQUd.vqlG {\nvisibility: hidden;\n}\n\n.pdsQUd.vqlG.WrxPu.CVep0d {\nvisibility: visible !important;\n}\n}";

var css_Flip_Cards = ".Tr.TA {\n-webkit-perspective: 800;\npadding-top: 0px !important;\n}\n\n.Tr.TA .card.flipped {\n-webkit-transform: rotatey(180deg);\n}\n\n.Tr.TA .card {\n-webkit-transform-style: preserve-3d;\n-webkit-transition: 0.8s;\n}\n\n.Tr.TA .card .ge.lO {\nz-index: 2;\n}\n.Tr.TA .card .front {\nz-index: 1;\ncursor: pointer;\n}\n\n.Tr.TA .card .back {\n-webkit-transform: rotatey(180deg);\ncursor: pointer;\nheight: auto;\nwidth: auto;\n}\n\n.On {\nbackground-color: #fff;\nwidth: auto;\nmargin: 10px 0 20px 0;\n}\n}";

//var css_post_Animation = ".Sb {\n-webkit-transition: opacity ease 0.8s;\n}\n}";

var css_Weather_Now = ".content-box {\nborder-radius:3px;\nbox-shadow: rgba(0, 0, 0, 0.2) 0px 2px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px;\ndisplay: -webkit-box;\ncolor: #666;\n}\n\n.content-box h2 {\nfont-size: 22px;\nfont-weight: normal;\n}\n\n#box-weather {\n-webkit-box-orient: vertical;\npadding: 20px;\n}\n\n#box-weather h2 {\nmargin: 0px;\n}\n\n#weather-date {\nfont-size: 16px;\n}\n#weather-current {\n-webkit-box-align: center;\n-webkit-box-orient: horizontal;\ndisplay: -webkit-box;\npadding-top: 10px;\nwidth: 300px;\n}\n\n#weather-current-box {\n-webkit-box-orient: vertical;\ndisplay: -webkit-box;\nfont-size: 16px;\npadding-left: 10px;\nwidth: 140px;\n}\n\n#weather-current-icon {\nwidth: 96px;\nheight: 96px;\n}\n\n#weather-current-temperature {\n-webkit-box-align: start;\n-webkit-box-orient: horizontal;\ndisplay: -webkit-box;\n}\n\n#weather-temperature {\ncolor: #666;\ndisplay: -webkit-box;\nfont-size: 96px;\npadding-left: 20px;\n}\n\n#celsius {\ndisplay: -webkit-box;\nposition: relative;\ntop: 10px;\n}\n\n#weather-forecast-box {\n-webkit-box-orient: horizontal;\n-webkit-box-pack: justify;\ndisplay: -webkit-box;\npadding: 15px 0px 0 8px;\n}\n\n.weather-forecast div {\ncolor: #666;\nfont-size: 14px;\ntext-align: center;\ntext-transform: uppercase;\n}\n\n.weather-forecast img {\nwidth: 64px;\nheight: 64px;\n}\n\n.temperature-high {\ncolor: #666;\n}\n\n.temperature-low {\ncolor: #AAA;\n}\n\n#weather-geolocation-permission {\ndisplay: -webkit-box;\noverflow: hidden;\npadding-top: 16px;\n-webkit-transition: height 200ms;\n}\n\n#weather-geolocation-permission.hidden {\nheight: 0;\n}\n\n#weather-geolocation-permission a:hover {\ncolor: #000;\ntext-decoration: none;\n}\n\n.weather-forecast {\nborder-right: 2px solid #DDD;\npadding-right: 20px;\n}\n\n#weather-condition {\ntext-transform: uppercase;\n}\n\n.weather-forecast.last-forecast {\nborder: none;\n}\n}";

var css_Posts_Overflow = ".ee3yFe>.ChZ7Rc {\noverflow-x: hidden;\n}\n}";

GM_addStyle(css_Stream_Profile_Photo);
GM_addStyle(css_Profile_Photo_Animations);
//GM_addStyle(css_Auto_Refresh);
GM_addStyle(css_Flip_Cards);
//GM_addStyle(css_post_Animation);
GM_addStyle(css_Weather_Now);
GM_addStyle(css_Posts_Overflow);
if (IYC_Animations == "Enabled")
    GM_addStyle(css_Upper_Right);
else
    GM_addStyle(css_Icons);
GM_addStyle(css_Settings_Card_Your_Photo);
GM_addStyle(css_Mention_List);
if (Remove_Borders == "Enabled")
    GM_addStyle(css_Notification_Photos_and_Border);
if (NotiWin_Animations == "Enabled")
    GM_addStyle(css_Notifications_Animations);
if (Btn_Animations == "Enabled")
    GM_addStyle(css_Buttons_Animations);
if (ShareBox_Animations == "Enabled")
    GM_addStyle(css_Share_Box_Animations);
if (Resize_NotiWindow !== "Default")
    GM_addStyle(css_Notifications_Resize_Arrangement);
GM_addStyle(css_Notifications_Fix);
if (Remove_Borders == "Enabled")
    GM_addStyle(css_Remove_Photos_Border);
if (CmtBox_Animations == "Enabled")
    GM_addStyle(css_Comment_Box_Animations);
GM_addStyle(css_Suggestions_Text_Arrangement);
//if (Remove_Gaps == "Enabled")
//GM_addStyle(css_Photo_Wall);
if (Background_Content_Type == "Image" && Background_Display == "Tile") {
    GM_addStyle(css_Background_Image_Tile);
    GM_addStyle(css_Posts_Opacity);
}
else if (Background_Content_Type == "Image" && Background_Display == "Normal") {
    GM_addStyle(css_Background_Image_Norm);
    GM_addStyle(css_Posts_Opacity);
}
else if (Background_Content_Type == "Color") {
    GM_addStyle(css_Background_Color);
};
GM_addStyle(css_Relevance_Aprox);
if (Clock_Show == 'Show') {
    //GM_addStyle(css_Time_Div);
    GM_addStyle(css_Time_Text);
}

if (GIF_Avatars == "Enabled") {
    function replaceImg(target) {
        if (target && target.src) {
            var distHeight = target.clientHeight != 0 ? target.clientHeight * 2 : 64;
            target.src = target.src.replace(/s\d{2,}-c-k/g, 's' + distHeight + '-c')
                .replace('photo.jpg', 'photo.gif')
                .replace(/\?sz=\d{2,}/, '');
            return target.src;
        }
    }

    function batchReplace(targets) {
        if (targets && targets.length)
            for (var i = 0; i < targets.length ; i++)
                replaceImg(targets[i]);
    }

    //Speacial preprocessing for Webkit Browsers.
    batchReplace(document.body.getElementsByClassName('hE')); // Your Stream Profile Photo
    //batchReplace(document.body.getElementsByClassName('Ep')); // Others Stream Profile Photo
    batchReplace(document.body.getElementsByClassName('ho')); // Profile Photo in In Your Circles
    batchReplace(document.body.getElementsByClassName('go')); // Profile Photo in Comments
    //batchReplace(document.body.getElementsByClassName('Zb')); // In Your Circles Profile Page Photos
    //batchReplace(document.body.getElementsByClassName('l-tk')); // Large Profile Photo in Settings

    document.body.addEventListener('DOMNodeInserted', function (e) {
        if (e.target.nodeType != 3 && e.target.tagName == 'DIV') {
            batchReplace(e.target.getElementsByClassName('hE')); // Your Stream Profile Photo
            //batchReplace(e.target.getElementsByClassName('rs Hk')); // Reshare Box Your Stream Profile Photo
            //batchReplace(e.target.getElementsByClassName('Ep')); // Others Stream Profile Photo
            batchReplace(e.target.getElementsByClassName('ho')); // Profile Photo in In Your Circles
            batchReplace(e.target.getElementsByClassName('go')); // Profile Photo in Comments
            batchReplace(e.target.getElementsByClassName('we')); // Profile Photo in Hover Card
            batchReplace(e.target.getElementsByClassName('e4a')); // Notifications Profile Photos
            //batchReplace(e.target.getElementsByClassName('l-tk')); // Your Large Profile Photo in Profile Page
            batchReplace(e.target.getElementsByClassName('t-C-J')); // Profile Photos in Mention List
            //batchReplace(e.target.getElementsByClassName('HPb')); // In Your Circles Profile Photos
            //batchReplace(e.target.getElementsByClassName('Zb')); // Profile Photos of Hang out
            //batchReplace(e.target.getElementsByClassName('L6')); // Sharebox Profile Photo
        }
    }, false);
};

function fillZero(v) {
    if (v < 10) {
        v = '0' + v;
    }
    return v;
}

function currentWeather() {
    var languagePairs = {
        '首页': { language: 'zh-CN' },
        '主頁': { language: 'zh-HK' },
        '首頁': { language: 'zh-TW' },
        'ホーム': { language: 'ja' },
        'Default': { language: 'en-US' }
    }

    var currentCondition, currentTempF, currentTempC, currentTemp, humidityChance, currentWind, highToday, lowToday, unitSystem, unitIndicator;
    var todayWeatherImage, forecastDay0, forecastDay0Low, forecastDay0High, forecastDay0Condition, forecastDay0Image, forecastDay1, forecastDay1Low, forecastDay1High, forecastDay1Condition, forecastDay1Image, forecastDay2, forecastDay2Low, forecastDay2High, forecastDay2Condition, forecastDay2Image, forecastDay3, forecastDay3Low, forecastDay3High, forecastDay3Condition, forecastDay3Image;

    var matchPair;
    if (document.getElementsByClassName("lCd Hyc fJb").length > 0) {
        matchPair = languagePairs[document.getElementsByClassName("lCd Hyc fJb")[0].textContent];
        if (!matchPair)
            matchPair = languagePairs['Default'];
    }
    else
        matchPair = languagePairs['Default'];
    var language = matchPair.language;

    var fetchWeather = setInterval(function () {
        if (localStorage["currentLatitude"] == "undefined" || localStorage["currentLatitude"] == undefined || localStorage["currentLongitude"] == "undefined" || localStorage["currentLongitude"] == undefined) {
            navigator.geolocation.getCurrentPosition(function (position) {
                console.log(position);
                localStorage["currentLatitude"] = position.coords.latitude;
                localStorage["currentLongitude"] = position.coords.longitude;
            }, function (positionError) {
                console.error(positionError);
            });
        }

        if (localStorage["cityNameLocalized"] == "undefined" || localStorage["cityNameLocalized"] == undefined) {
            var ajax = new XMLHttpRequest();
            ajax.onreadystatechange = function () {
                if (ajax.readyState == 4 && ajax.status == 200) {
                    var locationResponseXML = ajax.responseXML;
                    for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                        if (locationResponseXML.getElementsByTagName('type')[i].textContent == "locality") {
                            localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                            break;
                        }
                    }
                    if (localStorage["cityNameLocalized"] == "undefined" || localStorage["cityNameLocalized"] == undefined || localStorage["cityNameLocalized"] == null || localStorage["cityNameLocalized"] == "") {
                        for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                            if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_3") {
                                localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                                break;
                            }
                        }
                    }
                    if (localStorage["cityNameLocalized"] == "undefined" || localStorage["cityNameLocalized"] == undefined || localStorage["cityNameLocalized"] == null || localStorage["cityNameLocalized"] == "") {
                        for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                            if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_2") {
                                localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                                break;
                            }
                        }
                    }
                    if (localStorage["cityNameLocalized"] == "undefined" || localStorage["cityNameLocalized"] == undefined || localStorage["cityNameLocalized"] == null || localStorage["cityNameLocalized"] == "") {
                        for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                            if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_1") {
                                localStorage["cityNameLocalized"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                                break;
                            }
                        }
                    }
                }
            };
            ajax.open('GET', 'https://maps.googleapis.com/maps/api/geocode/xml?language=' + language + '&&latlng=' + localStorage["currentLatitude"] + ',' + localStorage["currentLongitude"] + '&&sensor=false&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j', true);
            ajax.send();
        }
        var currentDate = new Date();


        GM_xmlhttpRequest({
            method: "GET",
            url: 'https://www.google.com/ig/api?hl=' + language + '&weather=' + localStorage["cityName1033"] + '&expflags=Dispatchers__force_signed_weather_api%3Afalse&oauth_signature=en&referrer=igoogle&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j',
            headers: {
                "User-Agent": "Mozilla/5.0",    // If not specified, navigator.userAgent will be used.
                "Accept": "text/xml"            // If not specified, browser defaults will be used.
            },
            onload: function (response) {
                var responseXML = null;
                // Inject responseXML into existing Object (only appropriate for XML content).
                if (!response.responseXML) {
                    responseXML = new DOMParser()
                      .parseFromString(response.responseText, "text/xml");
                }
                if (localStorage["cityName1033"] == "undefined" || localStorage["cityName1033"] == undefined) {
                    var ajaxSecondFetch = new XMLHttpRequest();
                    ajaxSecondFetch.onreadystatechange = function () {
                        if (ajaxSecondFetch.readyState == 4 && ajaxSecondFetch.status == 200) {
                            var locationResponseXML = ajaxSecondFetch.responseXML;
                            for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                                if (locationResponseXML.getElementsByTagName('type')[i].textContent == "locality") {
                                    localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                                    break;
                                }
                            }
                            if (localStorage["cityName1033"] == "undefined" || localStorage["cityName1033"] == undefined || localStorage["cityName1033"] == null || localStorage["cityName1033"] == "") {
                                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_3") {
                                        localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                                        break;
                                    }
                                }
                            }
                            if (localStorage["cityName1033"] == "undefined" || localStorage["cityName1033"] == undefined || localStorage["cityName1033"] == null || localStorage["cityName1033"] == "") {
                                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_2") {
                                        localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                                        break;
                                    }
                                }
                            }
                            if (localStorage["cityName1033"] == "undefined" || localStorage["cityName1033"] == undefined || localStorage["cityName1033"] == null || localStorage["cityName1033"] == "") {
                                for (var i = 0; i < locationResponseXML.getElementsByTagName('type').length; i++) {
                                    if (locationResponseXML.getElementsByTagName('type')[i].textContent == "administrative_area_level_1") {
                                        localStorage["cityName1033"] = locationResponseXML.getElementsByTagName('type')[i].parentNode.getElementsByTagName("short_name")[0].textContent;
                                        break;
                                    }
                                }
                            }
                            localStorage["countryName"] = locationResponseXML.getElementsByTagName('result')[5].getElementsByTagName('long_name')[1].textContent;
                        }
                    };
                    ajaxSecondFetch.open('GET', 'https://maps.googleapis.com/maps/api/geocode/xml?language=en-US&latlng=' + localStorage["currentLatitude"] + ',' + localStorage["currentLongitude"] + '&&sensor=false&_reqid=' + (new Date().getTime() % 1000000) + '&rt=j', true);
                    ajaxSecondFetch.send();
                }
                else {
                    currentCondition = responseXML.getElementsByTagName("current_conditions")[0].childNodes[0].getAttribute("data");
                    currentTempF = responseXML.getElementsByTagName("current_conditions")[0].childNodes[1].getAttribute("data");
                    currentTempC = responseXML.getElementsByTagName("current_conditions")[0].childNodes[2].getAttribute("data");
                    humidityChance = responseXML.getElementsByTagName("current_conditions")[0].childNodes[3].getAttribute("data");
                    currentWind = responseXML.getElementsByTagName("current_conditions")[0].childNodes[5].getAttribute("data");
                    highToday = responseXML.getElementsByTagName("forecast_conditions")[0].childNodes[2].getAttribute("data");
                    lowToday = responseXML.getElementsByTagName("forecast_conditions")[0].childNodes[1].getAttribute("data");
                    unitSystem = responseXML.getElementsByTagName("forecast_information")[0].childNodes[6].getAttribute("data");
                    forecastDay0 = responseXML.getElementsByTagName("forecast_conditions")[0].childNodes[0].getAttribute("data");
                    forecastDay0Low = responseXML.getElementsByTagName("forecast_conditions")[0].childNodes[1].getAttribute("data");
                    forecastDay0High = responseXML.getElementsByTagName("forecast_conditions")[0].childNodes[2].getAttribute("data");
                    forecastDay0Condition = responseXML.getElementsByTagName("forecast_conditions")[0].childNodes[4].getAttribute("data");
                    forecastDay1 = responseXML.getElementsByTagName("forecast_conditions")[1].childNodes[0].getAttribute("data");
                    forecastDay1Low = responseXML.getElementsByTagName("forecast_conditions")[1].childNodes[1].getAttribute("data");
                    forecastDay1High = responseXML.getElementsByTagName("forecast_conditions")[1].childNodes[2].getAttribute("data");
                    forecastDay1Condition = responseXML.getElementsByTagName("forecast_conditions")[1].childNodes[4].getAttribute("data");
                    forecastDay2 = responseXML.getElementsByTagName("forecast_conditions")[2].childNodes[0].getAttribute("data");
                    forecastDay2Low = responseXML.getElementsByTagName("forecast_conditions")[2].childNodes[1].getAttribute("data");
                    forecastDay2High = responseXML.getElementsByTagName("forecast_conditions")[2].childNodes[2].getAttribute("data");
                    forecastDay2Condition = responseXML.getElementsByTagName("forecast_conditions")[2].childNodes[4].getAttribute("data");
                    forecastDay3 = responseXML.getElementsByTagName("forecast_conditions")[3].childNodes[0].getAttribute("data");
                    forecastDay3Low = responseXML.getElementsByTagName("forecast_conditions")[3].childNodes[1].getAttribute("data");
                    forecastDay3High = responseXML.getElementsByTagName("forecast_conditions")[3].childNodes[2].getAttribute("data");
                    forecastDay3Condition = responseXML.getElementsByTagName("forecast_conditions")[3].childNodes[4].getAttribute("data");
                    if (localStorage["countryName"] != 'United States' && language == 'en-US') {
                        if (document.getElementsByClassName("Tr TA").length > 0 && document.getElementsByClassName("Tr TA")[0].clientWidth >= 420) {
                            currentTemp = ((parseInt(currentTempF) - 32) / 9 * 5).toFixed(1);
                            highToday = ((parseInt(highToday) - 32) / 9 * 5).toFixed(1);
                            lowToday = ((parseInt(lowToday) - 32) / 9 * 5).toFixed(1);
                            forecastDay0High = ((parseInt(forecastDay0High) - 32) / 9 * 5).toFixed(1);
                            forecastDay0Low = ((parseInt(forecastDay0Low) - 32) / 9 * 5).toFixed(1);
                            forecastDay1High = ((parseInt(forecastDay1High) - 32) / 9 * 5).toFixed(1);
                            forecastDay1Low = ((parseInt(forecastDay1Low) - 32) / 9 * 5).toFixed(1);
                            forecastDay2High = ((parseInt(forecastDay2High) - 32) / 9 * 5).toFixed(1);
                            forecastDay2Low = ((parseInt(forecastDay2Low) - 32) / 9 * 5).toFixed(1);
                            forecastDay3High = ((parseInt(forecastDay3High) - 32) / 9 * 5).toFixed(1);
                            forecastDay3Low = ((parseInt(forecastDay3Low) - 32) / 9 * 5).toFixed(1);
                        }
                        else {
                            currentTemp = currentTempC;
                            highToday = Math.round((parseInt(highToday) - 32) / 9 * 5);
                            lowToday = Math.round((parseInt(lowToday) - 32) / 9 * 5);
                            forecastDay0High = Math.round((parseInt(forecastDay0High) - 32) / 9 * 5);
                            forecastDay0Low = Math.round((parseInt(forecastDay0Low) - 32) / 9 * 5);
                            forecastDay1High = Math.round((parseInt(forecastDay1High) - 32) / 9 * 5);
                            forecastDay1Low = Math.round((parseInt(forecastDay1Low) - 32) / 9 * 5);
                            forecastDay2High = Math.round((parseInt(forecastDay2High) - 32) / 9 * 5);
                            forecastDay2Low = Math.round((parseInt(forecastDay2Low) - 32) / 9 * 5);
                            forecastDay3High = Math.round((parseInt(forecastDay3High) - 32) / 9 * 5);
                            forecastDay3Low = Math.round((parseInt(forecastDay3Low) - 32) / 9 * 5);
                        }
                        unitIndicator = "C";
                    }
                    else if ((localStorage["countryName"] == 'United States' && language == 'en-US')) {
                        currentTemp = currentTempF;
                        unitIndicator = "F";
                    }
                    else {
                        if (document.getElementsByClassName("Tr TA").length > 0 && document.getElementsByClassName("Tr TA")[0].clientWidth >= 420)
                            currentTemp = ((parseInt(currentTempF) - 32) / 9 * 5).toFixed(1);
                        else
                            currentTemp = currentTempC;
                        unitIndicator = "C";
                    }
                }

                GM_log([
                  response.status,
                  response.statusText,
                  response.readyState,
                  response.responseHeaders,
                  response.responseText,
                  response.finalUrl,
                  responseXML
                ].join("\n"));
            }
        });
        if (currentCondition != undefined) {
            if (document.getElementsByClassName("Ee fP back")[0] != undefined) {
                if (currentCondition.match(/Partly Cloudy|Mostly Cloudy|局部多云|局部有雲|ところにより曇り/gi)) {
                    todayWeatherImage = "https://ssl.gstatic.com/onebox/weather/128/partly_cloudy.png";
                }
                else if (currentCondition.match(/Thunderstorm|storm|雷|激しい風雨/gi)) {
                    todayWeatherImage = "https://ssl.gstatic.com/onebox/weather/128/rain_s_cloudy.png";
                }
                else if (currentCondition.match(/rain|drizzle|showers|雨/gi)) {
                    todayWeatherImage = "https://ssl.gstatic.com/onebox/weather/128/rain.png";
                }
                else if (currentCondition.match(/cloudy|overcast|云|雲|阴|陰|曇り/gi)) {
                    todayWeatherImage = "https://ssl.gstatic.com/onebox/weather/128/cloudy.png";
                }
                else if (currentCondition.match(/fog|haze|hazy|雾|霧|曇/gi)) {
                    todayWeatherImage = "https://ssl.gstatic.com/onebox/weather/128/fog.png";
                }
                else if (currentCondition.match(/Partly Sunny|Mostly Sunny|晴间多云|多雲時晴|ところにより晴れ/gi)) {
                    todayWeatherImage = "https://ssl.gstatic.com/onebox/weather/128/partly_cloudy.png";
                }
                else if (currentCondition.match(/clear|晴/gi)) {
                    todayWeatherImage = "https://ssl.gstatic.com/onebox/weather/128/sunny.png";
                }
                if (forecastDay0Condition.match(/Partly Cloudy|Mostly Cloudy|局部多云|局部有雲|ところにより曇り/gi)) {
                    forecastDay0Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay0Condition.match(/Thunderstorm|storm|雷|激しい風雨/gi)) {
                    forecastDay0Image = "https://ssl.gstatic.com/onebox/weather/64/rain_s_cloudy.png";
                }
                else if (forecastDay0Condition.match(/rain|drizzle|showers|雨/gi)) {
                    forecastDay0Image = "https://ssl.gstatic.com/onebox/weather/64/rain.png";
                }
                else if (forecastDay0Condition.match(/cloudy|overcast|云|雲|阴|陰|曇り/gi)) {
                    forecastDay0Image = "https://ssl.gstatic.com/onebox/weather/64/cloudy.png";
                }
                else if (forecastDay0Condition.match(/fog|haze|hazy|雾|霧|曇/gi)) {
                    forecastDay0Image = "https://ssl.gstatic.com/onebox/weather/64/fog.png";
                }
                else if (forecastDay0Condition.match(/Partly Sunny|Mostly Sunny|晴间多云|多雲時晴|ところにより晴れ/gi)) {
                    forecastDay0Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay0Condition.match(/clear|晴/gi)) {
                    forecastDay0Image = "https://ssl.gstatic.com/onebox/weather/64/sunny.png";
                }
                if (forecastDay1Condition.match(/Partly Cloudy|Mostly Cloudy|局部多云|局部有雲|ところにより曇り/gi)) {
                    forecastDay1Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay1Condition.match(/Thunderstorm|storm|雷|激しい風雨/gi)) {
                    forecastDay1Image = "https://ssl.gstatic.com/onebox/weather/64/rain_s_cloudy.png";
                }
                else if (forecastDay1Condition.match(/rain|drizzle|showers|雨/gi)) {
                    forecastDay1Image = "https://ssl.gstatic.com/onebox/weather/64/rain.png";
                }
                else if (forecastDay1Condition.match(/cloudy|overcast|云|雲|阴|陰|曇り/gi)) {
                    forecastDay1Image = "https://ssl.gstatic.com/onebox/weather/64/cloudy.png";
                }
                else if (forecastDay1Condition.match(/fog|haze|hazy|雾|霧|曇/gi)) {
                    forecastDay1Image = "https://ssl.gstatic.com/onebox/weather/64/fog.png";
                }
                else if (forecastDay1Condition.match(/Partly Sunny|Mostly Sunny|晴间多云|多雲時晴|ところにより晴れ/gi)) {
                    forecastDay1Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay1Condition.match(/clear|晴/gi)) {
                    forecastDay1Image = "https://ssl.gstatic.com/onebox/weather/64/sunny.png";
                }
                if (forecastDay2Condition.match(/Partly Cloudy|Mostly Cloudy|局部多云|局部有雲|ところにより曇り/gi)) {
                    forecastDay2Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay2Condition.match(/Thunderstorm|storm|雷|激しい風雨/gi)) {
                    forecastDay2Image = "https://ssl.gstatic.com/onebox/weather/64/rain_s_cloudy.png";
                }
                else if (forecastDay2Condition.match(/rain|drizzle|showers|雨/gi)) {
                    forecastDay2Image = "https://ssl.gstatic.com/onebox/weather/64/rain.png";
                }
                else if (forecastDay2Condition.match(/cloudy|overcast|云|雲|阴|陰|曇り/gi)) {
                    forecastDay2Image = "https://ssl.gstatic.com/onebox/weather/64/cloudy.png";
                }
                else if (forecastDay2Condition.match(/fog|haze|hazy|雾|霧|曇/gi)) {
                    forecastDay2Image = "https://ssl.gstatic.com/onebox/weather/64/fog.png";
                }
                else if (forecastDay2Condition.match(/Partly Sunny|Mostly Sunny|晴间多云|多雲時晴|ところにより晴れ/gi)) {
                    forecastDay2Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay2Condition.match(/clear|晴/gi)) {
                    forecastDay2Image = "https://ssl.gstatic.com/onebox/weather/64/sunny.png";
                }
                if (forecastDay3Condition.match(/Partly Cloudy|Mostly Cloudy|局部多云|局部有雲|ところにより曇り/gi)) {
                    forecastDay3Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay3Condition.match(/Thunderstorm|storm|雷|激しい風雨/gi)) {
                    forecastDay3Image = "https://ssl.gstatic.com/onebox/weather/64/rain_s_cloudy.png";
                }
                else if (forecastDay3Condition.match(/rain|drizzle|showers|雨/gi)) {
                    forecastDay3Image = "https://ssl.gstatic.com/onebox/weather/64/rain.png";
                }
                else if (forecastDay3Condition.match(/cloudy|overcast|云|雲|阴|陰|曇り/gi)) {
                    forecastDay3Image = "https://ssl.gstatic.com/onebox/weather/64/cloudy.png";
                }
                else if (forecastDay3Condition.match(/fog|haze|hazy|雾|霧|曇/gi)) {
                    forecastDay3Image = "https://ssl.gstatic.com/onebox/weather/64/fog.png";
                }
                else if (forecastDay3Condition.match(/Partly Sunny|Mostly Sunny|晴间多云|多雲時晴|ところにより晴れ/gi)) {
                    forecastDay3Image = "https://ssl.gstatic.com/onebox/weather/64/partly_cloudy.png";
                }
                else if (forecastDay3Condition.match(/clear|晴/gi)) {
                    forecastDay3Image = "https://ssl.gstatic.com/onebox/weather/64/sunny.png";
                }
            }
        }
        var text = '<div class="content-box" id="box-weather"><h2>' + localStorage["cityNameLocalized"] + '</h2><div id="weather-date">' + new Date().toLocaleString().replace(new Date().toLocaleString().match(/\d+:\d{2}:\d{2}\s*\w*/), new Date().toLocaleString().match(/(\d+:\d{2}):\d{2}(\s*\w*)/)[1] + new Date().toLocaleString().match(/(\d+:\d{2}):\d{2}(\s*\w*)/)[2]) + '</div><div id="weather-current"><div><img id="weather-current-icon" src="' + todayWeatherImage + '" title="' + currentCondition + '"><div id="weather-current-box"><div id="weather-condition">' + currentCondition + '</div><div id="weather-wind">' + currentWind + '</div><div id="weather-humidity">' + humidityChance + '</div></div></div><div id="weather-current-temperature"><div id="weather-temperature">' + currentTemp + '°</div></div></div><div id="weather-forecast-box"><div class="weather-forecast"><div>' + forecastDay0 + '</div><img src="' + forecastDay0Image + '" title="' + forecastDay0Condition + '"><div><span class="temperature-high">' + forecastDay0High + '°</span><br><span class="temperature-low">' + forecastDay0Low + '°</span></div></div><div class="weather-forecast"><div>' + forecastDay1 + '</div><img src="' + forecastDay1Image + '" title="' + forecastDay1Condition + '"><div><span class="temperature-high">' + forecastDay1High + '°</span><br><span class="temperature-low">' + forecastDay1Low + '°</span></div></div><div class="weather-forecast"><div>' + forecastDay2 + '</div><img src="' + forecastDay2Image + '" title="' + forecastDay2Condition + '"><div><span class="temperature-high">' + forecastDay2High + '°</span><br><span class="temperature-low">' + forecastDay2Low + '°</span></div></div><div class="weather-forecast last-forecast"><div>' + forecastDay3 + '</div><img src="' + forecastDay3Image + '" title="' + forecastDay3Condition + '"><div><span class="temperature-high">' + forecastDay3High + '°</span><br><span class="temperature-low">' + forecastDay3Low + '°</span></div></div></div><div id="weather-geolocation-permission" class="hidden">Using current location.</div></div>';
        if (currentTemp != undefined) {
            if (document.getElementsByClassName('Ee fP back')[0] != undefined)
                document.getElementsByClassName("Ee fP back")[0].innerHTML = text;
        }
    }, 10000);
}

currentWeather();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址