Този скрипт не може да бъде инсталиран директно. Това е библиотека за други скриптове и може да бъде използвана с мета-директива // @require https://update.greasyfork.org/scripts/8972/136093/primewire%20fix.js
// ==UserScript==
// @name primewire fix
// @namespace primewire fix
// @description this is an include script meant for internal testing
// @author drhouse
// @include https://www.primewire.ag/*
// @version 1.0.2
// @run-at document-end
// ==/UserScript==
(function ($) {
var lobject = $('.logged_username a').get()
if (!lobject) {
$('.warning_message').append($('<div>').css({
color: 'red'
}).setText("You must be logged in for this userscript to work").get())
return
}
var queryString = (function (s) {
var q = s.split('?')[1]
var qs = {}
if (q) {
q.split('&').forEach(function (o) {
var t = o.split('=');
qs[unescape(t[0])] = unescape(t[1])
})
}
return qs
})(document.URL)
var groups = __getValue('groups');
// $('.header_search').swap($('.nav_tabs'))
var uname = lobject.innerHTML;
var DEBUG = false;
var __groups = ['fav','towatch','watched'];
if (!('watched' in groups) ) {
set_up();
}
function set_up() {
$('<div>').attr('id','blanket').css({
'position':'absolute',
'backgroundColor':'#666',
'opacity':'0.5',
'left':'0px',
'top':'0px',
'width':'100%',
'height':'100%'
}).appendTo(document.body)
$('<div>').attr('id','fs_info_box').css({
'backgroundColor':'white',
'width':'600px',
'border':'1px solid black',
'borderRadius': '20px',
'margin':'auto',
'height':'400px',
'position':'absolute',
'top':'25%',
'left':'25%',
'padding':'5px',
'fontSize':'14px'
}).setText('1channel.ch Fix needs to set up. We need to get the list of Watched To Watch and Favorite groups so when browsing you can see which are in what group.')
.append($('<ul>').css({'padding':'50px'})
.append($('<li>').attr('id','fav').setText('Favorites').append($('<b>')).append($('<progress>')))
.append($('<li>').attr('id','watched').setText('Watched').append($('<b>')).append($('<progress>')))
.append($('<li>').attr('id','towatch').setText('To Watch').append($('<b>')).append($('<progress>')))
)
.appendTo(document.body)
$('#fs_info_box ul li').css({'opacity':'1'})
$('#fs_info_box progress').attr('value','0').attr('max','100').css({'display':'block'});
var _groups = ['fav','watched','towatch'];
$(document.body).css({
'overflowY':'hidden'
})
get_page();
function get_page(page,n) {
var page = page||_groups.shift()
if (page) {
groups[page] = groups[page]||[]
var n = n||1
var o = $('#'+page)
_get('/profile.php?user='+uname+'&'+page+'=&page='+n,function(r) {
var s = r.responseText;
var tot = s.match(/\(( [1-9]\d* )\)<\/strong>/i) && RegExp.$1;
if (tot) {
var l_page = s.match(/&page=(\d+)"> >>/) && RegExp.$1
var done = !l_page
o.children('b',1).clear().setText(tot + " total items page: "+n+'/'+(l_page||n));
var reg = /class="index_item"> <a href="\/(?:tv|watch)-(\d+)/g,t
while ((t = reg.exec(s)) !== null) {
// console.log("Group: '%s' Item: '%s'",page,t[1])
groups[page].push(t[1]);
}
o.children('progress',1).attr('max',l_page||n).attr('value',n)
if (done) {
get_page()
}
else {
get_page(page,++n)
}
}
else {
console.log(s)
o.children('b',1).clear().setText(' No Items');
o.children('progress',1).attr('value',100);
get_page()
}
});
}
else {
$('#fs_info_box').append($('<h1>').setText('DONE'));
__setValue('groups',groups);
setTimeout(function() {
$('#fs_info_box,#blanket').fadeOut(1,function() {
this.remove()
$(document.body).css({'overflow-y':'auto'});
});
},1000)
}
}
}
GM_addStyle('x-btn-icon { \
width: 11px;\
height: 13px;\
}\
.x-btn:active,.options_menu + .x-btn { \
border-color: #999 !important;\
background: #DDD !important;\
background-image: -moz-linear-gradient(top,#cccccc,#ffffff) !important;\
background-image: -webkit-gradient(linear,left top,left bottom,from(#cccccc),to(#ffffff)) !important;\
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#cccccc,endColorStr=#ffffff) !important;\
opacity:1 !important\
}\
.x-btn:hover { \
border-color: #999;\
background: #F3F3F3;\
background-image: -moz-linear-gradient(top,#ffffff,#ebebeb);\
background-image: -webkit-gradient(linear,left top,left bottom,from(#ffffff),to(#ebebeb));\
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#ffffff,endColorStr=#ebebeb);\
outline: 0;\
-moz-box-shadow: 0 0 3px #999;\
-webkit-box-shadow: 0 0 3px #999;\
box-shadow: 0 0 3px #999;\
}\
.x-btn,.options_menu {\
padding: 0 .5em;\
height: 2.0833em;\
border: 1px solid #CCC;\
color: black;\
background: #F6F6F6;\
background-image: -moz-linear-gradient(top,#ffffff,#efefef);\
background-image: -webkit-gradient(linear,left top,left bottom,from(#ffffff),to(#efefef));\
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#ffffff,endColorStr=#efefef);\
-moz-border-radius: 3px;\
-webkit-border-radius: 3px;\
border-radius: 3px;\
white-space: nowrap;\
vertical-align: middle;\
cursor: pointer;\
overflow: visible;\
opacity:0;\
}\
.episode_prev_next button {\
padding:0 .5em;\
-moz-border-radius: 3px;\
-webkit-border-radius: 3px;\
border-radius: 3px;\
}\
.index_item:hover .x-btn,.featured_movie_item:hover .x-btn,.item_similar:hover .x-btn {\
opacity:1 !important;\
}\
.index_item {\
max-height:305px;\
min-height:305px;\
}\
.index_item img { \
display:block !important;\
width:150px;\
min-height:222px\
}\
.index_container { \
\
}\
.options_menu { \
position: absolute;\
height: auto !important;\
width: auto !important;\
opacity:1 !important;\
top: 2.2em;\
list-style:none;\
width:100px;\
}\
\
.options_menu li:not(.label) { \
font-size: 12px;\
padding-left:5px;\
\
}\
.options_menu li:not(.label):hover {\
background-color: #EFFFEF;\
color:black;\
}\
.options_menu li {\
min-width:100px;\
}\
.options_menu li.label { \
font-size: 12px;\
color: white;\
padding:0px;\
background-color: #3c3c3c;\
height:10px\
line-height:20px;\
font-weight:bold;\
border:1px solid black;\
}\
.loader {\
opacity: .5;\
position:absolute;\
top:0;\
left:5;\
background-color:#EFEFEF;\
}\
.hide {\
display:none !important;\
}\
.comments_box_vote { position: relative; }\
#autoc {\
position:absolute;\
padding:3px;\
border:2px solid black;\
padding:5px;\
background-color: #fff; \
border: 2px solid #666;\
border-top:none;\
-webkit-border-radius: 0px 30px 30px; \
-moz-border-radius: 0px 30px 30px; \
border-radius: 0px 30px 30px; \
-webkit-box-shadow: 2px 15px 15px #888; \
-moz-box-shadow: 2px 15px 15px #888; \
box-shadow: 2px 15px 15px #888;\
width: 320px;\
z-index:200;\
display:none;\
}\
#autoc li {\
\
list-style: none;\
background-color: white;\
border: 1px solid #EEE;\
color: black;\
padding:2px;\
}\
#autoc li:first-child {\
border-top-right-radius: 30px;\
}\
\
#search_term:focus ~ ul {\
display: block !important;\
}\
#autoc:hover {\
display: block !important;\
}\
#autoc li:last-child {\
border-bottom-right-radius: 30px;\
border-bottom-left-radius: 30px;\
}\
#autoc li:hover,#autoc li.current {\
background-color:#E8F0F4;\
}\
');
var waiting_image = "data:image/gif;base64,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%3D%3D"
var host = window.location.host;
var show_menu = false
function kill_menu(n) {
setTimeout(function () {
if (show_menu) return show_menu = false
$('.options_menu').remove()
}, 10);
}
$('body').listen('click', kill_menu);
$('.search_container').css({
'position': 'relative'
}).append($('<ul>').listen('click', function (e) {
$(e.currentTarget).clear()
}).attr('id', 'autoc'));
$('#search_term').listen(['keyup', 'focus'], function (e) {
if ([40, 38].indexOf(e.keyCode) > -1) return
clearTimeout(_alist_t);
if (this.value.trim().length > 2) _alist_t = setTimeout(Alist, 50);
if (this.value.trim() === "") $('#autoc').clear();
}).listen('keydown', function (e) {
switch (e.keyCode) {
case 40:
$('#autoc li.current').removeClass('current').nextSibling(1).addClass('current')
$('#search_term').get().value = $($('#autoc li.current').get() || $('#autoc li:first-child').get()).addClass('current').get().textContent
break;
case 38:
$('#autoc li.current').removeClass('current').previousSibling(1).addClass('current')
$('#search_term').get().value = $($('#autoc li.current,#autoc li:last-child').get()).addClass('current').get().textContent
break;
}
}).listen('click', function () {
}).listen('keydown', function (e) {
clearTimeout(_alist_t);
});
var _alist, _alist_t, _alist_o = {};
function Alist() {
try {
_alist.abort()
}
catch (err) {}
var value = $('#search_term').addClass('ac_loading').get().value.trim();
if (_alist_o[value.toLowerCase()]) return Ac(_alist_o[value.toLowerCase()]);
$('#search_term').addClass('ac_loading')
_alist = new XMLHttpRequest();
_alist.open('GET', '/_get_active_movies.php?all&limit=10&q=' + encodeURIComponent(value), true);
_alist.onreadystatechange = function (e) {
if (_alist.readyState === 4) {
if (_alist.status === 200) {
$('#search_term').removeClass('ac_loading')
Ac((_alist_o[value.toLowerCase()] = _alist.responseText.trim().split(/\n/)))
}
}
}
_alist.send()
}
function Ac(l) {
var ac = $('#autoc').clear()
l.forEach(function (o) {
ac.append($('<li>').setText(o).listen('click', function (e) {
e.preventDefault()
$('#search_term').get().value = this.textContent;
}))
});
}
function XmlhttpRequest(obj) {
if (obj.url.indexOf("http://") === 0 && obj.url.indexOf('http://'+host) === -1) {
GM_xmlhttpRequest(obj)
}
else {
var xhr = new XMLHttpRequest();
xhr.open(obj.method, obj.url, true);
xhr.onreadystatechange = function (e) {
if (xhr.readyState === 4) {
obj.onload(xhr)
}
}
xhr.send(obj.data||null)
}
}
function _get(url, cb, postData, headers) {
XmlhttpRequest({
method: postData ? 'POST' : 'GET',
url: url,
data: postData,
headers: headers || null,
onload: function (r) {
cb(r);
}
});
}
function do_watched(what, action, id, page) {
var url = "/addto" + (page || "watched") + ".php?whattodo=" + what + "&action=" + action + "&id=" + id;
do_action.call(this, url)
}
function do_action(url, cb) {
if (!$(this).children('.loader').length) {
$(this).append($('<div>').attr('class', 'loader hide').append($('<img>').attr('src', waiting_image).get()).get())
}
$($(this).children('.loader')[0]).show()
_get(url, function (r) {
var ok = get_ok(r.responseText);
if (ok) {
var m = url.split('?')
var t = m[0].match(/addto(.*?)s?\.php/i) && RegExp.$1,q={}
m[1].split("&").forEach(function(i) {
var v = i.split('=');
q[v[0]] = v[1];
})
var g = q['action'] || t;
console.log(url,g,q);
if (q['whattodo'] == 'delete') {
groups[g].splice(groups[g].indexOf(q['id']),1);
}
else if(q['whattodo'] == 'add') {
if (g === 'watched' && (m = groups['towatch'].indexOf(q['id'])) > -1) {
groups['towatch'].splice(m,1);
}
groups[g].indexOf(groups[g]) === -1 && groups[g].push(q['id'])
}
__setValue('groups',groups);
}
$($(this).children('.loader')[0]).hide()
$(this).append($('<div>').css({
'backgroundColor': ok?'#EFFFEF':'red',
"width": "100%",
"position": "absolute",
"top": "40%",
"left": "0px"
}).setText(ok || "An Error Occurred").get())
if (cb) cb(ok)
}.bind(this), null, {
"Referer": document.URL
});
}
function _menu(obj) {
$('.options_menu').remove()
var ul = $('<ul>').attr('class', 'options_menu')
for (var i in obj) {
if (/^wait/.test(i)) {
var li = $('<li>').attr('class', 'wait').setText(i)
ul.append(li)
obj[i].call(null, li)
}
else {
ul.append($('<li>').setText(i).attr('class', obj[i] ? '' : 'label').listen('click', typeof obj[i] == 'function' && obj[i]).get())
}
}
return ul;
}
function build_menu(id) {
// .bind(a)
// look for playlists
return _menu({
"add To:": null,
"To Watch": function () {
do_watched.call(this, 'add', 'towatch', id)
}.bind(this),
"Watched": function () {
do_watched.call(this, 'add', 'watched', id)
}.bind(this),
"Favorite": function () {
do_watched.call(this, 'add', '', id, 'favs')
}.bind(this),
"wait1": function (xli) {
if ('tv' in queryString || queryString['search_section'] == "2") {
xli.addClass('label').clear().setText('Go To:')
xli.insertAfter($('<li>').setText('Last Episode').listen('click', function (e) {
show_menu = true
$(e.target).clear().setText("Getting Last Page")
_get("/watch-" + id, function (r) {
var s = r.responseText,
t = /href="(.*?)"/g
if ((lI = s.lastIndexOf('tv_episode_item"> <a href="')) > -1) {
t.lastIndex = lI
var m = t.exec(s)
window.location.assign("http://" + host + m[1])
}
else alert('No Episodes Found') && kill_menu()
}.bind(this))
}.bind(this)).get())
}
else {
xli.remove()
}
}.bind(this),
"Playlists": null,
"wait2": function (xli) {
xli.clear()
xli.setText("waiting for playlists")
var ul = xli.get().parentNode;
var li = xli.get()
_get('/playlists/' + uname, function (r) {
var t = r.responseText;
var reg = /"\/playlists\.php\?id=(\d+?)">([^<]+)<\/a>/g,
m
var has = false;
while ((m = reg.exec(t)) !== null) {
has = true
var pid = m[1];
var pname = m[2];
ul.insertBefore($('<li>').setText(pname).listen('click', function () {
do_action.call(ul.parentNode, 'http://' + host + '/playlists.php?user=' + uname + '&edit=' + pid + '&plistitemid=' + id + '&whattodo=add_existing')
}).get(), li)
}
if (!has) {
ul.insertBefore($('<li>').setText('No Playlists').get(), li)
}
xli.clear()
});
/*
_get('http://' + host + '/playlists.php?create', function (r) {
var s = r.responseText;
var n = s.match(/<input name="play_title".*?value"(.*?)"/)
xli.clear().setText((n && n[1]) || "Create New Playlist").listen('click', function (e) {
if (n) {
do_action.call(ul.parentNode, 'http://www.1channel.ch/playlists.php?plistitemid=' + id + '&whattodo=add')
} else {
show_menu = true
e.stopPropagation()
$(this).clear().append($('<input>').attr('placeholder', 'Type PlaylistName').listen('keypress', function (e) {
if (e.keyCode == 13) {
//do_action.call(ul.parentNode, 'http://' + host + '/playlists.php?user=' + uname + '&edit=' + pid + '&plistitemid=' + id + '&whattodo=add_existing')
_get('http://' + host + '/playlists.php?create', function (r) {
if (r.responseText.match(/<input name="play_title".*?value"(.*?)"/)) {
$(this).clear().setText(RegExp.$1);
do_action.call(ul.parentNode, 'http://www.1channel.ch/playlists.php?plistitemid=' + id + '&whattodo=add', function () {
show_menu = false
kill_menu();
})
} else {
alert('no');
}
}.bind(this), "play_title=" + encodeURIComponent(this.value) + "&type=1&play_submit=Search");
}
}))
}
})
});
*/
}.bind(this)
});
}
function __getValue(key) {
var s = GM_getValue(key);
return (s && JSON.parse(s)) || {}
}
function __setValue(key, value) {
setTimeout(function() {
GM_setValue(key, JSON.stringify(value));
},0);
}
function get_ok(txt) {
return txt.match(/<div class='ok_message'>(.*?)<\/div>/i) && RegExp.$1
}
__groups.forEach(function(o) { if (o === 'fav') return
var lists = groups[o].map(function(oo) {
return 'a[href*="-'+oo+'-"] img';
});
var rib = (o === 'towatch' && 'to_watch') || o
$(lists.join(',')).i(function(o) {
var tt = $(o)
var im = tt.attr('src')
if (im.indexOf('/images/ribbon') === -1) {
tt.attr('height',tt.get().offsetHeight);
tt.attr('src','/images/ribbon_'+rib+'.png').css({'background':'url('+im+')'})
}
});
});
$('a[href*="commentvote="]').listen('click', function (e) {
e.preventDefault();
do_action.call(this.parentNode.parentNode, this.href);
});
$('.favs_deleted a').listen('click', function (e) {
e.preventDefault()
do_action.call($(this).parent(1).parent(), this.href, function (ok, txt) {
if (ok) {
var t = $(this).parent(1).parent(1)
var opts = {
prop: 'opacity',
from: 1,
to: 0,
time: .1,
delta: function (p) {
return 1 - Math.sin(Math.acos(p))
}
}
t.animate(opts).__registerListener('animationEnd', function () {
this.remove()
})
}
else {
alert("Could Not Complete Action");
}
}.bind(this))
});
$('.index_item,.featured_movie_item,.item_similar a').i(function (o) {
$(o).css({
'position': 'relative'
}).append($('<button>').attr('class', 'x-btn').setText("+").css({
"position": "absolute",
"left": "0px",
"top": "0px",
"textSize": "2em"
}).listen('click', function (e) {
show_menu = true
if (this.parentNode.tagName.toLowerCase() == 'a') {
e.preventDefault()
}
var id = (this.parentNode.href || this.parentNode.querySelector('a').href).match(/(?:tv|watch)-(\d+)/)[1];
this.parentNode.insertBefore(build_menu.call(o, id).get(), this)
}).get());
});
$('.index_item + .clearer').remove();
$('.pagination').css({
'clear': 'both'
})
if (document.URL.match(/\/tv-(\d+).*?\/season-(\d+)-episode-(\d+)/i)) {
var id = RegExp.$1,
s = [Number(RegExp.$2), Number(RegExp.$3)].join("x");
var tv = __getValue('watched');
$('.episode_prev_next').append($('<button>').setText('Watched').listen('click', function () {
var tv = __getValue('watched');
if (!tv[id]) {
tv[id] = {}
}
tv[id][s] = !tv[id][s];
__setValue('watched', tv);
this.style.backgroundColor = (tv[id] && tv[id][s]) ? "#EFFFEF" : "#FFF"
}).css({
backgroundColor: (tv[id] && tv[id][s]) ? "#EFFFEF" : "#FFF"
}).get())
}
else if ($('.movie_navigation a').get() && $('.movie_navigation a').get().href.match(/\/tv-(\d+)/i)) {
var id = RegExp.$1
var tv = __getValue("watched");
$('a[href*="/season-"]').i(function (o) {
if (o.href.match(/\/tv-.*?\/season-(\d+)-episode-(\d+)/i)) {
var s = [Number(RegExp.$1), Number(RegExp.$2)].join("x")
if (tv[id][s]) {
o.parentNode.style.backgroundColor = "#EFFFEF !important"
}
}
});
}
})((function () {
var __matches = (function () {
var dE = document.documentElement
return dE && dE.nodeType && (dE.matchesSelector || dE.webkitMatchesSelector || (dE.mozMatchesSelector &&
function (sel) {
return this.mozMatchesSelector(sel)
}))
})();
var fs = function (m, el) { return new fs.fn(m,el) }
fs.fn = function(m,el) {
m = m || '';
this.obj = []
if (typeof (m) == 'object' && m.nodeType) {
this.obj.push(m)
}
else if (m.match(/^<([^>]+)>$/)) {
this.obj.push(document.createElement(RegExp.$1))
}
else {
this.obj = Array.prototype.slice.call(m == '' ? [] : (el || document).querySelectorAll(m) || [], 0)
}
return this
}
fs.Extend = function (o) {
for (var i in o) {
fs.fn.prototype[i] = o[i];
}
}
fs.isArray = function (o) {
return typeof o === 'object' && o instanceof Array
}
fs.animate = function (opts) {
var start = new Date
var id = setInterval(function () {
var timePassed = new Date - start
var progress = timePassed / opts.duration
if (progress > 1) progress = 1
var delta = opts.delta(progress)
opts.step(delta)
if (progress == 1) {
clearInterval(id)
if (opts.onEnd) {
opts.onEnd()
}
}
}, opts.delay || 10)
}
fs.Animate = {
linear: function (p) {
return p
},
circ: function (progress) {
return 1 - Math.sin(Math.acos(progress))
}
}
fs.isObject = function (o) {
return typeof o.__isFSObject === 'function' && o.__isFSObject();
}
fs.fn.prototype = {
toString: function() {
return this.obj.toString()
},
matches: function (sel) {
if (__matches) return __matches.apply(this.get(), [sel])
},
__isFSObject: function () {
return this instanceof fs.fn
},
append: function (e) {
e = fs.isObject(e) ? e.get() : e;
this.get().appendChild(e);
return this
},
insertBefore: function (e) {
this.parent().insertBefore(fs.isObject(e) ? e.get() : e, this.get());
},
insertAfter: function (e) {
this.parent().insertBefore(fs.isObject(e) ? e.get() : e, this.get().nextSibling)
},
loaded: function (cb) {
this.listen('DOMContentLoaded', cb);
},
clear: function () {
this.i(function (o) {
while (o.firstChild) {
o.removeChild(o.firstChild)
}
});
return this
},
get: function () {
return this.obj[0];
},
appendTo: function (e) {
if (typeof e === 'string') {
e = $(e).get()
}
else if (fs.isObject(e)) {
e = e.get()
}
e.appendChild(this.get());
},
children: function (sel,n) {
var sel = sel || '*',
cn = this.get().childNodes,
length = cn.length,
m = []
for (var i = 0; i < length; i++) {
if (cn[i].nodeType === 1 && fs(cn[i]).matches(sel)) m.push(cn[i])
}
if (n) { var x = fs('');x.obj = m;return x }
return m;
},
listen: function (e, cb, cBool) {
if (!fs.isArray(e)) {
e = [e]
}
this.i(function (o) {
e.forEach(function (ee) {
o.addEventListener(ee, function (e) {
cb.call(e.target || e.srcElement, e)
}, cBool || false)
})
});
return this
},
i: function (cb) {
for (var i = 0; i < this.obj.length; i++) {
cb(this.obj[i]);
}
return this;
},
nextSibling: function (f) {
var ns = this.get();
while (ns && (ns = ns.nextSibling) && ns.nodeType != 1) {}
return f ? fs(ns) : ns
},
previousSibling: function (f) {
var ps = this.get();
while (ps && (ps = ps.previousSibling) && ps.nodeType != 1) {}
return f ? fs(ps) : ps
},
parent: function (n) {
var p = this.get().parentNode
return n ? fs(p) : p
},
parents: function (until) {
var m = fs('');
m.obj = []
var o = this.get();
var p
while ((o = o.parentNode) && ((until && !fs(o).matches(until)) || !until)) m.obj.push(o);
return m;
},
attr: function (a, s) {
if (s == null) {
return this.get().getAttribute(a)
}
else {
this.i(function (o) {
o.setAttribute(a, s)
});
}
return this;
},
setText: function (t) {
this.i(function (o) {
o.appendChild(document.createTextNode(t));
});
return this
},
toggle: function (cn, bool) {
this.i(function (o) {
if (typeof (bool) === "boolean") {
if (bool) o.classList.add(cn)
else {
o.classList.remove(cn)
}
}
else {
o.classList.toggle(cn || "hide")
}
});
return this
},
addClass: function (cn) {
this.i(function (o) {
o.classList.add(cn)
});
return this
},
removeClass: function (cn) {
this.i(function (o) {
o.classList.remove(cn)
});
return this
},
__listener: {},
__registerListener: function (evt, cb) {
this.__listener[evt] = this.__listener[evt] || [];
this.__listener[evt].push(cb);
},
__fireListener: function (evt, cb) {
if (this.__listener[evt]) {
this.__listener[evt].forEach(function (o) {
o.call(this)
}, this);
}
},
animate: function (aopts) {
var a = aopts.to - aopts.from;
fs.animate({
delay: 10,
duration: (aopts.duration || 1) * 1000,
// 1 sec by default
delta: aopts.delta || fs.Animate.linear,
step: function (delta) {
var p = aopts.from + (a * delta) + (aopts.unit || '');
var o = new Object();
o[aopts.prop] = p;
this.css(o)
}.bind(this),
onEnd: function () {
this.__fireListener('animationEnd');
}.bind(this)
});
return this
},
fadeOut: function (time, cb) {
if (cb) {
this.__registerListener('animationEnd', cb)
}
this.animate({
prop: 'opacity',
duration: time,
from: 1,
to: 0
});
},
remove: function () {
this.i(function (o) {
o.parentNode.removeChild(o);
});
},
hide: function () {
this.addClass('hide');
},
show: function () {
this.removeClass('hide');
},
is: function (sel) {
this.obj = this.obj.filter(function (o) {
return fs(o).matches(sel);
});
return this
},
computed: function (attr) {
return document.defaultView.getComputedStyle(this.get(), null).getPropertyValue(attr);
},
__getWH: function (s) {
var c = parseFloat(this.computed('width'));
var opts = ['margin-left', 'margin-right', 'border-left-width', 'border-right-width'];
for (var i = 0, length = opts.length; i < length; ++i) {
c -= parseFloat(this.computed(opts[i]));
}
return c;
},
width: function (n) {
if (n != null) {
this.css({
width: parseFloat(n) + "px !important"
});
}
else {
return this.__getWH('w');
}
},
swap: function (el) {
var o = (el instanceof HTMLElement ? $(el) : el)
var c = o.clone()
var p = this.clone();
o.replace(p);
this.replace(c)
return this
},
replace: function (el) {
var o = (fs.isObject(el) ? el.get() : el)
this.parent().replaceChild(o, this.get())
},
clone: function () {
return this.get() && this.get().cloneNode(true)
},
css: function (s) {
this.i(function (o) {
for (var i in s) {
try {
o.style[i] = s[i]
}
catch (err) {}
}
});
return this
},
count: function () {
return this.obj.length;
}
}
return fs
})());