Вход Регистрация
Файл: js/al/events.js
Строк: 1130
<?php
window
.events = {
  
showInviteBox: function(egid) {
    
showBox('al_page.php', {act'a_invite_box'gidgid}, {params: {bodyStyle"padding: 0px;"width:460}});
    return 
false;
  },
  
showCommonBox: function(egidhash) {
    
showBox('al_page.php', {act'a_friends_in_group'gidgidhashhash}, {params: {bodyStyle"padding: 0px;"}});
    return 
false;
  },
  
createEvent: function(hash) {
    var 
showBox('al_page.php', {act:'a_edit_event_box'}); /*.setButtons(getLang('global_save'), function() {
      cur.reloadAfterClose = true;
      var params = {act:'a_add_event'};
      params.hash = hash;
      params.desc = ge('public_link_desc').value;
      ajax.post('al_page.php', params, {onDone: function(res) {
        b.hide();
        nav.go()
      }, onFail: function(){}});
    }, getLang('global_cancel'));*/
  
},
  
subscribeSMS: function(eidhash) {
    var 
onChange = function(subscribed) {
      if (
subscribed) {
        
hide('event_subscribe_sms');
        
show('event_unsubscribe_sms');
      } else {
        
hide('event_unsubscribe_sms');
        
show('event_subscribe_sms');
      }
    };
    
ajax.post('al_mobile.php', {act:'a_subscribe_page'gid:eidhash:hash}, {onDone:function(subscribed) {
      
onChange(subscribed);
    }});
    
onChange(isVisible('event_subscribe_sms'));
  },
  
initStatusButtons: function(eidhash) {
    var 
row ge('event_row'+eid);
    var 
onChange = function(typeel) {
      try {
      
events.subscribe(eidtypehashel);
      var 
acts geByClass1('actions'row);
      
show(acts);
      
hide(geByClass1('change_status'row));
      var 
status 0;
      switch (
type) {
        case 
'unsure':
          
status 1;
        break;
        case 
'decline':
          
status 2;
          if (
cur.curTab == 'invitations' && acts.childNodes.length 3) {
            
acts.innerHTML += '<span class="divider">|</span><a onclick="events.reportSpam(this.parentNode, ' eid ', '' + hash + '')">' getLang('its_spam') + '</a>';
          }
        break;
      }
      
each(cur.tabs, function(i,tab) {
        if (
cur.lists[tab] && cur.lists[tab].data) {
          
each(cur.lists[tab].data, function(j,v) {if (&& v[0] == eid) {debugLog('set status 'status); v[2][4] = status;}});
        }
      });
      
//cur.lists[cur.curTab].showMore(null, true);
      
var status_text '';
      switch (
status) {
        case 
1status_text getLang('events_you_unsure'); break;
        case 
2status_text getLang('events_you_cant_participate'); break;
        default: 
status_text getLang('events_you_will_participate'); break;
      }
      
geByClass('status'row)[0].innerHTML status_text;
      } catch(
e){debugLog(e);}
    }
    
createButton(geByClass('join_button'row)[0], onChange.pbind('join'));
    
createButton(geByClass('unsure_button'row)[0], onChange.pbind('unsure'));
    
createButton(geByClass('leave_button'row)[0], onChange.pbind('decline'));
  },
  
changePast: function(eidtypehashel) {
    
events.subscribe(eidtypehash);
    var 
status 0oldStatus 0;
    switch (
type) {
      case 
'unsure'status 1; break;
      case 
'decline'status 2; break;
    }
    
each(cur.tabs, function(i,tab) {
      if (
cur.lists[tab] && cur.lists[tab].data) {
        
each(cur.lists[tab].data, function(j,v) {if (&& v[0] == eid) {debugLog('set status 'status); oldStatus v[2][4]; v[2][4] = status;}});
      }
    });
    var 
oldType 'join';
    switch (
oldStatus) {
      case 
1oldType 'unsure'; break;
      case 
2oldType 'decline'; break;
    }
    if (
cur.convert) {
      
geByClass1('status'el.parentNode.parentNode).innerHTML getLang('events_past_moved');
      
el.innerHTML '';
    } else {
      
el.innerHTML getLang((status == 2) ? 'events_restore_past_event' 'events_decline_past_event');
      
el.onclick events.changePast.pbind(eidoldTypehashel);
    }
  },
  
changeStatus: function(eidhashnorequest) {
    var 
row ge('event_row'+eid);
    if (!
row) return;
    var 
html '<div class="button_blue fl_l"><button class="join_button">'+getLang('events_user_will_participate')+'</button></div>
    <div class="button_blue fl_l"><button class="unsure_button">'
+getLang('events_user_unsure')+'</button></div>
    <div class="button_cancel fl_l"><div class="leave_button">'
+getLang('events_user_cant_participate')+'</div></div>';
    
geByClass('change_status'row)[0].innerHTML html;
    
events.initStatusButtons(eidhash);
    
hide(geByClass('actions'row)[0]);
    
show(geByClass('change_status'row)[0]);
    if (
norequest) return;
    
ajax.post('al_events.php', {act:'a_enter'eid:eidhash:hashaction:'undecided'}, {onDone:function(rescount) {
      
ge('invitations_count').innerHTML count '('+count+')' '';
    }});
  },
  
reportSpam: function (eleidhash) {
    var 
sphptab cur.curTab;
    if (
el.firstChild && el.firstChild.className == 'progress_inline') return;
    
sp = function() {
      
el.oldhtml el.innerHTML;
      
el.innerHTML '<span class="progress_inline"></span>';
    }
    
hp = function() {
      
el.innerHTML el.oldhtml;
    }
    
ajax.post('al_events.php', {act'spam'eideidhashhash}, {
      
onDone: function() {
        var 
row ge('event_row'+eid);
        if (!
row) return;
        var 
status geByClass('status'row)[0], actions geByClass('actions'row)[0];
        
status.basehtml status.innerHTML;
        
actions.basehtml actions.innerHTML;
        
status.innerHTML getLang('events_ajax_inv_declined_spam');
        
actions.innerHTML '';
      },
      
showProgresssphideProgresshp
    
});
  },
  
showMapBox:function(placeIDzoomlink) {
    if (
window.showZeroZoneBox && showZeroZoneBox('places', function() {
      
events.showMapBox(placeIDzoomlink);
    })) { return; }

    
showTabbedBox('places.php', {act'a_get_place_box'idplaceID}, {stat: ['places.css''map.css''maps.js''ui_controls.css''ui_controls.js']});
  },
  
showAddressBox: function(countryaddress) {
    if (
window.showZeroZoneBox && showZeroZoneBox('places', function() {
      
events.showAddressBox(countryaddress);
    })) { return; }

    
showBox('places.php', {act'a_get_address_box'countrycountryaddressaddress}, {stat: ['places.css''map.css''maps.js''ui_controls.css''ui_controls.js'], params: {width640bodyStyle'padding:0;'}});
  },
  
otherActs: function(el) {
    
clearTimeout(cur.hideOtherTimer);
    if (!
el) return false;
    
el.blur();
    var 
acts ge('page_other_acts');
    if (
isVisible(acts)) {
      return 
false;
    }
    
acts.style.marginLeft '-1px';
    
acts.style.marginTop '-21px';
    
show(acts);
    return 
false;
  },
  
hideOther: function(timeout) {
    if (
timeout 0) {
      
cur.hideOtherTimer setTimeout(cur.hideOthertimeout);
    } else {
      var 
acts ge('page_other_acts');
      if (
timeout == -1) {
        
hide(acts);
      } else {
        
fadeOut(acts200);
      }
    }
  },

  
updateBlock: function(blockIdhtmljs) {
    
blockId ge(blockId);
    if (!
blockId || !html) {
      return;
    }
    
geByClass('module_body'blockId)[0].innerHTML html;
    if (
js) {
      eval(
js);
    }
  },

  
unSubscribe: function(eidhash) {
    
show('event_subscribe');
    
hide('event_unsubscribe');
    if (!
hashhash cur.options.enterHash;
    
ajax.post('al_events.php', {act:'a_enter'eid:eidhash:hashaction:'undecided'});
    return 
false;
  },

  
unSubscribePast: function(eidhash) {
    if (!
hashhash cur.options.enterHash;
    
ajax.post('al_events.php', {act:'a_enter'eid:eidhash:hashaction:'decline'});
    
hide('event_decline_past_event');
    
show('event_restore_past_event');
    return 
false;
  },
  
subscribePast: function(eidtypehash) {
    if (!
hashhash cur.options.enterHash;
    
ajax.post('al_events.php', {act:'a_enter'eid:eidhash:hashaction:type});
    
show('event_decline_past_event');
    
hide('event_restore_past_event');
    return 
false;
  },

  
subscribe: function(eidactionhashel) {
    
lockButton(el);
    if (
cur.processSubscribe) return;
    
cur.processSubscribe true;
    var 
getModules hash 1;
    if (!
hashhash cur.options.enterHash;
    
ajax.post('al_events.php', {act:'a_enter'eid:eidhash:hashaction:actionmodules:getModules}, {
      
onDone: function(followersModuleunsureModulelikeModulejs) {
        
debugLog(el);
        
unlockButton(el);
        
cur.processSubscribe false;
        if (
getModules) {
          
ge('event_like_module_wrap').innerHTML likeModule;
          
ge('event_followers_module_wrap').innerHTML followersModule;
          
ge('event_unsure_module_wrap').innerHTML unsureModule;
          if (
js) {
            eval(
js);
          }
          
show('event_unsubscribe');
          
hide('event_subscribe');
        } else if (!
cur.convert) {
          var 
count unsureModule;
          
ge('invitations_count').innerHTML count '('+count+')' '';
        }
      }, 
onFail: function() {
        
unlockButton(el);
      }
    });

    var 
followersModule ge('public_followers');
    if (
followersModule) {
      var 
subscDiv geByClass('header_top'followersModule)[0];
      var 
count subscDiv.innerHTML;
      
subscDiv.innerHTML cur.otherCount;
      if (
cur.otherCount != '') {
        
show(followersModule);
      }
      
cur.otherCount count;
    }
    return 
false;
  },
  
friendsBox: function() {
    
showBox('al_events.php', {act'a_get_friends'pid:cur.options.event_id}, {params:{width:467}});
  },

  
showEdit:function(tab) {
    
nav.go('/event' cur.options.event_id '?act=edit');
    return 
false;
  },
  
switchTab:function(tabonEndonHeader) {
    if (!
cur.tabcur.tab 'info_module_tab';
    if (
cur.tab == tab) return;
    var 
ge('info_module_wrap'), ge('info_module_cont');
    if (
tab == 'info_module_tab'setStyle(w, {borderBottomWidth:'0px'});
    var 
hideTabs browser.msie7 || browser.msie6;

    var 
pos = {'info_module_tab':0'edit_module_tab':-397'list_module_tab':-794};
    var 
urls = {'info_module_tab':'''edit_module_tab':'?act=edit''list_module_tab':'?act=edit&list='+cur.options.list};
    var 
t1 ge(cur.tab), t2 ge(tab), back = (pos[tab] > pos[cur.tab]);
    var 
h1 getSize(t1)[1];

    if (
tab == 'list_module_tab') {
      
setStyle(t2, {height:h1-1});
    }

    
//setStyle(w, {height:h1});
    //if (!back) setStyle(t2, {height:'auto'});
    
if (hideTabs) {
      
setStyle(c, {height:getSize(w)[1]});
      
setStyle(w, {position:'absolute'});
      
setStyle(t2, {visibility:'visible'});
    }
    var 
h2 getSize(t2)[1];
    
//setStyle(t2, {height:h1});
    //setStyle(w, {height:'auto'});

    //setStyle(ge('info_module_header'), {height:getSize(ge('info_module_header'))[1]});
    
ge('info_module_header_content').innerHTML cur.tabHeaders[tab];
    
//var hh = getSize(ge('info_module_header_content'))[1];

    
ge('public_manage_page_link').innerHTML cur.tabActions[tab];

    var 
to = (tab == 'info_module_tab' || cur.tab == 'info_module_tab') ? 300;

    if (
onHeaderonHeader();
    
animate(ge('info_tabs'), {left:pos[tab]}, to, function() {
      
//animate(ge('info_module_header'), {height:hh}, 100);
      
var inc h2 h1;
      
//if (back) setStyle(t1, {height:1});
      
if (hideTabs) {
        
setStyle(t1, {visibility:'hidden'});
        
setStyle(w, {position:'static'});
        
setStyle(c, {height:'auto'});
      }
      if (
inc == !back && h1 != h2) {
        
//animate(t2, {height:h2}, 150, function() {
          //setStyle(t2, {height:'auto'});
          
if (onEndonEnd();
          
/*
          if (browser.chrome) { //weird bug
            setStyle(t2, {paddingTop:1});
            setTimeout(setStyle.pbind(t2, {paddingTop:0}), 0);
          }
          */
        //});
      
} else {
        if (
back && tab == 'edit_module_tab') {
          
//setStyle(t2, {height:'auto'});
        
}
        if (
onEndonEnd();
      }
      
cur.tab tab;
      
nav.setLoc((cur.options.public_link.replace(/^//, ''))+urls[tab]);
    
});
    return 
false;
  },
  
showInput:function(el) {
    
el el.parentNode;
    
addClass(el'unshown');
    var 
input_wrap geByClass('input_wrap'el.parentNode)[0];
    
removeClass(input_wrap'unshown');
    
geByClass('text'input_wrap)[0].focus();
  },
  
hideInput: function(elval) {
    return;
  },
  
shareEvent: function(eidhash) {
    
show('share_event_progress');
    
hide('share_event_link');
    
ajax.post('al_events.php', {act:'a_share'eid:eidhashhash}, {onDone:function(res) {
      
hide('share_event_progress');
      
hide('event_unsubscribe');
      
ge('event_unshare').innerHTML res;
      
show('share_event_link');
      
show('event_unshare');
    }});
  },
  
unshareEvent: function(eidpost_idhash) {
    
show('unshare_event_progress');
    
hide('unshare_event_link');
    
ajax.post('al_events.php', {act'a_unshare'eid:eidpost_id:post_idhashhash}, {onDone:function(res) {
      
hide('unshare_event_progress');
      
hide('event_unshare');
      
show('unshare_event_link');
      
show('event_unsubscribe');
    }});
  },

  
init: function(options) {
    
extend(cur, {
      
oid: -options.event_id,
      
module'event',
      
optionsoptions,
      
postTo: -options.event_id,
      
mid: -options.event_id,
      
editingfalse,
      
hideOtherevents.hideOther,
      
otherActsevents.otherActs,
      
tabHeadersoptions.info_headers,
      
tabActionsoptions.tab_actions,
      
otherCountoptions.otherCount,
      
_back: {show: [], hide: [], textoptions.back}
    });

    if (
ge('event_wall')) {
      
wall.init(extend(options, {automore1}));
    }
    if (
ge('join_button')) {
      
this.initLike(options.event_id);
    }
  },
  
initLike: function(event_id) {
    
createButton('join_button'events.subscribe.pbind(event_id'join'null));
    
createButton('unsure_button'events.subscribe.pbind(event_id'unsure'null));
    
createButton('leave_button'events.subscribe.pbind(event_id'decline'null));
  }

};


window.showMapBox events.showMapBox;
window.showAddressBox events.showAddressBox;

function 
initCalendar(monthyeareventsholidays) {

extend(cur, {
  
calEventsevents,
  
calHolidaysholidays,
  
calMonmonth,
  
calYearyear,
  
calEventsById: {},
  
calGetCurEvents: function(day) {
    if (!
cur.calEvents[cur.calMon]) return [];
    var 
events cur.calEvents[cur.calMon][day], curEvents = [];
    var 
now = new Date(), nowYear now.getFullYear();
    for (var 
i in events) {
      var 
year = (new Date(events[i][3] * 1000)).getFullYear();
      if ((
events[i][0] > && (cur.calYear year || year == nowYear)) || (events[i][0] < && cur.calYear == year)) {
        
curEvents.push(events[i]);
      }
    }
    return 
curEvents;
  },
  
calShowMore: function(eliday) {
    var 
el.parentNode;
    var 
geByClass('day_events'p.parentNode)[0];
    var 
items cur.calGetCurEvents(day);
    var 
item items[i];
    if (!
item || !e) return;
    
= (>= items.length) ? 1;
    
p.innerHTML '<a href="" onclick="cur.calShowMore(this, ' ', ' day ');return false;">' getLang('events_calendar_show_more') + '</a>';
    
e.innerHTML '<a href="' item[2] + '" onclick="return nav.go(this, event);"><img src="' item[4] + '" onmouseover="cur.calTrailOn(this, ' item[0] + ', ' day ');" onmouseout="cur.calTrailOff(this, ' item[0] + ');"/></a>';
  },
  
calTrailOn: function(elfidday) {
    var 
item cur.calEventsById[fid];
    var 
bDay = new Date(item[3] * 1000);
    var 
curDay = new Date(cur.calYearcur.calMon-1day);
    var 
nowDay = new Date();
    
nowDay = new Date(nowDay.getFullYear(), nowDay.getMonth(), nowDay.getDate());
    var 
text '';
    if (
fid 0) {
      var 
hours bDay.getHours();
      var 
minutes bDay.getMinutes();
      if (
minutes 10minutes '0' minutes;
      var 
time hours ':' minutes;
      
text getLang('events_calendar_future_event').replace('{time}'time);
    } else {
      if (
bDay.getFullYear() != nowDay.getFullYear()) {
        var 
years curDay.getFullYear() - bDay.getFullYear();
        
text getLang((nowDay curDay) ? 'events_calendar_past_birthday' : ((nowDay.toString() == curDay.toString()) ? 'events_calendar_recent_birthday' 'events_calendar_future_birthday'), years);
      }
    }
    if (
texttext '<div class="text">' text '</div>';
    var 
name '<a href="' item[2] + '" onclick="return nav.go(this, event);">' item[1] + '</a>';
    var 
im vkImage();
    var 
showTT = function () {
      if (
window.tooltipstooltips.hideAll();
      
showTooltip(el, {content:'<div class="wrap"><div class="content"><a href="'+item[2]+'" onclick="return nav.go(this, event);"><img src="'+item[5]+'"/></a><div class="name">' name '</div>'+text+'</div></div>',className'rich wall_tt cal_tt'slide:15shift: [4033], touptrue});
    };
    
im.src item[5];
    
im.onload = function() {
      
im.loaded true;
    }
    
clearTimeout(cur.calTO);
    var 
to = function() {
      if (
im.loaded) {
        
showTT();
        
clearTimeout(cur.calTO);
        return;
      }
      
cur.calTO setTimeout(to50);
    };
    
cur.calTO setTimeout(to200);
    return 
false;
  },
  
calTrailOff: function(fid) {
    
clearTimeout(cur.calTO);
    return 
false;
  },
  
calGetMonth: function(shift) {
    if (
window.tooltipstooltips.hideAll();
    
cur.calMon += shift;
    if (
cur.calMon 12) {
      
cur.calMon 1;
      
cur.calYear++;
    } else if (
cur.calMon 1) {
      
cur.calMon 12;
      
cur.calYear--;
    }
    
ge('calendar_header').innerHTML getLang('Month'+cur.calMon)+' '+cur.calYear;


    var 
days = (new Date(cur.calYearcur.calMon0)).getDate();
    var 
date = new Date(cur.calYearcur.calMon 11);

    var 
start = (date.getDay() + 6) % 7;
    var 
offset days start;
    var 
weeksCount Math.ceil(offset 6);
    var 
rows '';
    var 
nowDay = new Date();
    
nowDay = new Date(nowDay.getFullYear(), nowDay.getMonth(), nowDay.getDate());

    for (var 
week 0week weeksCountweek++) {
      var 
rowHTML '';
      for (var 
weekDay 0weekDay 7weekDay++) {
        var 
day week weekDay start 1;
        var 
dayClass = (weekDay == 0) ? 'left ' '';
        if (
day && day <= days) {
          var 
holidays cur.calHolidays[cur.calMon];
          var 
curDay = new Date(cur.calYearcur.calMon 1day);

          if (
holidays && holidays[day] || weekDay 4) {
            
dayClass += 'holiday ';
          }

          var 
dayText '';
          if (
nowDay.toString() == curDay.toString()) {
            
dayText getLang('Today');
            
dayClass += 'today ';
          }

          var 
dayEvents ''showMore '';
          var 
calEvents cur.calGetCurEvents(day);
          if (
calEvents[0]) {
            var 
photo calEvents[0][4];
            var 
href calEvents[0][2];
            var 
fid calEvents[0][0];
            
dayEvents '<a href="' href '" onclick="return nav.go(this, event);"><img src="' photo '" onmouseover="cur.calTrailOn(this, ' fid ', ' day ');" onmouseout="cur.calTrailOff(this, ' fid ');"/></a>';

            if (
calEvents.length 1) {
              
showMore '<a href="" onclick="cur.calShowMore(this, 1, ' day ');return false;">' getLang('events_calendar_show_more') + '</a>';
            }
          }

          
rowHTML += '<td class="day_cell day' + (weekDay+1) + ' ' dayClass '">
            <div class="day_num fl_l">' 
day '</div><div class="day_text fl_l">' dayText '</div>
            <div class="day_events clear">' 
dayEvents '</div>
            <div class="day_more">' 
showMore '</div>
          </td>'
;

        } else {
          
rowHTML += '<td class="day_cell day' + (weekDay+1) + ' ' dayClass '"></td>';
        }
      }

      
rows += '<tr class="day_row">' rowHTML '</tr>';
    }

    
ge('calendar_table_wrap').innerHTML '<table class="day_table" cellpadding="0" cellspacing="0" align="center">
      <tr>
       <td class="day_head day1">' 
getLang('events_mon') + '</td>
       <td class="day_head day2">' 
getLang('events_tue') + '</td>
       <td class="day_head day3">' 
getLang('events_wed') + '</td>
       <td class="day_head day4">' 
getLang('events_thu') + '</td>
       <td class="day_head day5">' 
getLang('events_fri') + '</td>
       <td class="day_head day6">' 
getLang('events_sat') + '</td>
       <td class="day_head day7">' 
getLang('events_sun') + '</td>
      </tr>' 
rows '</table>';

    return 
false;
  }
});

each(cur.calEvents, function(i,m) {
  
each(m, function(jd) {
    
each(d, function(kitem) {
      
cur.calEventsById[item[0]] = item;
    });
  });
});

}

var 
PagedList = function(containerdataoptions) {
  var 
isEqual = function(ab){
    if (!
isArray(a) || !isArray(b)) return == b;
    for (var 
0a.length; ++i) {
      if(
a[i] != b[i])return false;
    }
    return 
true;
  }

  var 
isEmpty = function(a){
    if(!
a)return true;
    for(var 
0a.length; ++i){
      if(
a[i])return false;
    }
    return 
true;
  }

  function 
cloneAr(a) {
    var 
= [];
    for (var 
0a.length; ++i) {
      
b[i] = a[i];
    }
    return 
b;
  }

  var 
defaults = {
    
getRow: function(row) { return ''; },
    
setPages: function(pagepagesside) { },
    
filter: function(searchrow) { return true; },
    
perPage30,
    
emptyRow: function(search){return '<div>no rows</div>';}
  };
  
options options extend(defaultsoptions) : defaults;

  
this.data data;
  var 
filtered_data = [];
  for (var 
0data.length; ++i) {
    
filtered_data.push(data[i]);
  }

  var 
current_search = [];
  var 
current_page 0;

  
this.setData = function(data){
    
this.data data;
    
this.getPage(0current_searchtrue);
  }

  var 
getRow options.getRow.bind(this);

  
this.getPage = function(pagesearchforce) {
    if (
search === undefinedsearch current_search;
    if (
current_page == page && isEqual(searchcurrent_search) && !force) return;
    
current_page page;
    if (
options.onStartoptions.onStart();
    if (!
isEqual(searchcurrent_search)) {
      
current_search cloneAr(search);
      
filtered_data = [];
      for (var 
0this.data.length; ++i) {
        if(!
search || options.filter(searchthis.data[i]))filtered_data.push(this.data[i]);
      }
    }
    if (!
filtered_data.length) {
      
ge(container).innerHTML options.emptyRow(search);
      
options.setPages(00'top');
      
options.setPages(00'bottom');
      return;
    }
    var 
html = [];
    for (var 
page options.perPageMath.min(filtered_data.length, (page 1) * options.perPage); ++i) {
      var 
row filtered_data[i];
      
html.push(getRow(rowcurrent_search));
    }
    var 
getSize(ge(container))[1];
    
ge(container).innerHTML html.join('');
    
setStyle(ge(container), {height:(page) ? 'auto'});
    if (
options.onShow) {
      for (var 
page options.perPageMath.min(filtered_data.length, (page 1) * options.perPage); ++i) {
        var 
row filtered_data[i];
        
options.onShow(rowi);
      }
    }
    var 
pages Math.ceil(filtered_data.length options.perPage);
    
options.setPages(pagepages'top');
    
options.setPages(pagepages'bottom');
    if (
options.onEndoptions.onEnd();
  }

  
this.highlight = function(labelterm) {
    
term trim(term);
    if(!
term)return label;
    
label term.indexOf(' ') == -label.split(' ') : [label];
    var 
tmp '';
    var 
termRus parseLatin(term);

    if (
termRus != null) {
      
term term '|' termRus;
    }
    var 
re = new RegExp("(?![^&;]+;)(?!<[^<>]*)((\(*)(" term.replace('+''\+') + "))(?![^<>]*>)(?![^&;]+;)""gi");
    for (var 
i in label) {
      
tmp += (' ' '') + label[i].replace(re"$2<em>$3</em>");
    }
    return 
tmp;
  }
}

window.replaceChars = function(textnobr) {
  var 
res "";
  for (var 
0i<text.lengthi++) {
    var 
text.charCodeAt(i);
    switch(
c) {
      case 
0x26res += "&amp;"; break;
      case 
0x3Cres += "&lt;"; break;
      case 
0x3Eres += "&gt;"; break;
      case 
0x22res += "&quot;"; break;
      case 
0x0Dres += ""; break;
      case 
0x0Ares += nobr?"t":"<br>"; break;
      case 
0x21res += "&#33;"; break;
      case 
0x27res += "&#39;"; break;
      default:   
res += ((0x80 && 0xC0) || 0x500) ? "&#"+c+";" text.charAt(i); break;
    }
  }
  return 
res;
};

var 
AutoLoadList = function(containerdataoptions) {
  var 
isEqual = function(ab) {
    if (!
isArray(a) || !isArray(b)) return == b;
    return 
a.toString() == b.toString();
  }

  var 
isEmpty = function(a) {
    if (!
a) return true;
    for (var 
0a.length; ++i) {
      if(
a[i]) return false;
    }
    return 
true;
  }

  function 
cloneAr(a) {
    var 
= [];
    for (var 
0a.length; ++i) {
      
b[i] = a[i];
    }
    return 
b;
  }

  var 
defaults = {
    
getRow: function(row) { return ''; },
    
filter: function(searchrow) { return true; },
    
perPage30,
    
emptyRow: function(search) { return '<div>no rows</div>'; },
    
shift600
  
};
  
options options extend(defaultsoptions) : defaults;

  var 
filtered_data = [], current_search = [], offset 0;
  var 
self this;

  
this.setData = function(data) {
    
this.data data;
    
this.showMore(current_searchtrue);
  }

  
container ge(container);
  var 
getRow options.getRow.bind(this), id container.id;
  var 
showMoreBox ge(id+'_show_more'), showMoreLink ge(id+'_show_more_link');

  
this.data data;
  if (
data) {
    
filtered_data cloneAr(data);
  }

  
this.loaded = function(res) {
    if (
self.data res) {
      
filtered_data cloneAr(self.data);
    }
    if (
self.disabled) {
      return;
    }

    if (
self.data) {
      
self.showMore(self.loading[1] || nulltrueoptions.perPage 2);
    } else {
      
self.data false;
      
container.innerHTML options.emptyRow(self.loading[1]);
      
hide(showMoreBox);
    }
    
self.loading false;
  }

  
this.preload = function() {
    if (
self.data !== null || !options.url || self.loading) return;
    
self.loading = [false];
    
ajax.post(options.urloptions.query, {onDoneself.loaded});
  }

  
this.showMore = function(searchforcelistLen) {
    if (!
isVisible(container)) {
      return;
    }
    if(
options.onStartoptions.onStart();

    var 
refresh false;
    if (
self.data === null && options.url) {
      if (
self.loading) {
        
self.loading = [truesearch];
        return;
      }
      
self.loading = [truesearch];
      
ajax.post(options.urloptions.query, {onDoneself.loaded});
      return;
    }

    if (!
listLenlistLen options.perPage;
    if (
search == nullsearch current_search;

    if (
forcerefresh true;
    if (!
isEqual(searchcurrent_search)) {
      
current_search cloneAr(search);
      
filtered_data = [];
      var 
0;
      for (var 
0this.data.length; ++i) {
        if (!
search || options.filter(searchthis.data[i])) {
          
filtered_data[j] = this.data[i];
          
j++;
        }
      }
      
refresh true;
    }

    if (
refreshoffset 0;

    var 
fLen filtered_data.length;
    if (!
fLen) {
      
container.innerHTML options.emptyRow(search);
      
hide(showMoreBox);
      if(
options.onEndoptions.onEnd(search0);
      return;
    }

    var 
len Math.min(fLenoffset listLen), 0html = [], start refresh offset;
    for (var 
startlen; ++i) {
      
html[j] = getRow(filtered_data[i], current_search);
      
j++;
    }
    if (
refresh) {
      
debugLog('full'offset);
      
container.innerHTML html.join('');
    } else {
      
container.innerHTML += html.join('');
    }

    if (
offset listLen >= fLen) {
      
hide(showMoreBox);
    } else {
      
show(showMoreBox);
    }

    if(
options.onShow) {
      for (var 
0len; ++i) {
        
options.onShow(filtered_data[i], i);
      }
    }

    
offset += listLen;
    if(
options.onEndoptions.onEnd(searchfLen);
  };

  var 
scrollCheck = function() {
    if (
browser.mobile || cur.disableAutoMore || self.disabled) return;
    if (!
isVisible(showMoreBox) || !isVisible(showMoreLink) || !isVisible(container)) return;

    var 
docEl document.documentElement;
    var 
ch window.innerHeight || docEl.clientHeight || bodyNode.clientHeight;
    var 
st scrollGetY();

    if (
st ch options.shift showMoreLink.offsetTop) {
      
self.showMore();
    }
  };

  var 
scrollNode browser.msie6 pageNode window;

  var 
addScrollEvents = function() {
    
addEvent(scrollNode'scroll'scrollCheck);
    
addEvent(window'resize'scrollCheck);
  }
  
cur._back.hide.push(function() {
    
removeEvent(scrollNode'scroll'scrollCheck);
    
removeEvent(window'resize'scrollCheck);
  });
  
cur._back.show.push(addScrollEvents);
  
addScrollEvents();

  
this.highlight = function(labelterm) {
    
term trim(term);
    if(!
term) return label;
    
label term.indexOf(' ') == -label.split(' ') : [label];
    var 
tmp '';
    var 
termRus parseLatin(term);

    if (
termRus != null) {
      
term term '|' termRus;
    }
    var 
re = new RegExp("(?![^&;]+;)(?!<[^<>]*)((\(*)(" term.replace('+''\+') + "))(?![^<>]*>)(?![^&;]+;)""gi");
    for (var 
i in label) {
      
tmp += (' ' '') + label[i].replace(re"$2<em>$3</em>");
    }
    return 
tmp;
  };
}

try{
stManager.done('events.js');}catch(e){}
?>
Онлайн: 0
Реклама