var Calendar = {
	self: "Calendar",

	cal_clicked: function(e){
		Calendar.override=true;
		//console.debug("cal "+Calendar.override);
	},

	window_clicked: function(e){
		// Must use the self name instead of "this" due to scope usage with setTimeout
		// Possible race condition, if alternative is found, do it
		//setTimeout("Calendar.checkOverride()",750);
		//console.debug("3");
		//console.debug("window1 "+Calendar.override);
		if(!Calendar.override){Calendar.close();}//else{console.debug("no close");}
		Calendar.override = false;
		//console.debug("window2 "+Calendar.override);
	},

	setElement: function() {
		this.cal = document.getElementById(this.divId);
	},

	init: function(){
		this.override = true;
		this.setOptions({noInit:true});
		this.cal = document.getElementById(this.divId);
		this.cal.style.display = "none";
		this.cal.style.zIndex = 1000;
		this.addEvent(this.cal,'click',Calendar.cal_clicked);
		this.addEvent(document,'click',Calendar.window_clicked);
		try{
			this.showEffects = (Effect.Appear)?true:false;
		}catch(e){
			this.showEffects = false;
		}
	},

	checkOverride: function(){
		if(!this.override){this.close();}
		this.override = false;
	},

	addEvent: function(obj,type,fn){
		if(obj.addEventListener){
			obj.addEventListener(type,fn,false);
		}else if(obj.attachEvent){
			obj["e"+type+fn]=fn;
			obj[type+fn]=function(){obj["e"+type+fn](window.event);};
			obj.attachEvent("on"+type,obj[type+fn]);
		}
	},

	removeEvent: function(obj,type,fn){
		if(obj.removeEventListener){
			obj.removeEventListener(type,fn,false);
		}else if(obj.detachEvent){
			obj.detachEvent("on"+type,obj[type+fn]);
			obj[type+fn]=null;
			obj["e"+type+fn]=null;
		}
	},

	setOptions: function(options){
		if(!options){options = {};}
		this.header = (options.header)?options.header:" ";
		this.current = options.input;
		this.next = (options.next)?options.next:"";
		this.previous = (options.previous)?options.previous:"";
		this.date_fmt = (options.dateFormat)?options.dateFormat:"mm/dd/yyyy";
		this.anchor = (options.anchor)?options.anchor:options.input;
		var floatingTP = document.getElementById('floatingTP');
		/*if(floatingTP){
			if(window.ActiveXObject){
				document.getElementById('fd').style.position = "absolute";
				document.getElementById('td').style.position = "absolute";
			}
		}*/
		this.total_pages = (options.pages)?options.pages:2;
		this.divId = (options.div)?options.div:"site_calendar";

		// the offsets require a check explicitly for 0 and not just set since if it's 0, it checks as unset
		if (options.xOffset >= 0 || options.xOffset < 0)
			this.xOffset = options.xOffset;
		else
			this.xOffset = 15;

		if (options.yOffset >= 0 || options.yOffset < 0)
			this.yOffset = options.yOffset;
		else
			this.yOffset = 15;

		if (floatingTP) {
			this.yOffset = 45;
		}

		this.page = 0;
		if(!options.noInit){
			this.prev_date = new Date();
			if(!this.cal){this.init();}
			this.setElement();
		}
		if(this.previous!=""){
			this.prev_date = new Date();
			var prev = document.getElementById(this.previous).value;
			if(prev != ""){
				prev = prev.replace(/\/([0-9]{2})$/,"/20$1"); // compensate for 0x -> 190x issue
				document.getElementById(this.previous).value = prev;
				this.prev_date.setTime(Date.parse(prev));
			}
			this.prev_date.setDate(this.prev_date.getDate());
		}
		if(this.current){
			this.curr_date = new Date();
			var curr = document.getElementById(this.current).value;
			if(curr != ""){
				// make sure date is in m/d/yyyy format as opposed to m/d/yy format
				curr = curr.replace(/\/([0-9]{2})$/,"/20$1"); // compensate for 0x -> 190x issue
				document.getElementById(this.current).value = curr;
				this.curr_date.setTime(Date.parse(curr));
				if(this.curr_date < this.prev_date){
					document.getElementById(this.current).value = "";
					this.curr_date = this.prev_date;
				}
			}else if(this.prev_date){
				this.curr_date = this.prev_date;
			}
		}

		/**
		 * The lines below can be uncommented if we want to allow the calendar to initialize the 'first' date to what may
		 * have already been selected.  The trick, however, is that it will cause any and all dates that came before it to
		 * not be selectable, so be wary...
		 *
		 if (this.previous == "") {
			this.prev_date = this.curr_date;
		 }


		if(this.prev_date && this.curr_date){
			this.page = this.curr_date.getMonth()-this.prev_date.getMonth()
		}*/
	},

	turnPage: function(page){
		this.page = this.page+page;
		this.show();
	},

	show: function(options){
		this.override = true;
		if(!this.cal){this.init();}
		this.setElement();
		//console.debug("Cur_date: " + this.curr_date);
		if(options){
			this.setOptions(options);
		}

		/**
		 * The 'var toChange' line was added below to facilitate being able to go back and re-select the first date without causing too
		 * many problems in the calendar.  Before, it was going back to the year the person selected minus the number of months, and was
		 * way off; this way, it re-initializes back to today's date as if the calendar was being opened anew for the first time.  The
		 * other option was to allow the calendar to go back to the date they originally selected, but unfortunately no date before that
		 * would be selectable, and that's a problem.  Thus, this particular work-around gives us the best middle-ground solution.
		 */
		var date = new Date();
		var toChange = (jQuery('#'+this.current).val() != "") ? this.curr_date : this.prev_date;
		date.setTime(toChange);

		var content = "";
		content += "<a id=\"gc_close\" href=\"javascript:"+this.self+".close();\">[x] - Close</a>";
		content += "<div id=\"gc_header\">"+this.header+"</div>";
		this.cal.innerHTML = content;
		this.cur_page = 1;
		date.setMonth(date.getMonth()+this.page);
		this.move(this.current);
		for(var x=0;x<this.total_pages;x++){
			this.cal.innerHTML+= this.generateTable(date);
			date.setMonth(date.getMonth()+1);
			this.cur_page++;
		}

		if(this.showEffects){
			/*Commented Out Appear of Calender for Speed 7-16-8*/
			this.cal.style.display = "block";
			//new Effect.Appear(this.cal,{duration:0.5});
			new Draggable(this.cal,{handle:'gc_header'});
		}else{
			this.cal.style.display = "block";
		}
	},

	toggle: function(options){
		if(!this.cal){this.init();}
		this.setElement();
		if(this.cal.style.display == "none"){
			this.show(options);
		}else{
			if(this.current != options.input){
				this.show(options);
			}else{
				this.close();
			}
		}
	},

	close: function(){
		//console.debug("closing");
		//this.override = true;
		this.page = 0;
		if(!this.cal){this.init();}
		this.setElement();
		if(this.showEffects){
			this.cal.style.display = "none";
			/*Taken out for speed*/
			//new Effect.Fade(this.cal);
		}else{
			this.cal.style.display = "none";
		}
	},

	generateTable: function(date){
		// This is a horrible hack to check if we're on the first date of the range and, if so, set the date to it here as needed
		/*if (this.previous == "" && $(this.current).value != "") {
			var orig_date = date;
			try {
				date.setTime(Date.parse($(this.current).value));
				console.debug("Worked!: " + date);
			}
			catch (e) {
				date = orig_date;
			}
		}*/

		var prev = "<a id=\"cal_prev\" href=\"javascript:"+this.self+".turnPage(-1);\">&lt;</a>";
		var next = "<a id=\"cal_next\" href=\"javascript:"+this.self+".turnPage(1);\">&gt;</a>";
		if(this.cur_page!=1){prev="";}
		if(this.cur_page!=this.total_pages){next="";}
		result = "<table id=\"cal_table_"+this.cur_page+"\" class=\"cal_table\"><tr><th>"+prev+"</th><th colspan=\"5\">"+this.getMonth(date.getMonth())+" "+date.getFullYear()+"</th><th>"+next+"</th></tr>";
		result += "<tr class=\"dow\"><th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th></tr>";
		result += this.getTableCode(date);
		result += "</table>";
		return result;
	},

	getTableCode: function(date){
		var first_day = date;
		first_day.setDate(1);
		var counter = 1;
		var startDays = false;
		var result = "";
		var finished = false;

		for(x=0;x<6;x++){
			result += "<tr>";
			for(y=0;y<7;y++){
				if(y==first_day.getDay()){
					startDays = true;
				}
				if(startDays){
					if(!finished){
						// Class for handling whether or not this is the 'selected' element
						var selected = (this.dateCompare(date,this.curr_date)==0 && (jQuery('#'+this.current).val() != "" || this.previous != "")) ? " class=\"selected\" " : "";

						// See if the previous date is the current iteration date minus a day, keeping in mind that we don't want it to happen if it's not on a "next" field (the 'To' part of a 'From'-'To' sequence
						var isNotPrevDate = (this.prev_date.getTime() != (date.getTime()) || this.previous == "");

						// For handling showing a nice date range color when we have a previously selected date (onmouseover)
						var omo = (this.previous != "" && jQuery('#'+this.current).val() == "") ? ' onmouseover="' + this.self + '.showDateRange(' + this.cur_page + ', ' + date.getDate() + ');" ' : "";

						// Generate the ID for this field for ease in using our range script
						var cur_id = "site_cal_" + this.cur_page + "_" + date.getDate();

						if(this.dateCompare(date,this.prev_date)<=0 && isNotPrevDate){
							result += "<td"+selected+omo+" onmosueout='this.style.backgroundColor: #FFFFFF;' id='" + cur_id + "'><a href=\"javascript:"+this.self+".insertDate('"+this.getFormattedDate(date)+"');\">"+date.getDate()+"</a></td>";
						}else{
							result += "<td"+selected+omo+" id='" + cur_id + "'>"+date.getDate()+"</td>";
						}
					}else{
						result += "<td>&nbsp;</td>";
					}
					date.setDate(date.getDate()+1);
					if(date.getDate()==1){date.setMonth(date.getMonth()-1);finished=true;}
				}else{
					result += "<td>&nbsp;</td>";
				}
			}
			result += "</tr>";
		}
		return result;
	},

	showDateRange: function(page, num) {
		/*
		 * Need to go through and highlight all elements between the selected item and the item we're
		 * hovering over, so to do this what we're going to do is go through all of the dates on the
		 * first and second pages, doing quick comparisons to see if they fall within the valid ranges
		 * and removing the classes from the rest of the items
		 */

		// This variable is used to determine which item is selected; what we'll do is leave empty until it's found
		var selectedItem = {
			page: 0,
			date: 0
		};

		// Go through both pages
		for (i = 1; i <= 2; ++i) {
			// Go through from 1 - 31, ignoring elements that don't exist (obviously)
			for (j = 1; j <= 31; ++j) {
				// Get the current ID
				var curItem = jQuery("#site_cal_" + i + "_" + j);
				if (curItem == null || curItem == "undefined")
					continue;

				// See if this is the selected item
				if (selectedItem.page == 0 && curItem.className == "selected") {
					selectedItem.page = i;
					selectedItem.date = j;
					continue;
				}

				// See if this is the one we're hovering over
				if (page == i && num == j && curItem.innerHTML.length > 3) {
					curItem.style.backgroundColor = "#74F30F";
					continue;
				}

				// If we don't yet have the selection, continue on
				if (selectedItem.page == 0) {
					curItem.style.backgroundColor = "#FFFFFF";
					continue;
				}

				//See if it falls between the selected date and the one we were given
				if (
					(selectedItem.page < page && j > selectedItem.date && i < page) ||				// See if the selected page < page we're hovering on and the date is > the selected date and we're on the lesser page
					(selectedItem.page < page && j < num && i >= page) ||							// See if the selected page < page we're hovering on and the date is < hover date and we're on the greater page
					(selectedItem.page == page && j > selectedItem.date && j < num && i == page)	// See if the selected page = page we're on and the date > selected date and the date < the hovering date
				) {
					curItem.style.backgroundColor = "#A1FF57";
				}
				else
					curItem.style.backgroundColor = "#FFFFFF";
			}
		}
	},

	getFormattedDate: function(date){
		var str = this.date_fmt;
		var yyyy = date.getFullYear();
		var yy = date.getYear()%100;
		yy = (yy.length>1)?yy:"0"+yy;
		var m = date.getMonth()+1;
		var mm = (m>9)?m:"0"+m;
		var d = date.getDate();
		var dd = (d>9)?d:"0"+d;
		str = str.replace(/y{4}/,yyyy);
		str = str.replace(/y{2}/,yy);
		str = str.replace(/m{2}/,mm);
		str = str.replace(/d{2}/,dd);
		str = str.replace(/m{1}/,m);
		str = str.replace(/d{1}/,d);
		return str;
	},

	dateCompare: function(x,y){
		var result = 0;
		if(x.getYear()<y.getYear()){
			result = 1;
		}else if(x.getYear()>y.getYear()){
			result = -1;
		}else if(x.getMonth()<y.getMonth()){
			result = 1;
		}else if(x.getMonth()>y.getMonth()){
			result = -1;
		}else if(x.getDate()<y.getDate()){
			result = 1;
		}else if(x.getDate()>y.getDate()){
			result = -1;
		}
		return result;
	},

	getMonth: function(x){
		var result;
		switch(x){
			case 0:result="January";break;
			case 1:result="February";break;
			case 2:result="March";break;
			case 3:result="April";break;
			case 4:result="May";break;
			case 5:result="June";break;
			case 6:result="July";break;
			case 7:result="August";break;
			case 8:result="September";break;
			case 9:result="October";break;
			case 10:result="November";break;
			case 11:result="December";break;
		}
		return result;
	},

	insertDate: function(date_text){
		document.getElementById(this.current).value = date_text;
		try{
			if(this.next){
				var obj = document.getElementById(this.next);
				var d = obj.onfocus.toString();
				var e = d.match(/\.(show|toggle)\((\{.*?\})\)/);
				if(!e){
					e = d.match(/\{([^\{\}]*?)\}/);
					eval(e[1])
				}
				else{
					this.show(eval("("+e[2]+")"))
				}
			}else{
				this.close();
			}
		}catch(e){this.close();}
	},

	move: function(current_field){
		var pos = this.findPosition(document.getElementById(this.anchor));
		var floatingTP = document.getElementById('floatingTP');

		if(this.showEffects && this.cal.style.display != "none" && (!floatingTP || jQuery('#shade_pod').is(':visible'))){
			// Condition for use of the calendar on the 'left nav'
			new Effect.Move(this.cal,{x:pos[0]+this.xOffset,y:pos[1]+this.yOffset,mode:'absolute'});
		}
		else if (floatingTP && jQuery('#shade_pod').is(':visible')) {
			// Condition for use of the calendar on the site shade
			if(window.ActiveXObject){
				this.cal.style.zIndex = "6000";
				this.cal.style.left = "5px";
				this.cal.style.top = "285px";
				this.cal.style.position = "absolute";
			}
			else{
				this.cal.style.zIndex = "6000";
				this.cal.style.left = pos[0]+this.xOffset+"px";
				this.cal.style.top = pos[1]+this.yOffset+"px";
				this.cal.style.position = "absolute";
			}
		}
		else if (floatingTP) {
			// Condition for use of the calendar floating but not as part of the site shade
			this.cal.style.zIndex = "1000";

			var left = ((this.anchor) == 'fd' ? 15 : 130);
			this.cal.style.left = ((window.ActiveXObject) ? left : jQuery('#'+this.anchor).offsetLeft) + "px";

			// Give it a different height depending on whether or not the 'Hotel Only' radio button is selected
			if (!jQuery('#tp_radio_hotel').is(':checked')) {
				if (window.ActiveXObject)
					this.cal.style.top = "185px";
				else
					this.cal.style.top = "175px";
			}
			else {
				if (window.ActiveXObject)
					this.cal.style.top = "140px";
				else
					this.cal.style.top = "130px";
			}

			this.cal.style.position = "absolute";
		}
		else{
			// Condition for calendar in all other cases
			this.cal.style.zIndex = "1000";
			this.cal.style.left = pos[0]+this.xOffset+"px";
			this.cal.style.top = pos[1]+this.yOffset+"px";
			this.cal.style.position = "absolute";
		}
	},

	findPosition: function(obj){
		var curleft = 0;
		var curtop = 0;
		var floatingTP = document.getElementById('floatingTP');

		if(floatingTP){
			/* Condition for IE*/
            var absoluteElement = jQuery('#floatingTP');
			if(window.ActiveXObject){
				absoluteElement = absoluteElement.offsetParent().offset();
				curleft = parseInt(obj.offsetLeft) + parseInt(absoluteElement.left);
				curtop  = parseInt(obj.offsetTop) + parseInt(absoluteElement.top);
				return [curleft,curtop];
			}else{
				if(obj){
					if(absoluteElement){
						curleft = obj.offsetLeft;
						curtop = obj.offsetTop;
						curleft+=absoluteElement.offsetLeft;
						curtop+=absoluteElement.offsetTop;
					}
				}
				return [curleft,curtop];
			}
		}else{
			var curleft = 0;
			var curtop = 0;
			if(obj){
				if(obj.offsetParent){
					curleft = obj.offsetLeft;
					curtop = obj.offsetTop;
					while(obj = obj.offsetParent){
						curleft+=obj.offsetLeft;
						curtop+=obj.offsetTop;
					}
				}
			}
			return [curleft,curtop];
		}
	}
}


