//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;
					$("id_calendar_date_" + (++cal_num)).value = YAHOO.example.cal_simple.formatDate(this.getSelectedDates()[0]);
					//alert(cal_num + " date:" + this.getSelectedDates()[0]);
					if ( 1 == cal_num ) { 
						if (YAHOO.example.cal_simple.cal1[1]) {
							YAHOO.example.cal_simple.cal1[1].minDate = this.getSelectedDates()[0]; 
							YAHOO.example.cal_simple.cal1[1].render();
						}
					} else {
						if (YAHOO.example.cal_simple.cal1[0]) {
							// This line can set a max date to select
              //YAHOO.example.cal_simple.cal1[0].maxDate = this.getSelectedDates()[0]; 
							YAHOO.example.cal_simple.cal1[0].render();
						}
					};
					this.hide();
				},

				
				renderTitle: function() {
						//this.oDomContainer.firstChild

						
						if (! this.title) {
							this.title = "Title";
						}

						
						if ( !this.titleDiv )
						{
							this.titleDiv = document.createElement("DIV");
							if (this.title == "") {
								this.titleDiv.style.display = "none";
							}

							
							this.titleDiv.className = "title simple";
							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 + "us/my/bn/x_d.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 = "Calendar"; }
					
					// Add Calendar Container 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 cal_id = "YAHOO.example.cal_simple.cal1["+this.cal1.length +"]";
					
					set_month = (date.getMonth() <10) ? "0" + date.getMonth() : date.getMonth();
					set_month++;
					month_year = set_month + "/" + date.getFullYear();
					
					this.cal1.push(new YAHOO.widget.Calendar(cal_id, "id_cal1Container_"+cal_num, month_year)); 
          
          var len_val = this.cal1.length-1;

					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;
          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);

          //var lang_code='it';

          switch(document_lang) {
            case 'de':
              this.cal1[len_val].customConfig = function() { 
                this.Config.Locale.MONTHS_SHORT = ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
                this.Config.Locale.MONTHS_LONG = ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
                this.Config.Locale.WEEKDAYS_1CHAR = ["S", "M", "D", "M", "D", "F", "S"];
                this.Config.Locale.WEEKDAYS_SHORT = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
                this.Config.Locale.WEEKDAYS_MEDIUM = ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"];
                this.Config.Locale.WEEKDAYS_LONG = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
                this.Config.Options.START_WEEKDAY = 1;
              }
              break;
            case 'it':
              this.cal1[len_val].customConfig = function() { 
                this.Config.Locale.MONTHS_SHORT = ["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"]; 
                this.Config.Locale.MONTHS_LONG = ["gennaio", "febbraio", "marzo", "arile", "maggio", "giugno", "juglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"]; 
                this.Config.Locale.WEEKDAYS_1CHAR = ["d", "l", "m", "m", "g", "v", "s"]; 
                this.Config.Locale.WEEKDAYS_SHORT = ["do", "lu", "ma", "me", "gi", "ve", "sa"]; 
                this.Config.Locale.WEEKDAYS_MEDIUM = ["dom", "lun", "mar", "mer", "gio", "ven", "sab"]; 
                this.Config.Locale.WEEKDAYS_LONG = ["domenica", "luned\u00ec", "marted\u00ec", "mercoled\u00ec", "gioved\u00ec", "venerd\u00ec", "sabato"]; 
                this.Config.Options.START_MONDAY = true; 
              }
              break;
            case 'sv':
              this.cal1[len_val].customConfig = function() { 
                this.Config.Locale.MONTHS_SHORT = ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; 
                this.Config.Locale.MONTHS_LONG = ["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"]; 
                this.Config.Locale.WEEKDAYS_1CHAR = ["s", "m", "t", "o", "t", "f", "l"]; 
                this.Config.Locale.WEEKDAYS_SHORT = ["so", "ma", "ti", "on", "to", "fr", "lo"]; 
                this.Config.Locale.WEEKDAYS_MEDIUM = ["son", "man", "tis", "ons", "tor", "fre", "lor"]; 
                this.Config.Locale.WEEKDAYS_LONG = ["sondag", "mandag", "tisdag", "onsdag", "torsdag", "fredag", "lordag"]; 
                this.Config.Options.START_MONDAY = true; 
              }
              break;
            case 'es':
              this.cal1[len_val].customConfig = function() { 
                this.Config.Locale.MONTHS_SHORT = ["ene", "feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"]; 
                this.Config.Locale.MONTHS_LONG = ["enero", "febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]; 
                this.Config.Locale.WEEKDAYS_1CHAR = ["D", "L", "M", "X", "J", "V", "S"]; 
                this.Config.Locale.WEEKDAYS_SHORT = ["do", "lu", "ma", "mi", "ju", "vi", "Sa"]; 
                this.Config.Locale.WEEKDAYS_MEDIUM = ["dom", "lun", "mar", "mie", "jue", "vie", "sab"]; 
                this.Config.Locale.WEEKDAYS_LONG = ["domingo", "lunes", "martes", "mi\u00e9rcoles", "jueves", "viernes", "s\u00e1bado"]; 
                this.Config.Options.START_MONDAY = true; 
              }
              break;
            case 'fr':
              this.cal1[len_val].customConfig = function() { 
                this.Config.Locale.MONTHS_SHORT = ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jui", "Aou", "Sep", "Oct", "Nov", "Dec"]; 
                this.Config.Locale.MONTHS_LONG = ["Janvier", "F\u00e9vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao\u00fbt", "Septembre", "Octobre", "Novembre", "D\u00e9cembre"]; 
                this.Config.Locale.WEEKDAYS_1CHAR = ["D", "L", "M", "M", "J", "V", "S"]; 
                this.Config.Locale.WEEKDAYS_SHORT = ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"]; 
                this.Config.Locale.WEEKDAYS_MEDIUM = ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]; 
                this.Config.Locale.WEEKDAYS_LONG = ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"]; 
                this.Config.Options.START_MONDAY = true; 
              }
              break;
            case 'nl':
              this.cal1[len_val].customConfig = function() { 
                this.Config.Locale.MONTHS_SHORT = ["jan", "feb", "maa", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]; 
                this.Config.Locale.MONTHS_LONG = ["januari", "februari", "maart", "april", "Mei", "juni", "juli", "augustus", "september", "Oktober", "november", "december"]; 
                this.Config.Locale.WEEKDAYS_1CHAR = ["z", "m", "d", "W", "d", "v", "z"]; 
                this.Config.Locale.WEEKDAYS_SHORT = ["zo", "ma", "di", "Wo", "do", "vr", "za"]; 
                this.Config.Locale.WEEKDAYS_MEDIUM = ["zon", "maa", "din", "woe", "don", "vri", "zat"]; 
                this.Config.Locale.WEEKDAYS_LONG = ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"]; 
                this.Config.Options.START_MONDAY = true; 
              }
              break;
            }
			
					
					    /*
              // Locale definition
              MONTHS_SHORT : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
              MONTHS_LONG : ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
              WEEKDAYS_1CHAR : ["S", "M", "T", "W", "T", "F", "S"],
              WEEKDAYS_SHORT : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
              WEEKDAYS_MEDIUM : ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
              WEEKDAYS_LONG : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
              DATE_DELIMITER : ",",
              DATE_FIELD_DELIMITER : "/",
              DATE_RANGE_DELIMITER : "-",
              MY_MONTH_POSITION : 1,
              MY_YEAR_POSITION : 2,
              MD_MONTH_POSITION : 2,
              MD_DAY_POSITION : 1,
              MDY_MONTH_POSITION : 2,
              MDY_DAY_POSITION : 1,
              MDY_YEAR_POSITION : 3
              */
					
					this.cal1[len_val].setupConfig();	
					
					if ( len_val == 1 ) {
							this.cal1[1].minDate = new Date(this.cal1[0].getSelectedDates()[0]); 
					};
					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--;
					//this.cal1[cal_num].oDomContainer.style.top  = pos[1] + img_height - 1 + "px"; //
					this.cal1[cal_num].oDomContainer.style.left = pos[0] + "px";
					//this.cal1[cal_num].oDomContainer.style.display = "block";
					//this.cal1[cal_num].oDomContainer.style.top  = 0 + img_height - 1 + "px"; //
				  //this.cal1[cal_num].oDomContainer.style.left = 0 + "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);
  var today_date = new Date();
  var set_date = new Date(today_date.getTime()+2419200000);
  //set_date.setMilliseconds(today_date.getMilliseconds()+2419200000);
					
	for ( i = 0, j = 1; i < cals.length; i++,j++) {
		//var date_field = cals[i].previousSibling.value;
		var cal_id = "id_calendar_date_"+j;
		var date_element = document.getElementById(cal_id);
		var date_field = date_element.value;
		if ( date_field != "" && date_field != undefined && isDate(date_field) ) {
		  date_ary = date_field.split("/");
		  date_field = new Date (date_ary[2],date_ary[1]-1,date_ary[0]);
		} else {
		  date_field = new Date(set_date);
		}
		//date_field = ( date_field == "" || date_field == undefined ) ? new Date(set_date) : new Date (date_ary[2],date_ary[1],date_ary[0]);
		YAHOO.example.cal_simple.init(j, cals[i].alt, date_field);
	}
};



// 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;
};

function isDate(sDate) {
   var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
   if (re.test(sDate)) {
      return true;
   }
   else {
      return false;
   }
}


YAHOO.util.Event.addListener(window, "load", Init_Cals);

