您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A unique great site got A new layout, with som added functionality and lost some. This script adds browser full video, bigger thumbnails, key and mouse navigation and interaction.
//// ==UserScript== // @name VPorn.com - A New Layout II - updated // @namespace http://use.i.E.your.homepage/ // @version 0.50 // @description A unique great site got A new layout, with som added functionality and lost some. This script adds browser full video, bigger thumbnails, key and mouse navigation and interaction. // @match http://www.vporn.com/* // @exclude http://www.vporn.com/embed/* // @match http://www.wporns.info/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js // @require https://greasyfork.org/scripts/9160-my-function-library/code/My%20Function%20library.js?version=128176 // @require https://greasyfork.org/scripts/6883-tinysort-tsort/code/TinySorttsort.js?version=27466 // @grant GM_getValue // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_listValues // @grant GM_xmlhttpRequest // @run-at document-start // @created 2015-01-28 // @released 2014-00-00 // @updated 2016-07-04 // @history @version 0.25 - first version: public@released - 2015-02-11 // @history @version 0.38 - pre release second version: public@released - 2015-04-24 // @history @version 0.39 - Second Public release: 2015-04-24 // @history @version 0.40 - Third Public release: 2015-05-02 // @history @version 0.41 - Forth Public release: 2015-05-03 // @history @version 0.48 - Fifth Public release: 2016-06-20 // @history @version 0.49 - Sixth Public release: 2016-07-03 // @history @version 0.50 - Seventh Public release: 2016-07-04 // @compatible Greasemonkey, Tampermonkey // @license GNU GPL v3 (http://www.gnu.org/copyleft/gpl.html) // @copyright 2014+, Magnus Fohlström // ==/UserScript== /*global $, jQuery*/ /*jshint -W014*/ // -W014, lax break, Bad line breaking before '+' // -W030, Expected assignment or function call instead saw an expression // -W082, a function declaration inside a block statement (function($){ //GM_lister( true ); var w = function( text, tag, style ){ style = style || ''; return fn.obj2Str( html.wrapTag( text, tag, style ) ); }, cl = function( text, style ){ style = style || ''; return fn.obj2Str( $( '<span/>',{ class: style, text: text }) ); }, em = function( text ){ return fn.obj2Str( $( '<em/>' ).html(text) ); }, b = function( text ){ return fn.obj2Str( $( '<b/>' ).html(text) ); }, v = function( text, width, height, src, firstLine, backTo, page ){ return fn.obj2Str( $( '<span/>',{ class:'videolink menuTM', text:text, 'data-command':'video', 'data-back':backTo, 'data-page':page, 'data-width':width, 'data-height':height, 'data-src':src }).append( $( '<span/>' ).text( firstLine ).hide() ) ); }, p = function( text, style ){ style = style || ''; var obj = $( '<span/>', { class: style }); $.each( text.split('\r'), function(id,elem){ obj.append( $('<p/>').html( elem.split('\n').join('<br>') .split('\t').join(' ') .split(/\s+/g).join(' ') )); }); return fn.obj2Str( obj ); }, a = function( txt, href ){ var link = href.search('mailto:') === 0 ? '' : 'http://'; return fn.obj2Str( $( '<a/>',{ href: link + href, class:'external', target: '_blank', text: txt }) ); }, l = function( txt, cl, data, page ){ return fn.obj2Str( $( '<a/>',{ class: cl, 'data-command': data, 'data-text': txt, 'data-page': page, text: txt }) ); }, GM = { show : function( dialog ){ setTimeout(function(){ render.tm(); $('#holderTM').show(); dialog == 'update' && ( html.latestTM() ); c.i('firstRun'); },2000); }, first : function(){ GM_setValue('firstRun','Done'); this.manager('set'); this.show(); }, manager : function( fn ){ var engine = function( val ){ switch (fn){ case 'set': GM_setValue( val.name, val.default ); break; case 'get': config[ val.name ] = GM_getValue( val.name ) || GM_getValue( val.default ); break; case 'del': GM_deleteValue( val.name ); break; } }, yourVer = GM_getValue('yourVer'), latest = sharedData.latestVersion; c.i('mlatest',latest); c.i('myourVer',yourVer); yourVer !== undefined && yourVer < latest && this.show('update'); GM_setValue('yourVer',latest); fn === 'del' && (GM_deleteValue( 'firstRun' ),GM_deleteValue( 'yourVer' )); $.each( sharedData.GM(), function(i,val){ engine(val) }); $.each( sharedData.settings2(), function(i,val){ engine(val) }); //$.each( sharedData.thumbSort(), function(i,val){ engine(val) }); } }, config = { fullWidth : 100, d80Width : 80, orgWidth : 960, normWidth : 1100, wideWidth : 1400, extraWidth : 1800, startWidth : function(){ var winWidth = $w.width(), corr = 80, min = 960, uiWidth = this.pageWidth === 'fullWidth' ? winWidth * ( this[ this.pageWidth ] / 100 ) - corr : this[ this.pageWidth ], setWidth = uiWidth + corr > winWidth ? winWidth - corr : uiWidth; this.pageWidthNR = setWidth < min ? min : setWidth; //c.l('this.pageWidth',this.pageWidth);c.l('this.pageWidth === fullWidth',this.pageWidth === 'fullWidth'); //c.l('this[ this.pageWidth ]',this[ this.pageWidth ]);c.l('uiWidth',uiWidth);c.l('setWidth',setWidth);c.l('this.pageWidthNR',this.pageWidthNR); //c.l('',);c.l('',); }, locDoc : window.location.href, sorting : false, prevDoc : 'prev', nextDoc : 'next' }, sharedData = { latestVersion : 0.50, updatesPerPage : 3, updatesFirstPage: 0, dialogWidth : 400, myName : 'Magnus Fohlström', copyrightYear : '2015 - 2016, ', update : function( ){ return [ { on:1 ,ver:'0.50', date:'2016-07-03', type:'update', visible:'y', magnitude:'MAJOR', name:'Page Navigation', desc:'Faster safer and not breaking layout, not running out of space - to show page buttons' }, { on:1 ,ver:'0.50', date:'2016-07-03', type:'fixed', visible:'y', magnitude:'mini', name:'Copyright', desc:'Added a space after Copyright symbol' }, { on:1 ,ver:'0.50', date:'2016-07-03', type:'update', visible:'y', magnitude:'major', name:'Refresh button', desc:'A new refresh button, with a hover, mouse-over - function' }, { on:1 ,ver:'0.50', date:'2016-07-03', type:'fixed', visible:'y', magnitude:'mini', name:'Update box width', desc:'The box now is filled in width of the update dialog' }, { on:1 ,ver:'0.50', date:'2016-07-03', type:'fixed', visible:'y', magnitude:'minor', name:'menuState', desc:'Saving state of always show' }, { on:1 ,ver:'0.50', date:'2016-07-03', type:'fixed', visible:'y', magnitude:'minor', name:'Show Menu click', desc:'Checkbox is now click-able' }, { on:1 ,ver:'0.49', date:'2016-06-20', type:'new', visible:'y', magnitude:'minor', name:'Latest version', desc:'Latest update version is now displayed in the dialog' }, { on:1 ,ver:'0.49', date:'2016-06-20', type:'fixed', visible:'y', magnitude:'mini', name:'menu Button', desc:'Are now only reacting to left click mouse-up, now things happens in right order' }, { on:1 ,ver:'0.49', date:'2016-06-20', type:'fixed', visible:'y', magnitude:'major', name:'Copyright', desc:'Layout fixed - is now centered, when menu is hidden. Down under in code, many change was needed' }, { on:1 ,ver:'0.49', date:'2016-06-20', type:'update', visible:'y', magnitude:'mini', name:'A Dot', desc:'Update description is always followed, by a dot' }, { on:1 ,ver:'0.49', date:'2016-06-20', type:'fixed', visible:'y', magnitude:'mini', name:'menuState', desc:'Always show menu, is true. By default' }, { on:1 ,ver:'0.49', date:'2016-06-20', type:'new', visible:'y', magnitude:'major', name:'Dynamic width size', desc:'Dynamically changes when browser width size changes, Full witdh of the browser' }, { on:1 ,ver:'0.48', date:'2016-06-18', type:'update', visible:'n', magnitude:'major', name:'myFunction Library', desc:'Added latest version of myFunction\'s Library' }, { on:1 ,ver:'0.48', date:'2016-06-18', type:'fixed', visible:'y', magnitude:'mini', name:'Center pager', desc:'The pager is now displaying page buttons centered' }, { on:1 ,ver:'0.48', date:'2016-06-18', type:'new', visible:'y', magnitude:'mini', name:'Buttons left click', desc:'Make sure that only right mouse button - work' }, { on:1 ,ver:'0.48', date:'2016-06-18', type:'new', visible:'y', magnitude:'major', name:'Latest Button', desc:'You can now, push a button for latest update and isn\'t repeated' }, { on:1 ,ver:'0.48', date:'2016-06-18', type:'fixed', visible:'y', magnitude:'mini', name:'Fix Reverce Order', desc:'Now Reverce order button always working, before needed some extra clicks' }, { on:1 ,ver:'0.47', date:'2016-06-12', type:'fixed', visible:'y', magnitude:'mini', name:'Center Pager', desc:'Pager now centers everywhere - css fix' }, { on:1 ,ver:'0.47', date:'2016-06-11', type:'fixed', visible:'y', magnitude:'major', name:'Fixed Latest Update', desc:'Now shows latest updates, instead of blank' }, { on:1 ,ver:'0.47', date:'2016-06-11', type:'new', visible:'y', magnitude:'minor', name:'Visible Thumbs', desc:'In sort menu, shows how many thumbs are visible of the total, delivered' }, { on:1 ,ver:'0.46', date:'2016-04-08', type:'fixed', visible:'y', magnitude:'mini', name:'Fix thumb info', desc:'Title was messed up by other info, now fixed' }, { on:1 ,ver:'0.46', date:'2016-04-07', type:'new', visible:'y', magnitude:'minor', name:'Reverse Order', desc:'Reverse the order of that sort function, a small bug is remaining' }, { on:1 ,ver:'0.46', date:'2016-04-05', type:'new', visible:'y', magnitude:'minor', name:'Video minMax', desc:'Now you can show thumbs between minimum and maximum length' }, { on:1 ,ver:'0.45', date:'2015-12-29', type:'new', visible:'y', magnitude:'major', name:'Thumb Sorter', desc:'On each thumb pages individual you can sort by date or length and choice only to show HD thumbs' }, { on:1 ,ver:'0.44', date:'2015-12-27', type:'update', visible:'y', magnitude:'minor', name:'Page Navigation', desc:'Error Correcting and faster function to navigate thumb pages' }, { on:1 ,ver:'0.43', date:'2015-10-09', type:'new', visible:'y', magnitude:'minor', name:'Active Button', desc:'Visually mark active button' }, { on:1 ,ver:'0.43', date:'2015-10-08', type:'fixed', visible:'y', magnitude:'minor', name:'Foot', desc:'Now is foot always close to bottom, not jumping around' }, { on:1 ,ver:'0.43', date:'2015-10-08', type:'update', visible:'n', magnitude:'minor', name:'Updates Management', desc:'Simpler way to manage the updates information page' }, { on:1 ,ver:'0.43', date:'2015-10-08', type:'new', visible:'y', magnitude:'minor', name:'Fullplayer border', desc:'Smaller white border with boxShadow and red background' }, { on:1 ,ver:'0.42', date:'2015-05-12', type:'update', visible:'y', magnitude:'major', name:'Video Dialog', desc:'A video dialog there presentation - can be shown - example made' }, { on:1 ,ver:'0.41', date:'2015-05-03', type:'fixed', visible:'y', magnitude:'minor', name:'Button Click', desc:'From now on it\'s when clicking a button, something will happened'}, { on:1 ,ver:'0.41', date:'2015-05-03', type:'new', visible:'y', magnitude:'minor', name:'Update Pager', desc:'Update Dialog got pager' }, { on:1 ,ver:'0.41', date:'2015-05-03', type:'new', visible:'y', magnitude:'minor', name:'Update Latest ', desc:'When new version ii shows latest changes, in update dialog' }, { on:1 ,ver:'0.41', date:'2015-05-02', type:'new', visible:'y', magnitude:'minor', name:'Auto Show Update', desc:'Shows Update Dialog when this script is updated to new version' }, { on:1 ,ver:'0.40', date:'2015-05-02', type:'new', visible:'y', magnitude:'major', name:'Update Dialog', desc:'Now you can see the latest changes' }, { on:1 ,ver:'0.40', date:'2015-04-30', type:'update', visible:'n', magnitude:'major', name:'Code Rewrite', desc:'95 lines lesser code - same result, easier to manage and add information' }, { on:1 ,ver:'0.40', date:'2015-04-29', type:'fixed', visible:'y', magnitude:'mini', name:'Video Dialog size', desc:'Are now fixed - if dialog height are too big' }, { on:1 ,ver:'0.40', date:'2015-04-26', type:'new', visible:'y', magnitude:'mini', name:'Return', desc:'Navigation back to where you where before you entered video dialog' }, { on:1 ,ver:'0.39', date:'2015-04-24', type:'new', visible:'y', magnitude:'major', name:'Video Dialog', desc:'A dialog that will show media like videos' }, { on:0 ,ver:false, date:'2015-04-26', type:'', visible:'', magnitude:'', name:'menuState', desc:'' } ]; }, dialogs : function( ){ return [ { on:1, order:4, name:'Update Info', command:'update', type:'menuTM', width: 515, id:'updatedTM', head:'Updates v' + this.latestVersion, page:1, firstLine:'Here can you see all the uppdates that are made.' }, { on:1, order:1, name:'About', command:'about', type:'menuTM', width: 450, id:'aboutTM', head:'About', firstLine:'Script Details.' }, { on:1, order:2, name:'Welcome', command:'firstIntro', type:'menuTM', width:'default', id:'welcomeTM', head:'Welcome', firstLine:'Hi THANKS for using this fabulous script.' }, { on:1, order:3, name:'Settings', command:'config', type:'menuTM', width:'default', id:'configTM', head:'Set your settings', page:1, firstLine:'We all have our own preferences, choice is yours.' }, { on:1, order:9, name:'Contact', command:'contact', type:'menuTM', width:'default', id:'contactTM', head:'Contact Me', firstLine:'Here you have a simple form to contact me.' }, { on:1, order:5, name:'Instruction/Help', command:'help', type:'menuTM', width:'default', id:'helpTM', head:'Instructions - ', page:1, firstLine:'How to operate this special script.' }, { on:0, order:6, name:'Other Scripts', command:'similarScripts', type:'menuTM', width:'default', id:'otherTM', head:'', firstLine:'' }, { on:0, order:6, name:'Other Sites', command:'OtherSites', type:'menuTM', width:'default', id:'sitesTM', head:'', firstLine:'All the Sites this script is working on' }, { on:1, order:8, name:'Donate', command:'donate', type:'menuTM', width:'default', id:'donateTM', head:'Donating', firstLine:'What amount are you willing to lose or invest in me.' }, { on:0, order:8, name:'Video', command:'video', type:'menuTM', width:'default', id:'videoTM', head:'', firstLine:'' }, { on:0, order:7, name:'Feedback', command:'feedback', type:'menuTM', width:'', id:'feedbackTM', head:'Make a feedback', firstLine:'' }, { on:0, order:7, name:'My Home Page', command:'www.myDom.com', type:'external', width:'default', id:'', head:'', firstLine:'' } ]; }, about : function( ){ return [ { on:1 ,name:'Name', desc:'VPorn.com - A New Layout II'}, { on:1 ,name:'Description', desc:'A unique great site got A new layout, with som added functionality and lost some. ' + 'This script adds browser full video, bigger thumbnails, key and mouse navigation and interaction.'}, { on:1 ,name:'Version', desc: this.latestVersion }, { on:1 ,name:'Site', desc:'www.vporn.com'}, { on:1 ,name:'Runs at', desc:'document start'}, { on:1 ,name:'Created', desc:'2015-01-28'}, { on:1 ,name:'Updated', desc:'2016-07-04'}, { on:1 ,name:'History v0.25', desc:'1st Public: 2015-02-11'}, { on:1 ,name:'History v0.39', desc:'2nd Public: 2015-04-24'}, { on:1 ,name:'History v0.40', desc:'3rd Public: 2015-05-02'}, { on:1 ,name:'History v0.41', desc:'4th Public: 2015-05-03'}, { on:1 ,name:'History v0.48', desc:'5th Public: 2016-06-20'}, { on:1 ,name:'History v0.49', desc:'6th Public: 2016-07-03'}, { on:1 ,name:'History v0.50', desc:'7th Public: 2016-07-04'}, { on:0 ,name:'History v0.48', desc:'8th Public: 2016-06-20'}, { on:0 ,name:'History v0.48', desc:'9th Public: 2016-06-20'}, { on:1 ,name:'Compatible', desc:'Greasemonkey, Tampermonkey'}, { on:1 ,name:'License', desc:'GNU GPL v3 (http://www.gnu.org/copyleft/gpl.html)'}, { on:1 ,name:'Copyright', desc: this.copyrightYear + this.myName }, { on:0 ,name:'Updated', desc:'2015-04-18'}, { on:0 ,name:'Updated', desc:'2015-04-18'}, { on:0 ,name:'Updated', desc:'2015-04-18'}, { on:0 ,name:'Updated', desc:'2015-04-18'}, { on:0 ,name:'Updated', desc:'2015-04-18'} ]; }, minMax : function( ){ return [ { name:'Zero', unite:'Min', min:0 }, { name:'Five', unite:'Min', min:5 }, { name:'Ten', unite:'Min', min:10 }, { name:'Fifteen', unite:'Min', min:15 }, { name:'Thirty', unite:'Min', min:30 }, { name:'One', unite:'Hour', min:60 }, { name:'Two', unite:'Hour', min:120 }, { name:'Ten', unite:'Hour', min:600 } ]; }, thumbSort : function( ){ return [ { default : false, name : 'Count' , chk : 0, sort : 'asc' }, { default : false, name : 'HD' , chk : 0, sort : 'asc' }, { default : false, name : 'min' , chk : 0, sort : 'dec' }, { default : true , name : 'Length' , chk : 1, sort : 'dec' }, { default : false, name : 'max' , chk : 0, sort : 'dec' }, { default : true , name : 'Date' , chk : 1, sort : 'asc' }, { default : false, name : 'Views' , chk : 1, sort : 'dec' }, { default : false, name : 'Rating' , chk : 1, sort : 'dec' }, { default : false, name : 'Unsorted', chk : 1, sort : 'asc' }, { default : true, name : 'sortOrder', chk : 0, sort : 'asc' } ]; }, GM : function( ){ return [ { default : true, name :'menuState' }, { default : 4, name :'thumbCol' }, { default : 'normWidth', name :'pageWidth' }, { default : false, name :'inMenu' }, { default : 0, name :'imgHeight' }, { default : 0, name :'videoMin' }, { default : 36000, name :'videoMax' }, { default : false, name :'sortOrder' }, { default : 'unsorted', name :'sortState' }, { default : false, name :'HD' }, { default : 'r', name :'randis' } ]; }, settings2 : function( ){ return [ { on:0 ,default : true, name :'dynThumb', title : 'Show thumbs in correct ratio aspect' }, { on:0 ,default : false, name :'startButton', title : 'Inside the user menu / as a separated button' }, { on:0 ,default : false, name :'ads', title : 'Show Ads' }, { on:1 ,default : true, name :'welcome', title : 'Show welcome Screen' }, { on:0 ,default : true, name :'menuPos', title : '' }, { on:1 ,default : false, name :'menuVisible', title : 'Show menu' }, { on:1 ,default : false, name :'start', title : 'Do you know how to find this dialog' }, { on:1 ,default : false, name :'resetDelete', title : 'Reset All Settings' }, { on:1 ,default : 'Auto', name :'fullPlayer', title : 'Set full player size - when video page loads' } ]; }, sites : function( ){ return [ { on:1, name :'', href : '', added : '', workablity : '', howFast : '', ratings: '', state : '', stateChanges : '' }, { on:1, name :'', href : '', added : '', workablity : '', howFast : '', ratings: '', state : '', stateChanges : '' } ]; } }, css = { head : function( ){ $('<style id="fontsCss"></style>' + '<style id="mainCss"></style>' + '<style id="bxCss"></style>' + '<style id="tmCss"></style>' + '<style id="fullCss"></style>').appendTo('head'); }, fontsCss : function( ){ var CssHead = $( '#fontsCss' ), css = '@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.css);'; CssHead.html().length < 10 && CssHead.empty().append( css.formatString() ); }, basicCss : function( ){ var css, CssHead = $('#mainCss'), pageWidth = config.pageWidthNR, thumbCol = config.thumbCol; css = '' + '.overheaderbanner, #vz_im_ad, #video-right-holder, .red-adv, ' + ".topSbanner, div[style*='width: 720px'], .leftbanner, #leftmenu, #video-banner {" + 'display: none !important;' + '}' + '#head, .navwrap, .nwrap, #footer-nav4, .warapper-menu {' + 'width: '+pageWidth+'px !important;' + 'max-width: '+pageWidth+'px !important;' + 'min-width: 960px !important;' + '}' + '.account-videos {' + 'width: calc( 100% - 190px );' + '}' + '.video-details {' + 'width: calc( '+pageWidth+'px - 18px );' + '}' + '.video-details.small {' + 'padding-bottom: 45px;' + '}' + '.playerholder {' + 'width: calc( '+pageWidth+'px - 18px );' + 'height: 0;' + 'padding-bottom: calc(100% / 16 * 9);' + '}' + '.menu-video-left > span {' + 'width: 100%;' + 'max-width: none !important;' + '}' + '.menu-video-left {' + 'width: calc( 100% - 65px );' + 'height: 39px;' + 'line-height: 39px;' + 'padding-left: 5px;' + '}' + 'object#as3_js, #video_player video {' + 'width: 100%;' + 'height: 100%;' + 'position: absolute;' + '}' + '.conteiner, .conteiner>div, #video, .related, .related_outer, .related_container, #leftmenu ~ div {' + 'width: 100% !important;' + '}' + '#content {' + 'padding-top: 0;' + 'overflow: visible;' + '}' + '.nwrap > * , body > * {' + 'position: relative;' + '}' + '.related_outer, .related_container {' + 'overflow: visible !important;' + 'position: static !important;' + 'height: initial !important;' + '}' + '.tplace {' + 'width: 100%;' + 'height: inherit;' + '}' + '.time {' + 'top: inherit;' + 'bottom: 85px;' + '}' + '.thumblist .bx {' + 'width: calc( 100% / '+thumbCol+' - 15px ) !important;' // + 'height: calc( ('+pageWidth+'px / 5 - 15px )*(215/210)) !important;' // + 'min-height: 227px;' + '}' + '.thumblist .bx .time {' + 'top: inherit;' + 'bottom: 5px;' + '}' + '.thumblist .bx .thumb {' + 'position: relative;' /* + 'width: 100%;' + 'height: 100%;' + 'display: inline;' */ + '}' + '.cholder, .cholder>div {' + 'width: calc( '+pageWidth+'px ) !important;' + 'clear: both;' + 'overflow: visible;' + '}' + '.bx {' + 'margin-right: 13px !important;' + '}' + '.thumblist .bx .bx_title a {' + 'height: 32px !important;' + '}' + '.thumblist .bx {' + 'width: calc( 100% / '+thumbCol+' - 15px ) !important;' + 'position: relative;' + 'z-index: 1000;' + 'transition: all 500ms ease-in-out 500ms;' + '}' + '.thumblist .bx:hover {' + 'transform: scale( 1.25 );' + 'z-index: 10000;' + 'position: relative;' + 'box-shadow: 0px 0px 18px 4px rgba(82, 25, 24, 0.4);' + 'border: rgba(89, 35, 35, 0.79) solid 1px;' + '}' + '.cholder .thumblist, .related_outer .thumblist {' + 'width: calc( 100% + 14px );' + '}' + '.thumblist div.bx div:nth-last-child( 1 ) {' + 'bottom: 3px;' + '}' + '.thumblist div.bx div:nth-last-child( 2 ) {' + 'bottom: 22px;' + '}' + '.thumblist .bx {' + 'display: none !;' + '}' + '.thumblist .bx.showThumb {' + 'display: block !;' + '}' + '.grayarea.wline {' + 'height: 39px;' + 'line-height: 39px;' + 'text-align: center;' + 'width: 100%;' + '}' + '.warapper-menu {' + 'background-color: white;' + 'border-width: 1px;' + 'border-style: solid;' + 'border-color: rgb( 228, 228, 228 );' + 'border-radius: 12px;' + 'overflow: hidden;' + '}' + '.account-menu {' + 'border-width: 0;' + 'margin-right: 0;' + '}' + '.account-videos {' + 'width: calc( 100% - 178px );' + '}' + '.account-title {' + 'border: 0px solid #e4e4e4;' + 'border-bottom: 1px solid #e4e4e4;' + '}' + '.account-videos-wrapp.clearfix {' + 'border: 0px solid #e4e4e4;' + '}' + 'i.btn.btn-default {' + 'float: left;' + 'padding: 11px 9px 12px 9px;' + 'margin: 9px;' + 'margin-top: 15px;' + 'color: white;' // + 'font-family: "Open Sans", Arial, Helvetica, sans-serif;' + 'font-weight: 600;' + 'font-size: 12px;' + 'border-radius: 3px;' + 'background-color: rgb( 253, 69, 66 );' + 'cursor: pointer;' + '}' + '.search {' + 'width: initial !important;' + 'margin: 15px 0px 0 15px !important;' + '}' + '.reloadButton {' + 'position: absolute;' + 'top: 49px;' + 'right: 55px;background-image: linear-gradient(0,#f5f5f5 0,#fff 100%);' + 'border-color: #e4e4e4;' + 'border-radius: 2px;' + 'border-style: solid;' + 'border-width: 1px;' + 'margin-top: -42px;' + 'width: 40px; height: 39px;' + '}' + '.reloadButton span {' + 'width: 100%;' + 'height: 100%;' + 'background-image: url(http://eu-st.xhamster.com/images/tpl2/icons.png?5);' + 'background-position: 2px -50px;' + 'zoom: 2.3;' + 'display: block;' + '}' + '.reloadButton span:hover {' + 'background-position: -16px -50px;' + '}' + '.thumbSort ul.sortscontain a {' + 'float: left;' + '}' + '.thumbSort .sortscontain {' + 'display: inline-block;' + '}' + '.thumbSort li {' + 'display: block;' + 'float: left;' + 'font-size: 12px;' + 'margin: 8px 2px 0 2px;' + 'padding: 8px 11px 7px 11px;' + 'background-color: #fff;' + '-moz-border-radius: 2px;' + '-webkit-border-radius: 2px;' + 'border-radius: 2px;' + '-moz-box-shadow: 0 1px 1px rgba( 0, 0, 0, 0.03 );' + '-webkit-box-shadow: 0 1px 1px rgba( 0, 0, 0, 0.03 );' + 'box-shadow: 0 1px 1px rgba( 0, 0, 0, 0.03 );' + 'font-weight: normal;' + 'line-height: 12px;' + '}' + '.thumbSort li.current {' + 'font-weight: 600;' + 'height: 18px;' + 'padding-left: 15px;' + 'padding-right: 15px;' + 'margin-top: 5px;' + '-moz-border-radius: 0;' + '-webkit-border-radius: 0;' + 'border-radius: 0;' + '-moz-box-shadow: none;' + '-webkit-box-shadow: none;' + 'box-shadow: none;' + 'border-top: 1px solid #e4e4e4;' + 'border-left: 1px solid #e4e4e4;' + 'border-radius: 1px solid #e4e4e4;' + 'line-height: 16px;' + 'background: url( "/images/new/s-active.png" ) no-repeat center top;' + '}' + '.sortline .sortscontain {' + 'margin: 0;' + '}' + '.thumbSort {' + 'float: right !important;' + 'position: relative;' + 'z-index: 100000;' + '}' + '.minititle h1 span {' + 'margin-top: 11px;' + 'display: inline-block;' + '}' + '.pagerwrap {' + 'position: relative;' + 'z-index: 100000;' + '}' + 'li#sortOrder {' + 'width: 91.8px;' + 'padding-left: 15px;' + 'padding-right: 15px;' + '}' + 'li#sortOrder:not( .current ) {' + 'border-top: 1px solid rgb( 255, 255, 255 );' + 'border-left: 1px solid rgb( 255, 255, 255 );' + '}' + 'li.max, li.min {' + 'float: none;' + 'margin: 0 !important;' + 'border-top: 0px solid !important;' + '}' + 'ul.minMax {' + 'position: absolute;' + 'z-index: 10000;' + 'display: none;' + 'margin: 19px 0 0 -30px;' + '}' + 'li.minMaxWrapper:hover .minMax {' + 'display: inline;' + '}' + '.HD .thumblist > div:not( .hd ) {' + 'display: none !;' + '}' + '.video-details .thumbSort {' + 'position: absolute;' + 'width: 100%;' + 'right: initial;' + 'bottom: -2px;' + 'text-align: center;' + 'transform: initial;' + '}' + '.video-details {' + 'position: relative;' + 'padding-bottom: 40px;' + '}' + '.sortline {' // + 'width: 1338px;' + '}' + '.minititle {' + 'background-color: #EAEAEA;' + 'margin-bottom: 10px;' + 'padding: 0 5px 0 10px;' + 'height: 42px;' + '}' + '.minititle h2 {' + 'line-height: 42px;' + '}' + 'ul.navlinks {' + 'margin: 0 0 0 46px;' + '}'; pageWidth < 1800 && ( css += '' + '.thumblist .bx .bx_1line {' + 'position: absolute;' + 'width: calc( 100% - 17px );' + '}' ); //CssHead.html().length < 10 && CssHead.empty().append( css.formatString() ); }, fullCss : function( input ){ $('html').addClass('fullplayer'); var css, CssHead = $('#fullCss'), margin = 8, inputSize = input || 3, pageWidth = $(window).width() - ( ( margin * 2 ) + inputSize ), pageHeight = $(window).height() - ( ( margin * 2 ) + 14 ); css = '' + '.reloadButton, header, br, .menu-video, .video-details, .video_panel, .related-videos, ' + '.clear, .related, #popup_content, .overheaderbanner, footer, #vz_im_ad {' + 'display: none !important;' + '}' + 'html {' + 'overflow: hidden;' + 'background-color: rgba(247, 54, 28, 0.85);' + '}' + 'body {' + 'padding-right: 2px;' + 'height: 0px;' + '}' + '.conteiner>div {' + 'margin: '+( 7 + margin )+'px auto !important;' + '' + '}' + '.nwrap {' + 'width: '+pageWidth+'px !important;' + 'max-width: '+pageWidth+'px !important;' + '}' + '#video {' + 'box-shadow: 0.4px 0px 10px 4px rgba(141, 0, 0, 0.87);' + 'border-radius: 6px;' + '}' + '.video-details {' + 'width: calc( '+pageWidth+'px - 18px );' + '}' + '.playerholder {' + 'width: calc( '+pageWidth+'px - 9px ) !important;' + 'height: calc( '+pageHeight+'px - 11px ) !important;' + 'margin: 4px; padding-bottom: 0 !important' + '}'; CssHead.empty().append( css.formatString() ); }, bxCss : function( i ){ var css, CssHead = $('#bxCss'); css = '' + '.thumblist .bx {' + 'min-height: '+( i + ( 13 + 13 + 21 + 29 ) )+'px;' + '}'; CssHead.empty().append( css.formatString() ); }, tmCss : function( ){ var css, CssHead = $('#tmCss'); css = '' + '#holderTM {' + 'position: fixed;' + 'top: 50%;' + 'left: 50%;' + 'width: 0px;' + 'height: 0px;' + 'z-index: 100000;' + '}' + '.wrapperTM {' + 'position: absolute;' + 'transform: translate( -50%, -50% );' + 'background-color: rgba( 250, 244, 241, 0.91 );' + 'border-radius: 20px;' + 'border-width: 5px;' + 'border-style: ridge;' + 'border-color: rgb( 229, 78, 41 );' + 'padding-bottom: 15px;' + '}' + '.contentTM {' + 'padding: 20px;' + 'box-sizing: border-box;' + 'float: left;' + 'overflow: auto;' + 'min-height: 300px' + '}' + 'a.monkeySettings.openCloseTM span {' + 'cursor: pointer;' + '}' + 'i#closeButton {' + 'position: absolute;' + 'z-index: 1000;' + 'right: 4px;' + 'top: 2px;' + 'text-shadow: 0px 0px 3px rgb( 178, 37, 37 );' + 'color: rgb( 244, 244, 244 );' + '}' + 'i#closeButton:hover {' + 'color: rgb( 145, 49, 26 );' + 'text-shadow: 0px 0px 4px #91311A;' + 'margin-left: -1px;' + 'cursor: pointer;' + '}' + 'i#menuButton {' + 'position: absolute;' + 'z-index: 1000;' + 'left: 4px;' + 'top: 2px;' + 'text-shadow: 0px 0px 3px rgb( 178, 37, 37 );' + 'color: rgb( 244, 244, 244 );' + '}' + 'i#menuButton:hover {' + 'color: rgb( 145, 49, 26 );' + 'text-shadow: 0px 0px 4px #91311A;' + 'margin-left: -1px;' + 'cursor: pointer;' + '}' + '.contHeadTM {' + 'text-align: center;' + 'font-weight: bold;' + 'font-variant: small-caps;' + 'font-size: 46px;' + '}' + '.firstLine {' + 'font-style: italic;' + 'font-weight: bold;' + 'font-size: 20px;' + '}' + '.normPresentation {' + 'font-size: 18px;' + 'line-height: 22px;' + '}' + '.normPresentation p {' + 'text-indent: 32px;' + 'margin-bottom: 10px;' + '}' + '.contBodyTM em {' + 'color: rgb( 217, 78, 44 );' + '}' + '.contBodyTM .menuTM:not(.pageLi), .contBodyTM .external {' + 'color: blue;' + 'cursor: pointer;' + '}' + '.contBodyTM .click {' + 'color: blue;' + 'cursor: pointer;' + '}' + '#holderTM .foot {' + 'position: absolute;' + 'bottom: 0;' + 'width: 100%;' + 'padding: 0 6px;' + 'box-sizing: border-box;' + '}' + '#holderTM span.checkbox {' + 'float: left;' + 'line-height: 34px;' + 'margin-left: 2px;' + 'width: 164px;' + 'position: absolute;' + 'bottom: 0px;' + 'left: 5px;' + 'z-index: 10;' + '}' + '#holderTM .foot .copyright {' + 'float: right;' + 'line-height: 34px;' + 'margin-right: 5px;' + '}' + '#holderTM .menuOff .foot {' + 'text-align: center;' + '}' + '#holderTM .menuOff .foot .copyright {' + 'float: none;' + 'margin-left: 12.5px;' + '}' + '.myMenu li, .myMenu li a {' + 'line-height: 28px;' + 'height: 28px;' + 'width: 100%;' + 'display: inline-block;' + 'cursor: pointer;' + '}' + 'ul.pagerUl.myMenu li:not(.nPageShow):not(.active) {' + 'display:none;' + '}' + 'ul.myMenu {' + 'margin-left: -10px;' + '}' + '.myMenu li {' + 'padding-left: 10px;' + 'border-radius: 5px;' + 'border-style: groove;' + 'border-width: 2px;' + 'margin-bottom: 5px;' + 'background-color: rgb( 244, 244, 244 );' + '}' + '.myMenu li:hover:not(.active ) {' + 'background-color: rgb( 145, 49, 26 );' + 'box-shadow: 1px 1px 2px 0px #1D0601;' + 'border-color: rgb( 229, 78, 41 );' + 'border-style: outset;' + 'border-width: 2px;' + 'margin-left: -1px;' + '}' + '.myMenu li:active {' + 'background-color: rgb( 117, 93, 12 );' + '}' + '.myMenu li:hover:not(.active ) a {' + 'color: rgb( 233, 228, 224 );' + 'text-shadow: 0px 0px 6px rgba( 255, 255, 255, 0.6 );' + '}' + 'kk.myMenu li.pageHide:not(:nth-last-child(-n+2)):not(:nth-child(-n+3)):not(.active) {' + 'display: none;' + '}' + '#myForm input, #myForm textarea {' + 'float: right;' + 'width: 200px;' + '}' + '#myForm textarea {' + 'width: 198px;' + 'height: 80px;' + '}' + '#myForm ul.myMenu {' + 'width: 64px;' + 'margin-left: 20px;' + '}' + '#myForm ul.myMenu li {' + 'padding: 5px 12px 5px 20px;' + '}' + '#aboutTM #table {' + 'display: table;' + '}' + '#aboutTM #table .row {' + 'display: table-row;' + '}' + '#aboutTM #table .label, #aboutTM #table .details {' + 'display: table-cell;' + 'padding-bottom: 8px;' + 'line-height: 20px;' + '}' + '#aboutTM #table .label {' + 'width: 120px;' + 'font-weight: bold;' + '}' + '#helpTM .row {' + 'display: table-row;' + '}' + '#helpTM .label, #helpTM .details {' + 'display: table-cell;' + '}' + '#helpTM .label {' + 'padding-left: 33px;' + 'width: 133px;' + '}' + '#helpTM .details {' + 'padding-bottom: 8px;' + 'line-height: 20px;' + '}' + '#helpTM h4 {' + 'padding-bottom: 10px;' + '}' + '#helpTM .mouseNav {' + 'padding-left: 33px;' + 'padding-top: 10px;' + '}' + '#configTM .description {' + 'margin: 10px 0 5px 10px;' + '}' + '#configTM .row {' + 'display: table-row;' + '}' + '#configTM .label, #configTM .details {' + 'display: table-cell;' + '}' + '#configTM .label {' + 'padding-left: 25px;' + 'width: 75px;' + '}' + '#configTM input[type="radio"] {' + 'margin-right: 7px;' + 'top: 1.5px;' + 'cursor: pointer;' + 'transform: scale(1.4);' + 'transform-origin: center center;' + 'position: relative;' + '}' + '#configTM #full .row {' + 'padding: 10px 0;' + 'display: table;' + '}' + '#configTM #full .row span {' + 'margin-right: 10px;' + '}' + '#configTM #more .label {' + 'width: 200px;' + 'padding-right: 20px;' + 'padding-bottom: 10px;' + 'padding-top: 5px;' + 'font-weight: 600;' + '}' + '#configTM #more .details {' + 'vertical-align: middle;' + '}' + '#configTM form#columns {' + 'margin: 16px 0;' + '}' + '#configTM form#columns h4 {' + 'margin-bottom: 10px;' + '}' + '#configTM form#columns .details span {' + 'margin-right: 15px;' + '}' + '#configTM ul#setColSize {' + 'margin: auto;' + 'width: 250px;' + '}' + '#configTM ul#setColSize li a.menuTM {' + 'text-align: center;' + 'color: black;' + '}' + '#configTM ul#setColSize li {' + 'padding: 0;' + '}' + '#configTM ul#setColSize li:hover a.menuTM {' + 'color: aliceblue;' + '}' + '#configTM #pageSize span, #configTM #columns span {' + 'line-height: 24px;' + '}' + '#pagerTM {' + 'text-align: center;' + 'position: relative;' + 'height: 40px;' + 'line-height: 40px;' + 'overflow: hidden;' + '}' + '#pagerTM ul.pagerUl {' // + 'position: absolute;' // + 'left: 66%;' // + 'transform: translateX( -50% );' // + 'width: 100%;' + 'display: inline-block;' + 'margin: 0;' + '}' + '#pagerTM ul.pagerUl li {' + 'float: left;' + 'padding: 0px 10px;' + 'width: initial;' + 'margin: 0 5px;' + '}' + '#videoTM {' + 'width: 100% !important;' + 'margin-bottom: -20px;' + 'margin-top: -25px;' + '}' + '#videoTM p.firstLine {' + 'margin-bottom: 5px;' + 'text-align: center;' + '}' + '#videoTM .firstLine a.menuTM {' + 'font-size: 13px;' + 'font-weight: 400;' + 'line-height: 22px;' + 'position: relative;' + 'top: -2px;' + 'margin-left: 10px;' + 'display: inline-block;' + 'color: blue;' + '}' + '#updatedTM span.table {' + 'display: table;' + '}' + '#updatedTM .group {' + 'display: table-row-group;' + '}' + '#updatedTM .block {' + 'display: table-row;' + '}' + '#updatedTM .cell {' + 'display: table-cell;' + '}' + '#updatedTM .cell.c1 {' + 'width: 40px;' + '}' + '#updatedTM .cell.c2 {' + 'width: 90px;' + '}' + '#updatedTM .block .c12 {' + 'padding-bottom: 15px;' + '}' + '#updatedTM .group:nth-child( 2n+1 ) {' + 'background-color: rgb( 244, 244, 244 );' + '}' + '#updatedTM .group:nth-child( 2n+2 ) {' + 'background-color: rgba( 243, 222, 217, 0.36 );' + '}' + '#updatedTM .block.top .cell {' + 'border-top-width: 1px;' + 'padding: 5px 8px 0px;' + 'font-weight: 600;' + '}' + '#updatedTM .block.botton .cell {' + 'vertical-align: middle;' + 'padding: 8px 8px;' + '}' + '#updatedTM .block .cell.c1, #updatedTM .block .cell.c10 {' + 'border-left-width: 1px;' + '}' + '#updatedTM .block .cell.c3, #updatedTM .block .cell.c12 {' + 'border-right-width: 1px;' + '}' + '#updatedTM .contBodyTM {' + 'border-bottom: 1px;' + 'border-style: outset;' + '}' + '#updatedTM *:not(li) {' + 'border-color: rgb( 157, 138, 125 );' + 'border-style: double;' + '}' + '#updatedTM #pagerTM {' + 'margin-top: 10px;' + '}' + '.wrapperTM li.active {' + 'border-color: #91311A;' + 'background-color: #F1E5E1;' + 'border-width: 1px;' + 'margin: 1px 6px 7px 1px !important;' + 'line-height: 27px;' + 'height: 27px;' + '}' + '.wrapperTM li.active a {' + 'margin-top: -1px;' + '}' + '.wrapperTM #pagerTM ul.pagerUl li {' + 'margin-left: 5px !important;' + '}'; CssHead.empty().append( css.formatString() ); } }, fn = { isNumeric : function( value ) { return /^\d+$/.test( value ); }, obj2Str : function( obj ){ var objArr = $.makeArray(obj); return objArr[0].outerHTML; }, imgHeightSub: function( id ){ var imgHeight = config.imgHeight || 0, thisImg = $( id ).height(); imgHeight = thisImg > imgHeight ? thisImg : imgHeight; imgHeight > 66 && imgHeight > config.imgHeight && ( css.bxCss( imgHeight + 1 ), config.imgHeight = imgHeight ); }, imgHeight : function( ){ $('.thumblist').find('.bx').each(function(){ var $this = $( this ), id = '#' + $this.find('.tplace').attr('id'); fn.imgHeightSub( id ); }); }, minMaxCurrent : function( ){ var minElem = $('li.min.current'), min = parseInt( minElem.data('minute') ), maxElem = $('li.max.current'), max = parseInt( maxElem.data('minute') ); $('.minMaxWrapper').removeClass('current'); ( min !== 0 || min > max ) && minElem.parents('.minMaxWrapper').addClass('current'); ( max !== 36000 || max < min ) && maxElem.parents('.minMaxWrapper').addClass('current'); }, minMax : function( min, max ){ min = min === undefined ? GM_getValue( 'videoMin' ) : min; max = max === undefined ? GM_getValue( 'videoMax' ) : max; $('.thumblist').find('.bx').each(function( i, e ){ var $this = $( e ), len = parseInt( $this.attr('data-length') ); $this[ ( len >= min && len <= max ) ? 'addClass' : 'removeClass' ]( 'showThumb' ); }); }, videoAttributes : function( ){ // if( $('.bx.hd, .bx.sd').length === $('.bx').length ) return false; $('.thumblist').find('.bx').each(function( i, e ){ i++; var $this = $( e ), unsorted = $this.data('unsorted'), id = '#' + $this.find('.tplace').attr('id'); $this.removeClass('lastrow') .attr('data-unsorted', unsorted !== undefined ? unsorted : i.toString().lpad('0',2) ) .attr('data-length', fn.videoLen( $this.find('.time').text() ).toString().lpad('0',6 ) ) .attr('data-date', fn.videoDate( $this.find('.vtime').text() ).toString().lpad('0',8 ) ) .attr('data-views', fn.videoViews( $this.find('.ileft').text() ).toString().lpad('0',8 ) ) .attr('data-rating', fn.videoRating( $this.find('.iright.upperc').text() ).toString().lpad('0',3 ) ) .addClass( $this.find('.time img').length ? 'hd' : 'sd' ) .find('.time').appendTo( $this.find('.thumb') ); $( id ).load(function() { fn.imgHeightSub( id ); }); }); }, videoRating : function( val ){ // 88% return val.split('%').shift(); }, videoViews : function( val ){ // 12,889 views return val.split(' ').shift().split(',').join(''); }, videoDate : function( val ){ // 24mo ago, 11days ago, 4h ago, 49min ago var arr = ['mo','day','h','min'], multi = [ 60*24*30, 60*24, 60, 1 ], newVal = 0, type = 0; $.each( arr, function( i, e ){ newVal = val.search( e ) !== -1 ? val.split( e ) : ''; newVal.length > 0 && ( newVal = parseInt( newVal[0] ), type = i ); if( newVal > 0 ) return false; }); return newVal * multi[ type ] + ''; }, videoLen : function( val ){ // 1:24:16 var sec = 0; $.each( val.replace(/\s+/g, '').split(':').reverse(), function( i, e ){ e = parseInt( e ); sec += i === 0 ? e : i === 2 ? 60 * 60 * e : 60 * e; }); return sec; }, thumbCounter: function( ){ $('#Count').html( 'Count: ' + $('.thumblist .bx:visible').length + ' / ' + $('.thumblist .bx').length ); }, esc : function( ){ $('#fullCss').empty(); $('html').removeClass('fullplayer'); }, active : function( command ){ $( '#menuTM').find('.active' ).removeClass('active').end() .find('a[data-command=' + command + ']' ).parent().addClass('active'); }, sortMenu : function( ){ var arr = ['newest','longest','views','rating','favorites','comments','votes'], locDoc = config.locDoc, thisSort = ''; $.each(arr,function(key,value){ locDoc.search( value ) > 0 && ( thisSort = value ); }); thisSort = thisSort.length < 2 ? 'newest' : thisSort; $('.account-menu').find('a').each(function(i,el){ var elem = $( el ); elem.attr('href', elem.attr('href') + thisSort ); }); GM_xmlhttpRequest({ method: "GET", url: "http://www.vporn.com/", crossDomain: false, onload: function( res ) { res = $( res.responseText ).find('.grayarea.wline'); $( res ) .find('ul>li').removeClass('current').wrap('<a href="http://www.vporn.com/newest"></a>').end() .find('.sorts').attr('style','width: 100%;').end() .find('.maincat').remove().end() .find('.timefilter').remove().end() .find('a').each(function(i,el){ var elem = $( el ), elemType = elem.attr('href').split('/').pop(); elem.attr('href', locDoc.search( thisSort ) > 0 ? locDoc.replace( thisSort, elemType ) : locDoc + '/' + thisSort ); thisSort === elemType && elem.find('li').addClass('current').unwrap(); }); $('.grayarea.wline').replaceWith( res ); } }); }, sortButtons : function( $e ){ var sortFN = $e.data('fn'), sortOrderElem = $('#sortOrder'), sortOrder = sortOrderElem.attr('sortorder'), tsortElem = $( '.thumblist .bx' ), thisSort = $e.data('sort'), activeElem = $('.thumbSort li[data-chk="1"].current'), activeFN = activeElem.data('fn'), activeSort = activeElem.data('sort'); sortFN === 'sortOrder' ? ( sortOrder = sortOrder != 'true', // sortOrder = GM_getValue( 'sortOrder' ) || false, sortOrderElem[ sortOrder ? 'addClass' : 'removeClass' ]('current'), sortOrderElem.attr('sortOrder', sortOrder), tsortElem.tsort({attr:'data-' + activeFN, order: ( sortOrder ? ( activeSort === 'asc' ? 'dec' : 'asc' ) : activeSort ) }), GM_setValue('sortOrder', sortOrder ) ): sortFN === 'HD' ? ( toggleClassState( config, 'HD', 'Toggle' ), GM_setValue('HD', $('html').hasClass('HD') ), $e.toggleClass('current','off') ) : $e.data('chk') === 1 && ( $('.thumbSort li[data-chk="1"]').removeClass('current'), $e.addClass('current'), tsortElem.tsort({attr:'data-' + sortFN, order: ( sortOrder ? ( thisSort === 'asc' ? 'dec' : 'asc' ) : thisSort ) }), GM_setValue('sortState', sortFN ) ); fn.thumbCounter(); }, initSort : function( ){ //noinspection JSJQueryEfficiency GM_getValue( 'sortOrder' ) && $('#sortOrder').addClass('current'); //noinspection JSJQueryEfficiency $('#sortOrder').attr('sortOrder', GM_getValue( 'sortOrder' ) ? false : true ); $('.sortscontain') .find('li.min[data-minute='+ GM_getValue( 'videoMin' )+ ']').addClass('current').end() .find('li.max[data-minute='+ GM_getValue( 'videoMax' )+ ']').addClass('current'); fn.minMaxCurrent(); GM_getValue('HD') === true && fn.sortButtons( $('li#HD') ) ; fn.sortButtons( $('.thumbSort li[data-fn='+ GM_getValue('sortState') +']') ); fn.sortButtons( $('.thumbSort li[data-fn=sortOrder]') ); }, chkPager : function( ){ var elem = $('.pagerwrap'); elem.parents().is('.related') && elem.hide(); }, timeDate : function( d, /* Date instance */ fo /* Format string */ ){ var f = fo || ' '; return f.replace( // Replace all tokens /{(.+?)(?::(.*?))?}/g, // {<part>:<padding>} function ( v, // Matched string (ignored, used as local var) c, // Date component name p // Padding amount ) { //noinspection StatementWithEmptyBodyJS for(v = d["get" + c]() // Execute date component getter + /h/.test(c) // Increment Mont(h) components by 1 + ""; // Cast to String v.length < p; // While padding needed, v = 0 + v); // pad with zeros return v; // Return padded result }); }, submitForm : function( ){ var name = $('#cname').val(), email = $('#cemail').val(), subject = $('#csubject').val(), text = $('#ccomment').val(), dateParam = function(){ return "{FullYear}-{Month:2}-{Date:2} {Hours:2}:{Minutes:2}:{Seconds:2}"; }, date = function(){ return new Date(); }; $.ajax({ type: 'POST', url: 'https://mandrillapp.com/api/1.0/messages/send.json', data: { 'key': 'Hk5nxsMx5Ov4zVL7GHJkSQ', 'message': { 'from_name' : name, 'from_email': email, 'to': [{ 'email': '[email protected]' }], 'auto_text': true, 'subject': 'myUserScript: VPorn.com' + subject, 'text': text + '\r\r\t TimeStamp: ' + date //fn.timeDate(date,dateParam) } } }).done(function(response) { console.log(response); // if you're into that sorta thing }); }, setColSize : function( page ){ var configTM = $( '#configTM' ); if( $('.switchAble').data('page') == 1 ) { GM_setValue('pageWidth', configTM.find('#pageSize input.size:checked').val()), GM_setValue('thumbCol', configTM.find('#columns input.col:checked').val()); } else { $.each( sharedData.settings2(), function(i,e) { c.i('nr: ' + i +', ' + e.name + ', ' + e.title + '.'); GM_setValue( e.name, configTM.find( '#more input.' + e.name ).val() ); }); } configTM.find('#setColSize .menuTM').text('Settings are now Saved'); }, fullPlayer : function( type ){ // $( '#fullPlayer' ).length || css.style('fullPlayer'); config.pageWidth === 'orgWidth' || toggleClassState( config, 'fullPlayer', type ); $('.pager').length || config.pageWidth === 'orgWidth' || GM_setValue('fullPlayer', config.fullPlayer ); }, loadHref : function( dir ){ var pager = $('.pager').find( 'a.' + dir ).attr('href'); pager !== undefined && $( location ).attr('href', pager ); }, runCommand : function( elem ){ c.i('menuTM', elem ); var $this = elem, command = $this.data('command'), page = $this.data('page'), back = $this.data('back'), vHeight = $this.data('height'), vWidth = $this.data('width'), vSrc = $this.data('src'), firstLine = $this.find('span').text(); c.i('command',command); c.i('page',page); config.commandos = command; switch( command ){ case 'about' : html.aboutTM(); break; case 'firstIntro' : html.welcomeTM(); break; case 'config' : html.configTM( page ); break; case 'help' : html.helpTM( page , 400); break; // case 'similar' : html.otherScript(); break; case 'update' : html.updatedTM.render( page ); break; case 'latest' : html.latestTM(); break; case 'video' : html.videoTM( vHeight, vWidth, vSrc, firstLine, back, page ); break; case 'menu' : html.sideTM(); break; case 'donate' : html.donateTM(); break; case 'submit' : fn.submitForm(); break; case 'setColSize' : fn.setColSize(); break; case 'contact' : html.contactTM(); break; default : break; } command !== 'setColSize' && fn.active( command === 'latest' ? 'update' : command ); } }, listeners = { resize : function( ){ $(window).resize(function(){ $('html').hasClass('fullplayer') ? css.fullCss(18) : ( config.startWidth(), css.basicCss(), config.imgHeight = 0, fn.imgHeight() ); }); }, navKey : function( ){ document.addEventListener('keydown', function(e){ if( $('input').is(':focus') ) return false; var key = e.keyCode; ( key == 37 || key == 39 ) && ( fn.loadHref( key == 37 ? config.prevDoc : config.nextDoc )); key == 66 && css.fullCss(); key == 27 && fn.esc(); }, false); }, navThumb : function( e ){ c.i('navThumb'); var ContentElem = $( e ), ContentLeft = parseInt( ContentElem.offset().left ), ContentRight = ContentLeft + ContentElem.width(); $(document).on('mouseup','body, #content',function(e){ var X_spot = e.clientX; this == e.target && e.which == 1 && ( ( X_spot < ContentLeft || X_spot > ContentRight ) && ( fn.loadHref( config[ X_spot < ContentLeft ? 'prevDoc' : 'nextDoc' ] ) ) ); }); listeners.navKey(); }, navVideo : function( ){ $(document).on('mouseup','#content, html.fullplayer',function(e){ this == e.target && e.which == 1 && g.ms === 0 && ( g.timer(64), $('html').hasClass('fullplayer') ? fn.esc() : css.fullCss() ); }); listeners.navKey(); listeners.resize(); html.reloadButton(); listeners.reloadButton(); }, reloadButton: function( ){ $( document ).on('mousedown', '.reloadButton img', function(e){ this == e.target && e.which == 1 && $( location ).attr( 'href', config.locDoc ); }); }, sortButtons : function( ){ $( document ).on('click', '.thumbSort li', function(e){ this == e.target && e.which == 1 && ( fn.sortButtons( $( this ) ), fn.thumbCounter() ); }); }, minMax : function( ){ $( document ).on('mousedown', '.minMaxWrapper li', function(e){ var min,max; $( this ).hasClass('min') && ( min = $( this ).data('minute') ); $( this ).hasClass('max') && ( max = $( this ).data('minute') ); this == e.target && e.which == 1 && ( $( this ).addClass('current').siblings().removeClass('current'), min !== undefined && GM_setValue('videoMin', min ), max !== undefined && GM_setValue('videoMax', max ), fn.minMax( min,max ), fn.minMaxCurrent(), fn.thumbCounter() ); }); }, menuButtonTM: function( ){ $( document ).on('mouseup','#menuButton',function(evt){ var elem = $('#menuTM'), width = $('.switchAble').width(); evt.which === 1 && evt.target === this && ( config.menuState = config.menuState ? false : true, $('.wrapperTM')[ !config.menuState ? 'addClass' : 'removeClass' ]('menuOff'), elem.length == 1 ? elem.toggle(0) : html.sideTM(), html.wrapWidth( width + 40 ) ); }); }, openCloseTM : function( ){ $( document ).on('mousedown','.openCloseTM',function(evt){ var elem = $('#holderTM'); evt.which === 1 && evt.target === this && ( evt.ctrlKey ? ( GM.manager('del'), alert('GM Settings are deleted') ) : elem.length == 1 ? elem.toggle(256) : render.tm() ); }); }, menuTM : function( ){ $( document ).on('mouseup','li',function(e){ e.which === 1 && e.target === this && fn.runCommand( $(this).find('.menuTM') ); }); $( document ).on('mouseup','.menuTM',function(e){ e.which === 1 && e.target === this && fn.runCommand( $(this) ); c.i('menuTM'); e.preventDefault(); }); $( document ).on('mouseup','#holderTM .contentTM ul.myMenu + span input',function(){ GM_setValue('menuState', $( this ).is(':checked') ? false : true ); }); }, setColSize : function( ){ var reloadCss = function(){ html.configTM( $('.switchAble').data('page') ); c.i('Save Settings'); $( '#setColSize' ).find('.menuTM').text('Save Settings'); config.startWidth(); css.basicCss(); setTimeout(function(){ config.imgHeight = 0; fn.imgHeight(); },1000); c.i('setColSize'); $('.video-details')[ config.pageWidthNR < 1400 ? 'addClass' : 'removeClass']('small'); }; $(document).on('click','#configTM #pageSize input.size', function(){ c.i('setSize input.size'); var val = $( this ).val(); config.pageWidth = val; config.pageWidthNR = config[val]; reloadCss(); }); $(document).on('click','#configTM #columns input.col', function(){ c.i('setCol input.col'); config.thumbCol = $( this ).val(); reloadCss(); }); } }, html = { createDialog : function( id, content, width, state ){ var elem = '', inWidth = width, valWidth; $.each( sharedData.dialogs(), function(i,val){ if( val.id == id ){ c.i('createDialog id', val.id ); valWidth = val.width; width = inWidth || valWidth == 'default' ? sharedData.dialogWidth : valWidth; elem = html.contentTM( id, 'switchAble', width ) .prepend( html.contHeadTM( val.head ) ) .append( html.contBodyTM( $('<span/>',{ html: html.wrapTag( val.firstLine, 'p', 'firstLine' ) }).append( content ).html() ) ); return false; } }); html.wrapWidth( width ); html.switcher( elem, state ); c.i('createDialog Elements', elem.find('*').length ); c.i('createDialog html', fn.obj2Str( elem ) ); c.i('createDialog length', fn.obj2Str( elem ).length ); }, wrapWidth : function ( width ){ var menuWidth = config.menuState ? 175 : 0; $('.wrapperTM').width(menuWidth + width); }, switcher : function ( elem, state ){ state === false && ( config.menuState = false, $('#menuTM').hide() ); var switchAble = $('.switchAble'); switchAble.length == 1 ? switchAble.replaceWith( elem ) : elem.prependTo('.wrapperTM'); }, wrapTag : function ( text, tag, style ){ style = style || ''; return $('<' + tag + '/>', {class: style, html: text}); }, li_Item : function ( txt, cl, data, page ){ return $('<li>').append(cl == 'external' ? a(txt, data) : l(txt, cl, data, page)); }, singleRow : function ( label, text ){ var outer = $('<div/>', {class: 'row'}); return outer .append($('<span/>', {class: 'label', text: label + ':'})) .append($('<span/>', {class: 'details', html: text})); }, pager : function ( pageType, page, pageEnd, text ){ var elem = $('<div/>', { id: 'pagerTM' }), ul = $('<ul/>', { class: 'pagerUl myMenu' }), txt = text || 'page: ', back = txt, BA = 2, that = this, li = function ( i, first, last, next, prev ) { // txt = parseInt(txt).length ? parseInt(txt) : txt; txt = txt !== back ? txt.removeEnds( back.length ).replace('Firs','').replace('Nex','').replace('Pre','') : txt; //txt = txt.inElem('Firs') ? txt : txt; txt = config.commandos === 'latest' ? 'Archive' : ( first || last || next || prev ) ? first ? 'First' : last ? 'Last' : next ? 'Next' : prev && 'Prev' : txt + i; return that .li_Item( txt, 'menuTM pageLi', pageType, i ) .addClass( i === page ? 'active' : '' ) // .addClass( i === page ? 'active' : i < page ? 'newer' : i > page && 'older' ) // .addClass( 'page' + ( i < ( page - BA ) || i > ( page + BA ) ? 'Hide':'Show' ) ) ; }; var i = 1, first, last, next, prev; for ( i; i < pageEnd + 1; i++) { first = i === 1, last = i === ( pageEnd ), next = i === page + 1, prev = i === page - 1; config.commandos !== 'latest' ? ul.append( li( i, first, last, next, prev ) ) : config.commandos === 'latest' && first && ul.append( li( i, first, last ) ); } pageType === 'update' && ul.prepend( this.li_Item( 'Latest', 'menuTM pageLi', 'latest', 0 ) ); ul.find('a[data-text="Latest"], a[data-text="First"], a[data-text="Prev"], a[data-text="Next"], a[data-text="Last"], a[data-text="Archive"], a[data-command="help"]').parent().addClass('nPageShow'); return elem.append( ul ); }, embeded : function ( height, width, src ){ return $('<iframe/>', {height: height, width: width, src: src, frameborder: 0, wmode:'transparent', allowfullscreen: true}); }, closeButton : function ( ){ return $('<i/>', {id: 'closeButton', class: 'fa fa-times-circle fa-2x openCloseTM'}); }, menuButton : function ( ){ return $('<i/>', {id: 'menuButton', class: 'fa fa-bars fa-2x'}); }, copyright : function ( ){ var span = function (cl) { return $('<span/>', {class: cl}); }, copy = $('<i/>', {class: 'fa fa-copyright'}), span1 = span('copyright').text( ' ' + sharedData.copyrightYear + sharedData.myName ).prepend(copy); $('<div/>', {class: 'foot'}).append(span1).appendTo('.wrapperTM'); }, reloadButton : function ( ){ var span = function () { return $('<div/>', {class: 'reloadButton'}); }, alink = function () { return $('<a/>', {href: 'javascript:;'}) }, img = function () { return $('<span/>', {src: ''}) }; span().append( alink().append( img() ) ).prependTo('#video'); //.menu-video-right }, thumbSort : function( ){ if( $('.thumbSort').length ) return false; var inserts = $('object#as3_js, #video_player video').length ? '.video-details' : '.minititle h1', wrap = $('<div/>', { class : 'thumbSort' }), ul = $('<ul/>', { class : 'sortscontain' }), list = function( text ){ var ul = $('<ul/>',{ class:'minMax' }); $.each( sharedData.minMax() , function( i, val ) { ul.append( $('<li/>',{ class: text, text: val.min + 'min', 'data-minute': val.min * 60 }) ); }); return ul; }, button = function( text, sort, check ){ return $('<a/>',{ href: 'javascript:;' }).append( ( text === 'min' || text === 'max' ) ? $('<li/>',{ class:'minMaxWrapper', html: list( text ) }).prepend( ( text === 'min' ? '<':'>' ) ) : $('<li/>',{ id: text, text: text.toUpperCase(), 'data-sort': sort, 'data-fn': text, 'data-chk': check } ) ) }, H1 = $('.minititle').find(' > h1').html(); $.each( sharedData.thumbSort(), function(i,val){ ul.append( button( val.name, val.sort, val.chk )); }); ul.find('#sortOrder').text('REVERCEORDER'); $('.minititle > h1').empty().prepend( $('<span/>').append( H1 ) ); wrap.append( ul )[ inserts === '.video-details' ? 'appendTo' : 'prependTo' ]( inserts ); config.sorting = true; }, StartTM : { button : $( '<i/>', { class: 'btn btn-default btn-sm openCloseTM', href: '#', text: 'TM' } ), menu : function ( ){ return $( '<a/>', { class: 'monkeySettings openCloseTM' } ) .append( $( '<li/>', { html: $( '<span/>',{ text:'MonkeyScript Setting' } ) } ) .prepend( $( '<img>', { src : "http://www.vporn.com/images/new_images/my-settings.png", width : "16", height: "16", alt: " " } ) ) ) .append( $( '<hr>' ) ); }, render : function ( ){ //noinspection JSCheckFunctionSignatures config.inMenu ? ( $(this.menu()).insertBefore('#open-small-log .pcl'), refreshElement('.monkeySettings.openCloseTM',1000) ) : $(this.button ).insertBefore('.authsection'); } }, holderTM : function( ){ $( '<span/>', { id: 'holderTM' }).appendTo('body'); }, wrapperTM : function( ){ $( '<div/>', { class: 'wrapperTM' }) .prepend( this.menuButton() ) .append( this.closeButton() ) .appendTo('#holderTM'); }, contHeadTM : function( text ){ return $( '<div/>', { class: 'contHeadTM', text: text }); }, contBodyTM : function( html ){ return $( '<div/>', { class: 'contBodyTM', html: html }); }, contentTM : function( id, cl, width ){ return $( '<div/>', { id:id, class: 'contentTM ' + cl, style:'width:' + width + 'px' }); }, sideTM : function( ){ var elem = html.contentTM(), firstLine = 'Menu', render = function(){ return p(firstLine,'firstLine'); }, chk = $('<input/>', {type: 'checkbox'}).prop("checked", config.menuState ), span1 = this.wrapTag( 'Always show menu', 'span', 'checkbox' ).prepend( chk ); elem.attr('id','menuTM') .css({'width':'175px'}) .append( this.contBodyTM( render() )) .append( this.menuTM() ) .append( span1 ); config.menuState ? elem.css('display','block') : elem.css('display','none'); elem.prependTo('.wrapperTM'); $('.wrapperTM')[ !config.menuState ? 'addClass' : 'removeClass' ]('menuOff'); fn.active( 'firstIntro' ); listeners.menuTM(); }, menuTM : function( ){ var elul = $( '<ul>', { class: 'myMenu' }), sorted = sharedData.dialogs().sort(function(a, b){ return a.order - b.order; }); $.each( sorted, function(i,val){ val.on == 1 && elul.append( html.li_Item( val.name, val.type, val.command, val.page ) ); }); return elul; }, updatedTM : { cell : function( cl, html ){ return $('<span/>',{ class:'cell ' + cl, html: html } ); }, row1 : function( val ){ return $( '<div/>',{ class:'block top' } ) .append( this.cell( 'c1', val.ver ), this.cell( 'c2', val.date ), this.cell( 'c3', val.type + '-' + val.magnitude ) ); }, row2 : function( val ){ return $( '<div/>',{ class:'block botton' } ) .append( this.cell( 'c10', val.visible ), this.cell( 'c11', val.name ), this.cell( 'c12', val.desc + '.') ); }, fillArr : function( mode ){ var table = $( '<span/>',{ class:'table'} ), latest = sharedData.latestVersion, page = sharedData.updatesFirstPage, append = function ( val ){ table.append( $( '<div/>',{ class:'group', 'data-page': page } ) .addClass( val.ver == latest ? 'latest':'old' ) .append( that.row1( val ), that.row2( val ) ) ) }, lc = 0, that = this; $.each( sharedData.update(), function( i, val ){ latest == val.ver && lc++; val.on == 1 && ( checkDividedIsInteger( i - lc, sharedData.updatesPerPage ) && page++, mode == 'latest' ? latest == val.ver && append( val ) : mode == page && append( val ) ); }); table.append( $( '<div/>',{ class:'group', html: html.pager( 'update', mode, page, ' ' ) }) ); return table; }, render : function( mode ){ html.createDialog( 'updatedTM', this.fillArr( mode ) ); $('#pagerTM').appendTo('#updatedTM'); } }, latestTM : function () { html.updatedTM.render('latest'); $('div#updatedTM .contHeadTM').text('Latest Update v' + sharedData.latestVersion); $('a.menuTM.pageLi[data-command = "latest"]').parent().addClass('active'); fn.active('update'); }, aboutTM : function( ){ var table = $('<div/>',{ id: 'table', class:'test' }); $.each( sharedData.about(), function( i, val ){ val.on == 1 && table.append( html.singleRow( val.name, val.desc ) ); }), html.createDialog( 'aboutTM', table ); }, welcomeTM : function( ){ var presentation = 'Now you are part of something bigger. A New way to use this great site VPorn.com.\ \rThis is my first in line of series of scripts that will work with unique library of my functions. And this \ script will also inform you about whats '+cl('new','black')+' if there was an update. Also tells the news about other scripts that you \ may also be interested in.\rBefore you '+ em('start') +' using this script read the ' + l('instructions','menuTM','help',1) +' and listen ' + 'to my '+( v("video. ","1080","802","https://www.youtube-nocookie.com/embed/9chDANQxF2M?rel=0&theme=light&autohide=1","My First Test Embeded",'firstIntro',1 ) ) + ' about this script.\rAlso Take a look at the '+ l('settings','menuTM','config',1) + ' that this user-script has.'; html.createDialog( 'welcomeTM', p( presentation.toString(), 'normPresentation') ); }, configTM : function( page ){ var form = function( ){ var objForm = function( name ){ return $('<form/>',{ id:name, name:name }) }, rad = function( value, no_Info ){ var Info = value.length < 2 ? value : no_Info === undefined ? config[ value ] + ( value === 'fullWidth' ? ' %':' pixels.' ) : value, name = value.length < 2 ? 'col'+ ' col' + value : 'size'+ ' ' + value, wrap = $('<span/>',{ text: Info }), input = $('<input/>',{ type:'radio', name:name, class:name, value:value }); return wrap.prepend( input ); }, chbox = function( val ){ var name = 'cMore'+ ' ' + val.name, wrap = $('<span/>',{ text: ' ' }), input = $('<input/>',{ type:'checkbox', name:name, class:name, value:val.name }); return wrap.prepend( input ); }, pageTmp = $('<span/>'), button = $( '<ul>', { class: 'myMenu' }); switch( page ){ case 1: var size = objForm('pageSize'), col = objForm('columns'), full = objForm('full'); size.append( html.wrapTag('These fixed sizes can you choice', 'div', 'description') ) .append( html.singleRow('Orginal', rad('orgWidth')) ) .append( html.singleRow('Normal', rad('normWidth')) ) .append( html.singleRow('Wide', rad('wideWidth')) ) .append( html.singleRow('Extreme', rad('extraWidth')) ) // .append( p(' ') ) .append( html.wrapTag('Dynamically changes when browser <br>width size changes', 'div', 'description')) .append( html.singleRow('Dynamic', rad('fullWidth')) ) ; //.append( html.wrapTag('Dynamically changes when browser width size changes', 'div', 'description')) //.append( html.singleRow('Full', rad('fullWidth', 1)) ) //.append( html.singleRow('80%', rad('d80Width', 1)) ); col.append( html.wrapTag('Number of columns video thumb nails are shown.', 'h4') ) .append( html.singleRow('Columns', $('<span/>').append(rad('1')).append(rad('2')).append(rad('3')).append(rad('4')).append($('<br>')) .append(rad('5')).append(rad('6')).append(rad('7')).append(rad('8')).html() )); // full.append( html.wrapTag('Set state of full player', 'h4') ) // .append( html.singleRow('Choice','' ).append( rad('ON',1), rad('OFF',1), rad('Auto',1) ) ); pageTmp = $('<span/>').append( size, col //, full ); break; case 2: var more = objForm('more'); more.append( html.wrapTag('These fixed sizes can you choice', 'div', 'description')); $.each( sharedData.settings2(), function( i, val ){ val.on && more.append( html.singleRow( val.title, chbox( val )//.attr('checked', config[ val.name ] ) //.prop('checked', config[ val.name ] ) ) ); c.i('nr: ' + i +', ' + val.name + ', ' + val.title+'.'); }); pageTmp = $('<span/>').append( more ); break; } c.i('button','----------------==================--------------'); c.i('configTM page ', page); button.attr( 'id', 'setColSize' ).attr( 'data-page', page ).append( html.li_Item('Save Settings','menuTM','setColSize') ); return pageTmp.append( button )//.append( html.pager( 'config', page, 2 ) ) ; }, render = function(){ return '\n ' + w('Page Width:', 'h4') + fn.obj2Str( form() ); }; html.createDialog( 'configTM', this.contBodyTM( render() ) ); //config.fullPlayer = 'Auto' //c.i('config.fullPlayer',config.fullPlayer) $('#configTM').data('page',page); $('#pageSize').find('input.size.'+config.pageWidth).attr('checked', true ); $('#columns').find('input.col'+config.thumbCol).attr('checked', true ); $('#full').find('input.'+config.fullPlayer).attr('checked', true ); }, helpTM : function( page ){ var cl = 'normPresentation', pageContent = { 1 : function(){ return p( w('Choice what do you want help with:', 'h3') + '\r If you want to know about the Keyboard navigation and interaction then you click '+l('here','menuTM','help', 2)+'.' + '\r Where do you click with the mouse pointer to get something to react, find out '+l('here','menuTM','help', 3)+'.' + '\r A instruction video coming soon to you. The show coming ' + v('here','title','videoLink','https://www.youtube-nocookie.com/embed/9chDANQxF2M?rel=0&theme=light&autohide=1', 3)+'.', cl ); }, 2 : function(){ return p( w('Keyboard interaction navigation:', 'h3') + w('Video page:', 'h4') + fn.obj2Str( html.singleRow('N','Normal') ) + fn.obj2Str( html.singleRow('W','Wide') ) + fn.obj2Str( html.singleRow('O','Orginal') ) + fn.obj2Str( html.singleRow('B','Enter Full Browser Player Mode') ) + fn.obj2Str( html.singleRow('ESC','Exit Full Browser Player Mode') ) + w('Thumb page:', 'h4') + fn.obj2Str( html.singleRow('Left arrow','Prev Page') ) + fn.obj2Str( html.singleRow('Light arrow','Next Page') ),cl); }, 3 : function(){ return p( w('Mouse Navigation:', 'h3') + w('You can click right side of page', 'div', 'mouseNav') + '\n ' + w('Thumb page:', 'h4') + fn.obj2Str( html.singleRow('Left','Prev Page') ) + fn.obj2Str( html.singleRow('Right','Next Page') ) + '\n ' + w('Video page:', 'h4') + fn.obj2Str( html.singleRow('Left or Right','Enter Full Browser Player Mode') ),cl); } }; html.createDialog( 'helpTM', pageContent[ page ] ); $('#helpTM').find('.contHeadTM').append( page ).end().find('.contBodyTM').append( html.pager( 'help', page, 3 ) ); }, donateTM : function( ){ var elem = $('<div/>',{ id: 'table', class:'test' }); html.createDialog( 'donateTM', elem ); }, videoTM : function( height, width, src, firstLine, back, page ){ var ow = width-1, oh = height-1, corr = 100, wh = $( window ).height(); height + corr > wh ? ( ( height = wh - corr ), ( width = ow * ( height/oh ) ) ) : ( height = oh-8 ); c.i('src',src); html.createDialog( 'videoTM', this.contBodyTM( this.embeded( height, width, src ) ),null,false ); $('#videoTM').find('.firstLine').prepend( firstLine ).append( l('Previous Page', 'menuTM', back, page ) ); this.wrapWidth( width + 40 ); }, contactForm : function( id ){ var elul = $( '<ul>', { class: 'myMenu' }), form = $( '<div/>',{ id:id }), formObj = function(type,name,txt,size,cl,min){ var isInput = type == 'input', typeVal = isInput ? '<input/>' : '<textarea/>', elem = $(typeVal,{ id: 'c'+name, name:name, minlength: min }), obj = $('<p/>',{ class: 'obj' }) .append( $('<label/>',{ for: 'c'+name, text: txt }) ) .append( isInput ? elem.attr('size',size ) : elem.attr('col',size ) ); return obj; }; return form /* .append( formObj('input','name','Your Name:',30,'required',2) ) .append( formObj('input','email','Your E-Mail:',30,'required',5) ) .append( formObj('input','subject','Enter Subject:',30,'required',5) ) .append( formObj('text','comment','Enter Message:',30,'required',5) ) .append( elul.append( this.li_Item('Submit','menuTM','submit') ) ) */ ; }, contactTM : function( ){ var presentation = //'If you want to use your web e-mail or program click ' 'Contact form is now down so for now, contact me by using your web e-mail or program - Click ' + a('here','mailto:[email protected]?subject=Tag:vporn.com:%20Enter%20Your%20Here') + '.'; html.createDialog( 'contactTM', $('<span/>').append( this.contactForm('myForm') ) .append( p( presentation,'normPresentation'), p( 'E-Mail: [email protected] <br>Subject: Tag: vporn.com, Tag: Enter Your Here') ) ); }, FileName : function( ){ var title = $('h1#vtitle').text(); $('#videolinks').find('a').each(function( i, e ){ var $e = $(e), hl = $e.attr('href').split('initDownload(').pop().split("', '").shift(); c.i('hl', hl); $e.attr('download', title + '.mp4' ).attr('href', hl ); }) }, preSortMenu : function( ){ $( '<div/>', { class: 'grayarea wline', text: 'Sort Menu is loading' }).insertAfter('.catsmenu'); } }, render = { main : function( ){ GM.manager('get'); config.startWidth(); css.head(); css.basicCss(); listeners.sortButtons(); listeners.minMax(); listeners.resize(); }, tm : function( ){ c.i('open TM'); css.fontsCss(); css.tmCss(); html.holderTM(); html.wrapperTM(); html.welcomeTM(); html.sideTM(); listeners.setColSize(); listeners.menuButtonTM(); html.copyright(); c.i('Done TM'); }, videoThumbs : function( ){ fn.videoAttributes(); //noinspection JSUnresolvedVariable fn.minMax( config.videoMin, config.videoMax ); fn.minMaxCurrent(); var sorting = setInterval(function(){ c.i('sorting'); fn.initSort(); config.sorting && clearInterval( sorting ); // html.FileName(); }, 10 ); } }, observer = new MutationObserver( function( mutations /*, observer */) { mutations.forEach( function( mutation ) { var newNodes = mutation.addedNodes; // DOM NodeList newNodes !== null && $( newNodes ).each( function( i, e ){ var $e = $(e); $e.hasClass('bx') && fn.videoAttributes(); ( $e.attr('id') === 'as3_js' || $e.isTag('video') ) && ( listeners.navVideo(), html.thumbSort() ); $e.hasClass('minititle') && listeners.navThumb('.cholder'); $e.hasClass('left-account-menu') && ( listeners.navThumb('.warapper-menu'), fn.sortMenu() ); $e.hasClass('warapper-menu') && html.preSortMenu(); $e.hasClass('authsection') && html.StartTM.render(); $e.hasClass('pagerwrap') && fn.chkPager(); ( $e.hasClass('minititle') || $e.hasClass('video-details') ) && html.thumbSort(); }); }); }); GM_getValue('firstRun') === undefined && GM.first(); //noinspection JSCheckFunctionSignatures observer.observe( document, { subtree: true, childList: true }); render.main(); c.i('VPorn ANewLayout','',2012, 'black' ); $(document).ready(function(){ render.videoThumbs(); $('.video-details')[ config.pageWidthNR < 1400 ? 'addClass' : 'removeClass']('small'); listeners.openCloseTM(); config.imgHeight = null; fn.imgHeight(); $('body font > :first-child').unwrap(); }); }(jQuery));