/**
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(c/a))+String.fromCharCode(c%a+161)};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'[\xa1-\xff]+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp(e(c),'g'),k[c])}}return p}('� �={�:"�",��:�(e){�.��(e)},��:�(e){��("�.��()",��)},�:�(){�.�=�;�.�({��:�});�.�=�.�(�.��);�.�.�.�="�";�.�.�.��=��;�.�(�.�,\'��\',�.��);�.�(�,\'��\',�.��);�{�.�=(�.��)?�:�}�(e){�.�=�}},��:�(){�(!�.�){�.�()}�.�=�},��:�(e){�(!e)� e=�.��;e.��=�;�(e.��)e.��()},�:�(�,�,�){�(�.��){�.��(�,�,�)}� �(�.��){�["e"+�+�]=�;�[�+�]=�(){�["e"+�+�](�.��)};�.��("��"+�,�[�+�])}},��:�(�,�,�){�(�.��){�.��(�,�,�)}� �(�.��){�.��("��"+�,�[�+�]);�[�+�]=��;�["e"+�+�]=��}},�:�(�){�(!�){�={}}�.�=(�.�)?�.�:"�� �� a �";�.�=�.�;�.�=(�.�)?�.�:"";�.�=(�.�)?�.�:"";�.��=(�.��)?�.��:"�/�/�";�.�=(�.�)?�.�:�.�;�.�=(�.��)?�.��:2;�.��=(�.�)?�.�:"��";�.�=(�.�)?�.�:0;�.�=(�.�)?�.�:0;�.�=�.�;�.�=0;�(!�.��){�.�=� �();�(!�.�){�.�()}}�(�.�!=""){�.�=� �();� �=�.�(�.�).�;�(�!=""){�.�.�(�.��(�))}}},�:�(�){�.�=�.�+�;�.�()},�:�(�){�(!�.��){� �=�.��("��");�(� x=0;x<�.�;x++){�[x].�.�="��"}}�.�=�;�(!�.�){�.�()}�(�){�.�(�)}� �=� �();�.�(�.�);� �="";�+="<a �=\\"��\\" �=\\"�:"+�.�+".�();\\">[x] - ��</a>";�+="<� �=\\"��\\">"+�.�+"</�>";�.�.�=�;�.�=1;�.�(�.�()+�.�);�.��(�.�);�(� x=0;x<�.�;x++){�.�.�+=�.�(�);�.�(�.�()+1);�.�++}�(�.�){� �.��(�.�,{�:0.5});� ��(�.�,{��:\'��\'})}�{�.�.�.�="��"}},��:�(�){�(!�.�){�.�()}�(�.�.�.�=="�"){�.�(�)}�{�(�.�!=�.�){�.�(�)}�{�.�()}}},�:�(){�(!�.��){� �=�.��("��");�(� x=0;x<�.�;x++){�[x].�.�=""}}�.�=0;�(!�.�){�.�()}�(�.�){� �.��(�.�,{�:\'0.5\'})}�{�.�.�.�="�"}},�:�(�){� �="<a �=\\"��\\" �=\\"�:"+�.�+".�(-1);\\">&��;</a>";� �="<a �=\\"��\\" �=\\"�:"+�.�+".�(1);\\">&��;</a>";�(�.�!=1){�=""}�(�.�!=�.�){�=""}�="<� �=\\"��"+�.�+"\\" �=\\"��\\"><�><�>"+�+"</�><� ��=\\"5\\">"+�.�(�.�())+" "+�.��()+"</�><�>"+�+"</�></�>";�+="<� �=\\"��\\"><�>S</�><�>M</�><�>T</�><�>W</�><�>T</�><�>F</�><�>S</�></�>";�+=�.�(�);�+="</�>";� �},�:�(�){� �=�;�.�(1);� ��=1;� �=�;� �="";� �=�;�(x=0;x<6;x++){�+="<�>";�(y=0;y<7;y++){�(y==�.��()){�=�}�(�){�(!�){�(�.��(�,�.�)<=0||�.�){�+="<�><a �=\\"�:"+�.�+".�(\'"+�.��(�)+"\');\\">"+�.�()+"</a></�>"}�{�+="<�>"+�.�()+"</�>"}}�{�+="<�>&��;</�>"}�.�(�.�()+1);�(�.�()==1){�.�(�.�()-1);�=�}}�{�+="<�>&��;</�>"}}�+="</�>"}� �},��:�(�){� �=�.��;� �=�.��();� �=�.�()%��;�=(�.�>1)?�:"0"+�;� m=�.�()+1;� �=(m>9)?m:"0"+m;� d=�.�();� �=(d>9)?d:"0"+d;�=�.�(/y{4}/,�);�=�.�(/y{2}/,�);�=�.�(/m{2}/,�);�=�.�(/d{2}/,�);�=�.�(/m{1}/,m);�=�.�(/d{1}/,d);� �},��:�(x,y){� �=0;�(x.�()<y.�()){�=1}� �(x.�()>y.�()){�=-1}� �(x.�()<y.�()){�=1}� �(x.�()>y.�()){�=-1}� �(x.�()<y.�()){�=1}� �(x.�()>y.�()){�=-1}� �},�:�(x){� �;��(x){� 0:�="��";�;� 1:�="��";�;� 2:�="��";�;� 3:�="��";�;� 4:�="��";�;� 5:�="��";�;� 6:�="��";�;� 7:�="��";�;� 8:�="��";�;� 9:�="��";�;� ��:�="��";�;� ��:�="��";�}� �},�:�(�){�.�(�.�).�=�;�{�(�.�){� �=�.�(�.�);�{� d=�.��.��()}�(e){� d=�.�.��()}� e=d.��(/\\.(�|��)\\((\\{.*?\\})\\)/);�(!e){e=d.��(/\\{([^\\{\\}]*?)\\}/);��(e[1])}�{�.�(��("("+e[2]+")"))}}�{�.�()}}�(e){�.�()}},��:�(��){� �=�.�(�.�(�.�));�(�.�&&�.�.�.�!="�"){� �.��(�.�,{x:�[0]+�.�,y:�[1]+�.�,��:\'�\'})}�{�.�.�.��="�";�.�.�.��=�[0]+�.�+"�";�.�.�.��=�[1]+�.�+"�"}},�:�(�){� �=0;� �=0;�(�){�(�.��){�=�.�;�=�.��;��(�=�.��){�+=�.�;�+=�.��}}}�[�,�]}}',95,180,'this|if|result|var|options|obj|date|cal|function|th|else|str|type|fn|case|break|style|getMonth|getDate|td|next|document|new|false|page|true|yy|tr|show|replace|close|selects|prev|return|display|getYear|href|self|prev_date|previous|Date|for|id|cur_page|xOffset|getElementById|yOffset|init|showEffects|pos|anchor|none|div|Effect|override|current|curleft|Calendar|javascript|header|content|curtop|window|turnPage|total_pages|first_day|startDays|noBlackOut|try|setMonth|finished|mm|length|yyyy|dd|catch|addEvent|setOptions|input|visibility|duration|generateTable|px|offsetLeft|innerHTML|class|findPosition|table|getTableCode|insertDate|value|date_text|setTime|setDate|absolute|toString|window_clicked|getFormattedDate|toggle|match|addEventListener|getFullYear|attachEvent|removeEventListener|on|eval|offsetTop|null|dateFormat|pages|divId|noInit|dateCompare|move|date_fmt|stopPropagation|event|detachEvent|click|Appear|nbsp|cal_clicked|checkOverride|gc_header|XMLHttpRequest|getElementsByTagName|select|offsetParent|stopEvent|July|August|Fade|September|cal_prev|October|lt|cal_next|10|gt|November|cal_table_|11|cal_table|December|colspan|Move|dow|mode|counter|getDay|position|onfocus|500|zIndex|1000|left|cancelBubble|100|removeEvent|Please|Select|site_calendar|parse|hidden|gc_close|current_field|top|while|Close|switch|January|Draggable|handle|February|block|March|April|May|June|setTimeout'.split('|'),0,{}))
/**/
