Немного JavaScript без библиотек и комментариев
Thursday, July 26, 2012 12:24:11 PM
var addHandler = function(o, e, h, u)
{
if (typeof o.addEventListener != 'undefined')
o.addEventListener(e, h, u || false);
else if (typeof o.attachEvent != 'undefined')
o.attachEvent('on' + e, h);
}
var removeHandler = function(o, e, h, u)
{
if (typeof o.removeEventListener != 'undefined')
o.removeEventListener(e, h, u || false);
else if (typeof o.detachEvent != 'undefined')
o.detachEvent('on' + e, h);
}
var getStyle = function(e, p)
{
if (e.currentStyle) return e.currentStyle[p];
if (window.getComputedStyle) return document.defaultView.getComputedStyle(e,null).getPropertyValue(p.replace(/([A-Z]|^ms)/g, "-$1").toLowerCase());
}
var inView = function(el)
{
var w=window, d=w.document, r=el.getBoundingClientRect(),
i=[w.innerWidth || d.body.clientWidth || d.documentElement.clientWidth,
w.innerHeight || d.body.clientHeight || d.documentElement.clientHeight];
if (r.bottom<0 || r.right<0 || r.left>i[0] || r.top>i[1]) return false;
var t=[r.left<0?0:r.left, r.right>i[0]?i[0]-1:r.right,
r.top<0?0:r.top, r.bottom>i[1]?i[1]-1:r.bottom];
return d.elementFromPoint( ~~(t[0]+(t[1]-t[0])/2), ~~(t[2]+(t[3]-t[2])/2) );
}
var haveParent = function(o, p)
{
if (o && p) while (o=o.parentNode) if (o==p) return true;
return false;
}
var wait = (function(){
var t = 0;
return function(callback, ms){
clearTimeout (t);
t = setTimeout(callback, typeof ms!='undefined'?ms:500);
};
})();
var lang={
enumerables:{
'hours':['часов','час', 'часа'],
'minutes':['минут', 'минуту', 'минуты'],
'seconds':['секунд','секунда','секунды'],
'days':['дней','день','дня'],
'years':['лет','год','года'],
'males':['мужчин','мужчина','мужчины'],
'females':['девушек','девушка','девушки'],
'people':['человек','человек','человека'],
'photos':['фотографий','фотография','фотографии']
},
genders:{
'man':['','него','неё'],
'person':['человек','мужчина','женщина'],
'competitor':['человека','участника','участницу'],
'was':['','был','была'],
'voted':['','проголосовал','проголосовала'],
'turn_on':['','включил','включила'],
'turn_off':['','выключил','выключила'],
'open':['','открыл','открыла'],
'close':['','закрыл','закрыла'],
'add':['','добавил','добавила'],
'place':['','разместил','разместила'],
'ask': ['','попросил','попросила'],
'leave': ['','оставил','оставила'],
'invite': ['','пригласил','пригласила'],
'give':['','подарил','подарила']
},
num: function(n, w)
{
var i=(n>9?n%10:n);
return n+' '+lang.enumerables[w][(i==1 && n!=11)?1:(( ('234'.indexOf(i)>-1)&&(n<11 || n>20) )?2:0)];
},
gender: function(g, w)
{
var s = lang.genders[w];
if(!s) return w;
if(!g) return s[0]||s[1];
return s[g=='f'?2:1];
}
}













