window.onload = init;
// === private
function init() {
var audio = $('#myplayer').get(0);
audio.src = 'http://radio.at.aknet.kg:8008/radio_record.aac';
$('#playpause').click(function() {
if (audio.paused) {
this.textContent = 'Остановить';
audio.play();
return;
}
this.textContent = 'Воспроизвести';
audio.pause();
});
$('#volume').change(function() {
audio.volume = this.value / 100;
});
setInterval(updateTrack, 5000);
}
function updateTrack() {
var url = 'http://www.radiorecord.ru/xml/record_online_v3.txt';
$.getJSON(url, function(json) {
var key = json.ARTIST + ' - ' + json.NAME;
$('#track').text('Сейчас играет: ' + key);
$('#sg').attr('href', 'https://www.google.ru/search?q=' + key);
$('#sn').attr('href', 'http://namba.kg/#!/search/mp3/' + key)
});
}
function delegate(fn, ...base) {
return function(...args){
return fn.call(this, ...base, ...args);
}
}
var cache_ = {},
Class = require('atma-class');
function getUserData(id, callback) {
var dfr = cache_[id];
if (dfr == null) {
// делеаем запрос только с первым вызовом функции с этим id
dfr = cache_[id] = new Class.Deferred();
vk.api('users.get', {
'user_ids': id,
'fields': 'photo_100'
}, function(err, result) {
if (err)
return dfr.fail(err);
dfr.resolve(result.response[0]);
});
}
// подписываемся на окончание загрузки, если же
// загрузка уже завершилась(успешно или нет),
// то callback вызывается сраюу
dfr
.done(function(response) {
callback(null, response)
})
.fail(callback);
}
var Request = require('request'),
Class = require('atma-class');
module.exports = function prepareTiles(tiles, url, ssid, callback) {
var await = new Class.Await();
tiles.forEach(function(tile) {
prepareTile(tile, url, ssid, await.delegate());
});
await.always(function(){
callback(tiles);
});
};
function prepairTile(tile, url, ssid, callback) {
var meta = title.metadata;
switch (meta.tiletype) {
case 'mark':
var search = qs.stringify({
url: url,
ssid: ssid,
mark: meta.mark,
type: meta.type,
format: meta.format,
graph: meta.graph
});
val_resolve(
'http://127.0.0.1:8080/getSingleMark?' + search
, tile
, callback);
break;
case 'youtube':
case 'telcall':
case 'skypecall':
val_onComplete(tile, meta, callback);
break;
}
}
function val_resolve(url, tile, callback) {
Request.get(url, function(error, res, body) {
if (error)
console.error(error)
val_onComplete(tile, body, callback);
});
}
function val_onComplete(tile, model, callback) {
tile.metadata.value = tpl.make(
tile.metadata.tiletype, model
);
callback();
}
require('child_process').spawn('cmd', ['/C', 'node', 'tools/fetch.js']);
require('fs').utimesSync('index.js', new Date(), new Date());
var Actions = new Dictionary<String, Action> {
{"foo", w.foo },
{"bar", w.bar }
};
var Strategies = new Dictionary<String, List<String>>(){
{"in one", new List<String> { "foo", "bar" } }
};
// run
var actions = Strategies["in one"];
actions.ForEach((action)=> Actions[action]());
var slice = Array.prototype.slice,
filter = Array.prototype.filter
;
function findSelector(cssProperty){
var rules = [];
filter
.call(document.styleSheets, hasRules)
.forEach(function(styleSheet){
rules = rules.concat(slice
.call(styleSheet.rules)
.filter(hasCssNameDelegate(cssProperty))
);
})
return rules.map(function(rule){
return {
selector: rule.selectorText,
value: rule.style[cssProperty]
};
});
function hasRules(styleSheets){
return styleSheets.rules != null
}
function hasCssNameDelegate(name) {
return function(cssRule){
return cssRule.style && slice.call(cssRule.style).indexOf(name) !== -1
};
}
}
function findSelectorForElement(element, cssProperty){
var matchesSelector = HTMLElement.prototype.webkitMatchesSelector
|| HTMLElement.prototype.mozMatchesSelector
|| HTMLElement.prototype.msMatchesSelector
|| HTMLElement.prototype.oMatchesSelector
;
return findSelector(cssProperty)
.filter(function(data){
return matchesSelector.call(element, data.selector);
}).slice(-1)[0];
}
var tosterSidebar = document.querySelector('.sidebar')
findSelectorForElement(tosterSidebar, 'width');