Chaturbate Age-Filter & Locations

Age filter, Locations under each thumbnail, Locations list with links, and more!

As of 2017-01-01. See the latest version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name            Chaturbate Age-Filter & Locations
// @version         1.01
// @namespace       [email protected]
// @description     Age filter, Locations under each thumbnail, Locations list with links, and more!
// @include         /^https?:\/\/(\w+\.)?chaturbate\.com(\/.*)?/
// @run-at          document-end
// @grant           none
// @icon            data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gKgSUNDX1BST0ZJTEUAAQEAAAKQbGNtcwQwAABtbnRyUkdCIFhZWiAH3wAKAAgABAAwAAdhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAADhjcHJ0AAABQAAAAE53dHB0AAABkAAAABRjaGFkAAABpAAAACxyWFlaAAAB0AAAABRiWFlaAAAB5AAAABRnWFlaAAAB+AAAABRyVFJDAAACDAAAACBnVFJDAAACLAAAACBiVFJDAAACTAAAACBjaHJtAAACbAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABwAAAAcAHMAUgBHAEIAIABiAHUAaQBsAHQALQBpAG4AAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAMgAAABwATgBvACAAYwBvAHAAeQByAGkAZwBoAHQALAAgAHUAcwBlACAAZgByAGUAZQBsAHkAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEoAAAXj///zKgAAB5sAAP2H///7ov///aMAAAPYAADAlFhZWiAAAAAAAABvlAAAOO4AAAOQWFlaIAAAAAAAACSdAAAPgwAAtr5YWVogAAAAAAAAYqUAALeQAAAY3nBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAQABAAMBIgACEQEDEQH/xAAcAAEAAgMBAQEAAAAAAAAAAAAABgcDBAUCAQj/xABNEAABAwMDAQUFAgcLCgcAAAABAAIDBAURBhIhMQcTQVFhInGBkaEUMhUWIzNCUrEXYnKCkqLBw9HS8CQlQ1NWc5SywtMIREZjZIOT/8QAGgEBAAIDAQAAAAAAAAAAAAAAAAMEAQIFBv/EAC8RAAICAQIFAwIGAwEBAAAAAAABAgMRBCEFEjFBURNhcYGRFCKhsdHwI8Hx4TL/2gAMAwEAAhEDEQA/AL/REQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAfEXEv2qLVp2AS19QGvcPYhZ7T3+5vlx1OB6qO6V15NqfU8tFHStgomU75G7jukc4OaASeg4PT6lbxqm4uSWyIZX1xmoN7snyIi0Jj58F8JIUI1D2k2myyvpqYGvqmHDmxOAY0+Rfzz7gfI4UYl7T9SvkcYLPTsi/Ra+KRxx79wz8lI6mll4S93gr/iI5ajlteE3+xbwQ/JVjbe1gCeKG9219MTjdNFkgeuw849xJ9Cp7Pd6CntTrpJVxCi7sSd9uy0tPTHnnoB1J4WHXJY26m0boSzv069sHRymVV1Z2tSyzPZaLO6aNp/OTOOT/ABWjj5roWHtNpbnXNoLlSuoJ3kNY8vyxzj4HIBb4Y6+8LPpS/vX7Gq1Ne2+z74ePuWGiDoijLAREygCIiAIiID4iLlXy+0Onrc6sr5CyMHDWtGXPd4NaPP6LKTbwjWUlFZfQ6gKdVVL+1iull30diLqcEjLnucT8QMD6qS6U19Q6lqTSOidR12CWwvfuDwOu13GSOpGB8cHGzrlu/HX2Io6ittLPXps1kmaIi0JwiIgCIiAIiIAixSSMhjc97msY0FznE4AA6kleKWqp62Bk9NPHPC8ZbJG4OafcQhjKzgoSkt81ylfdbxK+eec78POSfLPwxgdAOPdu2S5R6d19S1UzhFR1Le6e7AAa0jbyT0AIaT6LWtd3huFPHHvDZ2Nw5h4z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ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=
// ==/UserScript==


console.log("Loading: " + GM_info.script.name + " " + GM_info.script.version);


