• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php+js的日历控件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
<html>
<head>
<title>js calendar</title>
<script language="javascript">
/*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
 * -----------------------------------------------------------
 *
 * The DHTML Calendar, version 1.0 "It is happening again"
 *
 * Details and latest version at:
 * www.dynarch.com/projects/calendar
 *
 * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
 *
 * This script is distributed under the GNU Lesser General Public License.
 * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
 
*/

// $Id: calendar.js,v 1.51 2005/03/07 16:44:31 mishoo Exp $

/** The Calendar object constructor. */
Calendar 
= function (firstDayOfWeek, dateStr, onSelected, onClose) {
 
// member variables
 this.activeDiv = null;
 this
.currentDateEl = null;
 this
.getDateStatus = null;
 this
.getDateToolTip = null;
 this
.getDateText = null;
 this
.timeout = null;
 this
.onSelected = onSelected || null;
 this
.onClose = onClose || null;
 this
.dragging = false;
 this
.hidden = false;
 this
.minYear = 1970;
 this
.maxYear = 2050;
 this
.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
 this
.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
 this
.isPopup = true;
 this
.weekNumbers = true;
 this
.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc.
 this.showsOtherMonths = false;
 this
.dateStr = dateStr;
 this
.ar_days = null;
 this
.showsTime = false;
 this
.time24 = true;
 this
.yearStep = 2;
 this
.hiliteToday = true;
 this
.multiple = null;
 
// HTML elements
 this.table = null;
 this
.element = null;
 this
.tbody = null;
 this
.firstdayname = null;
 
// Combo boxes
 this.monthsCombo = null;
 this
.yearsCombo = null;
 this
.hilitedMonth = null;
 this
.activeMonth = null;
 this
.hilitedYear = null;
 this
.activeYear = null;
 
// Information
 this.dateClicked = false;

 
// one-time initializations
 if (typeof Calendar._SDN == "undefined") {
  
// table of short day names
  if (typeof Calendar._SDN_len == "undefined")
   Calendar
._SDN_len = 3;
  
var ar = new Array();
  
for (var i = 8; i > 0;) {
   ar[
--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
  }
  Calendar
._SDN = ar;
  
// table of short month names
  if (typeof Calendar._SMN_len == "undefined")
   Calendar
._SMN_len = 3;
  ar 
= new Array();
  
for (var i = 12; i > 0;) {
   ar[
--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
  }
  Calendar
._SMN = ar;
 }
};

// ** constants

/// "static", needed for event handlers.
Calendar._C = null;

/// detect a special case of "web browser"
Calendar.is_ie = ( /msie/i.test(navigator.userAgent) &&
     
!/opera/i.test(navigator.userAgent) );

Calendar
.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) );

/// detect Opera browser
Calendar.is_opera = /opera/i.test(navigator.userAgent);

/// detect KHTML-based browsers
Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);

// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate
//        library, at some point.


Calendar
.getAbsolutePos = function(el) {
 
var SL = 0, ST = 0;
 
var is_div = /^div$/i.test(el.tagName);
 
if (is_div && el.scrollLeft)
  SL 
= el.scrollLeft;
 
if (is_div && el.scrollTop)
  ST 
= el.scrollTop;
 
var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
 
if (el.offsetParent) {
  
var tmp = this.getAbsolutePos(el.offsetParent);
  r
.+= tmp.x;
  r
.+= tmp.y;
 }
 
return r;
};

Calendar
.isRelated = function (el, evt) {
 
var related = evt.relatedTarget;
 
if (!related) {
  
var type = evt.type;
  
if (type == "mouseover") {
   related 
= evt.fromElement;
  } 
else if (type == "mouseout") {
   related 
= evt.toElement;
  }
 }
 
while (related) {
  
if (related == el) {
   
return true;
  }
  related 
= related.parentNode;
 }
 
return false;
};

Calendar
.removeClass = function(el, className) {
 
if (!(el && el.className)) {
  
return;
 }
 
var cls = el.className.split(" ");
 
var ar = new Array();
 
for (var i = cls.length; i > 0;) {
  
if (cls[--i] != className) {
   ar[ar
.length] = cls[i];
  }
 }
 el
.className = ar.join(" ");
};

Calendar
.addClass = function(el, className) {
 Calendar
.removeClass(el, className);
 el
.className += " " + className;
};

// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately.
Calendar.getElement = function(ev) {
 
var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
 
while (f.nodeType != 1 || /^div$/i.test(f.tagName))
  f 
= f.parentNode;
 
return f;
};

Calendar
.getTargetElement = function(ev) {
 
var f = Calendar.is_ie ? window.event.srcElement : ev.target;
 
while (f.nodeType != 1)
  f 
= f.parentNode;
 
return f;
};

Calendar
.stopEvent = function(ev) {
 ev 
|| (ev = window.event);
 
if (Calendar.is_ie) {
  ev
.cancelBubble = true;
  ev
.returnValue = false;
 } 
else {
  ev
.preventDefault();
  ev
.stopPropagation();
 }
 
return false;
};

Calendar
.addEvent = function(el, evname, func) {
 
if (el.attachEvent) { // IE
  el.attachEvent("on" + evname, func);
 } 
else if (el.addEventListener) { // Gecko / W3C
  el.addEventListener(evname, func, true);
 } 
else {
  el[
"on" + evname] = func;
 }
};

Calendar
.removeEvent = function(el, evname, func) {
 
if (el.detachEvent) { // IE
  el.detachEvent("on" + evname, func);
 } 
else if (el.removeEventListener) { // Gecko / W3C
  el.removeEventListener(evname, func, true);
 } 
else {
  el[
"on" + evname] = null;
 }
};

Calendar
.createElement = function(type, parent) {
 
var el = null;
 
if (document.createElementNS) {
  
// use the XHTML namespace; IE won't normally get here unless
  // _they_ "fix" the DOM2 implementation.

  el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
 } 
else {
  el 
= document.createElement(type);
 }
 
if (typeof parent != "undefined") {
  parent
.appendChild(el);
 }
 
return el;
};

// END: UTILITY FUNCTIONS

// BEGIN: CALENDAR STATIC FUNCTIONS


/** Internal -- adds a set of events to make some element behave like a button. */
Calendar
._add_evs = function(el) {
 with (Calendar) {
  addEvent(el
, "mouseover", dayMouseOver);
  addEvent(el
, "mousedown", dayMouseDown);
  addEvent(el
, "mouseout", dayMouseOut);
  
if (is_ie) {
   addEvent(el
, "dblclick", dayMouseDblClick);
   el
.setAttribute("unselectable", true);
  }
 }
};

Calendar
.findMonth = function(el) {
 
if (typeof el.month != "undefined") {
  
return el;
 } 
else if (typeof el.parentNode.month != "undefined") {
  
return el.parentNode;
 }
 
return null;
};

Calendar
.findYear = function(el) {
 
if (typeof el.year != "undefined") {
  
return el;
 } 
else if (typeof el.parentNode.year != "undefined") {
  
return el.parentNode;
 }
 
return null;
};

Calendar
.showMonthsCombo = function () {
 
var cal = Calendar._C;
 
if (!cal) {
  
return false;
 }
 
var cal = cal;
 
var cd = cal.activeDiv;
 
var mc = cal.monthsCombo;
 
if (cal.hilitedMonth) {
  Calendar
.removeClass(cal.hilitedMonth,

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP输出毫秒时间戳发布时间:2022-07-10
下一篇:
七牛php-sdk使用-在线打包发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap