
/* calendar.js */

/* 1    */ /*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
/* 2    *|  * -----------------------------------------------------------
/* 3    *|  *
/* 4    *|  * The DHTML Calendar, version 1.0 "It is happening again"
/* 5    *|  *
/* 6    *|  * Details and latest version at:
/* 7    *|  * www.dynarch.com/projects/calendar
/* 8    *|  *
/* 9    *|  * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
/* 10   *|  *
/* 11   *|  * This script is distributed under the GNU Lesser General Public License.
/* 12   *|  * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
/* 13   *|  */
/* 14   */ 
/* 15   */ // $Id: calendar.js,v 1.51 2005/03/07 16:44:31 mishoo Exp $
/* 16   */ 
/* 17   */ /** The Calendar object constructor. */
/* 18   */ Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) {
/* 19   */ 	// member variables
/* 20   */ 	this.activeDiv = null;
/* 21   */ 	this.currentDateEl = null;
/* 22   */ 	this.getDateStatus = null;
/* 23   */ 	this.getDateToolTip = null;
/* 24   */ 	this.getDateText = null;
/* 25   */ 	this.timeout = null;
/* 26   */ 	this.onSelected = onSelected || null;
/* 27   */ 	this.onClose = onClose || null;
/* 28   */ 	this.dragging = false;
/* 29   */ 	this.hidden = false;
/* 30   */ 	this.minYear = 1970;
/* 31   */ 	this.maxYear = 2050;
/* 32   */ 	this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
/* 33   */ 	this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
/* 34   */ 	this.isPopup = true;
/* 35   */ 	this.weekNumbers = true;
/* 36   */ 	this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc.
/* 37   */ 	this.showsOtherMonths = false;
/* 38   */ 	this.dateStr = dateStr;
/* 39   */ 	this.ar_days = null;
/* 40   */ 	this.showsTime = false;
/* 41   */ 	this.time24 = true;
/* 42   */ 	this.yearStep = 2;
/* 43   */ 	this.hiliteToday = true;
/* 44   */ 	this.multiple = null;
/* 45   */ 	// HTML elements
/* 46   */ 	this.table = null;
/* 47   */ 	this.element = null;
/* 48   */ 	this.tbody = null;
/* 49   */ 	this.firstdayname = null;
/* 50   */ 	// Combo boxes

/* calendar.js */

/* 51   */ 	this.monthsCombo = null;
/* 52   */ 	this.yearsCombo = null;
/* 53   */ 	this.hilitedMonth = null;
/* 54   */ 	this.activeMonth = null;
/* 55   */ 	this.hilitedYear = null;
/* 56   */ 	this.activeYear = null;
/* 57   */ 	// Information
/* 58   */ 	this.dateClicked = false;
/* 59   */ 
/* 60   */ 	// one-time initializations
/* 61   */ 	if (typeof Calendar._SDN == "undefined") {
/* 62   */ 		// table of short day names
/* 63   */ 		if (typeof Calendar._SDN_len == "undefined")
/* 64   */ 			Calendar._SDN_len = 3;
/* 65   */ 		var ar = new Array();
/* 66   */ 		for (var i = 8; i > 0;) {
/* 67   */ 			ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
/* 68   */ 		}
/* 69   */ 		Calendar._SDN = ar;
/* 70   */ 		// table of short month names
/* 71   */ 		if (typeof Calendar._SMN_len == "undefined")
/* 72   */ 			Calendar._SMN_len = 3;
/* 73   */ 		ar = new Array();
/* 74   */ 		for (var i = 12; i > 0;) {
/* 75   */ 			ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
/* 76   */ 		}
/* 77   */ 		Calendar._SMN = ar;
/* 78   */ 	}
/* 79   */ };
/* 80   */ 
/* 81   */ // ** constants
/* 82   */ 
/* 83   */ /// "static", needed for event handlers.
/* 84   */ Calendar._C = null;
/* 85   */ 
/* 86   */ /// detect a special case of "web browser"
/* 87   */ Calendar.is_ie = ( /msie/i.test(navigator.userAgent) &&
/* 88   */ 		   !/opera/i.test(navigator.userAgent) );
/* 89   */ 
/* 90   */ Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) );
/* 91   */ 
/* 92   */ /// detect Opera browser
/* 93   */ Calendar.is_opera = /opera/i.test(navigator.userAgent);
/* 94   */ 
/* 95   */ /// detect KHTML-based browsers
/* 96   */ Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);
/* 97   */ 
/* 98   */ // BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate
/* 99   */ //        library, at some point.
/* 100  */ 

/* calendar.js */

/* 101  */ Calendar.getAbsolutePos = function(el) {
/* 102  */ 	var SL = 0, ST = 0;
/* 103  */ 	var is_div = /^div$/i.test(el.tagName);
/* 104  */ 	if (is_div && el.scrollLeft)
/* 105  */ 		SL = el.scrollLeft;
/* 106  */ 	if (is_div && el.scrollTop)
/* 107  */ 		ST = el.scrollTop;
/* 108  */ 	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
/* 109  */ 	if (el.offsetParent) {
/* 110  */ 		var tmp = this.getAbsolutePos(el.offsetParent);
/* 111  */ 		r.x += tmp.x;
/* 112  */ 		r.y += tmp.y;
/* 113  */ 	}
/* 114  */ 	return r;
/* 115  */ };
/* 116  */ 
/* 117  */ Calendar.isRelated = function (el, evt) {
/* 118  */ 	var related = evt.relatedTarget;
/* 119  */ 	if (!related) {
/* 120  */ 		var type = evt.type;
/* 121  */ 		if (type == "mouseover") {
/* 122  */ 			related = evt.fromElement;
/* 123  */ 		} else if (type == "mouseout") {
/* 124  */ 			related = evt.toElement;
/* 125  */ 		}
/* 126  */ 	}
/* 127  */ 	while (related) {
/* 128  */ 		if (related == el) {
/* 129  */ 			return true;
/* 130  */ 		}
/* 131  */ 		related = related.parentNode;
/* 132  */ 	}
/* 133  */ 	return false;
/* 134  */ };
/* 135  */ 
/* 136  */ Calendar.removeClass = function(el, className) {
/* 137  */ 	if (!(el && el.className)) {
/* 138  */ 		return;
/* 139  */ 	}
/* 140  */ 	var cls = el.className.split(" ");
/* 141  */ 	var ar = new Array();
/* 142  */ 	for (var i = cls.length; i > 0;) {
/* 143  */ 		if (cls[--i] != className) {
/* 144  */ 			ar[ar.length] = cls[i];
/* 145  */ 		}
/* 146  */ 	}
/* 147  */ 	el.className = ar.join(" ");
/* 148  */ };
/* 149  */ 
/* 150  */ Calendar.addClass = function(el, className) {

/* calendar.js */

/* 151  */ 	Calendar.removeClass(el, className);
/* 152  */ 	el.className += " " + className;
/* 153  */ };
/* 154  */ 
/* 155  */ // FIXME: the following 2 functions totally suck, are useless and should be replaced immediately.
/* 156  */ Calendar.getElement = function(ev) {
/* 157  */ 	var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
/* 158  */ 	while (f.nodeType != 1 || /^div$/i.test(f.tagName))
/* 159  */ 		f = f.parentNode;
/* 160  */ 	return f;
/* 161  */ };
/* 162  */ 
/* 163  */ Calendar.getTargetElement = function(ev) {
/* 164  */ 	var f = Calendar.is_ie ? window.event.srcElement : ev.target;
/* 165  */ 	while (f.nodeType != 1)
/* 166  */ 		f = f.parentNode;
/* 167  */ 	return f;
/* 168  */ };
/* 169  */ 
/* 170  */ Calendar.stopEvent = function(ev) {
/* 171  */ 	ev || (ev = window.event);
/* 172  */ 	if (Calendar.is_ie) {
/* 173  */ 		ev.cancelBubble = true;
/* 174  */ 		ev.returnValue = false;
/* 175  */ 	} else {
/* 176  */ 		ev.preventDefault();
/* 177  */ 		ev.stopPropagation();
/* 178  */ 	}
/* 179  */ 	return false;
/* 180  */ };
/* 181  */ 
/* 182  */ Calendar.addEvent = function(el, evname, func) {
/* 183  */ 	if (el.attachEvent) { // IE
/* 184  */ 		el.attachEvent("on" + evname, func);
/* 185  */ 	} else if (el.addEventListener) { // Gecko / W3C
/* 186  */ 		el.addEventListener(evname, func, true);
/* 187  */ 	} else {
/* 188  */ 		el["on" + evname] = func;
/* 189  */ 	}
/* 190  */ };
/* 191  */ 
/* 192  */ Calendar.removeEvent = function(el, evname, func) {
/* 193  */ 	if (el.detachEvent) { // IE
/* 194  */ 		el.detachEvent("on" + evname, func);
/* 195  */ 	} else if (el.removeEventListener) { // Gecko / W3C
/* 196  */ 		el.removeEventListener(evname, func, true);
/* 197  */ 	} else {
/* 198  */ 		el["on" + evname] = null;
/* 199  */ 	}
/* 200  */ };

/* calendar.js */

/* 201  */ 
/* 202  */ Calendar.createElement = function(type, parent) {
/* 203  */ 	var el = null;
/* 204  */ 	if (document.createElementNS) {
/* 205  */ 		// use the XHTML namespace; IE won't normally get here unless
/* 206  */ 		// _they_ "fix" the DOM2 implementation.
/* 207  */ 		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
/* 208  */ 	} else {
/* 209  */ 		el = document.createElement(type);
/* 210  */ 	}
/* 211  */ 	if (typeof parent != "undefined") {
/* 212  */ 		parent.appendChild(el);
/* 213  */ 	}
/* 214  */ 	return el;
/* 215  */ };
/* 216  */ 
/* 217  */ // END: UTILITY FUNCTIONS
/* 218  */ 
/* 219  */ // BEGIN: CALENDAR STATIC FUNCTIONS
/* 220  */ 
/* 221  */ /** Internal -- adds a set of events to make some element behave like a button. */
/* 222  */ Calendar._add_evs = function(el) {
/* 223  */ 	with (Calendar) {
/* 224  */ 		addEvent(el, "mouseover", dayMouseOver);
/* 225  */ 		addEvent(el, "mousedown", dayMouseDown);
/* 226  */ 		addEvent(el, "mouseout", dayMouseOut);
/* 227  */ 		if (is_ie) {
/* 228  */ 			addEvent(el, "dblclick", dayMouseDblClick);
/* 229  */ 			el.setAttribute("unselectable", true);
/* 230  */ 		}
/* 231  */ 	}
/* 232  */ };
/* 233  */ 
/* 234  */ Calendar.findMonth = function(el) {
/* 235  */ 	if (typeof el.month != "undefined") {
/* 236  */ 		return el;
/* 237  */ 	} else if (typeof el.parentNode.month != "undefined") {
/* 238  */ 		return el.parentNode;
/* 239  */ 	}
/* 240  */ 	return null;
/* 241  */ };
/* 242  */ 
/* 243  */ Calendar.findYear = function(el) {
/* 244  */ 	if (typeof el.year != "undefined") {
/* 245  */ 		return el;
/* 246  */ 	} else if (typeof el.parentNode.year != "undefined") {
/* 247  */ 		return el.parentNode;
/* 248  */ 	}
/* 249  */ 	return null;
/* 250  */ };

/* calendar.js */

/* 251  */ 
/* 252  */ Calendar.showMonthsCombo = function () {
/* 253  */ 	var cal = Calendar._C;
/* 254  */ 	if (!cal) {
/* 255  */ 		return false;
/* 256  */ 	}
/* 257  */ 	var cal = cal;
/* 258  */ 	var cd = cal.activeDiv;
/* 259  */ 	var mc = cal.monthsCombo;
/* 260  */ 	if (cal.hilitedMonth) {
/* 261  */ 		Calendar.removeClass(cal.hilitedMonth, "hilite");
/* 262  */ 	}
/* 263  */ 	if (cal.activeMonth) {
/* 264  */ 		Calendar.removeClass(cal.activeMonth, "active");
/* 265  */ 	}
/* 266  */ 	var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];
/* 267  */ 	Calendar.addClass(mon, "active");
/* 268  */ 	cal.activeMonth = mon;
/* 269  */ 	var s = mc.style;
/* 270  */ 	s.display = "block";
/* 271  */ 	if (cd.navtype < 0)
/* 272  */ 		s.left = cd.offsetLeft + "px";
/* 273  */ 	else {
/* 274  */ 		var mcw = mc.offsetWidth;
/* 275  */ 		if (typeof mcw == "undefined")
/* 276  */ 			// Konqueror brain-dead techniques
/* 277  */ 			mcw = 50;
/* 278  */ 		s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px";
/* 279  */ 	}
/* 280  */ 	s.top = (cd.offsetTop + cd.offsetHeight) + "px";
/* 281  */ };
/* 282  */ 
/* 283  */ Calendar.showYearsCombo = function (fwd) {
/* 284  */ 	var cal = Calendar._C;
/* 285  */ 	if (!cal) {
/* 286  */ 		return false;
/* 287  */ 	}
/* 288  */ 	var cal = cal;
/* 289  */ 	var cd = cal.activeDiv;
/* 290  */ 	var yc = cal.yearsCombo;
/* 291  */ 	if (cal.hilitedYear) {
/* 292  */ 		Calendar.removeClass(cal.hilitedYear, "hilite");
/* 293  */ 	}
/* 294  */ 	if (cal.activeYear) {
/* 295  */ 		Calendar.removeClass(cal.activeYear, "active");
/* 296  */ 	}
/* 297  */ 	cal.activeYear = null;
/* 298  */ 	var Y = cal.date.getFullYear() + (fwd ? 1 : -1);
/* 299  */ 	var yr = yc.firstChild;
/* 300  */ 	var show = false;

/* calendar.js */

/* 301  */ 	for (var i = 12; i > 0; --i) {
/* 302  */ 		if (Y >= cal.minYear && Y <= cal.maxYear) {
/* 303  */ 			yr.innerHTML = Y;
/* 304  */ 			yr.year = Y;
/* 305  */ 			yr.style.display = "block";
/* 306  */ 			show = true;
/* 307  */ 		} else {
/* 308  */ 			yr.style.display = "none";
/* 309  */ 		}
/* 310  */ 		yr = yr.nextSibling;
/* 311  */ 		Y += fwd ? cal.yearStep : -cal.yearStep;
/* 312  */ 	}
/* 313  */ 	if (show) {
/* 314  */ 		var s = yc.style;
/* 315  */ 		s.display = "block";
/* 316  */ 		if (cd.navtype < 0)
/* 317  */ 			s.left = cd.offsetLeft + "px";
/* 318  */ 		else {
/* 319  */ 			var ycw = yc.offsetWidth;
/* 320  */ 			if (typeof ycw == "undefined")
/* 321  */ 				// Konqueror brain-dead techniques
/* 322  */ 				ycw = 50;
/* 323  */ 			s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px";
/* 324  */ 		}
/* 325  */ 		s.top = (cd.offsetTop + cd.offsetHeight) + "px";
/* 326  */ 	}
/* 327  */ };
/* 328  */ 
/* 329  */ // event handlers
/* 330  */ 
/* 331  */ Calendar.tableMouseUp = function(ev) {
/* 332  */ 	var cal = Calendar._C;
/* 333  */ 	if (!cal) {
/* 334  */ 		return false;
/* 335  */ 	}
/* 336  */ 	if (cal.timeout) {
/* 337  */ 		clearTimeout(cal.timeout);
/* 338  */ 	}
/* 339  */ 	var el = cal.activeDiv;
/* 340  */ 	if (!el) {
/* 341  */ 		return false;
/* 342  */ 	}
/* 343  */ 	var target = Calendar.getTargetElement(ev);
/* 344  */ 	ev || (ev = window.event);
/* 345  */ 	Calendar.removeClass(el, "active");
/* 346  */ 	if (target == el || target.parentNode == el) {
/* 347  */ 		Calendar.cellClick(el, ev);
/* 348  */ 	}
/* 349  */ 	var mon = Calendar.findMonth(target);
/* 350  */ 	var date = null;

/* calendar.js */

/* 351  */ 	if (mon) {
/* 352  */ 		date = new Date(cal.date);
/* 353  */ 		if (mon.month != date.getMonth()) {
/* 354  */ 			date.setMonth(mon.month);
/* 355  */ 			cal.setDate(date);
/* 356  */ 			cal.dateClicked = false;
/* 357  */ 			cal.callHandler();
/* 358  */ 		}
/* 359  */ 	} else {
/* 360  */ 		var year = Calendar.findYear(target);
/* 361  */ 		if (year) {
/* 362  */ 			date = new Date(cal.date);
/* 363  */ 			if (year.year != date.getFullYear()) {
/* 364  */ 				date.setFullYear(year.year);
/* 365  */ 				cal.setDate(date);
/* 366  */ 				cal.dateClicked = false;
/* 367  */ 				cal.callHandler();
/* 368  */ 			}
/* 369  */ 		}
/* 370  */ 	}
/* 371  */ 	with (Calendar) {
/* 372  */ 		removeEvent(document, "mouseup", tableMouseUp);
/* 373  */ 		removeEvent(document, "mouseover", tableMouseOver);
/* 374  */ 		removeEvent(document, "mousemove", tableMouseOver);
/* 375  */ 		cal._hideCombos();
/* 376  */ 		_C = null;
/* 377  */ 		return stopEvent(ev);
/* 378  */ 	}
/* 379  */ };
/* 380  */ 
/* 381  */ Calendar.tableMouseOver = function (ev) {
/* 382  */ 	var cal = Calendar._C;
/* 383  */ 	if (!cal) {
/* 384  */ 		return;
/* 385  */ 	}
/* 386  */ 	var el = cal.activeDiv;
/* 387  */ 	var target = Calendar.getTargetElement(ev);
/* 388  */ 	if (target == el || target.parentNode == el) {
/* 389  */ 		Calendar.addClass(el, "hilite active");
/* 390  */ 		Calendar.addClass(el.parentNode, "rowhilite");
/* 391  */ 	} else {
/* 392  */ 		if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2)))
/* 393  */ 			Calendar.removeClass(el, "active");
/* 394  */ 		Calendar.removeClass(el, "hilite");
/* 395  */ 		Calendar.removeClass(el.parentNode, "rowhilite");
/* 396  */ 	}
/* 397  */ 	ev || (ev = window.event);
/* 398  */ 	if (el.navtype == 50 && target != el) {
/* 399  */ 		var pos = Calendar.getAbsolutePos(el);
/* 400  */ 		var w = el.offsetWidth;

/* calendar.js */

/* 401  */ 		var x = ev.clientX;
/* 402  */ 		var dx;
/* 403  */ 		var decrease = true;
/* 404  */ 		if (x > pos.x + w) {
/* 405  */ 			dx = x - pos.x - w;
/* 406  */ 			decrease = false;
/* 407  */ 		} else
/* 408  */ 			dx = pos.x - x;
/* 409  */ 
/* 410  */ 		if (dx < 0) dx = 0;
/* 411  */ 		var range = el._range;
/* 412  */ 		var current = el._current;
/* 413  */ 		var count = Math.floor(dx / 10) % range.length;
/* 414  */ 		for (var i = range.length; --i >= 0;)
/* 415  */ 			if (range[i] == current)
/* 416  */ 				break;
/* 417  */ 		while (count-- > 0)
/* 418  */ 			if (decrease) {
/* 419  */ 				if (--i < 0)
/* 420  */ 					i = range.length - 1;
/* 421  */ 			} else if ( ++i >= range.length )
/* 422  */ 				i = 0;
/* 423  */ 		var newval = range[i];
/* 424  */ 		el.innerHTML = newval;
/* 425  */ 
/* 426  */ 		cal.onUpdateTime();
/* 427  */ 	}
/* 428  */ 	var mon = Calendar.findMonth(target);
/* 429  */ 	if (mon) {
/* 430  */ 		if (mon.month != cal.date.getMonth()) {
/* 431  */ 			if (cal.hilitedMonth) {
/* 432  */ 				Calendar.removeClass(cal.hilitedMonth, "hilite");
/* 433  */ 			}
/* 434  */ 			Calendar.addClass(mon, "hilite");
/* 435  */ 			cal.hilitedMonth = mon;
/* 436  */ 		} else if (cal.hilitedMonth) {
/* 437  */ 			Calendar.removeClass(cal.hilitedMonth, "hilite");
/* 438  */ 		}
/* 439  */ 	} else {
/* 440  */ 		if (cal.hilitedMonth) {
/* 441  */ 			Calendar.removeClass(cal.hilitedMonth, "hilite");
/* 442  */ 		}
/* 443  */ 		var year = Calendar.findYear(target);
/* 444  */ 		if (year) {
/* 445  */ 			if (year.year != cal.date.getFullYear()) {
/* 446  */ 				if (cal.hilitedYear) {
/* 447  */ 					Calendar.removeClass(cal.hilitedYear, "hilite");
/* 448  */ 				}
/* 449  */ 				Calendar.addClass(year, "hilite");
/* 450  */ 				cal.hilitedYear = year;

/* calendar.js */

/* 451  */ 			} else if (cal.hilitedYear) {
/* 452  */ 				Calendar.removeClass(cal.hilitedYear, "hilite");
/* 453  */ 			}
/* 454  */ 		} else if (cal.hilitedYear) {
/* 455  */ 			Calendar.removeClass(cal.hilitedYear, "hilite");
/* 456  */ 		}
/* 457  */ 	}
/* 458  */ 	return Calendar.stopEvent(ev);
/* 459  */ };
/* 460  */ 
/* 461  */ Calendar.tableMouseDown = function (ev) {
/* 462  */ 	if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {
/* 463  */ 		return Calendar.stopEvent(ev);
/* 464  */ 	}
/* 465  */ };
/* 466  */ 
/* 467  */ Calendar.calDragIt = function (ev) {
/* 468  */ 	var cal = Calendar._C;
/* 469  */ 	if (!(cal && cal.dragging)) {
/* 470  */ 		return false;
/* 471  */ 	}
/* 472  */ 	var posX;
/* 473  */ 	var posY;
/* 474  */ 	if (Calendar.is_ie) {
/* 475  */ 		posY = window.event.clientY + document.body.scrollTop;
/* 476  */ 		posX = window.event.clientX + document.body.scrollLeft;
/* 477  */ 	} else {
/* 478  */ 		posX = ev.pageX;
/* 479  */ 		posY = ev.pageY;
/* 480  */ 	}
/* 481  */ 	cal.hideShowCovered();
/* 482  */ 	var st = cal.element.style;
/* 483  */ 	st.left = (posX - cal.xOffs) + "px";
/* 484  */ 	st.top = (posY - cal.yOffs) + "px";
/* 485  */ 	return Calendar.stopEvent(ev);
/* 486  */ };
/* 487  */ 
/* 488  */ Calendar.calDragEnd = function (ev) {
/* 489  */ 	var cal = Calendar._C;
/* 490  */ 	if (!cal) {
/* 491  */ 		return false;
/* 492  */ 	}
/* 493  */ 	cal.dragging = false;
/* 494  */ 	with (Calendar) {
/* 495  */ 		removeEvent(document, "mousemove", calDragIt);
/* 496  */ 		removeEvent(document, "mouseup", calDragEnd);
/* 497  */ 		tableMouseUp(ev);
/* 498  */ 	}
/* 499  */ 	cal.hideShowCovered();
/* 500  */ };

/* calendar.js */

/* 501  */ 
/* 502  */ Calendar.dayMouseDown = function(ev) {
/* 503  */ 	var el = Calendar.getElement(ev);
/* 504  */ 	if (el.disabled) {
/* 505  */ 		return false;
/* 506  */ 	}
/* 507  */ 	var cal = el.calendar;
/* 508  */ 	cal.activeDiv = el;
/* 509  */ 	Calendar._C = cal;
/* 510  */ 	if (el.navtype != 300) with (Calendar) {
/* 511  */ 		if (el.navtype == 50) {
/* 512  */ 			el._current = el.innerHTML;
/* 513  */ 			addEvent(document, "mousemove", tableMouseOver);
/* 514  */ 		} else
/* 515  */ 			addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);
/* 516  */ 		addClass(el, "hilite active");
/* 517  */ 		addEvent(document, "mouseup", tableMouseUp);
/* 518  */ 	} else if (cal.isPopup) {
/* 519  */ 		cal._dragStart(ev);
/* 520  */ 	}
/* 521  */ 	if (el.navtype == -1 || el.navtype == 1) {
/* 522  */ 		if (cal.timeout) clearTimeout(cal.timeout);
/* 523  */ 		cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);
/* 524  */ 	} else if (el.navtype == -2 || el.navtype == 2) {
/* 525  */ 		if (cal.timeout) clearTimeout(cal.timeout);
/* 526  */ 		cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);
/* 527  */ 	} else {
/* 528  */ 		cal.timeout = null;
/* 529  */ 	}
/* 530  */ 	return Calendar.stopEvent(ev);
/* 531  */ };
/* 532  */ 
/* 533  */ Calendar.dayMouseDblClick = function(ev) {
/* 534  */ 	Calendar.cellClick(Calendar.getElement(ev), ev || window.event);
/* 535  */ 	if (Calendar.is_ie) {
/* 536  */ 		document.selection.empty();
/* 537  */ 	}
/* 538  */ };
/* 539  */ 
/* 540  */ Calendar.dayMouseOver = function(ev) {
/* 541  */ 	var el = Calendar.getElement(ev);
/* 542  */ 	if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {
/* 543  */ 		return false;
/* 544  */ 	}
/* 545  */ 	if (el.ttip) {
/* 546  */ 		if (el.ttip.substr(0, 1) == "_") {
/* 547  */ 			el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);
/* 548  */ 		}
/* 549  */ 		el.calendar.tooltips.innerHTML = el.ttip;
/* 550  */ 	}

/* calendar.js */

/* 551  */ 	if (el.navtype != 300) {
/* 552  */ 		Calendar.addClass(el, "hilite");
/* 553  */ 		if (el.caldate) {
/* 554  */ 			Calendar.addClass(el.parentNode, "rowhilite");
/* 555  */ 		}
/* 556  */ 	}
/* 557  */ 	return Calendar.stopEvent(ev);
/* 558  */ };
/* 559  */ 
/* 560  */ Calendar.dayMouseOut = function(ev) {
/* 561  */ 	with (Calendar) {
/* 562  */ 		var el = getElement(ev);
/* 563  */ 		if (isRelated(el, ev) || _C || el.disabled)
/* 564  */ 			return false;
/* 565  */ 		removeClass(el, "hilite");
/* 566  */ 		if (el.caldate)
/* 567  */ 			removeClass(el.parentNode, "rowhilite");
/* 568  */ 		if (el.calendar)
/* 569  */ 			el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];
/* 570  */ 		return stopEvent(ev);
/* 571  */ 	}
/* 572  */ };
/* 573  */ 
/* 574  */ /**
/* 575  *|  *  A generic "click" handler :) handles all types of buttons defined in this
/* 576  *|  *  calendar.
/* 577  *|  */
/* 578  */ Calendar.cellClick = function(el, ev) {
/* 579  */ 	var cal = el.calendar;
/* 580  */ 	var closing = false;
/* 581  */ 	var newdate = false;
/* 582  */ 	var date = null;
/* 583  */ 	if (typeof el.navtype == "undefined") {
/* 584  */ 		if (cal.currentDateEl) {
/* 585  */ 			Calendar.removeClass(cal.currentDateEl, "selected");
/* 586  */ 			Calendar.addClass(el, "selected");
/* 587  */ 			closing = (cal.currentDateEl == el);
/* 588  */ 			if (!closing) {
/* 589  */ 				cal.currentDateEl = el;
/* 590  */ 			}
/* 591  */ 		}
/* 592  */ 		cal.date.setDateOnly(el.caldate);
/* 593  */ 		date = cal.date;
/* 594  */ 		var other_month = !(cal.dateClicked = !el.otherMonth);
/* 595  */ 		if (!other_month && !cal.currentDateEl)
/* 596  */ 			cal._toggleMultipleDate(new Date(date));
/* 597  */ 		else
/* 598  */ 			newdate = !el.disabled;
/* 599  */ 		// a date was clicked
/* 600  */ 		if (other_month)

/* calendar.js */

/* 601  */ 			cal._init(cal.firstDayOfWeek, date);
/* 602  */ 	} else {
/* 603  */ 		if (el.navtype == 200) {
/* 604  */ 			Calendar.removeClass(el, "hilite");
/* 605  */ 			cal.callCloseHandler();
/* 606  */ 			return;
/* 607  */ 		}
/* 608  */ 		date = new Date(cal.date);
/* 609  */ 		if (el.navtype == 0)
/* 610  */ 			date.setDateOnly(new Date()); // TODAY
/* 611  */ 		// unless "today" was clicked, we assume no date was clicked so
/* 612  */ 		// the selected handler will know not to close the calenar when
/* 613  */ 		// in single-click mode.
/* 614  */ 		// cal.dateClicked = (el.navtype == 0);
/* 615  */ 		cal.dateClicked = false;
/* 616  */ 		var year = date.getFullYear();
/* 617  */ 		var mon = date.getMonth();
/* 618  */ 		function setMonth(m) {
/* 619  */ 			var day = date.getDate();
/* 620  */ 			var max = date.getMonthDays(m);
/* 621  */ 			if (day > max) {
/* 622  */ 				date.setDate(max);
/* 623  */ 			}
/* 624  */ 			date.setMonth(m);
/* 625  */ 		};
/* 626  */ 		switch (el.navtype) {
/* 627  */ 		    case 400:
/* 628  */ 			Calendar.removeClass(el, "hilite");
/* 629  */ 			var text = Calendar._TT["ABOUT"];
/* 630  */ 			if (typeof text != "undefined") {
/* 631  */ 				text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";
/* 632  */ 			} else {
/* 633  */ 				// FIXME: this should be removed as soon as lang files get updated!
/* 634  */ 				text = "Help and about box text is not translated into this language.\n" +
/* 635  */ 					"If you know this language and you feel generous please update\n" +
/* 636  */ 					"the corresponding file in \"lang\" subdir to match calendar-en.js\n" +
/* 637  */ 					"and send it back to <mihai_bazon@yahoo.com> to get it into the distribution  ;-)\n\n" +
/* 638  */ 					"Thank you!\n" +
/* 639  */ 					"http://dynarch.com/mishoo/calendar.epl\n";
/* 640  */ 			}
/* 641  */ 			alert(text);
/* 642  */ 			return;
/* 643  */ 		    case -2:
/* 644  */ 			if (year > cal.minYear) {
/* 645  */ 				date.setFullYear(year - 1);
/* 646  */ 			}
/* 647  */ 			break;
/* 648  */ 		    case -1:
/* 649  */ 			if (mon > 0) {
/* 650  */ 				setMonth(mon - 1);

/* calendar.js */

/* 651  */ 			} else if (year-- > cal.minYear) {
/* 652  */ 				date.setFullYear(year);
/* 653  */ 				setMonth(11);
/* 654  */ 			}
/* 655  */ 			break;
/* 656  */ 		    case 1:
/* 657  */ 			if (mon < 11) {
/* 658  */ 				setMonth(mon + 1);
/* 659  */ 			} else if (year < cal.maxYear) {
/* 660  */ 				date.setFullYear(year + 1);
/* 661  */ 				setMonth(0);
/* 662  */ 			}
/* 663  */ 			break;
/* 664  */ 		    case 2:
/* 665  */ 			if (year < cal.maxYear) {
/* 666  */ 				date.setFullYear(year + 1);
/* 667  */ 			}
/* 668  */ 			break;
/* 669  */ 		    case 100:
/* 670  */ 			cal.setFirstDayOfWeek(el.fdow);
/* 671  */ 			return;
/* 672  */ 		    case 50:
/* 673  */ 			var range = el._range;
/* 674  */ 			var current = el.innerHTML;
/* 675  */ 			for (var i = range.length; --i >= 0;)
/* 676  */ 				if (range[i] == current)
/* 677  */ 					break;
/* 678  */ 			if (ev && ev.shiftKey) {
/* 679  */ 				if (--i < 0)
/* 680  */ 					i = range.length - 1;
/* 681  */ 			} else if ( ++i >= range.length )
/* 682  */ 				i = 0;
/* 683  */ 			var newval = range[i];
/* 684  */ 			el.innerHTML = newval;
/* 685  */ 			cal.onUpdateTime();
/* 686  */ 			return;
/* 687  */ 		    case 0:
/* 688  */ 			// TODAY will bring us here
/* 689  */ 			if ((typeof cal.getDateStatus == "function") &&
/* 690  */ 			    cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {
/* 691  */ 				return false;
/* 692  */ 			}
/* 693  */ 			break;
/* 694  */ 		}
/* 695  */ 		if (!date.equalsTo(cal.date)) {
/* 696  */ 			cal.setDate(date);
/* 697  */ 			newdate = true;
/* 698  */ 		} else if (el.navtype == 0)
/* 699  */ 			newdate = closing = true;
/* 700  */ 	}

/* calendar.js */

/* 701  */ 	if (newdate) {
/* 702  */ 		ev && cal.callHandler();
/* 703  */ 	}
/* 704  */ 	if (closing) {
/* 705  */ 		Calendar.removeClass(el, "hilite");
/* 706  */ 		ev && cal.callCloseHandler();
/* 707  */ 	}
/* 708  */ };
/* 709  */ 
/* 710  */ // END: CALENDAR STATIC FUNCTIONS
/* 711  */ 
/* 712  */ // BEGIN: CALENDAR OBJECT FUNCTIONS
/* 713  */ 
/* 714  */ /**
/* 715  *|  *  This function creates the calendar inside the given parent.  If _par is
/* 716  *|  *  null than it creates a popup calendar inside the BODY element.  If _par is
/* 717  *|  *  an element, be it BODY, then it creates a non-popup calendar (still
/* 718  *|  *  hidden).  Some properties need to be set before calling this function.
/* 719  *|  */
/* 720  */ Calendar.prototype.create = function (_par) {
/* 721  */ 	var parent = null;
/* 722  */ 	if (! _par) {
/* 723  */ 		// default parent is the document body, in which case we create
/* 724  */ 		// a popup calendar.
/* 725  */ 		parent = document.getElementsByTagName("body")[0];
/* 726  */ 		this.isPopup = true;
/* 727  */ 	} else {
/* 728  */ 		parent = _par;
/* 729  */ 		this.isPopup = false;
/* 730  */ 	}
/* 731  */ 	this.date = this.dateStr ? new Date(this.dateStr) : new Date();
/* 732  */ 
/* 733  */ 	var table = Calendar.createElement("table");
/* 734  */ 	this.table = table;
/* 735  */ 	table.cellSpacing = 0;
/* 736  */ 	table.cellPadding = 0;
/* 737  */ 	table.calendar = this;
/* 738  */ 	Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);
/* 739  */ 
/* 740  */ 	var div = Calendar.createElement("div");
/* 741  */ 	this.element = div;
/* 742  */ 	div.className = "calendar";
/* 743  */ 	if (this.isPopup) {
/* 744  */ 		div.style.position = "absolute";
/* 745  */ 		div.style.display = "none";
/* 746  */ 		div.style.width = "170px";
/* 747  */ 	}
/* 748  */ 	div.appendChild(table);
/* 749  */ 
/* 750  */ 	var thead = Calendar.createElement("thead", table);

/* calendar.js */

/* 751  */ 	var cell = null;
/* 752  */ 	var row = null;
/* 753  */ 
/* 754  */ 	var cal = this;
/* 755  */ 	var hh = function (text, cs, navtype) {
/* 756  */ 		cell = Calendar.createElement("td", row);
/* 757  */ 		cell.colSpan = cs;
/* 758  */ 		cell.className = "button";
/* 759  */ 		if (navtype != 0 && Math.abs(navtype) <= 2)
/* 760  */ 			cell.className += " nav";
/* 761  */ 		Calendar._add_evs(cell);
/* 762  */ 		cell.calendar = cal;
/* 763  */ 		cell.navtype = navtype;
/* 764  */ 		cell.innerHTML = "<div unselectable='on'>" + text + "</div>";
/* 765  */ 		return cell;
/* 766  */ 	};
/* 767  */ 
/* 768  */ 	row = Calendar.createElement("tr", thead);
/* 769  */ 	var title_length = 6;
/* 770  */ 	(this.isPopup) && --title_length;
/* 771  */ 	(this.weekNumbers) && ++title_length;
/* 772  */ 
/* 773  */ 	hh("?", 1, 400).ttip = Calendar._TT["INFO"];
/* 774  */ 	this.title = hh("", title_length, 300);
/* 775  */ 	this.title.className = "title";
/* 776  */ 	if (this.isPopup) {
/* 777  */ 		this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
/* 778  */ 		this.title.style.cursor = "move";
/* 779  */ 		hh("&#x00d7;", 1, 200).ttip = Calendar._TT["CLOSE"];
/* 780  */ 	}
/* 781  */ 
/* 782  */ 	row = Calendar.createElement("tr", thead);
/* 783  */ 	row.className = "headrow";
/* 784  */ 
/* 785  */ 	this._nav_py = hh("&#x00ab;", 1, -2);
/* 786  */ 	this._nav_py.ttip = Calendar._TT["PREV_YEAR"];
/* 787  */ 
/* 788  */ 	this._nav_pm = hh("&#x2039;", 1, -1);
/* 789  */ 	this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];
/* 790  */ 
/* 791  */ 	this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0);
/* 792  */ 	this._nav_now.ttip = Calendar._TT["GO_TODAY"];
/* 793  */ 
/* 794  */ 	this._nav_nm = hh("&#x203a;", 1, 1);
/* 795  */ 	this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];
/* 796  */ 
/* 797  */ 	this._nav_ny = hh("&#x00bb;", 1, 2);
/* 798  */ 	this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];
/* 799  */ 
/* 800  */ 	// day names

/* calendar.js */

/* 801  */ 	row = Calendar.createElement("tr", thead);
/* 802  */ 	row.className = "daynames";
/* 803  */ 	if (this.weekNumbers) {
/* 804  */ 		cell = Calendar.createElement("td", row);
/* 805  */ 		cell.className = "name wn";
/* 806  */ 		cell.innerHTML = Calendar._TT["WK"];
/* 807  */ 	}
/* 808  */ 	for (var i = 7; i > 0; --i) {
/* 809  */ 		cell = Calendar.createElement("td", row);
/* 810  */ 		if (!i) {
/* 811  */ 			cell.navtype = 100;
/* 812  */ 			cell.calendar = this;
/* 813  */ 			Calendar._add_evs(cell);
/* 814  */ 		}
/* 815  */ 	}
/* 816  */ 	this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
/* 817  */ 	this._displayWeekdays();
/* 818  */ 
/* 819  */ 	var tbody = Calendar.createElement("tbody", table);
/* 820  */ 	this.tbody = tbody;
/* 821  */ 
/* 822  */ 	for (i = 6; i > 0; --i) {
/* 823  */ 		row = Calendar.createElement("tr", tbody);
/* 824  */ 		if (this.weekNumbers) {
/* 825  */ 			cell = Calendar.createElement("td", row);
/* 826  */ 		}
/* 827  */ 		for (var j = 7; j > 0; --j) {
/* 828  */ 			cell = Calendar.createElement("td", row);
/* 829  */ 			cell.calendar = this;
/* 830  */ 			Calendar._add_evs(cell);
/* 831  */ 		}
/* 832  */ 	}
/* 833  */ 
/* 834  */ 	if (this.showsTime) {
/* 835  */ 		row = Calendar.createElement("tr", tbody);
/* 836  */ 		row.className = "time";
/* 837  */ 
/* 838  */ 		cell = Calendar.createElement("td", row);
/* 839  */ 		cell.className = "time";
/* 840  */ 		cell.colSpan = 2;
/* 841  */ 		cell.innerHTML = Calendar._TT["TIME"] || "&nbsp;";
/* 842  */ 
/* 843  */ 		cell = Calendar.createElement("td", row);
/* 844  */ 		cell.className = "time";
/* 845  */ 		cell.colSpan = this.weekNumbers ? 4 : 3;
/* 846  */ 
/* 847  */ 		(function(){
/* 848  */ 			function makeTimePart(className, init, range_start, range_end) {
/* 849  */ 				var part = Calendar.createElement("span", cell);
/* 850  */ 				part.className = className;

/* calendar.js */

/* 851  */ 				part.innerHTML = init;
/* 852  */ 				part.calendar = cal;
/* 853  */ 				part.ttip = Calendar._TT["TIME_PART"];
/* 854  */ 				part.navtype = 50;
/* 855  */ 				part._range = [];
/* 856  */ 				if (typeof range_start != "number")
/* 857  */ 					part._range = range_start;
/* 858  */ 				else {
/* 859  */ 					for (var i = range_start; i <= range_end; ++i) {
/* 860  */ 						var txt;
/* 861  */ 						if (i < 10 && range_end >= 10) txt = '0' + i;
/* 862  */ 						else txt = '' + i;
/* 863  */ 						part._range[part._range.length] = txt;
/* 864  */ 					}
/* 865  */ 				}
/* 866  */ 				Calendar._add_evs(part);
/* 867  */ 				return part;
/* 868  */ 			};
/* 869  */ 			var hrs = cal.date.getHours();
/* 870  */ 			var mins = cal.date.getMinutes();
/* 871  */ 			var t12 = !cal.time24;
/* 872  */ 			var pm = (hrs > 12);
/* 873  */ 			if (t12 && pm) hrs -= 12;
/* 874  */ 			var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);
/* 875  */ 			var span = Calendar.createElement("span", cell);
/* 876  */ 			span.innerHTML = ":";
/* 877  */ 			span.className = "colon";
/* 878  */ 			var M = makeTimePart("minute", mins, 0, 59);
/* 879  */ 			var AP = null;
/* 880  */ 			cell = Calendar.createElement("td", row);
/* 881  */ 			cell.className = "time";
/* 882  */ 			cell.colSpan = 2;
/* 883  */ 			if (t12)
/* 884  */ 				AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]);
/* 885  */ 			else
/* 886  */ 				cell.innerHTML = "&nbsp;";
/* 887  */ 
/* 888  */ 			cal.onSetTime = function() {
/* 889  */ 				var pm, hrs = this.date.getHours(),
/* 890  */ 					mins = this.date.getMinutes();
/* 891  */ 				if (t12) {
/* 892  */ 					pm = (hrs >= 12);
/* 893  */ 					if (pm) hrs -= 12;
/* 894  */ 					if (hrs == 0) hrs = 12;
/* 895  */ 					AP.innerHTML = pm ? "pm" : "am";
/* 896  */ 				}
/* 897  */ 				H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;
/* 898  */ 				M.innerHTML = (mins < 10) ? ("0" + mins) : mins;
/* 899  */ 			};
/* 900  */ 

/* calendar.js */

/* 901  */ 			cal.onUpdateTime = function() {
/* 902  */ 				var date = this.date;
/* 903  */ 				var h = parseInt(H.innerHTML, 10);
/* 904  */ 				if (t12) {
/* 905  */ 					if (/pm/i.test(AP.innerHTML) && h < 12)
/* 906  */ 						h += 12;
/* 907  */ 					else if (/am/i.test(AP.innerHTML) && h == 12)
/* 908  */ 						h = 0;
/* 909  */ 				}
/* 910  */ 				var d = date.getDate();
/* 911  */ 				var m = date.getMonth();
/* 912  */ 				var y = date.getFullYear();
/* 913  */ 				date.setHours(h);
/* 914  */ 				date.setMinutes(parseInt(M.innerHTML, 10));
/* 915  */ 				date.setFullYear(y);
/* 916  */ 				date.setMonth(m);
/* 917  */ 				date.setDate(d);
/* 918  */ 				this.dateClicked = false;
/* 919  */ 				this.callHandler();
/* 920  */ 			};
/* 921  */ 		})();
/* 922  */ 	} else {
/* 923  */ 		this.onSetTime = this.onUpdateTime = function() {};
/* 924  */ 	}
/* 925  */ 
/* 926  */ 	var tfoot = Calendar.createElement("tfoot", table);
/* 927  */ 
/* 928  */ 	row = Calendar.createElement("tr", tfoot);
/* 929  */ 	row.className = "footrow";
/* 930  */ 
/* 931  */ 	cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
/* 932  */ 	cell.className = "ttip";
/* 933  */ 	if (this.isPopup) {
/* 934  */ 		cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
/* 935  */ 		cell.style.cursor = "move";
/* 936  */ 	}
/* 937  */ 	this.tooltips = cell;
/* 938  */ 
/* 939  */ 	div = Calendar.createElement("div", this.element);
/* 940  */ 	this.monthsCombo = div;
/* 941  */ 	div.className = "combo";
/* 942  */ 	for (i = 0; i < Calendar._MN.length; ++i) {
/* 943  */ 		var mn = Calendar.createElement("div");
/* 944  */ 		mn.className = Calendar.is_ie ? "label-IEfix" : "label";
/* 945  */ 		mn.month = i;
/* 946  */ 		mn.innerHTML = Calendar._SMN[i];
/* 947  */ 		div.appendChild(mn);
/* 948  */ 	}
/* 949  */ 
/* 950  */ 	div = Calendar.createElement("div", this.element);

/* calendar.js */

/* 951  */ 	this.yearsCombo = div;
/* 952  */ 	div.className = "combo";
/* 953  */ 	for (i = 12; i > 0; --i) {
/* 954  */ 		var yr = Calendar.createElement("div");
/* 955  */ 		yr.className = Calendar.is_ie ? "label-IEfix" : "label";
/* 956  */ 		div.appendChild(yr);
/* 957  */ 	}
/* 958  */ 
/* 959  */ 	this._init(this.firstDayOfWeek, this.date);
/* 960  */ 	parent.appendChild(this.element);
/* 961  */ };
/* 962  */ 
/* 963  */ /** keyboard navigation, only for popup calendars */
/* 964  */ Calendar._keyEvent = function(ev) {
/* 965  */ 	var cal = window._dynarch_popupCalendar;
/* 966  */ 	if (!cal || cal.multiple)
/* 967  */ 		return false;
/* 968  */ 	(Calendar.is_ie) && (ev = window.event);
/* 969  */ 	var act = (Calendar.is_ie || ev.type == "keypress"),
/* 970  */ 		K = ev.keyCode;
/* 971  */ 	if (ev.ctrlKey) {
/* 972  */ 		switch (K) {
/* 973  */ 		    case 37: // KEY left
/* 974  */ 			act && Calendar.cellClick(cal._nav_pm);
/* 975  */ 			break;
/* 976  */ 		    case 38: // KEY up
/* 977  */ 			act && Calendar.cellClick(cal._nav_py);
/* 978  */ 			break;
/* 979  */ 		    case 39: // KEY right
/* 980  */ 			act && Calendar.cellClick(cal._nav_nm);
/* 981  */ 			break;
/* 982  */ 		    case 40: // KEY down
/* 983  */ 			act && Calendar.cellClick(cal._nav_ny);
/* 984  */ 			break;
/* 985  */ 		    default:
/* 986  */ 			return false;
/* 987  */ 		}
/* 988  */ 	} else switch (K) {
/* 989  */ 	    case 32: // KEY space (now)
/* 990  */ 		Calendar.cellClick(cal._nav_now);
/* 991  */ 		break;
/* 992  */ 	    case 27: // KEY esc
/* 993  */ 		act && cal.callCloseHandler();
/* 994  */ 		break;
/* 995  */ 	    case 37: // KEY left
/* 996  */ 	    case 38: // KEY up
/* 997  */ 	    case 39: // KEY right
/* 998  */ 	    case 40: // KEY down
/* 999  */ 		if (act) {
/* 1000 */ 			var prev, x, y, ne, el, step;

/* calendar.js */

/* 1001 */ 			prev = K == 37 || K == 38;
/* 1002 */ 			step = (K == 37 || K == 39) ? 1 : 7;
/* 1003 */ 			function setVars() {
/* 1004 */ 				el = cal.currentDateEl;
/* 1005 */ 				var p = el.pos;
/* 1006 */ 				x = p & 15;
/* 1007 */ 				y = p >> 4;
/* 1008 */ 				ne = cal.ar_days[y][x];
/* 1009 */ 			};setVars();
/* 1010 */ 			function prevMonth() {
/* 1011 */ 				var date = new Date(cal.date);
/* 1012 */ 				date.setDate(date.getDate() - step);
/* 1013 */ 				cal.setDate(date);
/* 1014 */ 			};
/* 1015 */ 			function nextMonth() {
/* 1016 */ 				var date = new Date(cal.date);
/* 1017 */ 				date.setDate(date.getDate() + step);
/* 1018 */ 				cal.setDate(date);
/* 1019 */ 			};
/* 1020 */ 			while (1) {
/* 1021 */ 				switch (K) {
/* 1022 */ 				    case 37: // KEY left
/* 1023 */ 					if (--x >= 0)
/* 1024 */ 						ne = cal.ar_days[y][x];
/* 1025 */ 					else {
/* 1026 */ 						x = 6;
/* 1027 */ 						K = 38;
/* 1028 */ 						continue;
/* 1029 */ 					}
/* 1030 */ 					break;
/* 1031 */ 				    case 38: // KEY up
/* 1032 */ 					if (--y >= 0)
/* 1033 */ 						ne = cal.ar_days[y][x];
/* 1034 */ 					else {
/* 1035 */ 						prevMonth();
/* 1036 */ 						setVars();
/* 1037 */ 					}
/* 1038 */ 					break;
/* 1039 */ 				    case 39: // KEY right
/* 1040 */ 					if (++x < 7)
/* 1041 */ 						ne = cal.ar_days[y][x];
/* 1042 */ 					else {
/* 1043 */ 						x = 0;
/* 1044 */ 						K = 40;
/* 1045 */ 						continue;
/* 1046 */ 					}
/* 1047 */ 					break;
/* 1048 */ 				    case 40: // KEY down
/* 1049 */ 					if (++y < cal.ar_days.length)
/* 1050 */ 						ne = cal.ar_days[y][x];

/* calendar.js */

/* 1051 */ 					else {
/* 1052 */ 						nextMonth();
/* 1053 */ 						setVars();
/* 1054 */ 					}
/* 1055 */ 					break;
/* 1056 */ 				}
/* 1057 */ 				break;
/* 1058 */ 			}
/* 1059 */ 			if (ne) {
/* 1060 */ 				if (!ne.disabled)
/* 1061 */ 					Calendar.cellClick(ne);
/* 1062 */ 				else if (prev)
/* 1063 */ 					prevMonth();
/* 1064 */ 				else
/* 1065 */ 					nextMonth();
/* 1066 */ 			}
/* 1067 */ 		}
/* 1068 */ 		break;
/* 1069 */ 	    case 13: // KEY enter
/* 1070 */ 		if (act)
/* 1071 */ 			Calendar.cellClick(cal.currentDateEl, ev);
/* 1072 */ 		break;
/* 1073 */ 	    default:
/* 1074 */ 		return false;
/* 1075 */ 	}
/* 1076 */ 	return Calendar.stopEvent(ev);
/* 1077 */ };
/* 1078 */ 
/* 1079 */ /**
/* 1080 *|  *  (RE)Initializes the calendar to the given date and firstDayOfWeek
/* 1081 *|  */
/* 1082 */ Calendar.prototype._init = function (firstDayOfWeek, date) {
/* 1083 */ 	var today = new Date(),
/* 1084 */ 		TY = today.getFullYear(),
/* 1085 */ 		TM = today.getMonth(),
/* 1086 */ 		TD = today.getDate();
/* 1087 */ 	this.table.style.visibility = "hidden";
/* 1088 */ 	var year = date.getFullYear();
/* 1089 */ 	if (year < this.minYear) {
/* 1090 */ 		year = this.minYear;
/* 1091 */ 		date.setFullYear(year);
/* 1092 */ 	} else if (year > this.maxYear) {
/* 1093 */ 		year = this.maxYear;
/* 1094 */ 		date.setFullYear(year);
/* 1095 */ 	}
/* 1096 */ 	this.firstDayOfWeek = firstDayOfWeek;
/* 1097 */ 	this.date = new Date(date);
/* 1098 */ 	var month = date.getMonth();
/* 1099 */ 	var mday = date.getDate();
/* 1100 */ 	var no_days = date.getMonthDays();

/* calendar.js */

/* 1101 */ 
/* 1102 */ 	// calendar voodoo for computing the first day that would actually be
/* 1103 */ 	// displayed in the calendar, even if it's from the previous month.
/* 1104 */ 	// WARNING: this is magic. ;-)
/* 1105 */ 	date.setDate(1);
/* 1106 */ 	var day1 = (date.getDay() - this.firstDayOfWeek) % 7;
/* 1107 */ 	if (day1 < 0)
/* 1108 */ 		day1 += 7;
/* 1109 */ 	date.setDate(-day1);
/* 1110 */ 	date.setDate(date.getDate() + 1);
/* 1111 */ 
/* 1112 */ 	var row = this.tbody.firstChild;
/* 1113 */ 	var MN = Calendar._SMN[month];
/* 1114 */ 	var ar_days = this.ar_days = new Array();
/* 1115 */ 	var weekend = Calendar._TT["WEEKEND"];
/* 1116 */ 	var dates = this.multiple ? (this.datesCells = {}) : null;
/* 1117 */ 	for (var i = 0; i < 6; ++i, row = row.nextSibling) {
/* 1118 */ 		var cell = row.firstChild;
/* 1119 */ 		if (this.weekNumbers) {
/* 1120 */ 			cell.className = "day wn";
/* 1121 */ 			cell.innerHTML = date.getWeekNumber();
/* 1122 */ 			cell = cell.nextSibling;
/* 1123 */ 		}
/* 1124 */ 		row.className = "daysrow";
/* 1125 */ 		var hasdays = false, iday, dpos = ar_days[i] = [];
/* 1126 */ 		for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) {
/* 1127 */ 			iday = date.getDate();
/* 1128 */ 			var wday = date.getDay();
/* 1129 */ 			cell.className = "day";
/* 1130 */ 			cell.pos = i << 4 | j;
/* 1131 */ 			dpos[j] = cell;
/* 1132 */ 			var current_month = (date.getMonth() == month);
/* 1133 */ 			if (!current_month) {
/* 1134 */ 				if (this.showsOtherMonths) {
/* 1135 */ 					cell.className += " othermonth";
/* 1136 */ 					cell.otherMonth = true;
/* 1137 */ 				} else {
/* 1138 */ 					cell.className = "emptycell";
/* 1139 */ 					cell.innerHTML = "&nbsp;";
/* 1140 */ 					cell.disabled = true;
/* 1141 */ 					continue;
/* 1142 */ 				}
/* 1143 */ 			} else {
/* 1144 */ 				cell.otherMonth = false;
/* 1145 */ 				hasdays = true;
/* 1146 */ 			}
/* 1147 */ 			cell.disabled = false;
/* 1148 */ 			cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday;
/* 1149 */ 			if (dates)
/* 1150 */ 				dates[date.print("%Y%m%d")] = cell;

/* calendar.js */

/* 1151 */ 			if (this.getDateStatus) {
/* 1152 */ 				var status = this.getDateStatus(date, year, month, iday);
/* 1153 */ 				if (this.getDateToolTip) {
/* 1154 */ 					var toolTip = this.getDateToolTip(date, year, month, iday);
/* 1155 */ 					if (toolTip)
/* 1156 */ 						cell.title = toolTip;
/* 1157 */ 				}
/* 1158 */ 				if (status === true) {
/* 1159 */ 					cell.className += " disabled";
/* 1160 */ 					cell.disabled = true;
/* 1161 */ 				} else {
/* 1162 */ 					if (/disabled/i.test(status))
/* 1163 */ 						cell.disabled = true;
/* 1164 */ 					cell.className += " " + status;
/* 1165 */ 				}
/* 1166 */ 			}
/* 1167 */ 			if (!cell.disabled) {
/* 1168 */ 				cell.caldate = new Date(date);
/* 1169 */ 				cell.ttip = "_";
/* 1170 */ 				if (!this.multiple && current_month
/* 1171 */ 				    && iday == mday && this.hiliteToday) {
/* 1172 */ 					cell.className += " selected";
/* 1173 */ 					this.currentDateEl = cell;
/* 1174 */ 				}
/* 1175 */ 				if (date.getFullYear() == TY &&
/* 1176 */ 				    date.getMonth() == TM &&
/* 1177 */ 				    iday == TD) {
/* 1178 */ 					cell.className += " today";
/* 1179 */ 					cell.ttip += Calendar._TT["PART_TODAY"];
/* 1180 */ 				}
/* 1181 */ 				if (weekend.indexOf(wday.toString()) != -1)
/* 1182 */ 					cell.className += cell.otherMonth ? " oweekend" : " weekend";
/* 1183 */ 			}
/* 1184 */ 		}
/* 1185 */ 		if (!(hasdays || this.showsOtherMonths))
/* 1186 */ 			row.className = "emptyrow";
/* 1187 */ 	}
/* 1188 */ 	this.title.innerHTML = Calendar._MN[month] + ", " + year;
/* 1189 */ 	this.onSetTime();
/* 1190 */ 	this.table.style.visibility = "visible";
/* 1191 */ 	this._initMultipleDates();
/* 1192 */ 	// PROFILE
/* 1193 */ 	// this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms";
/* 1194 */ };
/* 1195 */ 
/* 1196 */ Calendar.prototype._initMultipleDates = function() {
/* 1197 */ 	if (this.multiple) {
/* 1198 */ 		for (var i in this.multiple) {
/* 1199 */ 			var cell = this.datesCells[i];
/* 1200 */ 			var d = this.multiple[i];

/* calendar.js */

/* 1201 */ 			if (!d)
/* 1202 */ 				continue;
/* 1203 */ 			if (cell)
/* 1204 */ 				cell.className += " selected";
/* 1205 */ 		}
/* 1206 */ 	}
/* 1207 */ };
/* 1208 */ 
/* 1209 */ Calendar.prototype._toggleMultipleDate = function(date) {
/* 1210 */ 	if (this.multiple) {
/* 1211 */ 		var ds = date.print("%Y%m%d");
/* 1212 */ 		var cell = this.datesCells[ds];
/* 1213 */ 		if (cell) {
/* 1214 */ 			var d = this.multiple[ds];
/* 1215 */ 			if (!d) {
/* 1216 */ 				Calendar.addClass(cell, "selected");
/* 1217 */ 				this.multiple[ds] = date;
/* 1218 */ 			} else {
/* 1219 */ 				Calendar.removeClass(cell, "selected");
/* 1220 */ 				delete this.multiple[ds];
/* 1221 */ 			}
/* 1222 */ 		}
/* 1223 */ 	}
/* 1224 */ };
/* 1225 */ 
/* 1226 */ Calendar.prototype.setDateToolTipHandler = function (unaryFunction) {
/* 1227 */ 	this.getDateToolTip = unaryFunction;
/* 1228 */ };
/* 1229 */ 
/* 1230 */ /**
/* 1231 *|  *  Calls _init function above for going to a certain date (but only if the
/* 1232 *|  *  date is different than the currently selected one).
/* 1233 *|  */
/* 1234 */ Calendar.prototype.setDate = function (date) {
/* 1235 */ 	if (!date.equalsTo(this.date)) {
/* 1236 */ 		this._init(this.firstDayOfWeek, date);
/* 1237 */ 	}
/* 1238 */ };
/* 1239 */ 
/* 1240 */ /**
/* 1241 *|  *  Refreshes the calendar.  Useful if the "disabledHandler" function is
/* 1242 *|  *  dynamic, meaning that the list of disabled date can change at runtime.
/* 1243 *|  *  Just * call this function if you think that the list of disabled dates
/* 1244 *|  *  should * change.
/* 1245 *|  */
/* 1246 */ Calendar.prototype.refresh = function () {
/* 1247 */ 	this._init(this.firstDayOfWeek, this.date);
/* 1248 */ };
/* 1249 */ 
/* 1250 */ /** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */

/* calendar.js */

/* 1251 */ Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {
/* 1252 */ 	this._init(firstDayOfWeek, this.date);
/* 1253 */ 	this._displayWeekdays();
/* 1254 */ };
/* 1255 */ 
/* 1256 */ /**
/* 1257 *|  *  Allows customization of what dates are enabled.  The "unaryFunction"
/* 1258 *|  *  parameter must be a function object that receives the date (as a JS Date
/* 1259 *|  *  object) and returns a boolean value.  If the returned value is true then
/* 1260 *|  *  the passed date will be marked as disabled.
/* 1261 *|  */
/* 1262 */ Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) {
/* 1263 */ 	this.getDateStatus = unaryFunction;
/* 1264 */ };
/* 1265 */ 
/* 1266 */ /** Customization of allowed year range for the calendar. */
/* 1267 */ Calendar.prototype.setRange = function (a, z) {
/* 1268 */ 	this.minYear = a;
/* 1269 */ 	this.maxYear = z;
/* 1270 */ };
/* 1271 */ 
/* 1272 */ /** Calls the first user handler (selectedHandler). */
/* 1273 */ Calendar.prototype.callHandler = function () {
/* 1274 */ 	if (this.onSelected) {
/* 1275 */ 		this.onSelected(this, this.date.print(this.dateFormat));
/* 1276 */ 	}
/* 1277 */ };
/* 1278 */ 
/* 1279 */ /** Calls the second user handler (closeHandler). */
/* 1280 */ Calendar.prototype.callCloseHandler = function () {
/* 1281 */ 	if (this.onClose) {
/* 1282 */ 		this.onClose(this);
/* 1283 */ 	}
/* 1284 */ 	this.hideShowCovered();
/* 1285 */ };
/* 1286 */ 
/* 1287 */ /** Removes the calendar object from the DOM tree and destroys it. */
/* 1288 */ Calendar.prototype.destroy = function () {
/* 1289 */ 	var el = this.element.parentNode;
/* 1290 */ 	el.removeChild(this.element);
/* 1291 */ 	Calendar._C = null;
/* 1292 */ 	window._dynarch_popupCalendar = null;
/* 1293 */ };
/* 1294 */ 
/* 1295 */ /**
/* 1296 *|  *  Moves the calendar element to a different section in the DOM tree (changes
/* 1297 *|  *  its parent).
/* 1298 *|  */
/* 1299 */ Calendar.prototype.reparent = function (new_parent) {
/* 1300 */ 	var el = this.element;

/* calendar.js */

/* 1301 */ 	el.parentNode.removeChild(el);
/* 1302 */ 	new_parent.appendChild(el);
/* 1303 */ };
/* 1304 */ 
/* 1305 */ // This gets called when the user presses a mouse button anywhere in the
/* 1306 */ // document, if the calendar is shown.  If the click was outside the open
/* 1307 */ // calendar this function closes it.
/* 1308 */ Calendar._checkCalendar = function(ev) {
/* 1309 */ 	var calendar = window._dynarch_popupCalendar;
/* 1310 */ 	if (!calendar) {
/* 1311 */ 		return false;
/* 1312 */ 	}
/* 1313 */ 	var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
/* 1314 */ 	for (; el != null && el != calendar.element; el = el.parentNode);
/* 1315 */ 	if (el == null) {
/* 1316 */ 		// calls closeHandler which should hide the calendar.
/* 1317 */ 		window._dynarch_popupCalendar.callCloseHandler();
/* 1318 */ 		return Calendar.stopEvent(ev);
/* 1319 */ 	}
/* 1320 */ };
/* 1321 */ 
/* 1322 */ /** Shows the calendar. */
/* 1323 */ Calendar.prototype.show = function () {
/* 1324 */ 	var rows = this.table.getElementsByTagName("tr");
/* 1325 */ 	for (var i = rows.length; i > 0;) {
/* 1326 */ 		var row = rows[--i];
/* 1327 */ 		Calendar.removeClass(row, "rowhilite");
/* 1328 */ 		var cells = row.getElementsByTagName("td");
/* 1329 */ 		for (var j = cells.length; j > 0;) {
/* 1330 */ 			var cell = cells[--j];
/* 1331 */ 			Calendar.removeClass(cell, "hilite");
/* 1332 */ 			Calendar.removeClass(cell, "active");
/* 1333 */ 		}
/* 1334 */ 	}
/* 1335 */ 	this.element.style.display = "block";
/* 1336 */ 	this.hidden = false;
/* 1337 */ 	if (this.isPopup) {
/* 1338 */ 		window._dynarch_popupCalendar = this;
/* 1339 */ 		Calendar.addEvent(document, "keydown", Calendar._keyEvent);
/* 1340 */ 		Calendar.addEvent(document, "keypress", Calendar._keyEvent);
/* 1341 */ 		Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
/* 1342 */ 	}
/* 1343 */ 	this.hideShowCovered();
/* 1344 */ };
/* 1345 */ 
/* 1346 */ /**
/* 1347 *|  *  Hides the calendar.  Also removes any "hilite" from the class of any TD
/* 1348 *|  *  element.
/* 1349 *|  */
/* 1350 */ Calendar.prototype.hide = function () {

/* calendar.js */

/* 1351 */ 	if (this.isPopup) {
/* 1352 */ 		Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
/* 1353 */ 		Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
/* 1354 */ 		Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
/* 1355 */ 	}
/* 1356 */ 	this.element.style.display = "none";
/* 1357 */ 	this.hidden = true;
/* 1358 */ 	this.hideShowCovered();
/* 1359 */ };
/* 1360 */ 
/* 1361 */ /**
/* 1362 *|  *  Shows the calendar at a given absolute position (beware that, depending on
/* 1363 *|  *  the calendar element style -- position property -- this might be relative
/* 1364 *|  *  to the parent's containing rectangle).
/* 1365 *|  */
/* 1366 */ Calendar.prototype.showAt = function (x, y) {
/* 1367 */ 	var s = this.element.style;
/* 1368 */ 	s.left = x + "px";
/* 1369 */ 	s.top = y + "px";
/* 1370 */ 	this.show();
/* 1371 */ };
/* 1372 */ 
/* 1373 */ /** Shows the calendar near a given element. */
/* 1374 */ Calendar.prototype.showAtElement = function (el, opts) {
/* 1375 */ 	var self = this;
/* 1376 */ 	var p = Calendar.getAbsolutePos(el);
/* 1377 */ 	if (!opts || typeof opts != "string") {
/* 1378 */ 		this.showAt(p.x, p.y + el.offsetHeight);
/* 1379 */ 		return true;
/* 1380 */ 	}
/* 1381 */ 	function fixPosition(box) {
/* 1382 */ 		if (box.x < 0)
/* 1383 */ 			box.x = 0;
/* 1384 */ 		if (box.y < 0)
/* 1385 */ 			box.y = 0;
/* 1386 */ 		var cp = document.createElement("div");
/* 1387 */ 		var s = cp.style;
/* 1388 */ 		s.position = "absolute";
/* 1389 */ 		s.right = s.bottom = s.width = s.height = "0px";
/* 1390 */ 		document.body.appendChild(cp);
/* 1391 */ 		var br = Calendar.getAbsolutePos(cp);
/* 1392 */ 		document.body.removeChild(cp);
/* 1393 */ 		br.y += window.scrollY;
/* 1394 */ 		br.x += window.scrollX;
/* 1395 */ 		var tmp = box.x + box.width - br.x;
/* 1396 */ 		if (tmp > 0) box.x -= tmp;
/* 1397 */ 		tmp = box.y + box.height - br.y;
/* 1398 */ 		if (tmp > 0) box.y -= tmp;
/* 1399 */ 	};
/* 1400 */ 	this.element.style.display = "block";

/* calendar.js */

/* 1401 */ 	Calendar.continuation_for_khtml_browser = function() {
/* 1402 */ 		var w = self.element.offsetWidth;
/* 1403 */ 		var h = self.element.offsetHeight;
/* 1404 */ 		self.element.style.display = "none";
/* 1405 */ 		var valign = opts.substr(0, 1);
/* 1406 */ 		var halign = "l";
/* 1407 */ 		if (opts.length > 1) {
/* 1408 */ 			halign = opts.substr(1, 1);
/* 1409 */ 		}
/* 1410 */ 		// vertical alignment
/* 1411 */ 		switch (valign) {
/* 1412 */ 		    case "T": p.y -= h; break;
/* 1413 */ 		    case "B": p.y += el.offsetHeight; break;
/* 1414 */ 		    case "C": p.y += (el.offsetHeight - h) / 2; break;
/* 1415 */ 		    case "t": p.y += el.offsetHeight - h; break;
/* 1416 */ 		    case "b": break; // already there
/* 1417 */ 		}
/* 1418 */ 		// horizontal alignment
/* 1419 */ 		switch (halign) {
/* 1420 */ 		    case "L": p.x -= w; break;
/* 1421 */ 		    case "R": p.x += el.offsetWidth; break;
/* 1422 */ 		    case "C": p.x += (el.offsetWidth - w) / 2; break;
/* 1423 */ 		    case "l": p.x += el.offsetWidth - w; break;
/* 1424 */ 		    case "r": break; // already there
/* 1425 */ 		}
/* 1426 */ 		p.width = w;
/* 1427 */ 		p.height = h + 40;
/* 1428 */ 		self.monthsCombo.style.display = "none";
/* 1429 */ 		fixPosition(p);
/* 1430 */ 		self.showAt(p.x, p.y);
/* 1431 */ 	};
/* 1432 */ 	if (Calendar.is_khtml)
/* 1433 */ 		setTimeout("Calendar.continuation_for_khtml_browser()", 10);
/* 1434 */ 	else
/* 1435 */ 		Calendar.continuation_for_khtml_browser();
/* 1436 */ };
/* 1437 */ 
/* 1438 */ /** Customizes the date format. */
/* 1439 */ Calendar.prototype.setDateFormat = function (str) {
/* 1440 */ 	this.dateFormat = str;
/* 1441 */ };
/* 1442 */ 
/* 1443 */ /** Customizes the tooltip date format. */
/* 1444 */ Calendar.prototype.setTtDateFormat = function (str) {
/* 1445 */ 	this.ttDateFormat = str;
/* 1446 */ };
/* 1447 */ 
/* 1448 */ /**
/* 1449 *|  *  Tries to identify the date represented in a string.  If successful it also
/* 1450 *|  *  calls this.setDate which moves the calendar to the given date.

/* calendar.js */

/* 1451 *|  */
/* 1452 */ Calendar.prototype.parseDate = function(str, fmt) {
/* 1453 */ 	if (!fmt)
/* 1454 */ 		fmt = this.dateFormat;
/* 1455 */ 	this.setDate(Date.parseDate(str, fmt));
/* 1456 */ };
/* 1457 */ 
/* 1458 */ Calendar.prototype.hideShowCovered = function () {
/* 1459 */ 	if (!Calendar.is_ie && !Calendar.is_opera)
/* 1460 */ 		return;
/* 1461 */ 	function getVisib(obj){
/* 1462 */ 		var value = obj.style.visibility;
/* 1463 */ 		if (!value) {
/* 1464 */ 			if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
/* 1465 */ 				if (!Calendar.is_khtml)
/* 1466 */ 					value = document.defaultView.
/* 1467 */ 						getComputedStyle(obj, "").getPropertyValue("visibility");
/* 1468 */ 				else
/* 1469 */ 					value = '';
/* 1470 */ 			} else if (obj.currentStyle) { // IE
/* 1471 */ 				value = obj.currentStyle.visibility;
/* 1472 */ 			} else
/* 1473 */ 				value = '';
/* 1474 */ 		}
/* 1475 */ 		return value;
/* 1476 */ 	};
/* 1477 */ 
/* 1478 */ 	var tags = new Array("applet", "iframe", "select");
/* 1479 */ 	var el = this.element;
/* 1480 */ 
/* 1481 */ 	var p = Calendar.getAbsolutePos(el);
/* 1482 */ 	var EX1 = p.x;
/* 1483 */ 	var EX2 = el.offsetWidth + EX1;
/* 1484 */ 	var EY1 = p.y;
/* 1485 */ 	var EY2 = el.offsetHeight + EY1;
/* 1486 */ 
/* 1487 */ 	for (var k = tags.length; k > 0; ) {
/* 1488 */ 		var ar = document.getElementsByTagName(tags[--k]);
/* 1489 */ 		var cc = null;
/* 1490 */ 
/* 1491 */ 		for (var i = ar.length; i > 0;) {
/* 1492 */ 			cc = ar[--i];
/* 1493 */ 
/* 1494 */ 			p = Calendar.getAbsolutePos(cc);
/* 1495 */ 			var CX1 = p.x;
/* 1496 */ 			var CX2 = cc.offsetWidth + CX1;
/* 1497 */ 			var CY1 = p.y;
/* 1498 */ 			var CY2 = cc.offsetHeight + CY1;
/* 1499 */ 
/* 1500 */ 			if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {

/* calendar.js */

/* 1501 */ 				if (!cc.__msh_save_visibility) {
/* 1502 */ 					cc.__msh_save_visibility = getVisib(cc);
/* 1503 */ 				}
/* 1504 */ 				cc.style.visibility = cc.__msh_save_visibility;
/* 1505 */ 			} else {
/* 1506 */ 				if (!cc.__msh_save_visibility) {
/* 1507 */ 					cc.__msh_save_visibility = getVisib(cc);
/* 1508 */ 				}
/* 1509 */ 				cc.style.visibility = "hidden";
/* 1510 */ 			}
/* 1511 */ 		}
/* 1512 */ 	}
/* 1513 */ };
/* 1514 */ 
/* 1515 */ /** Internal function; it displays the bar with the names of the weekday. */
/* 1516 */ Calendar.prototype._displayWeekdays = function () {
/* 1517 */ 	var fdow = this.firstDayOfWeek;
/* 1518 */ 	var cell = this.firstdayname;
/* 1519 */ 	var weekend = Calendar._TT["WEEKEND"];
/* 1520 */ 	for (var i = 0; i < 7; ++i) {
/* 1521 */ 		cell.className = "day name";
/* 1522 */ 		var realday = (i + fdow) % 7;
/* 1523 */ 		if (i) {
/* 1524 */ 			cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]);
/* 1525 */ 			cell.navtype = 100;
/* 1526 */ 			cell.calendar = this;
/* 1527 */ 			cell.fdow = realday;
/* 1528 */ 			Calendar._add_evs(cell);
/* 1529 */ 		}
/* 1530 */ 		if (weekend.indexOf(realday.toString()) != -1) {
/* 1531 */ 			Calendar.addClass(cell, "weekend");
/* 1532 */ 		}
/* 1533 */ 		cell.innerHTML = Calendar._SDN[(i + fdow) % 7];
/* 1534 */ 		cell = cell.nextSibling;
/* 1535 */ 	}
/* 1536 */ };
/* 1537 */ 
/* 1538 */ /** Internal function.  Hides all combo boxes that might be displayed. */
/* 1539 */ Calendar.prototype._hideCombos = function () {
/* 1540 */ 	this.monthsCombo.style.display = "none";
/* 1541 */ 	this.yearsCombo.style.display = "none";
/* 1542 */ };
/* 1543 */ 
/* 1544 */ /** Internal function.  Starts dragging the element. */
/* 1545 */ Calendar.prototype._dragStart = function (ev) {
/* 1546 */ 	if (this.dragging) {
/* 1547 */ 		return;
/* 1548 */ 	}
/* 1549 */ 	this.dragging = true;
/* 1550 */ 	var posX;

/* calendar.js */

/* 1551 */ 	var posY;
/* 1552 */ 	if (Calendar.is_ie) {
/* 1553 */ 		posY = window.event.clientY + document.body.scrollTop;
/* 1554 */ 		posX = window.event.clientX + document.body.scrollLeft;
/* 1555 */ 	} else {
/* 1556 */ 		posY = ev.clientY + window.scrollY;
/* 1557 */ 		posX = ev.clientX + window.scrollX;
/* 1558 */ 	}
/* 1559 */ 	var st = this.element.style;
/* 1560 */ 	this.xOffs = posX - parseInt(st.left);
/* 1561 */ 	this.yOffs = posY - parseInt(st.top);
/* 1562 */ 	with (Calendar) {
/* 1563 */ 		addEvent(document, "mousemove", calDragIt);
/* 1564 */ 		addEvent(document, "mouseup", calDragEnd);
/* 1565 */ 	}
/* 1566 */ };
/* 1567 */ 
/* 1568 */ // BEGIN: DATE OBJECT PATCHES
/* 1569 */ 
/* 1570 */ /** Adds the number of days array to the Date object. */
/* 1571 */ Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
/* 1572 */ 
/* 1573 */ /** Constants used for time computations */
/* 1574 */ Date.SECOND = 1000 /* milliseconds */;
/* 1575 */ Date.MINUTE = 60 * Date.SECOND;
/* 1576 */ Date.HOUR   = 60 * Date.MINUTE;
/* 1577 */ Date.DAY    = 24 * Date.HOUR;
/* 1578 */ Date.WEEK   =  7 * Date.DAY;
/* 1579 */ 
/* 1580 */ Date.parseDate = function(str, fmt) {
/* 1581 */ 	var today = new Date();
/* 1582 */ 	var y = 0;
/* 1583 */ 	var m = -1;
/* 1584 */ 	var d = 0;
/* 1585 */ 	var a = str.split(/\W+/);
/* 1586 */ 	var b = fmt.match(/%./g);
/* 1587 */ 	var i = 0, j = 0;
/* 1588 */ 	var hr = 0;
/* 1589 */ 	var min = 0;
/* 1590 */ 	for (i = 0; i < a.length; ++i) {
/* 1591 */ 		if (!a[i])
/* 1592 */ 			continue;
/* 1593 */ 		switch (b[i]) {
/* 1594 */ 		    case "%d":
/* 1595 */ 		    case "%e":
/* 1596 */ 			d = parseInt(a[i], 10);
/* 1597 */ 			break;
/* 1598 */ 
/* 1599 */ 		    case "%m":
/* 1600 */ 			m = parseInt(a[i], 10) - 1;

/* calendar.js */

/* 1601 */ 			break;
/* 1602 */ 
/* 1603 */ 		    case "%Y":
/* 1604 */ 		    case "%y":
/* 1605 */ 			y = parseInt(a[i], 10);
/* 1606 */ 			(y < 100) && (y += (y > 29) ? 1900 : 2000);
/* 1607 */ 			break;
/* 1608 */ 
/* 1609 */ 		    case "%b":
/* 1610 */ 		    case "%B":
/* 1611 */ 			for (j = 0; j < 12; ++j) {
/* 1612 */ 				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; }
/* 1613 */ 			}
/* 1614 */ 			break;
/* 1615 */ 
/* 1616 */ 		    case "%H":
/* 1617 */ 		    case "%I":
/* 1618 */ 		    case "%k":
/* 1619 */ 		    case "%l":
/* 1620 */ 			hr = parseInt(a[i], 10);
/* 1621 */ 			break;
/* 1622 */ 
/* 1623 */ 		    case "%P":
/* 1624 */ 		    case "%p":
/* 1625 */ 			if (/pm/i.test(a[i]) && hr < 12)
/* 1626 */ 				hr += 12;
/* 1627 */ 			else if (/am/i.test(a[i]) && hr >= 12)
/* 1628 */ 				hr -= 12;
/* 1629 */ 			break;
/* 1630 */ 
/* 1631 */ 		    case "%M":
/* 1632 */ 			min = parseInt(a[i], 10);
/* 1633 */ 			break;
/* 1634 */ 		}
/* 1635 */ 	}
/* 1636 */ 	if (isNaN(y)) y = today.getFullYear();
/* 1637 */ 	if (isNaN(m)) m = today.getMonth();
/* 1638 */ 	if (isNaN(d)) d = today.getDate();
/* 1639 */ 	if (isNaN(hr)) hr = today.getHours();
/* 1640 */ 	if (isNaN(min)) min = today.getMinutes();
/* 1641 */ 	if (y != 0 && m != -1 && d != 0)
/* 1642 */ 		return new Date(y, m, d, hr, min, 0);
/* 1643 */ 	y = 0; m = -1; d = 0;
/* 1644 */ 	for (i = 0; i < a.length; ++i) {
/* 1645 */ 		if (a[i].search(/[a-zA-Z]+/) != -1) {
/* 1646 */ 			var t = -1;
/* 1647 */ 			for (j = 0; j < 12; ++j) {
/* 1648 */ 				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; }
/* 1649 */ 			}
/* 1650 */ 			if (t != -1) {

/* calendar.js */

/* 1651 */ 				if (m != -1) {
/* 1652 */ 					d = m+1;
/* 1653 */ 				}
/* 1654 */ 				m = t;
/* 1655 */ 			}
/* 1656 */ 		} else if (parseInt(a[i], 10) <= 12 && m == -1) {
/* 1657 */ 			m = a[i]-1;
/* 1658 */ 		} else if (parseInt(a[i], 10) > 31 && y == 0) {
/* 1659 */ 			y = parseInt(a[i], 10);
/* 1660 */ 			(y < 100) && (y += (y > 29) ? 1900 : 2000);
/* 1661 */ 		} else if (d == 0) {
/* 1662 */ 			d = a[i];
/* 1663 */ 		}
/* 1664 */ 	}
/* 1665 */ 	if (y == 0)
/* 1666 */ 		y = today.getFullYear();
/* 1667 */ 	if (m != -1 && d != 0)
/* 1668 */ 		return new Date(y, m, d, hr, min, 0);
/* 1669 */ 	return today;
/* 1670 */ };
/* 1671 */ 
/* 1672 */ /** Returns the number of days in the current month */
/* 1673 */ Date.prototype.getMonthDays = function(month) {
/* 1674 */ 	var year = this.getFullYear();
/* 1675 */ 	if (typeof month == "undefined") {
/* 1676 */ 		month = this.getMonth();
/* 1677 */ 	}
/* 1678 */ 	if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
/* 1679 */ 		return 29;
/* 1680 */ 	} else {
/* 1681 */ 		return Date._MD[month];
/* 1682 */ 	}
/* 1683 */ };
/* 1684 */ 
/* 1685 */ /** Returns the number of day in the year. */
/* 1686 */ Date.prototype.getDayOfYear = function() {
/* 1687 */ 	var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
/* 1688 */ 	var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
/* 1689 */ 	var time = now - then;
/* 1690 */ 	return Math.floor(time / Date.DAY);
/* 1691 */ };
/* 1692 */ 
/* 1693 */ /** Returns the number of the week in year, as defined in ISO 8601. */
/* 1694 */ Date.prototype.getWeekNumber = function() {
/* 1695 */ 	var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
/* 1696 */ 	var DoW = d.getDay();
/* 1697 */ 	d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu
/* 1698 */ 	var ms = d.valueOf(); // GMT
/* 1699 */ 	d.setMonth(0);
/* 1700 */ 	d.setDate(4); // Thu in Week 1

/* calendar.js */

/* 1701 */ 	return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
/* 1702 */ };
/* 1703 */ 
/* 1704 */ /** Checks date and time equality */
/* 1705 */ Date.prototype.equalsTo = function(date) {
/* 1706 */ 	return ((this.getFullYear() == date.getFullYear()) &&
/* 1707 */ 		(this.getMonth() == date.getMonth()) &&
/* 1708 */ 		(this.getDate() == date.getDate()) &&
/* 1709 */ 		(this.getHours() == date.getHours()) &&
/* 1710 */ 		(this.getMinutes() == date.getMinutes()));
/* 1711 */ };
/* 1712 */ 
/* 1713 */ /** Set only the year, month, date parts (keep existing time) */
/* 1714 */ Date.prototype.setDateOnly = function(date) {
/* 1715 */ 	var tmp = new Date(date);
/* 1716 */ 	this.setDate(1);
/* 1717 */ 	this.setFullYear(tmp.getFullYear());
/* 1718 */ 	this.setMonth(tmp.getMonth());
/* 1719 */ 	this.setDate(tmp.getDate());
/* 1720 */ };
/* 1721 */ 
/* 1722 */ /** Prints the date in a string according to the given format. */
/* 1723 */ Date.prototype.print = function (str) {
/* 1724 */ 	var m = this.getMonth();
/* 1725 */ 	var d = this.getDate();
/* 1726 */ 	var y = this.getFullYear();
/* 1727 */ 	var wn = this.getWeekNumber();
/* 1728 */ 	var w = this.getDay();
/* 1729 */ 	var s = {};
/* 1730 */ 	var hr = this.getHours();
/* 1731 */ 	var pm = (hr >= 12);
/* 1732 */ 	var ir = (pm) ? (hr - 12) : hr;
/* 1733 */ 	var dy = this.getDayOfYear();
/* 1734 */ 	if (ir == 0)
/* 1735 */ 		ir = 12;
/* 1736 */ 	var min = this.getMinutes();
/* 1737 */ 	var sec = this.getSeconds();
/* 1738 */ 	s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N]
/* 1739 */ 	s["%A"] = Calendar._DN[w]; // full weekday name
/* 1740 */ 	s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N]
/* 1741 */ 	s["%B"] = Calendar._MN[m]; // full month name
/* 1742 */ 	// FIXME: %c : preferred date and time representation for the current locale
/* 1743 */ 	s["%C"] = 1 + Math.floor(y / 100); // the century number
/* 1744 */ 	s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31)
/* 1745 */ 	s["%e"] = d; // the day of the month (range 1 to 31)
/* 1746 */ 	// FIXME: %D : american date style: %m/%d/%y
/* 1747 */ 	// FIXME: %E, %F, %G, %g, %h (man strftime)
/* 1748 */ 	s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format)
/* 1749 */ 	s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format)
/* 1750 */ 	s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366)

/* calendar.js */

/* 1751 */ 	s["%k"] = hr;		// hour, range 0 to 23 (24h format)
/* 1752 */ 	s["%l"] = ir;		// hour, range 1 to 12 (12h format)
/* 1753 */ 	s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12
/* 1754 */ 	s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59
/* 1755 */ 	s["%n"] = "\n";		// a newline character
/* 1756 */ 	s["%p"] = pm ? "PM" : "AM";
/* 1757 */ 	s["%P"] = pm ? "pm" : "am";
/* 1758 */ 	// FIXME: %r : the time in am/pm notation %I:%M:%S %p
/* 1759 */ 	// FIXME: %R : the time in 24-hour notation %H:%M
/* 1760 */ 	s["%s"] = Math.floor(this.getTime() / 1000);
/* 1761 */ 	s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59
/* 1762 */ 	s["%t"] = "\t";		// a tab character
/* 1763 */ 	// FIXME: %T : the time in 24-hour notation (%H:%M:%S)
/* 1764 */ 	s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn;
/* 1765 */ 	s["%u"] = w + 1;	// the day of the week (range 1 to 7, 1 = MON)
/* 1766 */ 	s["%w"] = w;		// the day of the week (range 0 to 6, 0 = SUN)
/* 1767 */ 	// FIXME: %x : preferred date representation for the current locale without the time
/* 1768 */ 	// FIXME: %X : preferred time representation for the current locale without the date
/* 1769 */ 	s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99)
/* 1770 */ 	s["%Y"] = y;		// year with the century
/* 1771 */ 	s["%%"] = "%";		// a literal '%' character
/* 1772 */ 
/* 1773 */ 	var re = /%./g;
/* 1774 */ 	if (!Calendar.is_ie5 && !Calendar.is_khtml)
/* 1775 */ 		return str.replace(re, function (par) { return s[par] || par; });
/* 1776 */ 
/* 1777 */ 	var a = str.match(re);
/* 1778 */ 	for (var i = 0; i < a.length; i++) {
/* 1779 */ 		var tmp = s[a[i]];
/* 1780 */ 		if (tmp) {
/* 1781 */ 			re = new RegExp(a[i], 'g');
/* 1782 */ 			str = str.replace(re, tmp);
/* 1783 */ 		}
/* 1784 */ 	}
/* 1785 */ 
/* 1786 */ 	return str;
/* 1787 */ };
/* 1788 */ 
/* 1789 */ Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
/* 1790 */ Date.prototype.setFullYear = function(y) {
/* 1791 */ 	var d = new Date(this);
/* 1792 */ 	d.__msh_oldSetFullYear(y);
/* 1793 */ 	if (d.getMonth() != this.getMonth())
/* 1794 */ 		this.setDate(28);
/* 1795 */ 	this.__msh_oldSetFullYear(y);
/* 1796 */ };
/* 1797 */ 
/* 1798 */ // END: DATE OBJECT PATCHES
/* 1799 */ 
/* 1800 */ 

/* calendar.js */

/* 1801 */ // global object that remembers the calendar
/* 1802 */ window._dynarch_popupCalendar = null;
/* 1803 */ 
/* 1804 */ 
/* 1805 */ function selectDate(cal) {
/* 1806 */ 	var p = cal.params;
/* 1807 */ 	var update = (cal.dateClicked || p.electric);
/* 1808 */ 	year = p.inputField.id;
/* 1809 */ 	
/* 1810 */ 	day = p.baseField + '_2';
/* 1811 */ 	month = p.baseField + '_1';
/* 1812 */ 	
/* 1813 */ 	document.getElementById(month).value = cal.date.print('%m');
/* 1814 */ 	document.getElementById(day).value = cal.date.print('%e');
/* 1815 */ 	document.getElementById(year).value = cal.date.print('%Y');
/* 1816 */ }
/* 1817 */ 
/* 1818 */ function selectEuropeDate(cal) {
/* 1819 */ 	var p = cal.params;
/* 1820 */ 	var update = (cal.dateClicked || p.electric);
/* 1821 */ 	year = p.inputField.id;
/* 1822 */ 	
/* 1823 */ 	day = p.baseField + '_1';
/* 1824 */ 	month = p.baseField + '_2';
/* 1825 */ 	
/* 1826 */ 	document.getElementById(month).value = cal.date.print('%m');
/* 1827 */ 	document.getElementById(day).value = cal.date.print('%e');
/* 1828 */ 	document.getElementById(year).value = cal.date.print('%Y');
/* 1829 */ }
/* 1830 */ 
/* 1831 */ // ** I18N
/* 1832 */ 
/* 1833 */ // Calendar EN language
/* 1834 */ // Author: Mihai Bazon, <mihai_bazon@yahoo.com>
/* 1835 */ // Encoding: any
/* 1836 */ // Distributed under the same terms as the calendar itself.
/* 1837 */ 
/* 1838 */ // full day names
/* 1839 */ Calendar._DN = new Array
/* 1840 */ ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
/* 1841 */ 
/* 1842 */ // short day names
/* 1843 */ Calendar._SDN = new Array
/* 1844 */ ("S", "M", "T", "W", "T", "F", "S", "S");
/* 1845 */ 
/* 1846 */ // First day of the week. "0" means display Sunday first, "1" means display
/* 1847 */ // Monday first, etc.
/* 1848 */ Calendar._FD = 0;
/* 1849 */ 
/* 1850 */ // full month names

/* calendar.js */

/* 1851 */ Calendar._MN = new Array
/* 1852 */ ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
/* 1853 */ 
/* 1854 */ // short month names
/* 1855 */ Calendar._SMN = new Array
/* 1856 */ ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
/* 1857 */ 
/* 1858 */ // tooltips
/* 1859 */ Calendar._TT = {};
/* 1860 */ Calendar._TT["INFO"] = "About the Calendar";
/* 1861 */ 
/* 1862 */ Calendar._TT["ABOUT"] =
/* 1863 */ "DHTML Date/Time Selector\n" +
/* 1864 */ "(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this ;-)
/* 1865 */ "For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
/* 1866 */ "Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
/* 1867 */ "\n\n" +
/* 1868 */ "Date selection:\n" +
/* 1869 */ "- Use the \xab, \xbb buttons to select year\n" +
/* 1870 */ "- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
/* 1871 */ "- Hold mouse button on any of the above buttons for faster selection.";
/* 1872 */ Calendar._TT["ABOUT_TIME"] = "\n\n" +
/* 1873 */ "Time selection:\n" +
/* 1874 */ "- Click on any of the time parts to increase it\n" +
/* 1875 */ "- or Shift-click to decrease it\n" +
/* 1876 */ "- or click and drag for faster selection.";
/* 1877 */ 
/* 1878 */ Calendar._TT["PREV_YEAR"] = "Prev. Year (Hold for Menu)";
/* 1879 */ Calendar._TT["PREV_MONTH"] = "Prev. Month (Hold for Menu)";
/* 1880 */ Calendar._TT["GO_TODAY"] = "Go to Today";
/* 1881 */ Calendar._TT["NEXT_MONTH"] = "Next Month (Hold for Menu)";
/* 1882 */ Calendar._TT["NEXT_YEAR"] = "Next Year (Hold for Menu)";
/* 1883 */ Calendar._TT["SEL_DATE"] = "Select Date";
/* 1884 */ Calendar._TT["DRAG_TO_MOVE"] = "Drag to Move";
/* 1885 */ Calendar._TT["PART_TODAY"] = " (Today)";
/* 1886 */ 
/* 1887 */ // the following is to inform that "%s" is to be the first day of week
/* 1888 */ // %s will be replaced with the day name.
/* 1889 */ Calendar._TT["DAY_FIRST"] = "Display %ss first";
/* 1890 */ 
/* 1891 */ // This may be locale-dependent.  It specifies the week-end days, as an array
/* 1892 */ // of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
/* 1893 */ // means Monday, etc.
/* 1894 */ Calendar._TT["WEEKEND"] = "0,6";
/* 1895 */ 
/* 1896 */ Calendar._TT["CLOSE"] = "Close Calendar";
/* 1897 */ Calendar._TT["TODAY"] = "Today";
/* 1898 */ Calendar._TT["TIME_PART"] = "(Shift-)Click or Drag to Change Value";
/* 1899 */ 
/* 1900 */ // date formats

/* calendar.js */

