Вход Регистрация
Файл: js/al/datepicker.js
Строк: 582
<?php
(function() {

var 
= {
  
mn: [],
  
mnOf: [],
  
mnOfSm: [],
  
days: ['mon''tue''wed''thu''fri''sat''sun']
};

var 
dateFormat getLang('datepicker_dateFormat');
if (
dateFormat == 'dateFormat'dateFormat '{day} {month} {year}';
var 
monthFormat getLang('datepicker_monthFormat');
if (
monthFormat == 'monthFormat'monthFormat '{month} {year}';

var 
larr getLang('larr');
if (
larr == 'larr'larr '&larr;';
var 
rarr getLang('rarr');
if (
rarr == 'rarr'rarr '&rarr;';

var 
modes = ['d''w''m'];

for (var 
113i++) {
  
l.mn.push(getLang('Month' i));
  
l.mnOf.push(getLang('Month' '_of'));
  
l.mnOfSm.push(getLang('month' '_of'));
}
for (var 
07i++) {
  var 
wd getLang('events_' l.days[i]);
  if (
wd.substr(06) != 'events'l.days[i] = wd;
}

var 
dim = [31031303130313130313031];

if (!
window.cals) {
  
window.cals = {
    list: {},
    
getMonth: function(guidmymonthsel) {
      if (
cals.list[guid]) cals.list[guid].getMonth(myfalsemonthsel);
      return 
false;
    },
    
getDay: function(guiddmy) {
      if (
cals.list[guid]) cals.list[guid].getDay(dmy);
      return 
false;
    }
  };
}

window.Calendar = function(params) {
  var 
place params.container;
  var 
rnd Math.round(Math.random() * 1000000);
  if (!
place) return;

  var 
guid _ui.reg(this);
  
cals.list[guid] = this;

  
place.innerHTML '<div></div>';
  
place place.firstChild;
  var 
mode = (modes[params.mode] || params.mode || 'd').toString().replace(/(this|next|prev)/, '');
  var 
hideNextMonth params.hideNextMonth && true;

  var 
parseDay this.parseDay = function(day) {
    
day day.toString();
    return {
      
yparseInt(day.substr(04), 10),
      
mparseInt(day.substr(42), 10),
      
dparseInt(day.substr(62), 10)
    };
  }

  var 
day params.day || { d: -1m: -1y: -};
  if (!
day.d) {
    
day parseDay(day);
  }
  var 
_t thisaddRows params.addRows || ''addRowsM params.addRowsM || addRows;

  
this.setDay = function(dmy) {
    
day ? { ddmmy} : parseDay(d);
    
_t.getMonth(day.mday.y);
  };

  
this.setMode = function(m) {
    
mode = (modes[m] || || 'd').replace(/(this|next|prev)/, '');
    
_t.getMonth(day.mday.ytrue);
  };

  var 
getChild = function(elinds) {
    for (var 
0inds.lengthi++) {
      var 
el el.childNodes[inds[i]];
      if (!
el) return null;
    }
    return 
el;
  };

  
this.getDay params.getDay || function(dmy) {};

  
this.getMonth = function(mynoheightmonthsel) {
    var 
mn l.mn;
    var 
oD = new Date(y11);
    
oD.od oD.getDay();
    if (
oD.od == 0) {
      
oD.od 7;
    }

    var 
disabled = (mode == '-1');

    var 
dontDoLine false;
    var 
leftStyle '';
    var 
todayDate = !disabled ? new Date() : new Date(300011);
    
todayDate = new Date(todayDate.getFullYear(), todayDate.getMonth(), todayDate.getDate());

    var 
d_y oD.getFullYear();
    
dim[1] = (((d_y 100 != 0) && (d_y == 0)) || (d_y 400 == 0)) ? 29 28;
    var 
= [], t2 = [];
    switch (
mode) {
    case 
'm':
      var 
selDay = (== day.y) ? day.0;
      
nextYear 1;
      
lastYear 1;
      
t.push('<table class="cal_table" cols="7" cellpadding="0" border="0" cellspacing="0"><tbody><tr>');
      
t.push('<td class="month_arr"><a class="month_arrow" onclick="return cals.getMonth('+guid+',1,'+lastYear+');">' larr '</a></td>');
      
t.push('<td colspan="5" align="center" class="month">' '</td>');
      
t.push('<td class="month_arr"><a class="month_arrow" onclick="return cals.getMonth('+guid+',1,'+nextYear+');">' rarr '</a></td></tr><tr>');
      
t.push('</tr></tbody></table><table class="cal_table" cols="2" cellpadding="0" border="0" cellspacing="0"><tbody><tr>');
      for (var 
1<= 12i++) {
        
leftStyle "";
        if (
== 1) {
          if (
1t.push('</tr><tr>');
          
leftStyle ' day_left';
        }
        
clDay = (== selDay) ? 'day sel' 'day';
        
curDate = new Date(y11);
        if (
!= selDay && curDate todayDateclDay += " past_day";
        else if (
curDate.getTime() == todayDate.getTime()) clDay += " today";
        
t.push('<td class="' clDay leftStyle '" style="width:50%" id="day' '_' rnd '" onclick="return cals.getDay('+guid+', 1, '+i+', '+y+');" onmouseover="addClass(this, 'hover')"  onmouseout="removeClass(this, 'hover')">' mn[1] + '</td>');
      }

      
t.push('</tr></tbody></table>');
      if (!
noheightplace.style.height place.offsetHeight "px";

      
place.innerHTML t.join('');
      break;

    default:
      var 
selDay = (== day.&& == day.m) ? day.0;
      var 
tbl '<table class="%cls%" cols="%cols%" cellpadding="0" border="0" cellspacing="0"><tbody>%rows%</tbody></table>';
      if (
== 12) {
        
nextMonth 1;
        
nextYear 1;
      } else {
        
nextMonth 1;
        
nextYear y;
      }

      if (
== 1) {
        
lastMonth 12;
        
lastYear 1;
      } else {
        
lastMonth 1;
        
lastYear y;
      }
      var 
monthYear monthFormat.replace('{month}'mn[1]).replace('{year}'y);
      var 
calClass 'cal_table' + (disabled ' disabled' '') + (monthsel ' unshown' '');
      var 
hoverEl mode == 'w' 'this.parentNode' 'this';
      
t.push('<tr><td colspan="7">');
      
t.push(rs(tbl, {cls'cal_table_head'cols'3'rowsdisabled '<tr><td class="month_arr"><span class="arr left"></span></td><td align="center" class="month">' monthYear '</td><td class="month_arr"><span class="arr right"></span></td></tr><tr></tr>' '<td class="month_arr"><a class="arr left" onclick="return cals.getMonth('+guid+','+lastMonth+','+lastYear+');"></a></td><td align="center" class="month"><a class="cal_month_sel" onclick="return cals.getMonth('+guid+','+m+','+y+',1);">' monthYear '</a></td><td class="month_arr"><a class="arr right" onclick="return cals.getMonth('+guid+','+nextMonth+','+nextYear+');"></a></td></tr>'}));
      
t.push('</td></tr>');

      for (var 
07s++) {
        
t.push('<td class="daysofweek">' l.days[s] + '</td>');
      }
      
t.push('</tr><tr>');

      var 
dayPos = [];

      for (var 
1<= 42i++) {
        var 
leftStyle = (== 1) ? ' day_left' '';
        var 
= ((oD.od >= 0) && (oD.od dim[1])) ? oD.od 0;
        var 
curDate = new Date(y1oD.od 1);
        var 
x1 x;
        var 
lim 1;
        if (
mode == 'w') {
          var 
x1 oD.od 2;
          if (
== 0x1 -= 7;
          if (
selDay) {
            var 
lim - (selDay oD.od 1) % 7;
            if (
lim == 8lim 1;
          }
        }
        if (
>= selDay && selDay lim) {
          
clDay 'day sel' leftStyle;
        } else {
          
clDay 'day' leftStyle;
        }
        if (
curDate todayDateclDay += ' past_day';

        if (
curDate.getTime() == todayDate.getTime()) clDay += ' today';

        if (
0) {
          
dayPos[i] = x1;
          
t.push('<td id="day' '_' rnd '" class="' clDay '" onclick="return cals.getDay('+guid+', '+x1+', '+m+', '+y+');" onmouseover="addClass('+hoverEl+', 'hover')"  onmouseout="removeClass('+hoverEl+', 'hover')">' '</td>');
        } else {
          if (
!= 36) {
            if (!
dontDoLine) {
              if (
mode == "w"dayPos[i] = x1;
              
date = (&& !hideNextMonth) ? curDate.getDate() : "&nbsp";
              
t.push('<td class="day no_month_day' leftStyle '">' date '</td>');
            }
          } else {
            
dontDoLine true;
          }
        }
        if ((
== 0) && (36)) {
          
t.push('</tr><tr>');
        }
      }
      
t.push('</tr>' addRows);
      
t2.push(rs(tbl, {clscalClasscols'7'rowst.join('')}));
      
= [];

      
todayDate = new Date(todayDate.getFullYear(), todayDate.getMonth(), 1);

      var 
selDay = (== day.y) ? day.0;
      var 
calClass 'cal_table' + (disabled ' disabled' '') + (monthsel '' ' unshown');

      
t.push('<tr><td colspan="2">');
      
t.push(rs(tbl, {cls'cal_table_head'cols'3'rowsdisabled '<tr><td class="month_arr"><span class="arr left"></span></td><td align="center" class="month">' '</td><td class="month_arr"><span class="arr right"></span></td></tr><tr></tr>' '<td class="month_arr"><a class="arr left" onclick="return cals.getMonth('+guid+','+m+','+(y-1)+',1);"></a></td><td align="center" class="month"><a class="cal_month_sel" onclick="return cals.getMonth('+guid+','+m+','+y+');">' '</a></td><td class="month_arr"><a class="arr right" onclick="return cals.getMonth('+guid+','+m+','+(y+1)+',1);"></a></td></tr>'}));
      
t.push('</td></tr><tr>');
      for (var 
1<= 12i++) {
        
leftStyle '';
        if (
== 1) {
          if (
1t.push('</tr><tr>');
          
leftStyle ' day_left';
        }
        
clDay = (== selDay) ? 'day sel' 'day';
        
curDate = new Date(y11);
        if (
curDate todayDateclDay += ' past_day';
        else if (
curDate.getTime() == todayDate.getTime()) clDay += ' today';
        
t.push('<td class="' clDay leftStyle '" style="width:50%" id="day' '_' rnd '" onclick="return cals.getMonth('+guid+', '+i+', '+y+');" onmouseover="addClass(this, 'hover')"  onmouseout="removeClass(this, 'hover')">' mn[1] + '</td>');
      }

      
t.push('</tr>' addRowsM);

      
t2.push(rs(tbl, {clscalClasscols'2'rowst.join('')}));

      
val(placet2.join(''));
      if (
browser.opera && !browser.mobile) {
        
animate(place, {opacity0.99}, 20animate.pbind(place, {opacity1}, 20)); // fuck opera!
      
}
      break;
    }
  }

  
this.getMonth(day.mday.y);
};

window.Datepicker = function(eloptions) {

  
el ge(el);
  if (!
el) return;

  var 
calDivcalBoxcalFramedates = {},
      
lockHide false,
      
_t this,
      
wisShown false,
      
hour 0,
      
min 0;
  var 
id el.id,
      
inputId id "_date_input",
      
el.name || id,
      
el.parentNode,
      
calBox id '_cal_box',
      
calDiv id '_cal_div',
      
calFrame id '_cal_frame';

  var 
defaults = {
    
mode'd',
    
resfmt'ts'// could be 'plain'
    
onUpdate: function(dm) {},
    
width145
  
};

  
options extend({}, defaultsoptions);

  var 
mode options.mode;
  var 
onUpdate options.onUpdate;
  var 
options.width;
  var 
fmt options.resfmt;
  var 
addRows options.addRows || ''addRowsM options.addRowsM || addRows;

  var 
onClick = function(e) {
    if (
mode == 'h') return false;
    if (
isShown) {
      
_t.hide();
    } else {
      
showCalendar();
    }
    
ge(inputId).blur();
    return 
false;
  };

  var 
showCalendar = function() {
    if (
isShown) return;
    
isShown true;

    
_ui.sel(_t.guid);
    
show(calBox);
    new 
Calendar({
      
hideNextMonthtrue,
      
containerge(calDiv),
      
daydates,
      
modemode,
      
addRowsaddRows,
      
addRowsMaddRowsM,
      
getDay: function(dmy) {
        
updateDate({
          
'd'd,
          
'm'm,
          
'y'y
        
}, mode);
      }
    });
    var 
getSize(ge(calDiv));
    
setStyle(ge(calFrame), {widths[0], heights[1]});
    
ge(inputId).focus();
  };

  var 
updateDate = function(datemodeinit) {
    if (!
init && options.noPast) {
      if (new 
Date(date.ydate.1date.d2359) < new Date()) {
        return;
      }
    }
    
dates date;
    var 
controlElem geByClass1('datepicker_control'wrap);
    if (
mode == 'h') {
      
addClass(controlElem'disabled');
    } else {
      
removeClass(controlElem'disabled');
      if (
mode == 'm') {
        
ge(inputId).value l.mn[date.1] || '';
      } else {
        
ge(inputId).value dateFormat.replace('{day}'date.d).replace('{month}'winToUtf(l.mnOf[date.1])).replace('{year}'date.y);
      }
    }
    
_t.hide();
    if (
fmt == 'plain') {
      
ge(id).value date.'.' date.'.' date.+ (options.time ? (' ' hour ':' min) : '');
    } else if (
fmt == 'ts') {
      
ge(id).value Math.floor(new Date(date.ydate.1date.dhourmin).getTime() / 1000) - ((new Date()).getTimezoneOffset() + 240) * 60 intval(vk.dt);
    }
    if (!
initonUpdate(datemode);
  };

  
this.hide = function() {
    if (!
isShown) return;
    
isShown false;

    
_ui.sel(false);
    
hide(calBox);
  };
  
this.setMode = function(m) {
    
mode m;
    
updateDate(datesmode);
  };
  
this.setDate = function(yearmonthday) {
    if (!
year && !month && !day) {
      var 
= new Date();
      if (
mode != 'm'dates.d.getDate();
      
dates.d.getMonth() + 1;
      
dates.d.getFullYear();
    } else {
      if (
mode != 'm'dates.day;
      
dates.month;
      
dates.year;
    }
    
updateDate(datesmode);
  }

  var 
0m;
  if (
options.day || options.month || options.year) {
    if (
mode != 'm'dates.options.day;
    
dates.options.month;
    
dates.options.year;
    if (
options.time) {
      
hour options.hour || 0;
      
min options.min || 0;
    }
  } else if (
= (el.value || '').match(/(d+).(d+)(?:.(d+))?(?:s+(d+):(d+))?/)) {
    if (
mode != 'm'dates.intval(m[3].length m[1] : 0);
    
dates.intval(m[3].length m[2] : m[1]);
    
dates.intval(m[3].length m[3] : m[2]);
    if (
options.time) {
      
hour m[4] || 0;
      
min m[5] || 0;
    }
  } else if (
parseInt(el.value)) {
    var 
ts parseInt(el.value) + ((new Date()).getTimezoneOffset() + 240) * 60 intval(vk.dt);
    
= new Date(ts 1000);
  } else {
    
= new Date();
  }
  if (
d) {
    
dates.d.getDate();
    
dates.d.getMonth() + 1;
    
dates.d.getFullYear();
    
hour d.getHours();
    
min d.getMinutes();
  }

  var 
html '<input type="hidden" name="' '" id="' id '"/>' '<div class="datepicker_control"><input readonly="1" style="width:' + (25) + 'px;" type="text" class="datepicker_text" id="' inputId '"/></div>' '<div id="' calBox '" class="cal_box"><iframe id="' calFrame '" class="cal_frame"></iframe><div id="' calDiv '" class="cal_div"></div></div>';
  var 
wrap ce('div', {
    
idid "_datepicker_container",
    
className"datepicker_container",
    
innerHTMLhtml
  
}, {
    
widthw
  
});
  
p.replaceChild(wrapel);
  
addEvent(geByClass1('datepicker_control'wrap), 'mousedown'onClick);
  
updateDate(datesmodetrue);

  
_t.guid _ui.reg({
    
containerwrap,
    
onEvent: function(e) {
      if (
e.type == 'mousedown') {
        var 
outside true,
            
e.target;
        while (
&& != t.parentNode) {
          if (
== wrap) {
            
outside false;
            break;
          }
          
t.parentNode;
        }
        if (
outside) {
          
_t.hide();
        }
      }
    },
    
_blur: function() {
      
_t.hide();
    }
  });

  if (
options.time) {
    var 
time ge(options.time);
    new 
Timepicker(time, {
      
onUpdate: function(hm) {
        
hour h;
        
min m;
        
updateDate(datesmode);
      },
      
resfmtfmt,
      
hourhour,
      
minmin
    
});
  }

  if (
browser.mozilla) {
    
hide(calFrame);
  }
};

window.Timepicker = function(eloptions) {
  
el ge(el);
  if (!
el) return;
  var 
id el.id,
      
el.name || '',
      
el.value || '';

  var 
defaults = {
    
onUpdate: function(hm) {},
    
time0,
    
hour0,
    
min0,
    
resfmt'ts'// could be 'plain'
    
format'{hour}<div class="fl_l" style="padding:5px 3px 0;"> : </div>{min}' //TEMP
  
};

  var 
extend({}, defaultsoptions);

  var 
el.parentNode;
  if (
vo.time v;
  if (
o.time) {
    
o.hour Math.floor(o.time 3600);
    
o.min Math.floor((o.time o.hour 3600) / 60);
  }
  var 
o.hour || 0;
  var 
o.min || 0;
  var 
fmt o.resfmt;
  
5;

  var 
html '<input type="hidden" name="' '" id="' id '" value="' '"/>' o.format.replace('{hour}''<div class="fl_l"><input type="hidden" id="' id '_hour_input" value="' '"/></div>').replace('{min}''<div class="fl_l"><input type="hidden" id="' id '_min_input" value="' '"/></div>') + '<div class="results_container"><div class="result_list" style="display:none;"></div><div class="result_list_shadow"><div class="shadow1"></div><div class="shadow2"></div></div></div>';
  var 
wrap ce('div', {
    
idid "_timepicker_container",
    
className'timepicker_container',
    
innerHTMLhtml
  
});
  
p.replaceChild(wrapel);

  var 
onChange = function() {
    var 
hour hourDD.val(),
        
min minDD.val();
    if (
fmt == 'plain') {
      
ge(id).value hour ':' min;
    } else if (
fmt == 'ts') {
      
ge(id).value hour 3600 min 60;
    }
    
o.onUpdate(hourmin);
  }

  var 
hours = [],
      
mins = [];
  for (var 
024i++) {
    
hours.push([ii]);
  }
  for (var 
060+= 5) {
    
mins.push([i10 '0' i.toString() : i]);
  }

  var 
hourDD = new Dropdown(ge(id '_hour_input'), hours, {
    
width47,
    
multiselectfalse,
    
onChangeonChange
  
});
  var 
minDD = new Dropdown(ge(id '_min_input'), mins, {
    
width47,
    
multiselectfalse,
    
onChangeonChange
  
});
};

window.Daypicker = function(eloptions) {
  
el ge(el);
  if (!
el) return;
  var 
id el.id,
      
el.name || '',
      
el.value || '';

  var 
defaults = {
    
onUpdate: function(dmy) {},
    
date0,
    
year0,
    
month0,
    
day0,
    
format'{day}<div class="fl_l" style="padding:0 3px;">&nbsp;</div>{month}<div class="fl_l" style="padding:0 3px;">&nbsp;</div>{year}',
    
width0
  
};

  var 
extend({}, defaultsoptions);

  var 
el.parentNode;
  if (
vo.date v;
  if (
o.date) {
    if (
o.date 30000000) {
      
o.year Math.floor(o.date 10000);
      
o.month Math.floor((o.date o.year 10000) / 100);
      
o.day o.date o.year 10000 o.month 100;
    } else {
      var 
= new Date(o.date 1000);
      
o.year d.getFullYear();
      
o.month d.getMonth();
      
o.day d.getDate();
    }
  }

  var 
html '<div class="fl_l"><input type="hidden" name="' '" id="' id '" value="' '"/>' o.format.replace('{year}''<div class="fl_l"><input type="hidden" id="' id '_year_input" value="' o.year '"/></div>').replace('{month}''<div class="fl_l"><input type="hidden" id="' id '_month_input" value="' o.month '"/></div>').replace('{day}''<div class="fl_l"><input type="hidden" id="' id '_day_input" value="' o.day '"/></div>') + '</div>';
  var 
wrap ce('div', {
    
idid "_daypicker_container",
    
className'daypicker_container clear_fix',
    
innerHTMLhtml
  
});
  
p.replaceChild(wrapel);

  var 
daysInMonth = function(monthyear) {
    var 
days = (new Date(year year 2004month0)).getDate(),
        
res = [[0getLang('global_day_label')]];
    for (var 
1<= daysi++) {
      
res.push([ii]);
    }
    return 
res;
  }

  var 
onChange = function() {
    var 
year parseInt(yearDD.val()),
        
month parseInt(monthDD.val()),
        
day parseInt(dayDD.val());
    
ge(id).value year 10000 month 100 day;
    
dayDD.setData(daysInMonth(monthyear));
    
o.onUpdate(yearmonthday);
  }
  var 
= new Date(),
      
years = [[0getLang('global_year_label')]],
      
months = [[0getLang('global_month_label')]];
  for (var 
d.getFullYear(); >= (o.startYear || 1800); i--) {
    
years.push([ii]);
  }
  for (var 
012i++) {
    
months.push([1l.mnOf[i]]);
  }

  var 
dayDD = new Dropdown(ge(id '_day_input'), daysInMonth(o.montho.year), {
    
width58,
    
onChangeonChange
  
});
  var 
monthDD = new Dropdown(ge(id '_month_input'), months, {
    
width95,
    
onChangeonChange
  
});
  var 
yearDD = new Dropdown(ge(id '_year_input'), years, {
    
width60,
    
onChangeonChange
  
});
  if (
o.width) {
    var 
getSize(wrap.firstChild)[0],
        
o.width w,
        
w1 getSize(monthDD.container)[0];
    
setStyle(monthDD.container, {
      
widthw1 d
    
});
  }
}

})();

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