// MAIN SCRIPT FUNCTION

(function() {

// CURRENT URL //
var _URL = location.href;

//====================================================================================================

// OPTIONS VARIABLES
var AgeMin = 18;
var AgeMax = 99;
var AlwaysHideMales = 0;
var AlwaysHideTrans = 0;
var AlwaysHideGirls = 0;
var AlwaysHideCouples = 0;
var Filter_Interval = 2000;
var Remove_Ads = 1;

//====================================================================================================

// GLOBAL VARIABLES

// AGE FILTER
var AgeMin_Label;
var AgeMin_Textbox;
var AgeMax_Label;
var AgeMax_Textbox;

// LOCATIONS 
var Locations_List;
var CSS_Mod;

// LOCATION WINDOW
var Locations_List_Text;
var Locations_List_Link;
var Locations_List_Window;
var Locations_List_Window_ID;
var Locations_List_Button;
var Locations_List_Div;

// ID OF THE LOCATION WINDOW //
Locations_List_Window_ID = "Locations_List_Window";

//====================================================================================================

// MAIN SCRIPT CODE

// Show_Profile_Locations();

var Pattern_Main       = /^https?:\/\/(\w+\.)?chaturbate\.com(\/)?$/;
var Pattern_Followed   = /^https?:\/\/(\w+\.)?chaturbate\.com\/followed\-cams(\/)?$/;
var Pattern_Exhibition = /^https?:\/\/(\w+\.)?chaturbate\.com\/exhibitionist\-cams(\/)?$/;
var Pattern_Female     = /^https?:\/\/(\w+\.)?chaturbate\.com\/female\-cams(\/)?$/;
var Pattern_Male       = /^https?:\/\/(\w+\.)?chaturbate\.com\/male\-cams(\/)?$/;
var Pattern_Couple     = /^https?:\/\/(\w+\.)?chaturbate\.com\/couple\-cams(\/)?$/;
var Pattern_Trans      = /^https?:\/\/(\w+\.)?chaturbate\.com\/trans\-cams(\/)?$/;
var Pattern_Spy        = /^https?:\/\/(\w+\.)?chaturbate\.com\/spy\-on\-cams(\/)?$/;

// Not seems to be needed here...
// Patern = Pattern.source.replace(/\^http/g,'http').replace(/:/g,'%3A').replace(/\\\//g,'%2F').replace(/\//g,'%2F');

if ( Pattern_Main.test(_URL) || 
    Pattern_Exhibition.test(_URL) || 
    Pattern_Female.test(_URL) || 
    Pattern_Male.test(_URL) || 
    Pattern_Couple.test(_URL) || 
    Pattern_Trans.test(_URL) || 
    Pattern_Spy.test(_URL) ) {
    
    // MAIN PAGES //
    
    console.log("[" + GM_info.script.name + " " + GM_info.script.version + "] " + "MAIN PAGE");
    
    // REMOVE ADS //
    if (Remove_Ads) { Hide_Ads(); }
    
    Append_Age_Inputs();
    Age_Filter();
    Clone_Pages_Numbers();
    Show_All_Locations();
    
    var Filter_Loop = setInterval(function() {
        Show_Profile_Locations();
        Age_Filter();
    }, Filter_Interval);

} else {
    
    // WEBCAM PAGES //
    
    // REMOVE ADS //
    if (Remove_Ads) { Hide_Ads(); }
    
}

//====================================================================================================
// FUNCTIONS
//====================================================================================================

function Hide_Ads() {
    Hide_This_Node(".ad");
    Hide_This_Node(".remove_ads");
}

//====================================================================================================

function Show_All_Locations() {
    
    // LOCATIONS-LIST BUTTON //
    
    // Append the new controls inside this node.
    var Target = document.querySelector(".sub-nav");
    
    // NEW LINE BREAK
    Append_BR(Target);
    
    // Create & Append AgeMin DIV
    // function Append_Button(TARGET_NODE, NEW_TEXTBOX_ID, NEW_BUTTON_DISPLAY, NEW_TEXTBOX_CAPTION)
    Locations_List_Button = Append_Button(Target, "AgeMin_Label", "inline");
    Locations_List_Button.innerHTML = "Locations List";
    Locations_List_Button.style.margin = "10px";
    Locations_List_Button.addEventListener("click", Show_All_Locations_Click);
    
}

//====================================================================================================

function Show_All_Locations_Click() {
    
    // LOCATIONS-LIST BUTTON //
    
    var Current_Location;
    var All_Locations = document.querySelectorAll("li.location");
    var i;
    
    Locations_List = [];
    Locations_List_Text = "";
    
    for (i = 0; i < All_Locations.length; i++) {
        
        // console.log("DEBUG: Show_Profile_Locations();");
        
        if (All_Locations[i].parentNode.childNodes.length < 7 ) {
            
            Current_Location = All_Locations[i].innerHTML;
            Locations_List[i] = Current_Location;
            Locations_List_Text += Current_Location + "\n";
            
            // DEBUG
            // console.log("Location = " + Location);
            
        }
    }
    
    
    // CHECK IF "LOCATIONS_LIST_WINDOW" IS ALREADY CREATED
    if (Locations_List_Window) {

        Locations_List_Window.style.display = "block";
        
    } else {
        
        // NEW CUSTOM WINDOW FOR LOCATIONS LIST
    
        // function Custom_Window(WINDOW_ID, TITLE, WIDTH, HEIGHT, POS_LEFT, POS_TOP) {
        Locations_List_Window = Custom_Window(Locations_List_Window_ID, "Locations", "512px", "720px", "250px", "50px");
        
        
        // SET "LOCATIONS_LIST_WINDOW" ON CENTER OF THE SCREEN
        
        Locations_List_Window.style.position = "fixed"; // Bad if the screen is too small
        Locations_List_Window.style.position = "absolute"; // Good if the screen is too small
        
        // HORIZONTAL POSITION (SIMPLE - NOT CENTERED) //
        // Locations_List_Window.style.left = "33%";
        
        
        // OPEN THE CUSTOM WINDOW IN THE CENTER //
        // IT WORKS ALSO WITH THE DRAGGING CODE //
        var Win_Width = parseInt(Locations_List_Window.style.width);
        var Calc_Center = (parseInt(window.innerWidth) / 2) - (Win_Width / 2);
        Locations_List_Window.style.left = Calc_Center + "px";
        
        
        // OLD CENTER CODES //
        
        // MANUAL CALCULATION //
        // BREAKS THE DRAGGING CODE... (marginLeft) //
        // Locations_List_Window.style.marginLeft = "-256px";
        
        
        // FULL AUTOMATIC //
        // BREAKS THE DRAGGING CODE... (marginLeft) //
        /*
        // ((WIDTH / 2) * -1) //
        var Calc_Width;
        Calc_Width = Locations_List_Window.style.width;
        Calc_Width = parseInt(Calc_Width) / 2 * -1;
        Locations_List_Window.style.marginLeft = calc_width + "px";
        */
        
    }
    
    // BUILD AND INSERT THE LOCATIONS IN LOCATIONS_LIST_WINDOW
    Fill_Locations_List_Window();
    
    // DEBUG
    // alert(Locations_List_Text);
    
}

//====================================================================================================

function Fill_Locations_List_Window() {
    
    // LOOP FOR BUILDING THE LOCATIONS LIST
    var i;
    var Current_Link;
    var Current_Location;
    var Link_Position_Top;
    
    // QUERY ALL LOCATIONS
    Locations_List_Link = document.querySelectorAll(".details .title a");
    
    if (Locations_List_Div) {
        Locations_List_Div.innerHTML = "";
    } else {
        Locations_List_Div = document.createElement( 'div' );
    }
    
    // LOOP: BUILD LOCATIONS LIST
    // console.log("DEBUG: Building the Locations List");
    for (i = 0; i < Locations_List.length; i++) {
        
        Current_Link = Locations_List_Link[i].outerHTML;
        Current_Location = Locations_List[i];
        
        Locations_List_Div.innerHTML += Current_Location + '  :  ';
        Locations_List_Div.innerHTML += Current_Link + '<br>\n';
        
        //console.log('Locations_List_Link[i].outerHTML = ' + Locations_List_Link[i].outerHTML);
    }
    
    // APPEND LOCATIONS_LIST_DIV
    Locations_List_Window.appendChild(Locations_List_Div);
    
    // CALCULATE THE HEIGHT OF "LOCATIONS_LIST_DIV"
    var tmp_height = Locations_List_Window.style.height;
    Locations_List_Div.style.position = "relative";
    Locations_List_Div.style.display = "block";
    Locations_List_Div.style.top = "10px";
    Locations_List_Div.style.height = (parseInt(tmp_height) - 50) + "px";
    Locations_List_Div.style.overflowY = "scroll";
    Locations_List_Div.style.margin = "5px";
    
}

//====================================================================================================

function Show_Profile_Locations() {
    
    // VARIABLES //
    var Target;
    var Location;
    var Div_Location;
    var Test;
    
    // LOCATION LOOP //
    var All_Locations = document.querySelectorAll("li.location");
    var i;
    
    if (!CSS_Mod) {
        Injection_CSS(".list li { max-height: 255px; } .details { min-height: 110px; }");
        CSS_Mod = 1;
    }
    
    for (i = 0; i < All_Locations.length; i++) {
        
        // console.log("DEBUG: Show_Profile_Locations();");
        
        if (All_Locations[i].parentNode.childNodes.length < 6 ) {
            
            Target = All_Locations[i].parentNode;         
            Location = All_Locations[i].innerHTML;
            Div_Location = document.createElement( 'div' );
            Div_Location.innerHTML = "Location: " + Location;
            Target.appendChild(Div_Location);
            
            // Div_Location.setAttribute("class") = "ShowLocation";  // BAD
            // Div_Location.style.margin = "10px";
            // Div_Location.style.display="inline";
            
        }
    }
}

//====================================================================================================

function Age_SetValue() {
    
    
    // AGE MIN //
    localStorage.setItem( 'CUB.AgeMin', AgeMin_Textbox.value );
    AgeMin = AgeMin_Textbox.value;
    
    // AGE MAX //
    localStorage.setItem( 'CUB.AgeMax', AgeMax_Textbox.value );
    AgeMax = AgeMax_Textbox.value;
    
    // HIDE YOUR MOM //
    Age_Filter();
    
    
    // Capturing the Enter Key (Not needed here, but it can be useful)
    // 
    // var key = e.which || e.keyCode;
    // 
    // 13 = Enter Key
    // if (key === 13) { ... }
    
}

//====================================================================================================

function Append_Age_Inputs() {
    
    // APPEND THE NEW CONTROLS INSIDE THIS NODE.
    var Target = document.querySelector(".sub-nav");
    
    // NEW LINE BREAKS //
    Append_BR(Target);
    Append_BR(Target);
    
    // CREATE & APPEND THE AGE-MIN LABEL
    AgeMin_Label = Append_Div(Target, "AgeMin_Label", "inline");
    AgeMin_Label.innerHTML = "Age Min: ";
    AgeMin_Label.style.margin = "10px";
    
    // CREATE & APPEND AGE-MIN TEXTBOX (INPUT)
    AgeMin_Textbox = Append_Textbox(Target, "AgeMin_Textbox", "inline");
    AgeMin_Textbox.setAttribute("type", "text"); 
    AgeMin_Textbox.maxLength = 2;
    AgeMin_Textbox.style.width = "30px";
    
    // CREATE & APPEND THE AGE-MAX LABEL
    AgeMax_Label = Append_Div(Target, "AgeMax_Textbox", "inline");
    AgeMax_Label.innerHTML = "Age Max: ";
    AgeMax_Label.style.margin = "10px";
    
    // CREATE & APPEND AGE-MAX TEXTBOX (INPUT)
    AgeMax_Textbox = Append_Textbox(Target, "AgeMax_Textbox", "inline");
    AgeMax_Textbox.setAttribute("type", "text"); 
    AgeMax_Textbox.maxLength = 2;
    AgeMax_Textbox.style.width = "30px";
    
    
    // TEMPORARY VARIABLES //
    var tmp_AgeMin;
    var tmp_AgeMax;
    
    // GET THE STORED AGE-MIN //
    tmp_AgeMin = localStorage.getItem('CUB.AgeMin');
    console.log("localStorage.getItem('CUB.AgeMin') = " + tmp_AgeMin);  // DEBUG
    
    if (tmp_AgeMin !== null) {
        AgeMin =  tmp_AgeMin;
    }

    // GET THE STORED AGE-MAX //
    tmp_AgeMax = localStorage.getItem('CUB.AgeMax');
    console.log("localStorage.getItem('CUB.AgeMax') = " + tmp_AgeMax);  // DEBUG
    
    if (tmp_AgeMax !== null) {
        AgeMax =  tmp_AgeMax;
    }

    // SET VALUE FOR AGE INPUTS //
    AgeMin_Textbox.value = AgeMin;
    AgeMax_Textbox.value = AgeMax;
    
    // INPUTS CHANGE EVENTS //
    AgeMin_Textbox.addEventListener("change", Age_SetValue);
    AgeMax_Textbox.addEventListener("change", Age_SetValue);
    
}

//====================================================================================================

function Age_Filter() {

    var span = document.querySelectorAll("SPAN");
    var age_class;
    var i;

    for (i = 0; i < span.length; i++) {
        
        age_class = span[i].getAttribute("class");
        if (
            age_class === "age genderc" || 
            age_class === "age genderf" || 
            age_class === "age genderm" || 
            age_class === "age genders"
        ) {

            age = span[i].innerHTML;
            
            Parent = span[i].parentNode.parentNode.parentNode;
            
            if (age < AgeMin || age > AgeMax) {
                Parent.style.display = "none";
            } else if (AlwaysHideMales === 1 && age_class === "age genderm") {
                Parent.style.display = "none";
            } else if (AlwaysHideTrans === 1 && age_class === "age genders") {
                Parent.style.display = "none";
            } else if (AlwaysHideGirls === 1 && age_class === "age genderf") {
                Parent.style.display = "none";
            } else if (AlwaysHideCouples === 1 && age_class === "age genderc") {
                Parent.style.display = "none";
            } else {
                Parent.style.display = "block";
            }

        }

    }

}

//====================================================================================================

function Clone_Pages_Numbers() {

    // Get the last <li> element ("Milk") of <ul> with id="myList2"
    var itm = document.querySelector("ul.paging");

    // Copy the <li> element and its child nodes
    var cln = itm.cloneNode(true);

    // Append the cloned <li> element to <ul> with id="myList1"
    document.querySelector("div.top-section").appendChild(cln);
    
}

//====================================================================================================





//====================================================================================================
// FUNCTIONS MODULES
//====================================================================================================


//====================================================================================================
// MODULE
// CODE INJECTIONS
//====================================================================================================

function Injection_CSS(STR_CSS, CSS_ID, WhereToInject) {
    
    // REFERENCE:
    // http://stackoverflow.com/questions/11833759/add-stylesheet-to-head-using-javascript-in-body


    // if (BOOL_BODY == true) {
    //     var Inject_Section = document.body;
    // } else {
    //     var Inject_Section = document.head;
    // }


    var Inject_Section;
        
    if (WhereToInject != null) {
        Inject_Section = WhereToInject;
    } else {
        Inject_Section = document.head;
    }
    
    var style_css = document.createElement('style');
    if (CSS_ID != '') { style_css.id = CSS_ID; }
    
    // style_css.href = '{url}';
    style_css.type = 'text/css';
    style_css.rel = 'stylesheet';
    style_css.innerHTML = STR_CSS;
    Inject_Section.appendChild(style_css);
    
    //document.head.appendChild(style_css);
}

//====================================================================================================


//====================================================================================================
// MODULE: HIDE_THIS_NODE
// REQUIREMENT: Injection_CSS
//====================================================================================================

function Hide_This_Node(Css_Element) {
    Injection_CSS(Css_Element + ' { display: none !important; }');
}

//====================================================================================================


//====================================================================================================
// MODULE: ADD CONTROLS
// BR, DIV, WINDOW, BUTTON, TEXTBOX
//====================================================================================================

function Append_BR(TARGET_NODE) {
    
    // createElement
    var NEW_BR = document.createElement( 'br' );
    
    // appendChild
    TARGET_NODE.appendChild(NEW_BR);
    
    // Return Created Node
    return NEW_BR;
}

//====================================================================================================

function Append_Div(TARGET_NODE, NEW_DIV_ID, NEW_DIV_DISPLAY) {
    
    // createElement //
    var New_Div = document.createElement( 'div' );
    
    // APPEND PARAMETERS //
    if (NEW_DIV_ID)        { New_Div.id = NEW_DIV_ID; }
    if (NEW_DIV_DISPLAY)   { New_Div.style.display = NEW_DIV_DISPLAY; }
    
    // appendChild //
    TARGET_NODE.appendChild(New_Div);
    
    return New_Div;
    
}

//====================================================================================================
    
    function Custom_Window(WINDOW_ID, TITLE, WIDTH, HEIGHT, POS_LEFT, POS_TOP) {
    
    // RESET THE POSITION EVERYTIME YOU OPEN THE WINDOW
    var Reset_Position = 0;
    
    // NEW_WINDOW //
    var New_Window = document.getElementById(WINDOW_ID);
    
    if (New_Window) {
    
        // POSITION RESET //
        if (Reset_Position) {
            New_Window.style.left = POS_LEFT;
            New_Window.style.top = POS_TOP;
        }
        
        // UNHIDE //
        New_Window.style.display = "block";
        
        // New_Window.style.visibility = "visible";
        // return New_Window;
        
    } else {
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // NEW_WINDOW
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        
        New_Window = document.createElement( 'div' );
        New_Window.id = WINDOW_ID;
        
        // NEW_WINDOW STYLE
        New_Window.style.border = "1px solid";
        New_Window.style.position = "relative";
        New_Window.style.display = "none";
        // New_Window.style.visibility = "hidden"; // BAD
        
        // NEW_WINDOW SIZE
        New_Window.style.width = WIDTH;
        New_Window.style.height = HEIGHT;
        
        // NEW_WINDOW POSITION
        New_Window.style.left = POS_LEFT;
        New_Window.style.top = POS_TOP;
        
        // NEW_WINDOW BACKGROUND COLOR
        New_Window.style.backgroundColor = "white";
        
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // Div_Title_Bar
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        
        var Div_Title_Bar_ID = WINDOW_ID + "_Title";
        // function Append_Div(TARGET_NODE, NEW_DIV_ID, NEW_DIV_DISPLAY) {
        var Div_Title_Bar = Append_Div(New_Window, Div_Title_Bar_ID, "block");
        
        Div_Title_Bar.style.position = "relative";
        Div_Title_Bar.style.top = "5px";
        Div_Title_Bar.style.height = "30px";
        Div_Title_Bar.style.marginLeft = "5px";
        Div_Title_Bar.style.marginRight = "5px";
        Div_Title_Bar.style.backgroundColor = "blue";
        
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // Div_Title
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        
        var Div_Title_ID = WINDOW_ID + "_Title";
        // function Append_Div(TARGET_NODE, NEW_DIV_ID, NEW_DIV_DISPLAY) {
        var Div_Title = Append_Div(Div_Title_Bar, Div_Title_ID, "inline");
        
        Div_Title.innerHTML = TITLE;
        Div_Title.style.position = "relative";
        Div_Title.style.fontSize = "24px";
        Div_Title.style.top = "5px";
        Div_Title.style.marginLeft = "5px";
        Div_Title.style.color = "white";
        
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // Close_Button
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        
        var Close_Button;
        var Close_Button_ID = WINDOW_ID + "_Close_Button";
        Close_Button = Append_Button(Div_Title_Bar, Close_Button_ID, "inline");
        
        Close_Button.innerHTML = "X";
        
        Close_Button.style.position = "relative";
        Close_Button.style.marginRight = "5px";
        Close_Button.style.top = "5px";
        Close_Button.style.cssFloat = "right";
        
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // CloseButton Click Event
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        
        Close_Button.addEventListener("click", function() {
            New_Window.style.display = "none";
        });
        
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // Line Breaks
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        //Append_BR(New_Window);
        //Append_BR(New_Window);
        
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // APPEND NEW_WINDOW TO DOCUMENT
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        
        New_Window.style.display = "block";
        document.body.appendChild(New_Window);
        
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        // Drag_This
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
        
        Div_Title_Bar.style.cursor = "move";
        Drag_This(Div_Title_Bar, New_Window);
        
    }
    
    return New_Window;
    
}
    
//====================================================================================================

function Append_Button(TARGET_NODE, NEW_BUTTON_ID, NEW_BUTTON_DISPLAY, NEW_BUTTON_CAPTION) {
    
    // createElement //
    var NEW_BUTTON = document.createElement( 'BUTTON' );
    
    // PARAMETERS //
    if (NEW_BUTTON_ID)        { NEW_BUTTON.id = NEW_BUTTON_ID; }
    if (NEW_BUTTON_DISPLAY)   { NEW_BUTTON.style.display = NEW_BUTTON_DISPLAY; }
    
    // BUTTON CAPTION //
    if (NEW_BUTTON_CAPTION) {
        var tmp_caption = document.createTextNode(NEW_BUTTON_CAPTION);
        NEW_BUTTON.appendChild(tmp_caption);
        // var t = document.createTextNode("Click me");
        // x.appendChild(t);
    }
    
    // appendChild //
    TARGET_NODE.appendChild(NEW_BUTTON);
    
    return NEW_BUTTON;
    
}

//====================================================================================================


function Append_Textbox(TARGET_NODE, NEW_TEXTBOX_ID, NEW_TEXTBOX_DISPLAY) {
    
    // createElement //
    var NEW_TEXTBOX = document.createElement( 'input' );
    
    // PARAMETERS //
    if (NEW_TEXTBOX_ID)        { NEW_TEXTBOX.id = NEW_TEXTBOX_ID; }
    if (NEW_TEXTBOX_DISPLAY)   { NEW_TEXTBOX.style.display = NEW_TEXTBOX_DISPLAY; }
    
    // appendChild //
    TARGET_NODE.appendChild(NEW_TEXTBOX);
    
    // Return Created Node
    return NEW_TEXTBOX;
    
}

//====================================================================================================


//====================================================================================================
// MODULE: DRAGING OBJECTS
// REQUIREMENT: ?
// SOURCE: https://jsfiddle.net/tovic/Xcb8d/
//====================================================================================================

var selected = null, // Object of the element to be moved
    x_pos = 0, y_pos = 0, // Stores x & y coordinates of the mouse pointer
    x_elem = 0, y_elem = 0; // Stores top, left values (edge) of the element

// Will be called when user starts dragging an element
function _drag_init(elem) {
    // Store the object of the element which needs to be moved
    selected = elem;
    x_elem = x_pos - selected.offsetLeft;
    y_elem = y_pos - selected.offsetTop;
}

// Will be called when user dragging an element
function _move_elem(e) {
    x_pos = document.all ? window.event.clientX : e.pageX;
    y_pos = document.all ? window.event.clientY : e.pageY;
    if (selected !== null) {
        selected.style.left = (x_pos - x_elem) + 'px';
        selected.style.top = (y_pos - y_elem) + 'px';
    }
}

// Destroy the object when we are done
function _destroy() {
    selected = null;
}

// Bind the functions...

function Drag_This(GRAB_ELEMENT, MOVE_ELEMENT) {
    // OR...
    // document.querySelector(GRAB_ELEMENT).onmousedown = function () {
    GRAB_ELEMENT.onmousedown = function () {
        _drag_init(MOVE_ELEMENT);
        return false;
    };
}

// ORIGINAL CODE //
/*
// Bind the functions...
document.getElementById('draggable-element').onmousedown = function () {
    _drag_init(this);
    return false;
};
*/

document.onmousemove = _move_elem;
document.onmouseup = _destroy;

//====================================================================================================



})();

// THE END