/* 1901 */ Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
/* 1902 */ Calendar._TT["TT_DATE_FORMAT"] = "%b %e, %Y";
/* 1903 */ 
/* 1904 */ Calendar._TT["WK"] = "wk";
/* 1905 */ Calendar._TT["TIME"] = "Time:";
/* 1906 */ /*  Copyright Mihai Bazon, 2002, 2003  |  http://dynarch.com/mishoo/
/* 1907 *|  * ---------------------------------------------------------------------------
/* 1908 *|  *
/* 1909 *|  * The DHTML Calendar
/* 1910 *|  *
/* 1911 *|  * Details and latest version at:
/* 1912 *|  * http://dynarch.com/mishoo/calendar.epl
/* 1913 *|  *
/* 1914 *|  * This script is distributed under the GNU Lesser General Public License.
/* 1915 *|  * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
/* 1916 *|  *
/* 1917 *|  */
/* 1918 */ 
/* 1919 */ // $Id: calendar-setup.js,v 1.25 2005/03/07 09:51:33 mishoo Exp $
/* 1920 */ 
/* 1921 */ Calendar.setup = function (params) {
/* 1922 */ 	function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
/* 1923 */ 
/* 1924 */ 	param_default("inputField",     null);
/* 1925 */ 	param_default("displayArea",    null);
/* 1926 */ 	param_default("button",         null);
/* 1927 */ 	param_default("eventName",      "click");
/* 1928 */ 	param_default("ifFormat",       "%Y/%m/%d");
/* 1929 */ 	param_default("daFormat",       "%Y/%m/%d");
/* 1930 */ 	param_default("singleClick",    true);
/* 1931 */ 	param_default("disableFunc",    null);
/* 1932 */ 	param_default("dateStatusFunc", params["disableFunc"]);	// takes precedence if both are defined
/* 1933 */ 	param_default("dateText",       null);
/* 1934 */ 	param_default("firstDay",       null);
/* 1935 */ 	param_default("align",          "BR");
/* 1936 */ 	param_default("range",          [1900, 2999]);
/* 1937 */ 	param_default("weekNumbers",    false);
/* 1938 */ 	param_default("flat",           null);
/* 1939 */ 	param_default("flatCallback",   null);
/* 1940 */ 	param_default("onSelect",       null);
/* 1941 */ 	param_default("onClose",        null);
/* 1942 */ 	param_default("onUpdate",       null);
/* 1943 */ 	param_default("date",           null);
/* 1944 */ 	param_default("showsTime",      false);
/* 1945 */ 	param_default("timeFormat",     "24");
/* 1946 */ 	param_default("electric",       true);
/* 1947 */ 	param_default("step",           2);
/* 1948 */ 	param_default("position",       null);
/* 1949 */ 	param_default("cache",          false);
/* 1950 */ 	param_default("showOthers",     false);

/* calendar.js */

/* 1951 */ 	param_default("multiple",       null);
/* 1952 */ 
/* 1953 */ 	var tmp = ["inputField", "displayArea", "button"];
/* 1954 */ 	for (var i in tmp) {
/* 1955 */ 		if (typeof params[tmp[i]] == "string") {
/* 1956 */ 			params[tmp[i]] = document.getElementById(params[tmp[i]]);
/* 1957 */ 		}
/* 1958 */ 	}
/* 1959 */ 	if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
/* 1960 */ 		alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");
/* 1961 */ 		return false;
/* 1962 */ 	}
/* 1963 */ 
/* 1964 */ 	function onSelect(cal) {
/* 1965 */ 		var p = cal.params;
/* 1966 */ 		var update = (cal.dateClicked || p.electric);
/* 1967 */ 		if (update && p.inputField) {
/* 1968 */ 			p.inputField.value = cal.date.print(p.ifFormat);
/* 1969 */ 			if (typeof p.inputField.onchange == "function")
/* 1970 */ 				p.inputField.onchange();
/* 1971 */ 		}
/* 1972 */ 		if (update && p.displayArea)
/* 1973 */ 			p.displayArea.innerHTML = cal.date.print(p.daFormat);
/* 1974 */ 		if (update && typeof p.onUpdate == "function")
/* 1975 */ 			p.onUpdate(cal);
/* 1976 */ 		if (update && p.flat) {
/* 1977 */ 			if (typeof p.flatCallback == "function")
/* 1978 */ 				p.flatCallback(cal);
/* 1979 */ 		}
/* 1980 */ 		if (update && p.singleClick && cal.dateClicked)
/* 1981 */ 			cal.callCloseHandler();
/* 1982 */ 	};
/* 1983 */ 
/* 1984 */ 	if (params.flat != null) {
/* 1985 */ 		if (typeof params.flat == "string")
/* 1986 */ 			params.flat = document.getElementById(params.flat);
/* 1987 */ 		if (!params.flat) {
/* 1988 */ 			alert("Calendar.setup:\n  Flat specified but can't find parent.");
/* 1989 */ 			return false;
/* 1990 */ 		}
/* 1991 */ 		var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
/* 1992 */ 		cal.showsOtherMonths = params.showOthers;
/* 1993 */ 		cal.showsTime = params.showsTime;
/* 1994 */ 		cal.time24 = (params.timeFormat == "24");
/* 1995 */ 		cal.params = params;
/* 1996 */ 		cal.weekNumbers = params.weekNumbers;
/* 1997 */ 		cal.setRange(params.range[0], params.range[1]);
/* 1998 */ 		cal.setDateStatusHandler(params.dateStatusFunc);
/* 1999 */ 		cal.getDateText = params.dateText;
/* 2000 */ 		if (params.ifFormat) {

/* calendar.js */

/* 2001 */ 			cal.setDateFormat(params.ifFormat);
/* 2002 */ 		}
/* 2003 */ 		if (params.inputField && typeof params.inputField.value == "string") {
/* 2004 */ 			cal.parseDate(params.inputField.value);
/* 2005 */ 		}
/* 2006 */ 		cal.create(params.flat);
/* 2007 */ 		cal.show();
/* 2008 */ 		return false;
/* 2009 */ 	}
/* 2010 */ 
/* 2011 */ 	var triggerEl = params.button || params.displayArea || params.inputField;
/* 2012 */ 	triggerEl["on" + params.eventName] = function() {
/* 2013 */ 		var dateEl = params.inputField || params.displayArea;
/* 2014 */ 		var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
/* 2015 */ 		var mustCreate = false;
/* 2016 */ 		var cal = window.calendar;
/* 2017 */ 		if (dateEl)
/* 2018 */ 			params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
/* 2019 */ 		if (!(cal && params.cache)) {
/* 2020 */ 			window.calendar = cal = new Calendar(params.firstDay,
/* 2021 */ 							     params.date,
/* 2022 */ 							     params.onSelect || onSelect,
/* 2023 */ 							     params.onClose || function(cal) { cal.hide(); });
/* 2024 */ 			cal.showsTime = params.showsTime;
/* 2025 */ 			cal.time24 = (params.timeFormat == "24");
/* 2026 */ 			cal.weekNumbers = params.weekNumbers;
/* 2027 */ 			mustCreate = true;
/* 2028 */ 		} else {
/* 2029 */ 			if (params.date)
/* 2030 */ 				cal.setDate(params.date);
/* 2031 */ 			cal.hide();
/* 2032 */ 		}
/* 2033 */ 		if (params.multiple) {
/* 2034 */ 			cal.multiple = {};
/* 2035 */ 			for (var i = params.multiple.length; --i >= 0;) {
/* 2036 */ 				var d = params.multiple[i];
/* 2037 */ 				var ds = d.print("%Y%m%d");
/* 2038 */ 				cal.multiple[ds] = d;
/* 2039 */ 			}
/* 2040 */ 		}
/* 2041 */ 		cal.showsOtherMonths = params.showOthers;
/* 2042 */ 		cal.yearStep = params.step;
/* 2043 */ 		cal.setRange(params.range[0], params.range[1]);
/* 2044 */ 		cal.params = params;
/* 2045 */ 		cal.setDateStatusHandler(params.dateStatusFunc);
/* 2046 */ 		cal.getDateText = params.dateText;
/* 2047 */ 		cal.setDateFormat(dateFmt);
/* 2048 */ 		if (mustCreate)
/* 2049 */ 			cal.create();
/* 2050 */ 		cal.refresh();

/* calendar.js */

/* 2051 */ 		if (!params.position)
/* 2052 */ 			cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
/* 2053 */ 		else
/* 2054 */ 			cal.showAt(params.position[0], params.position[1]);
/* 2055 */ 		return false;
/* 2056 */ 	};
/* 2057 */ 
/* 2058 */ 	return cal;
/* 2059 */ };

;
/* jquery.flow.1.2.auto.js */

/* 1   */ /* Copyright (c) 2008 Kean Loong Tan http://www.gimiti.com/kltan
/* 2   *|  * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
/* 3   *|  * jFlow
/* 4   *|  * Version: 1.2 (July 7, 2008)
/* 5   *|  * Requires: jQuery 1.2+
/* 6   *|  */
/* 7   */  
/* 8   */ (function($) {
/* 9   */ 
/* 10  */ 	$.fn.jFlow = function(options) {
/* 11  */ 		var opts = $.extend({}, $.fn.jFlow.defaults, options);
/* 12  */ 		var randNum = Math.floor(Math.random()*11);
/* 13  */ 		var jFC = opts.controller;
/* 14  */ 		var jFS =  opts.slideWrapper;
/* 15  */ 		var jSel = opts.selectedWrapper;
/* 16  */ 
/* 17  */ 		var cur = 0;
/* 18  */ 		var timer;
/* 19  */ 		var maxi = $(jFC).length;
/* 20  */ 		// sliding function
/* 21  */ 		var slide = function (dur, i) {
/* 22  */ 			$(opts.slides).children().css({
/* 23  */ 				overflow:"hidden"
/* 24  */ 			});
/* 25  */ 			$(opts.slides + " iframe").hide().addClass("temp_hide");
/* 26  */ 			$(opts.slides).animate({
/* 27  */ 				marginLeft: "-" + (i * $(opts.slides).find(":first-child").width() + "px")
/* 28  */ 				},
/* 29  */ 				opts.duration*(dur),
/* 30  */ 				opts.easing,
/* 31  */ 				function(){
/* 32  */ 					$(opts.slides).children().css({
/* 33  */ 						overflow:"hidden"
/* 34  */ 					});
/* 35  */ 					$(".temp_hide").show();
/* 36  */ 				}
/* 37  */ 			);
/* 38  */ 			
/* 39  */ 		}
/* 40  */ 		$(this).find(jFC).each(function(i){
/* 41  */ 			$(this).click(function(){
/* 42  */ 				dotimer();
/* 43  */ 				if ($(opts.slides).is(":not(:animated)")) {
/* 44  */ 					$(jFC).removeClass(jSel);
/* 45  */ 					$(this).addClass(jSel);
/* 46  */ 					var dur = Math.abs(cur-i);
/* 47  */ 					slide(dur,i);
/* 48  */ 					cur = i;
/* 49  */ 				}
/* 50  */ 			});

/* jquery.flow.1.2.auto.js */

/* 51  */ 		});	
/* 52  */ 		
/* 53  */ 		$(opts.slides).before('<div id="'+jFS.substring(1, jFS.length)+'"></div>').appendTo(jFS);
/* 54  */ 		
/* 55  */ 		$(opts.slides).find("div").each(function(){
/* 56  */ 			$(this).before('<div class="jFlowSlideContainer"></div>').appendTo($(this).prev());
/* 57  */ 		});
/* 58  */ 		
/* 59  */ 		//initialize the controller
/* 60  */ 		$(jFC).eq(cur).addClass(jSel);
/* 61  */ 		
/* 62  */ 		var resize = function (x){
/* 63  */ 			$(jFS).css({
/* 64  */ 				position:"relative",
/* 65  */ 				width: opts.width,
/* 66  */ 				height: opts.height,
/* 67  */ 				overflow: "hidden"
/* 68  */ 			});
/* 69  */ 			//opts.slides or #mySlides container
/* 70  */ 			$(opts.slides).css({
/* 71  */ 				position:"relative",
/* 72  */ 				width: $(jFS).width()*$(jFC).length+"px",
/* 73  */ 				height: $(jFS).height()+"px",
/* 74  */ 				overflow: "hidden"
/* 75  */ 			});
/* 76  */ 			// jFlowSlideContainer
/* 77  */ 			$(opts.slides).children().css({
/* 78  */ 				position:"relative",
/* 79  */ 				width: $(jFS).width()+"px",
/* 80  */ 				height: $(jFS).height()+"px",
/* 81  */ 				"float":"left",
/* 82  */ 				overflow:"hidden"
/* 83  */ 			});
/* 84  */ 			
/* 85  */ 			$(opts.slides).css({
/* 86  */ 				marginLeft: "-" + (cur * $(opts.slides).find(":eq(0)").width() + "px")
/* 87  */ 			});
/* 88  */ 		}
/* 89  */ 		
/* 90  */ 		// sets initial size
/* 91  */ 		resize();
/* 92  */ 
/* 93  */ 		// resets size
/* 94  */ 		$(window).resize(function(){
/* 95  */ 			resize();						  
/* 96  */ 		});
/* 97  */ 		
/* 98  */ 		$(opts.prev).click(function(){
/* 99  */ 			dotimer();
/* 100 */ 			doprev();

/* jquery.flow.1.2.auto.js */

/* 101 */ 			
/* 102 */ 		});
/* 103 */ 		
/* 104 */ 		$(opts.next).click(function(){
/* 105 */ 			dotimer();
/* 106 */ 			donext();
/* 107 */ 			
/* 108 */ 		});
/* 109 */ 		
/* 110 */ 		var doprev = function (x){
/* 111 */ 			if ($(opts.slides).is(":not(:animated)")) {
/* 112 */ 				var dur = 1;
/* 113 */ 				if (cur > 0)
/* 114 */ 					cur--;
/* 115 */ 				else {
/* 116 */ 					cur = maxi -1;
/* 117 */ 					dur = cur;
/* 118 */ 				}
/* 119 */ 				$(jFC).removeClass(jSel);
/* 120 */ 				slide(dur,cur);
/* 121 */ 				$(jFC).eq(cur).addClass(jSel);
/* 122 */ 			}
/* 123 */ 		}
/* 124 */ 		
/* 125 */ 		var donext = function (x){
/* 126 */ 			if ($(opts.slides).is(":not(:animated)")) {
/* 127 */ 				var dur = 1;
/* 128 */ 				if (cur < maxi - 1)
/* 129 */ 					cur++;
/* 130 */ 				else {
/* 131 */ 					cur = 0;
/* 132 */ 					dur = maxi -1;
/* 133 */ 				}
/* 134 */ 				$(jFC).removeClass(jSel);
/* 135 */ 				//$(jFS).fadeOut("fast");
/* 136 */ 				slide(dur, cur);
/* 137 */ 				//$(jFS).fadeIn("fast");
/* 138 */ 				$(jFC).eq(cur).addClass(jSel);
/* 139 */ 			}
/* 140 */ 		}
/* 141 */ 		
/* 142 */ 		var dotimer = function (x){
/* 143 */ 			if((opts.auto) == true) {
/* 144 */ 				if(timer != null) 
/* 145 */ 					clearInterval(timer);
/* 146 */ 			    
/* 147 */         		timer = setInterval(function() {
/* 148 */ 	                	$(opts.next).click();
/* 149 */ 						}, opts.transition);
/* 150 */ 			}

/* jquery.flow.1.2.auto.js */

/* 151 */ 		}
/* 152 */ 
/* 153 */ 		dotimer();
/* 154 */ 	};
/* 155 */ 	
/* 156 */ 	$.fn.jFlow.defaults = {
/* 157 */ 		controller: ".jFlowControl", // must be class, use . sign
/* 158 */ 		slideWrapper : "#jFlowSlide", // must be id, use # sign
/* 159 */ 		selectedWrapper: "jFlowSelected",  // just pure text, no sign
/* 160 */ 		auto: false,
/* 161 */ 		easing: "swing",
/* 162 */ 		duration: 400,
/* 163 */ 		transition: 3000,
/* 164 */ 		width: "100%",
/* 165 */ 		prev: ".jFlowPrev", // must be class, use . sign
/* 166 */ 		next: ".jFlowNext" // must be class, use . sign
/* 167 */ 	};
/* 168 */ 	
/* 169 */ })(jQuery);
/* 170 */ 

