function classAdd(domNode, className){
if (domNode == undefined || domNode.className == undefined)
return;
if (className instanceof Array){
for(var i = 0; i < className.length; i++)
classAdd(domNode, className[i]);
return;
}
if (classHas(domNode, className))
return;
var classes = domNode.className.split(' ');
classes.push(className);
domNode.className = classes.join(' ').trim();
}
function classRemove(domNode, className){
if (domNode == undefined || domNode.className == undefined)
return;
if (!classHas(domNode, className))
return;
var classes = domNode.className.split(' ');
var classesSet = [];
for (var i = 0; i < classes.length; i++){
if (classes[i] == className)
continue;
classesSet.push(classes[i]);
}
domNode.className = classesSet.join(' ');
}
function classHas(domNode, className){
if (domNode == undefined || domNode.className == undefined)
return false;
return ~domNode.className.split(' ').indexOf(className);
}
function jsAjax(params) {
var xmlhttp = getXmlHttp();
xmlhttp.open(params.method || 'get' , addRequest(params.url, 'r', Math.random()), true);
xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200 && params.success)
params.success(xmlhttp.responseText);
if (params.complete)
params.complete();
}
}
xmlhttp.send(params.data);
return xmlhttp;
}
function getXmlHttp(){
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (ee) {
}
}
if (typeof XMLHttpRequest!='undefined') {
return new XMLHttpRequest();
}
}
function addRequest(str_query, field, value) {
var lstIndex = str_query.indexOf('?')
var str_length = str_query.length
return str_query + (lstIndex == -1 ? '?' : (lstIndex == str_length - 1 ? '' : '&')) + field + '=' + value;
}
var Sidebar = {
toggle: function(event){
event.preventDefault();
var body = document.getElementsByTagName('body')[0];
if (classHas(body, '__sidebar-active')){
Sidebar.openFunction("left");
}else{
Sidebar.openFunction("right");
}
},
toggleSwipe: function(direction){
if (direction == 'right'){
Sidebar.openFunction("right");
}else{
Sidebar.openFunction("left");
}
},
openFunction: function(direction){
var sidebar = document.getElementById("the-sidebar");
sidebar.style.display = 'block';
var body = document.getElementsByTagName('body')[0];
if (direction == 'right') {
sidebar.style.left = '0px';
classAdd(body, '__sidebar-active');
}
else {
sidebar.style.left = '-100%';
classRemove(body, '__sidebar-active');
}
},
device:function(){
return !!navigator.userAgent.match(/(UCBrowser|UCWEB)/i);
},
MobiSwipe: function(){
var body = document.getElementsByTagName('body')[0],
inGesture = false,
startX = 0, startY = 0,
yMaxDistance = 60,
xGestureDistance = 50;
function mousedown(event){
event = event.originalEvent;
inGesture = true;
startX = (event.touches) ? event.touches[0].pageX : event.pageX;
startY = (event.touches) ? event.touches[0].pageY : event.pageY;
if (event.touches && event.touches.length!=1) {
inGesture = false;
}
}
function mousemove(event){
event = event.originalEvent;
if (inGesture){
var deltaX = 0, deltaY = 0,
direction;
var moveX = (event.touches) ? event.touches[0].pageX : event.pageX,
moveY = (event.touches) ? event.touches[0].pageY : event.pageY;
deltaX = Math.abs(moveX - startX);
deltaY = Math.abs(moveY - startY);
if (deltaY > yMaxDistance){
inGesture = false;
}
if (inGesture){
if ((deltaX * 0.66) >= deltaY){
if(navigator.userAgent.match(/Android/i)){
event.preventDefault();
}
if (startX > moveX){
direction = "left";
}else{
direction = "right";
}
if (deltaX >= xGestureDistance){
if (direction == "left"){
Sidebar.toggleSwipe("left");
}else if (direction == "right"){
Sidebar.toggleSwipe("right");
}
inGesture = false;
}
}else{
inGesture = false;
}
}
}
}
$(document).on('touchstart', mousedown);
$(document).on('touchmove', mousemove);
}
}
var events_options = {
discussions: {
array_key: 'dsc',
element_id: 'discussions',
float_counter: true
},
friends: {
array_key: 'fr',
element_id: 'friends',
right_counter: true
},
friends_new: {
array_key: 'fr_new',
element_id: 'friends',
float_counter: true,
link: function (events) {
return '/user/frends/' + (events.fr_new > 0 ? 'new.php' : '');
}
},
guests: {
array_key: 'gst',
element_id: 'guests',
float_counter: true
},
messages: {
array_key: 'mail',
element_id: 'messages',
float_counter: true,
link: function (events) {
return '/' + (events.mail > 0 ? 'new_mess' : 'konts') + '.php';
}
},
marks: {
array_key: 'marks',
element_id: 'marks',
float_counter: true
},
notifications: {
array_key: 'notif',
element_id: 'notifications',
float_counter: true
},
tape: {
array_key: 'tape',
element_id: 'tape',
float_counter: true
}
};
function startUpdatingEvents() {
$(document).ready(function () {
update();
});
}
function setUpdateTimeout() {
updateTimeout = setTimeout(update, 5000);
}
function update() {
jsAjax({
url: '/ajax/events/get.php',
success: function (responseText) {
var responseJSON = JSON.parse(responseText);
if (!responseJSON || !responseJSON.status || !responseJSON.events)
return;
setCounters(responseJSON.events);
},
complete: function () {
setUpdateTimeout();
}
});
}
function setCounters(events) {
for (k in events_options) {
var ev_opts = events_options[k];
var ev_count = events[ev_opts.array_key],
els = document.getElementsByClassName('events-' + ev_opts.element_id);
for (i = 0; i < els.length; i++) {
var el = els[i];
if (ev_opts.float_counter) {
var float_el = el.getElementsByClassName('events-float-count');
if (float_el.length != 0)
float_el[0].innerHTML = handleCount(ev_count);
}
if (ev_opts.right_counter) {
var right_el = el.getElementsByClassName('events-right-count');
if (right_el.length != 0)
right_el[0].innerHTML = ev_count;
}
if (ev_opts.link) {
var link_el = el.getElementsByClassName('events-link');
if (link_el.length != 0)
link_el[0].href = ev_opts.link(events);
}
}
}
}
function handleCount(ev_count) {
return ev_count > 0 ? ev_count : '';
}
$(document).ready(function () {
$('body').addClass('__sidebar-can_animate');
if (!Sidebar.device())
Sidebar.MobiSwipe();
});