//YAHOO.namespace("wp");
//  Much of this code originates from http://izumoff.j29.net/yui_calendar/index.html.





YAHOO.widget.Calendar.prototype.hide = function(e, cal) {
	if (! cal)
	{
		cal = this;
	}
	
	cal.oDomContainer.style.display = "none";
	YAHOO.example.cal_simple.cur_cal = null;
};


YAHOO.example.cal_simple = function() {
			return {
				
				cal1: [],
				cur_cal: null,

				formatDate: function (_date) {
					//alert(_date);
					if ( _date instanceof Array ) { _date = _date[0] }
					var date_separator = "/";
					var day_ = _date.getDate();
					var day = ( day_ < 10 ) ? "0" + day_ : day_;
					var month_ = _date.getMonth()+1;
					var month = ( month_ < 10 ) ? "0" + month_ : month_;
					var year = _date.getFullYear();
					return day + date_separator + month + date_separator + year;
				},

				
				setDate: function() {
					var cal_num = YAHOO.example.cal_simple.cur_cal;
					//alert(this.getSelectedDates()[0]);
					$("id_calendar_date_" + (++cal_num)).value = YAHOO.example.cal_simple.formatDate(this.getSelectedDates()[0]);
					//alert(cal_num + " date:" + this.getSelectedDates()[0]);
					if (cal_num == 1){
						document.getElementById('cal1Date').value = YAHOO.example.cal_simple.formatDate(this.getSelectedDates()[0]);	
					}
					if (cal_num == 2){
						document.getElementById('cal1Date2').value = YAHOO.example.cal_simple.formatDate(this.getSelectedDates()[0]);	
					}
					if (cal_num == 3){
						document.getElementById('cal1Date3').value = YAHOO.example.cal_simple.formatDate(this.getSelectedDates()[0]);	
					}
					if (cal_num == 4){
						document.getElementById('cal1Date4').value = YAHOO.example.cal_simple.formatDate(this.getSelectedDates()[0]);	
					}
					
					//alert(cal_num);
					var thisdate = new Date();
					
					if ( 1 == cal_num ) { 
						if (YAHOO.example.cal_simple.cal1[1]) {
							// cal1 has changed
							//this is the selected date of cal1
							//alert(this.getSelectedDates()[0]);
							// change cal2 date to be one day after cal1 date if cal2date < cal1date
							var changeddate = this.getSelectedDates()[0];
							changeddate.setDate(changeddate.getDate()+1);
							YAHOO.example.cal_simple.cal1[1].minDate = changeddate; 
							strmonth = new String((changeddate.getMonth() + 1));
							//alert((changeddate.getMonth() + 1) + "/" + changeddate.getFullYear());
							if (strmonth.length == 1){
								strmonth = "0" + strmonth;
							}
							//alert(strmonth);
							//alert(strmonth.length);
							//YAHOO.example.cal_simple.cal1[1].pagedate = strmonth + "/" + changeddate.getFullYear();
							//YAHOO.example.cal_simple.cal1[1].cfg.setProperty("pagedate",strmonth + "/" + changeddate.getFullYear()); 
							//alert(YAHOO.example.cal_simple.cfg.pagedate);
							//alert(this.pagedate()[0]);
							//if cal2date < cal1date then change cal2date selection and input box to 1 day later
							var d1 = Date.parse(YAHOO.example.cal_simple.cal1[0].getSelectedDates());
							var d2 = Date.parse(YAHOO.example.cal_simple.cal1[1].getSelectedDates());
							if (d2 <= d1){
								document.getElementById('id_calendar_date_2').value = YAHOO.example.cal_simple.formatDate(changeddate);
								document.getElementById('cal1Date2').value = YAHOO.example.cal_simple.formatDate(changeddate);
							}
							
							YAHOO.example.cal_simple.cal1[1].render();
						}
					} else if (2 == cal_num) {
						if (YAHOO.example.cal_simple.cal1[0]) {
							// cal2 has changed

							//this is the selected date of cal1
							//alert(this.getSelectedDates()[0]);
							
							// change cal1 date to be one day before cal2 date
							if (YAHOO.example.cal_simple.cal1[0].minDate > this.getSelectedDates()[0]){
								var changeddate = this.getSelectedDates()[0];
								changeddate.setDate(changeddate.getDate()-1);
								YAHOO.example.cal_simple.cal1[0].minDate = changeddate; 
								//alert("cal1 mindate is " + YAHOO.example.cal_simple.cal1[0].minDate);
							}

							//alert("cal1 mindate is " + YAHOO.example.cal_simple.cal1[0].minDate);
							YAHOO.example.cal_simple.cal1[0].render();
						}
					} else if ( 3 == cal_num ) { 
						if (YAHOO.example.cal_simple.cal1[3]) {
							// cal3 has changed
							//this is the selected date of cal3
							//alert(this.getSelectedDates()[0]);
							// change cal4 date to be one day after cal3 date if cal4date < cal2date
							var changeddate = this.getSelectedDates()[0];
							changeddate.setDate(changeddate.getDate()+1);
							YAHOO.example.cal_simple.cal1[3].minDate = changeddate; 
							
							//if cal4date < cal3date then change cal4date selection and input box to 1 day later
							var d1 = Date.parse(YAHOO.example.cal_simple.cal1[2].getSelectedDates());
							var d2 = Date.parse(YAHOO.example.cal_simple.cal1[3].getSelectedDates());
							if (d2 <= d1){
								document.getElementById('id_calendar_date_4').value = YAHOO.example.cal_simple.formatDate(changeddate);
								document.getElementById('cal1Date4').value = YAHOO.example.cal_simple.formatDate(changeddate);
							}
							
							YAHOO.example.cal_simple.cal1[3].render();
						}
					} else if (4 == cal_num) {
						if (YAHOO.example.cal_simple.cal1[2]) {
							// cal4 has changed

							// change cal3 date to be one day before cal4 date
							if (YAHOO.example.cal_simple.cal1[2].minDate > this.getSelectedDates()[0]){
								var changeddate = this.getSelectedDates()[0];
								changeddate.setDate(changeddate.getDate()-1);
								YAHOO.example.cal_simple.cal1[2].minDate = changeddate; 
								//alert("cal1 mindate is " + YAHOO.example.cal_simple.cal1[0].minDate);
							}

							//alert("cal1 mindate is " + YAHOO.example.cal_simple.cal1[0].minDate);
							YAHOO.example.cal_simple.cal1[2].render();
						}
					};


					this.hide();
				},

				
				renderTitle: function() {
						//this.oDomContainer.firstChild

						
						if (! this.title) {
							this.title = "";
						}

						
						if ( !this.titleDiv )
						{
							this.titleDiv = document.createElement("DIV");
							if (this.title == "") {
								//this.titleDiv.style.display = "none";
							}

							
							this.titleDiv.className = "closex";
							this.titleDiv.innerHTML = this.title;
						
							var linkClose = document.createElement("A");
							linkClose.href = "javascript:void(null)";
							YAHOO.util.Event.addListener(linkClose, "click", this.hide, this);

				
							var imgClose = document.createElement("IMG");
							imgClose.src = YAHOO.widget.Calendar_Core.IMG_ROOT + "empowerimages/calx.gif";
							imgClose.className = "close-icon";


							linkClose.appendChild(imgClose);
				

							this.linkClose = linkClose;
							this.titleDiv.appendChild(linkClose);
							this.oDomContainer.firstChild.insertBefore(this.titleDiv, this.oDomContainer.firstChild.firstChild);
						}
				},

				

				init: function( cal_num, title, date ) {
					
					if (!cal_num) { return; }
					if (!title) { title = ""; }
					
					// Add Calendar Contatiner to DOM
					var body = document.getElementsByTagName('body')[0];

					var cal_container = document.createElement('div');
					cal_container.id = "id_cal1Container_" + cal_num;
					cal_container.className = "id_cal1Container";
					//body.appendChild(cal_container);
					
					// Set CurDate into Input
					$("id_calendar_date_"+cal_num).value = this.formatDate(new Date());

					//var myDate = new Date();
					//$("id_calendar_date_"+cal_num).value = this.formatDate(myDate.setDate(myDate.getDate()+1));

					var cal_id = "YAHOO.example.cal_simple.cal1["+this.cal1.length +"]";
					this.cal1.push(new YAHOO.widget.Calendar(cal_id, "id_cal1Container_"+cal_num)); 
          
          			var len_val = this.cal1.length-1;

					//alert(len_val);
					this.cal1[len_val].onSelect = this.setDate;
					this.cal1[len_val].onRender = this.renderTitle;
					this.cal1[len_val].title = title;
					
					this.cur_cal = len_val;
					//alert(date);
					//alert(len_val);
					if (len_val == 0){
						date.setDate(date.getDate()+1);
					    this.cal1[len_val].select(date);
					} else if (len_val == 1){
						date.setDate(date.getDate()+2);
					    this.cal1[len_val].select(date);
					} else if (len_val == 2){
						date.setDate(date.getDate()+1);
					    this.cal1[len_val].select(date);
					} else if (len_val == 3){
						date.setDate(date.getDate()+2);
					    this.cal1[len_val].select(date);
					}
				    this.cur_cal = null;
					
					this.cal1[len_val].addRenderer("1.1,1.6,5.1,8.15,10.3,10.31,12.25,12.26,03.26", 					this.cal1.renderCellStyleHighlight1);
				
					this.cal1[len_val].customConfig = function() {
						//can add local config settings

					};
					
					this.cal1[len_val].setupConfig();	
					thisdate = new Date();
					//thisdate.setDate(thisdate.getDate()+1);

					//len_val = 0 for cal1, len_val = 1 for cal2
					//sets the cal2 date
					if ( len_val == 0 ) {
							thisdate.setDate(thisdate.getDate()+1);
							this.cal1[0].minDate = thisdate; 
							//alert("cal1 mindate = " + this.cal1[0].minDate);
					};


					if ( len_val == 1 ) {
							thisdate.setDate(thisdate.getDate()+2);
							this.cal1[1].minDate = thisdate; 
							//alert("cal2 mindate = " + this.cal1[1].minDate);
					};

					if ( len_val == 2 ) {
							thisdate.setDate(thisdate.getDate()+1);
							this.cal1[2].minDate = thisdate; 
							//alert("cal2 mindate = " + this.cal1[1].minDate);
					};
					if ( len_val == 3 ) {
							thisdate.setDate(thisdate.getDate()+2);
							this.cal1[3].minDate = thisdate; 
							//alert("cal2 mindate = " + this.cal1[1].minDate);
					};


					this.cal1[len_val].render(); 
				},
			
				showCalendar: function ( cal_num ) {
					if ( this.cur_cal !== null) { return; }
					var link1 = $("id_calendar_button_" + cal_num);	
					
					var pos = YAHOO.util.Dom.getXY(link1);
					var img_height = parseInt(YAHOO.util.Dom.getStyle(link1, "height"));
					cal_num--;
					//alert(pos);
					//alert(cal_num);
					if (cal_num == 0 || cal_num == 1){
						this.cal1[cal_num].oDomContainer.style.top  = pos[1] + img_height - 162 + "px"; //
						this.cal1[cal_num].oDomContainer.style.left = pos[0] - 72 + "px";
						this.cal1[cal_num].oDomContainer.style.display = "block";
						this.cur_cal = cal_num;
					} else {
						this.cal1[cal_num].oDomContainer.style.top  = (pos[1]  - 410)+ img_height  - 162 + "px"; //
						this.cal1[cal_num].oDomContainer.style.left = (pos[0]  - 940)+ "px";
						this.cal1[cal_num].oDomContainer.style.display = "block";
						this.cur_cal = cal_num;
					}
				}
			}
		} ();

function Init_Cals() {
	var cals = getElementsByClass("id_calendar_button", null, "a");
	//alert (cals.length);
	for ( i = 0, j = 1; i < cals.length; i++,j++) {
		var date_field = cals[i].previousSibling.value;
		
		date_field = ( date_field == "" || date_field == undefined ) ? new Date() : new Date (date_field);
		YAHOO.example.cal_simple.init(j, cals[i].alt, date_field);
	}
	//while (var<=endvalue)
	//{
    //code to be executed
//	}
	//ieHover();
};



// the two functions below were separated out of the script file and
// originally placed in the html header. 

  function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
};

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
};

YAHOO.util.Event.addListener(window, "load", Init_Cals);

