- // ==UserScript==
- // @name chaturbatefilter
- // @version 1.0
- // @namespace chaturbate_filter
- // @description chaturbate-filter
- // @include http://chaturbate.com/*
- // @include http://*.chaturbate.com/*
- // @grant GM_xmlhttpRequest
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js
- // @require http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js
- /*
- @require https://raw.github.com/jaysalvat/buzz/master/dist/buzz.min.js
- */
-
- // ==/UserScript==
-
- version = 1.0;
-
- var pageType = 0;
- var startTime = +new Date();
-
- var mySound = new buzz.sound( "http://soundjax.com/reddo/21862%5Ebeep1.mp3");
- $(function() {
- $( "#dialog" ).dialog({
- autoOpen: false,
- autoResize: true,
- height: 'auto',
- width: 580,
- show: {
- effect: "blind",
- duration: 100
- },
- hide: {
- duration: 1000
- },
- position: {
- my: 'left',
- at: 'center',
- of: $('#header')
- },
- buttons: {
- "Close": function() {
- $( this ).dialog( "close" );
- },
- "Clear All": function() {
- var targetNodes = $( "#ExhibitionistCams" ).find(".details");
- if (targetNodes && targetNodes.length > 0) {
- targetNodes.each ( function () {
- removeFromAlert(getName($(this)));
- } );
- }
- $( this ).dialog( "close" );
- }
- },
- open: function (event, ui) {
- $('#dialog').css('overflow', 'hidden');
-
- }
- });
-
- $( "#opener" ).click(function() {
- $( "#dialog" ).dialog( "open" );
- });
-
-
-
-
- $( "#followeddialog" ).dialog({
- autoOpen: false,
- autoResize: true,
- height: 'auto',
- width: 580,
- show: {
- effect: "blind",
- duration: 100
- },
- hide: {
- duration: 1000
- },
- position: {
- my: 'left',
- at: 'center',
- of: $('#header')
- },
- buttons: {
- "Close": function() {
- $( this ).dialog( "close" );
- }
- },
- open: function (event, ui) {
- $('#followeddialog').css('overflow', 'hidden');
- }
- });
-
- $( "#followeddialogopener" ).click(function() {
- var targetNodes = $( "#FollowedCams" ).find(".details");
- if (targetNodes && targetNodes.length > 0) {
- targetNodes.each ( function () {
- $( "#FollowedCams" ).find('#'+getName($(this))).remove();
- } );
- }
-
- $.get( '/followed-cams/', function( data ) {
- var dataObj = $('<div/>').html(data);
- dataObj.find(".details").each( function() {
- var thisCam = createNewUserCam($(this));
- if(shouldShowCam(thisCam) && thisCam.type != 3) {
- $("#FollowedCams").append(thisCam.cam.parent());
- }
- });
- }).fail(function() {
- alert( "error" );
- });
-
- $( "#followeddialog" ).dialog( "open" );
- });
-
- $( "#report_popupdialog" ).dialog({
- autoOpen: false,
- autoResize: true,
- height: 'auto',
- width: 400,
- show: {
- effect: "blind",
- duration: 100
- },
- hide: {
- duration: 1000
- },
- position: {
- my: 'left',
- at: 'center',
- of: $('#header')
- },
- buttons: {
- "Close": function() {
- $( this ).dialog( "close" );
- }
- },
- open: function (event, ui) {
- $('#report_popupdialog').css('overflow', 'hidden');
- }
- });
-
- $( "#report_popupopener" ).click(function() {
- logit("report_popupopener clicked");
- $("#report_popup form").attr("action", "/abuse/report/lionrauuuhl/");
- $( "#report_popupdialog" ).dialog( "open" );
- });
- });
-
- function addCheckboxes() {
- var sort, user_informationID = $("#user_information"), logo_zone = $(".logo-zone");
-
- sort =
- [
- ' <div id="user_information" style="float:right; font-size: 4pt" align="right" >',
- ' <div class="top" align="middle">',
- ' <label class="username"><strong><font color="#e45900">Sort</font><strong></label>',
- ' </div>',
- ' <div class="bottom" style="height:40px; padding:0px 4px 4px 0px;">',
- ' <table>',
- ' <tr height="2px">',
- ' <td><label id="showFemaleLabel"><input type="checkbox" name="showFemale" id="showFemale" checked />Show Females</label></td>',
- ' <td><label id="showCouplesLabel"><input type="checkbox" name="showCouples" id="showCouples" />Show Couples</label></td>',
- ' <td><label id="showOnlyOnlineLabel"><input type="checkbox" name="showOnlyOnline" id="showOnlyOnline" />Show Only Online</label></td>',
- ' <td><label id="showOnlyNewLabel"><input type="checkbox" name="showOnlyNew" id="showOnlyNew" />Show Only New</label></td>',
- ' <td><label id="showOnly1825Label"><input type="checkbox" name="showOnly1825" id="showOnly1825" />Show 18-25</label></td>',
- ' <!--td><button id="followeddialogopener">Followed Cams</button></td-->',
- ' </tr>',
- ' <tr height="2px">',
- ' <td><label id="showMaleLabel"><input type="checkbox" name="showMale" id="showMale" />Show Males</label></td>',
- ' <td><label id="showTranssexualLabel"><input type="checkbox" name="showTranssexual" id="showTranssexual" />Show Transsexual</label></td>',
- ' <td></td>',
- ' <td><label id="showOnlyExhibitionistLabel"><input type="checkbox" name="showOnlyExhibitionist" id="showOnlyExhibitionist" />Show Only Exhibitionist</label></td>',
- ' <td><label id="showOnly2635Label"><input type="checkbox" name="showOnly2635" id="showOnly2635" />Show 26-35</label></td>',
- ' <!--td><button id="report_popupopener">Report</button></td-->',
- ' </tr>',
- ' </table>',
- ' </div>',
- '</div>',
-
-
- '<div id="dialog" title="New Exhibitionist Cams" >',
- ' <div id="ExhibitionistCams" class="list" style="width: 100%; min-width: 0;"></div>',
- '</div>',
-
- '<div id="followeddialog" title="Followed Cams" >',
- ' <div id="FollowedCams" class="list"></div>',
- '</div>',
-
- '<div style="display:none" id="report_popupdialog" title="Report Abuse">',
- ' <form method="post" action="">',
- ' <div class="report_formborder">',
- ' <p class="report_select">Choose a category:',
- ' <select name="category" id="id_abuse_category_select">',
- ' <option value="">---</option>',
- ' <option value="recording">Recorded video</option>',
- ' <option value="underage">Broadcaster underage</option>',
- ' <option value="advertising">Broadcaster is advertising</option>',
- ' <option value="gender">Broadcaster is wrong gender</option>',
- ' <option value="other">Other</option>',
- ' </select></p>',
- ' <p class="report_comments">Additional Comments:<br />',
- ' <textarea id="id_additional_comments" name="additional_comments" draggable="false"></textarea>',
- ' </p>',
- ' <div class="button_abuse_report" style="width: auto;">',
- ' <a href="#" class="abuse_report_button" id="abuse_report_button" style="color:#FFF;">REPORT</a>',
- ' </div>',
- ' <div class="button_abuse_cancel">',
- ' <a href="#" class="abuse_cancel_button" id="abuse_cancel_button" style="color:#FFF;">CANCEL</a>',
- ' </div>',
- ' </div>',
- ' </form>',
- '</div>',
-
- '<div id="OtherPages"><h2>Cams From Other Pages</h2><div id="OtherPagesInside" class="list"></div></div>',
-
- '<div id="BannedCams"><h2>Banned Cams</h2><div id="BannedCamsInside" class="list"></div></div>',
-
- ].join('\n');
-
- if (typeof user_informationID.html() === "undefined") {
- logo_zone.before(sort);
- } else {
- user_informationID.before(sort);
- }
-
- $('#OtherPages').hide();
- $('#BannedCams').hide();
-
- $('#showFemale').click(function() {
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showMale').click(function() {
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showCouples').click(function() {
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showTranssexual').click(function() {
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showOnly1825').click(function() {
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showOnlyOnline').click(function() {
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showOnly2635').click(function() {
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showOnlyNew').click(function() {
- if($('#showOnlyNew').attr('checked')) {
- $('#showOnlyExhibitionist').attr('checked', false);
- }
- saveCheckboxSettings();
- refreshThePeopleList();
- });
- $('#showOnlyExhibitionist').click(function() {
- if($('#showOnlyExhibitionist').attr('checked')) {
- $('#showOnlyNew').attr('checked', false);
- }
- saveCheckboxSettings();
- refreshThePeopleList();
- });
-
- restoreCheckboxSettings();
- }
-
- function showHideCheckboxes() {
- if (pageType==7) {
- toggleCheckbox($('#showOnlyExhibitionist'),$('#showOnlyExhibitionistLabel'),false);
- toggleCheckbox($('#showOnlyNew'),$('#showOnlyNewLabel'),false);
- } else {
- toggleCheckbox($('#showOnlyExhibitionist'),$('#showOnlyExhibitionistLabel'),true);
- toggleCheckbox($('#showOnlyNew'),$('#showOnlyNewLabel'),true);
- }
-
- if (pageType==2 || pageType==3 || pageType==4 || pageType==5) {
- toggleCheckbox($('#showFemale'),$('#showFemaleLabel'),false);
- toggleCheckbox($('#showMale'),$('#showMaleLabel'),false);
- toggleCheckbox($('#showCouples'),$('#showCouplesLabel'),false);
- toggleCheckbox($('#showTranssexual'),$('#showTranssexualLabel'),false);
- } else {
- toggleCheckbox($('#showFemale'),$('#showFemaleLabel'),true);
- toggleCheckbox($('#showMale'),$('#showMaleLabel'),true);
- toggleCheckbox($('#showCouples'),$('#showCouplesLabel'),true);
- toggleCheckbox($('#showTranssexual'),$('#showTranssexualLabel'),true);
- }
-
- if(pageType==6) {
- toggleCheckbox($('#showOnlyOnlineLabel'),$('#showOnlyOnline'),true);
- } else {
- toggleCheckbox($('#showOnlyOnlineLabel'),$('#showOnlyOnline'),false);
- }
- }
-
- function getPageType() {
- // 1= Performer Page
- // 2= Female Page
- // 3= Male Page
- // 4= Couple Page
- // 5= Transsexual Page
- // 6= Followed Page
- // 7= Exhibitionist Page
- // 0= other
- var result = 0, activeTab = $(".active");
- if(activeTab.html()!=null) {
- if (activeTab.html().indexOf('s Cam') != -1) {
- result = 1;
- } else if (activeTab.html().indexOf('<a href="/female-cams/">FEMALE</a>') != -1) {
- result = 2;
- } else if (activeTab.html().indexOf('<a href="/male-cams/">MALE</a>') != -1) {
- result = 3;
- } else if (activeTab.html().indexOf('<a href="/couple-cams/">COUPLE</a>') != -1) {
- result = 4;
- } else if (activeTab.html().indexOf('<a href="/transsexual-cams/">TRANSSEXUAL</a>') != -1) {
- result = 5;
- } else if (activeTab.html().indexOf('<a href="/followed-cams/" class="followed">') != -1) {
- result = 6;
- } else {
- $(".endless_page_template").each(function () {
- if ($(this).find(":nth-child(1)").html().indexOf('<h2>Exhibitionist Cams</h2>') != -1) {
- result = 7;
- }
- });
- }
- }
- return result;
- }
-
- function isBetween18And25(age) {
- var ageValues = ["18","19", "20", "21", "22", "23", "24", "25", "99" ];
- return ageValues.indexOf(age) > -1;
- }
-
- function isBetween26And35(age) {
- var ageValues = ["26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "99" ];
- return ageValues.indexOf(age) > -1;
- }
-
- function saveCheckboxSettings() {
- var checkboxSettings = $(':checkbox').map(function () {return this.checked;}).get().join();
- createCookie('checkboxSettings',checkboxSettings);
- }
-
- function restoreCheckboxSettings() {
- var checkboxSettings = readCookie('checkboxSettings');
- if(checkboxSettings) {
- $(checkboxSettings.split(',')).each(function (i) {
- $(':checkbox:eq(' + i + ')').attr('checked', (this.toString() === 'true'));
- });
- }
- }
-
- function getAge(jNode) {
- var age = "99";
- if(jNode.find('.age')) {
- age = jNode.find('.age').text();
- }
- return age;
- }
-
- function getName(jNode) {
- var name = "";
- if(jNode.find('.title')) {
- name = jNode.find('.title').find('a').text();
- }
- return name;
- }
-
- function getGender(jNode) {
- // 0=error
- // 1=male
- // 2=female
- // 3=couple
- // 4=Transsexual
- var result = 0, span = jNode.find('.title span');
- if (span && span.hasClass('genderm')) {
- result = 1;
- } else if (span && span.hasClass('genderf')) {
- result = 2;
- } else if (span && span.hasClass('genderc')) {
- result = 3;
- } else if (span && span.hasClass('genders')) {
- result = 4;
- }
- return result;
- }
-
- function getType(jNode) {
- // 0=other
- // 1=new
- // 2=EXHIBITIONIST
- // 3=OFFLINE
- // 4=
- var result = 0;
- if (jNode.parent().html().indexOf('<div class="thumbnail_label thumbnail_label_c_new">NEW</div>') != -1) {
- result = 1;
- } else if (jNode.parent().html().indexOf('<div class="thumbnail_label thumbnail_label_exhibitionist">EXHIBITIONIST</div>') != -1) {
- result = 2;
- } else if (jNode.parent().html().indexOf('<div class="thumbnail_label thumbnail_label_offline">OFFLINE</div>') != -1) {
- result = 3;
- }
- return result;
- }
-
- function userCam(cam,name,gender,age,type,hidden) {
- cam.parent().attr('id',name);
- var that= this;
- this.cam=cam;
- this.name=name;
- this.gender=gender;
- this.age=age;
- this.type=type;
- this.hidden=hidden;
- this.getGenderString=function() {
- var result = "Unknown";
- if (that.gender==1) {
- result = "Male";
- } else if (that.gender==2) {
- result = "Female";
- } else if (that.gender==3) {
- result = "Couple";
- } else if (that.gender==4) {
- result = "Transsexual";
- }
- return result;
- };
- this.href=cam.find('.title a').attr('href');
- this.hide=function() {
- cam.parent().hide();
- hidden=true;
- };
- this.show=function() {
- cam.parent().show();
- hidden=false;
- };
- this.getCamClone=function() {
- return cam.parent().clone();
- };
- var report = '<li id="reportButton"><button id="report_popupopener">Report</button></li>';
- //if(this.cam.find('.sub-info #reportButton').length==0)
- //this.cam.find('.sub-info .cams').after(report);
- }
-
-
- function createNewUserCam(jNode) {
- return new userCam(jNode,getName(jNode),getGender(jNode),getAge(jNode),getType(jNode),false);
- }
-
- function preProcessCam(jNode) {
- return createNewUserCam(jNode);
- }
-
- function shouldShowCam(userCam) {
- var result = true;
- if (pageType!=2 && pageType!=3 && pageType!=4 && pageType!=5) {
- if (userCam.gender==1) {
- if(!isChecked($('#showMale'))) {
- result = false;
- }
- } else if (userCam.gender==2) {
- if(!isChecked($('#showFemale'))) {
- result = false;
- }
- } else if (userCam.gender==3) {
- if(!isChecked($('#showCouples'))) {
- result = false;
- }
- } else if (userCam.gender==4) {
- if(!isChecked($('#showTranssexual'))) {
- result = false;
- }
- }
- }
-
- if((isChecked($('#showOnlyNew')) && pageType!=7 && userCam.type!=1) || (isChecked($('#showOnlyExhibitionist')) && pageType!=7 && userCam.type!=2)) {
- result = false;
- }
-
- if (isChecked($('#showOnly1825')) && !isBetween18And25(userCam.age) && !(isChecked($('#showOnly2635')) && !isBetween26And35(userCam.age))) {
- result = false;
- }
-
- if (isChecked($('#showOnly2635')) && !isBetween26And35(userCam.age) && !(isChecked($('#showOnly1825')) && !isBetween18And25(userCam.age))) {
- result = false;
- }
- if (isChecked($('#showOnlyOnline')) && pageType==7 && userCam.type==3) {
- result = false;
- }
-
- return result;
- }
-
- function processCam(userCam) {
- if (pageType!=7) {
- addTokensRemaining(userCam.cam);
- }
-
- if(shouldShowCam(userCam)) {
- userCam.show();
- } else {
- userCam.hide();
- }
- }
-
- function processCams(cams) {
- $.each(cams, function (index,userCam) {
- processCam(userCam);
- });
- }
-
- var firstTimeThru=true;
- function processExhibitionist(userCam, refreshThePeopleListIgnoreUserList) {
- if (pageType==7) {
- if(refreshThePeopleListIgnoreUserList!==null && !arrayContains(userCam.name, refreshThePeopleListIgnoreUserList.split(',')) && shouldShowCam(userCam)) {
- refreshThePeopleListIgnoreUserList = addUserToIgnoreUserList(userCam.name, refreshThePeopleListIgnoreUserList);
- var camOnMainPage = false;
- $('.list').not("#OtherPagesInside, #BannedCamsInside, #ExhibitionistCams").children("div[id] :visible").each( function() {
- //logit(userCam.name);
- if($(this).attr('id') == userCam.name) {
- camOnMainPage = true;
- }
- });
- if (!firstTimeThru && !camOnMainPage && $("#ExhibitionistCams").find("#"+userCam.name).length == 0 && $("#FollowedCams").find("#"+userCam.name).length == 0) {
-
- var cloneOfCamParent = userCam.getCamClone();
- addAlertButtons(cloneOfCamParent, userCam.name);
- $("#ExhibitionistCams" ).append(cloneOfCamParent);
-
- var targetNodes = $( "#ExhibitionistCams" ).find(".details");
- if (targetNodes && targetNodes.length > 9) {
- $('#dialog').dialog('option','width',782);
- } else {
- $('#dialog').dialog('option','width',580);
- }
- $("#dialog" ).dialog( "open" );
-
- mySound.play();
- setImageRefresh(cloneOfCamParent, userCam.name);
- }
- }
- }
- }
-
- var refreshThePeopleListRunning = false;
- var newUserArray = [];
- var currentUserArray = [];
- var refreshThePeopleListIgnoreUserList;
- function refreshThePeopleList() {
- refreshThePeopleListRunning = true;
- refreshThePeopleListIgnoreUserList = getUserToIgnoreUserList();
- var targetNodes = $(".details");
- //$('.list').not("#OtherPagesInside, #BannedCamsInside, #ExhibitionistCams").children(":visible").each( function() {
-
- //});
- if (targetNodes && targetNodes.length > 0) {
- targetNodes.each ( function () {
- var userCam = actionFunction($(this), refreshThePeopleListIgnoreUserList);
- newUserArray.push(userCam.name);
- });
- }
-
- currentUserArray.every(removeRefreshImages);
- currentUserArray = newUserArray;
-
- if(newUserArray.length > 0) {
- firstTimeThru=false;
- }
-
- //might not want to do this
- newUserArray = [];
- refreshThePeopleListRunning = false;
- }
-
- function actionFunction(jNode, refreshThePeopleListIgnoreUserList) {
- var userCam = preProcessCam(jNode);
- processCam(userCam);
- processExhibitionist(userCam, refreshThePeopleListIgnoreUserList);
- return userCam;
- }
-
- var intervalMap = new Object();
- function setImageRefresh(cloneOfCamParent, name) {
- var image = cloneOfCamParent.find('img');
- //logit("setImageRefresh for: "+ name);
- var thisInterval = setInterval(function (name) {
- //logit("Refreshing image for: "+ name);
- image[0].src=image[0].src.replace(/\?.*/,function () {
- return '?'+new Date();
- });
- }, 60000);
-
- intervalMap[name] = thisInterval;
- }
-
- function removeFromAlert(name) {
- $( "#ExhibitionistCams" ).find('#'+name).remove();
- if ($( "#ExhibitionistCams" ).html() == '') {
- $( "#dialog" ).dialog( "close" );
- }
- }
-
- function addAlertButtons(jNode, name) {
- jNode.find('.cams').after('<input type="button" id="clearButton_'+name+'" value="Clear" >');
- jNode.find('#clearButton_'+name).button().click(function(){ removeFromAlert(name);});
-
- jNode.find('#clearButton_'+name).after('<input type="button" id="removeButton_'+name+'" value="Hide Room Forever" >');
- jNode.find('#removeButton_'+name).button().click(function(){ if(window.confirm("Are you sure you want to remove this room from showing on chaturbate forever?")) {alert("Removed");}});
- }
-
- var removeRefreshImages = function(x) {
- var found = false;
- for (var i = 0; i < newUserArray.length; i++) {
- if(x==newUserArray[i]) {
- found = true;
- }
- }
-
- if(!found && x in intervalMap) {
- clearInterval(intervalMap[x]);
- delete intervalMap[x];
- }
- };
-
-
-
- function getTokensRemaining(jNode) {
- var tokensRemaining = "", subjectElementHTML = jNode.find('.subject').html(),startpos,length;
- if(subjectElementHTML && subjectElementHTML.lastIndexOf("[") != -1 && subjectElementHTML.lastIndexOf(" tokens remaining]")!=-1) {
- startpos = subjectElementHTML.lastIndexOf("[")+1;
- length = subjectElementHTML.lastIndexOf(" tokens remaining]")-startpos;
- tokensRemaining = subjectElementHTML.substr(startpos,length);
- }
- return tokensRemaining.trim();
- }
-
- function addTokensRemaining(jNode) {
- var tokensRemaining = getTokensRemaining(jNode);
- if(jNode.find('#tokensRemaining')) {
- jNode.find('#tokensRemaining').remove();
- }
- if(tokensRemaining=="") {
- tokensRemaining="--";
- }
- jNode.find('.cams').after('<li id="tokensRemaining">Tokens Remaining: ['+tokensRemaining+']</li>');
- }
-
- function addUserToIgnoreUserList(userName, ignoreUserList) {
- if (!arrayContains(userName, ignoreUserList.split(','))) {
- if (ignoreUserList && ignoreUserList.split(',').length > 0) {
- ignoreUserList = ignoreUserList+',';
- }
- ignoreUserList = ignoreUserList + userName;
- createCookie('ignoreUserList',ignoreUserList);
- }
- return ignoreUserList;
- }
-
- function getUserToIgnoreUserList() {
- var ignoreUserList = readCookie('ignoreUserList');
- if(!ignoreUserList) {
- ignoreUserList = '';
- }
- return ignoreUserList;
- }
-
- function createCookie(name,value,days) {
- var date = new Date(), expires="";
- if (days) {
- date.setTime(date.getTime()+(days*24*60*60*1000));
- expires = "; expires="+date.toGMTString();
- }
- document.cookie = name+"="+value+expires+"; path=/";
- }
-
- function readCookie(name) {
- var c, i, nameEQ = name + "=", ca = document.cookie.split(';');
- for(i=0;i < ca.length;i++) {
- c = ca[i];
- while (c.charAt(0)==' ') {
- c = c.substring(1,c.length);
- }
- if (c.indexOf(nameEQ) == 0) {
- return c.substring(nameEQ.length,c.length);
- }
- }
- return null;
- }
-
- function eraseCookie(name) {
- createCookie(name,"",-1);
- }
-
- function addGlobalStyle(css) {
- var head, style;
- head = document.getElementsByTagName('head')[0];
- if (!head) { return; }
- style = document.createElement('style');
- style.type = 'text/css';
- style.innerHTML = css;
- head.appendChild(style);
- }
-
- function addStyle(style) {
- var head = document.getElementsByTagName("HEAD")[0], ele = head.appendChild(window.document.createElement( 'style' ));
- ele.innerHTML = style;
- return ele;
- }
-
- function arrayContains(obj, a) {
- var i;
- for (i = 0; i < a.length; i++) {
- if (a[i] === obj) {
- return true;
- }
- }
- return false;
- }
-
- function showCheckbox(checkbox, checkboxlabel) {
- checkbox.show();
- checkboxlabel.show();
- }
-
- function hideCheckbox(checkbox, checkboxlabel) {
- checkbox.hide();
- checkboxlabel.hide();
- }
-
- function checkCheckbox(checkbox,checked) {
- if(checked != null) {
- checkbox.attr('checked', checked);
- }
- }
-
- function toggleCheckbox(checkbox, checkboxlabel, show, checked) {
- if(show) {
- showCheckbox(checkbox,checkboxlabel);
- } else {
- hideCheckbox(checkbox,checkboxlabel);
- }
- checkCheckbox(checkbox,checked);
- }
-
- function isChecked(checkbox) {
- return checkbox.attr('checked');
- }
-
- function loadOtherPagesDiv() {
- if (typeof $("#OtherPages2").html() === "undefined") {
- var otherPages = $('#OtherPages').clone();
- otherPages.attr('id','OtherPages2');
- //logit("Showing OtherPages2");
- otherPages.show();
-
- var bannedCams = $('#BannedCams').clone();
- bannedCams.attr('id','BannedCams2');
- //logit("Showing BannedCams2");
- bannedCams.show();
-
- // Removes cams that are on this page from otherpagesinside
- $.get( window.location.pathname, function( data ) {
- $('.list').not("#OtherPagesInside, #BannedCamsInside, #ExhibitionistCams").children(":visible").each( function() {
- var thisCamPage = $(this).find('.title a').attr('href');
- var thisCamName = thisCamPage.substring(1, thisCamPage.length-1);
- if($("#OtherPagesInside").find("#"+thisCamName).length > 0) {
- $("#OtherPagesInside").find("#"+thisCamName).remove();
- }
- });
-
- }).fail(function() {
- logit("loadOtherPagesDiv error: " + nextPagelink);
- });
- $(".content").find('.list').after(otherPages);
- $("#OtherPages2").after(bannedCams);
- }
- }
-
- function loadPage(url){
- $.get( url, function( data ) {
- var dataObj = $('<div/>').html(data);
- getCamsFromOtherPages(dataObj);
- }).fail(function() {
- alert( "error" );
- });
- }
-
- var getCamsFromOtherPagesRunning = false;
- function getCamsFromOtherPages() {
- getCamsOnPage($("html"));
- loadOtherPagesDiv();
- }
-
- function getCamsOnPage(data) {
- getCamsFromOtherPagesRunning = true;
- var nextPagelink = getNextPageLink(data);
- if (nextPagelink != null) {
- $.get( nextPagelink, function( data ) {
- var dataObj = $('<div/>').html(data);
- dataObj.find(".details").each( function() {
- var thisCam = createNewUserCam($(this));
- if(shouldShowCam(thisCam)) {
- if ( $("#OtherPagesInside").find("#"+thisCam.name).length == 0) {
- $("#OtherPagesInside").append(thisCam.cam.parent());
- loadOtherPagesDiv();
- } else if ( $("#OtherPagesInside").find("#"+thisCam.name).length == 1) {
- var oldCam = $("#OtherPagesInside").find("#"+thisCam.name);
- }
- }
- });
- getCamsOnPage(dataObj);
- }).fail(function() {
- logit("getCamsOnPage error: " + nextPagelink);
- });
- }
-
- getCamsFromOtherPagesRunning = false;
- }
-
- //http://chaturbate.com/followed-cams/
- //<a href="/followed-cams/" class="followed">FOLLOWED(7/490)</a>
- function getFavoritePage(data) {
- if($('#followed')) {
- getFavoritePage("/followed-cams/");
- }
- }
- function getFavoritePage(nextPagelink) {
- if (nextPagelink != null) {
- $.get( nextPagelink, function( data ) {
- var dataObj = $('<div/>').html(data);
- dataObj.find(".details").each( function() {
- $("#FavoritePagesInside").append($(this).parent());
- });
- getFavoritePage(dataObj);
- }).fail(function() {
- logit("getFavoritePage error: " + nextPagelink);
- });
- }
- }
-
- function checkedCam(cam, camPage, lastChecked, status) {
- this.cam = cam;
- this.camPage = camPage;
- this.lastChecked = lastChecked;
- this.status = status;
-
- }
-
- var checkedCams = {};
- var pauseOtherCams = false;
- function checkOtherCamsOnline() {
- //logit("\n\n(checkOtherCamsOnline) start");
- pauseOtherCams = true;
- $("#OtherPagesInside").find('.details').each( function() {
- var thisCamPage = $(this).find('.title a').attr('href');
- var thisCamName = thisCamPage.substring(1, thisCamPage.length-1);
- var thisCam = $("#OtherPagesInside " + "#"+thisCamName);//.find("#"+thisCamName);
-
- //if($(this).find('.thumbnail_label').text() != 'BANNED') {
- if(thisCam.find('.thumbnail_label').text() != 'BANNED') {
- $.get( thisCamPage, function( data ) {
- var status = "Online";
-
- if (data.indexOf("offline_tipping") >= 0) {
- status = "Offline";
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('OFFLINE!');
- thisCam.remove();
- //logit("(checkOtherCamsOnline) removing: "+thisCamName);
- } else if(data.indexOf("This room has been banned.") >= 0) {
- status = "Banned";
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('BANNED');
- if ( $("#BannedCamsInside").find("#"+thisCamName).length == 0) {
- logit("** Moving Other Page Cam "+thisCamName+"to Banned Cams\n");
- thisCam.appendTo("#BannedCamsInside");
- } else {
- logit("Already in Banned Section, Removing Other Page Cam "+thisCamName + "\n");
- thisCam.remove();
- }
- } else if(data.indexOf("Access Denied. This room is not available to your region or gender.") >= 0) {
- status = "Blocked";
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('BLOCKED');
- } else if(data.indexOf("This room requires a password.") >= 0) {
- status = "Password";
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('PASSWORD');
- }
-
- if(!(thisCamName in checkedCams)) {
- var thisCheckedCam = new checkedCam($(this), thisCamPage, new Date(), status);
- checkedCams[thisCamName] = thisCheckedCam;
- //logit("Other Pages Cam added: "+ thisCamName);
- } else {
- var newDate = new Date();
- var seconds = (newDate - checkedCams[thisCamName].lastChecked) / 1000;
- checkedCams[thisCamName].lastChecked = newDate;
- //logit("Other Pages Cam found: "+ thisCamName+", last checked " + seconds +" ago");
- }
-
- });
- } else {
- if ( $("#BannedCamsInside").find("#"+thisCamName).length == 0) {
- logit("** Moving Other Page Cam "+thisCamName+"to Banned Cams\n");
- thisCam.appendTo("#BannedCamsInside");
- } else {
- logit("(checkOtherCamsOnline) Already in BannedCamsInside removing: "+thisCamName);
- thisCam.remove();
- }
- }
- });
-
- $("#ExhibitionistCams").find('.details').each( function() {
- var thisCamPage = $(this).find('.title a').attr('href');
- var thisCamName = thisCamPage.substring(1, thisCamPage.length-1);
- var thisCam = $("#ExhibitionistCams " + "#"+thisCamName);//.find("#"+thisCamName);
-
- if(thisCam.find('.thumbnail_label').text() != 'BANNED') {
- $.get( thisCamPage, function( data ) {
- var status = "Online";
-
- if (data.indexOf("offline_tipping") >= 0) {
- //logit("(checkOtherCamsOnline) marking as offline in ExhibitionistCams: "+thisCamName);
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('OFFLINE!');
- status = "Offline";
- } else if(data.indexOf("This room has been banned.") >= 0) {
- logit("(checkOtherCamsOnline) marking as banned in ExhibitionistCams: "+thisCamName);
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('BANNED');
- status = "Banned";
- } else if($("#OtherPagesInside").find("#"+thisCamName).length > 0) {
- var otherPagesInsideClass = $("#OtherPagesInside").find("#"+thisCamName).find('.thumbnail_label').attr('class');
- var otherPagesInsideThumbnail = $("#OtherPagesInside").find("#"+thisCamName).find('.thumbnail_label').text();
- //logit("\nthisCamName - Class: "+otherPagesInsideClass+" Thumbnail: "+otherPagesInsideThumbnail+"\n");
- thisCam.find('.thumbnail_label').attr('class', otherPagesInsideClass);
- thisCam.find('.thumbnail_label').text(otherPagesInsideThumbnail);
- } else if(data.indexOf("Access Denied. This room is not available to your region or gender.") >= 0) {
- status = "Blocked";
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('BLOCKED');
- } else if(data.indexOf("This room requires a password.") >= 0) {
- status = "Password";
- thisCam.find('.thumbnail_label').attr('class', 'thumbnail_label thumbnail_label_offline');
- thisCam.find('.thumbnail_label').text('PASSWORD');
- }
-
- if(!(thisCamName in checkedCams)) {
- var thisCheckedCam = new checkedCam($(this), thisCamPage, new Date(), status);
- checkedCams[thisCamName] = thisCheckedCam;
- //logit("Exhibitionist Cam added: "+ thisCamName);
- } else {
- var newDate = new Date();
- var seconds = (newDate - checkedCams[thisCamName].lastChecked) / 1000;
- checkedCams[thisCamName].lastChecked = newDate;
- //logit("Exhibitionist Cam found: "+ thisCamName+", last checked " + seconds +" ago");
- }
-
- });
- } else {
- if ( $("#BannedCamsInside").find("#"+thisCamName).length == 0) {
- logit("*** Copying Exhibitionist Cam "+thisCamName+" to Banned Cams\n");
- var thisCamClone = thisCam.clone();
- thisCamClone.find("#clearButton_"+thisCamName).remove();
- thisCamClone.find("#removeButton_"+thisCamName).remove();
- thisCamClone.appendTo("#BannedCamsInside");
- } else {
- logit("(checkOtherCamsOnline) Already in BannedCamsInside: "+thisCamName);
- }
- }
- });
-
- var ids = {};
- $("#BannedCamsInside").children().each( function() {
- logit($(this).attr('id'));
- var id = $(this).attr('id');
- clearInterval(id);
-
- //was this id previously seen?
- if ( ids.hasOwnProperty(id) ) {
- $( "#"+id ).remove();
- }
- //a brand new id was discovered!
- else {
- ids[ id ] = true;
- }
- });
- pauseOtherCams = false;
- }
-
- function logit(text) {
- console.log(text);
- }
-
- function getNextPageLink(data) {
- if(data == null) {
- return null;
- }
- var paging = data.find('.paging'), nextLink = null;
- paging.find('link').each(function() {
- var rel = $(this).attr('rel');
- if(rel=="next") {
- nextLink = $(this).attr('href');
- }
- });
- return nextLink;
- }
-
- $(document).ready(function () {
- $(".advanced_search_button").live("click", function () {
- $(".advanced_search_button").toggle();
- $("a.hide_advanced_search_button").toggle();
- $("div.advanced_search_options").slideDown();
- return false;
- });
- $(".hide_advanced_search_button").live("click", function () {
- $(".advanced_search_button").toggle();
- $("a.hide_advanced_search_button").toggle();
- $("div.advanced_search_options").slideUp();
- return false;
- });
- $("#filter_location_form input[type='checkbox']").click(function () {
- $(".searching-note").show();
- $.ajax({
- type: 'POST',
- url: $("#filter_location_form").attr("action"),
- data: $("#filter_location_form").serialize(),
- success: function (data) {
- $(".endless_page_template").load(window.location.href);
- $(".searching-note").hide();
- }
- });
- return true;
- });
- $("#filter_options_form").click(function () {
- $(".searching-note").show();
- $.ajax({
- type: 'POST',
- url: $("#filter_options_form").attr("action"),
- data: $("#filter_options_form").serialize(),
- success: function (data) {
- $(".endless_page_template").load(window.location.href);
- $(".searching-note").hide();
- }
- });
- return true;
- });
- $("#filter_search_form input[type='submit']").click(function () {
- var skey = $("#id_keywords").val();
- var search_message = interpolate(gettext("Searching for %(skey)s ..."), {skey: skey}, true);
- $(".searching-keyword h1").text(search_message);
- $(".searching-keyword").show();
- $(".endless_page_template").load($("#filter_search_form").attr("action") + '?' + $("#filter_search_form").serialize());
- return false;
- });
-
- $('.list').parent().bind("DOMNodeInserted",function(){
- if(!getCamsFromOtherPagesRunning && !refreshThePeopleListRunning && pageType==7) {
- getCamsFromOtherPages();
- refreshThePeopleList();
- } else if(!refreshThePeopleListRunning){
- refreshThePeopleList();
- logit("refreshThePeopleListRunning not running");
- }
- });
-
- //$('.list').parent().bind("DOMNodeRemoved",function(){
- //console.log('DOMNodeRemoved');
- //});
-
- });
-
- function do_script() {
- pageType = getPageType();
- if (pageType!=1) {
- addGlobalStyle('.ui-widget-header-custom {background-color: #3D9700;color:White;font-weight:bold;}');
- addStyle('@import "http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css";');
- addGlobalStyle('.ui-dialog .ui-dialog-buttonpane { text-align: center; }');
- addGlobalStyle('.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: none; }');
- if (pageType == 7) {
- createCookie('ignoreUserList','');
- }
- //eraseCookie('ignoreUserList');
- addCheckboxes();
- if (pageType==7) {
- getCamsFromOtherPages();
- }
-
- refreshThePeopleList();
-
- showHideCheckboxes();
- setInterval(checkOtherCamsOnline, 30000);
- }
- if (pageType==7) {
- reload_rooms.delay = 10000;
- setTimeout(reload_rooms.on_timeout,15000);
- } else {
- reload_rooms.delay = 90000;
- }
- }
-
- do_script();
- //.user.js