/***********************************
 * Dependencias
 *
 * prototype.js
 * YAHOO.util.Event
 * YAHOO.widget.Calendar
 ***********************************/

var yuiCalendarClass = Class.create();

yuiCalendarClass.prototype = {

    Event: YAHOO.util.Event,
    oCalendar: null,
    oContainer: null,
    inputDate: '',
	navConfig: { 
		strings : { 
	          month: "Seleccione el mes", 
	          year: "Ingrese el aņo", 
	          submit: "OK", 
	          cancel: "Cancel", 
	          invalidYear: "Ingrese un aņo valido" 
	    },
	    monthFormat: YAHOO.widget.Calendar.SHORT, 
	    initialFocus: "year" 
	},

	/**************************
	 * Constructor
	 **************************/
    initialize: function(container, actionShow, inputDate) {
		this.oCalendar = new YAHOO.widget.Calendar(container);
		this.oCalendar.cfg.setProperty("close",true); 
		this.oCalendar.cfg.setProperty("navigator",this.navConfig); 
		this.oCalendar.selectEvent.subscribe(this.dateSelected, this, true);
    	this.Event.addListener(actionShow, "click", this.calendarShow, this, true);
    	this.oCalendar.render();
    	this.inputDate = inputDate;
    	this.oContainer = container;
    	this.initDate();
	},

	/**************************
	 * Public Methods
	 **************************/
	initDate: function() {
    	var date = new Date();
		var day = (date.getDate() > 9)? date.getDate() : "0"+date.getDate();
		var month = (parseInt(date.getMonth()) > 8)? parseInt(date.getMonth())+1 : "0"+(parseInt(date.getMonth())+1);
		$(this.inputDate).value = this.formatDate(day, month, date.getFullYear());
	},
	 
	/**************************
	 * Events Methods
	 **************************/
	dateSelected: function(type, args, object) {
	    var dates = args[0]; 
	    var date = dates[0]; 
	    var year = date[0];
	    var month = date[1];
	    var day = date[2]; 
	 
	 	if (day.toString().length == 1)
	 		day = "0"+day;
	
	 	if (month.toString().length == 1)
	 		month = "0"+month;
	
		$(object.inputDate).value = this.formatDate(day, month, year);
		$(object.oContainer).style.display = "none";
	},
	
	calendarShow: function(evt, object) {
		$(object.oContainer).style.display = "block";	
	},
	
	getDate: function()
	{
		dates = this.oCalendar.getSelectedDates();
		if (dates.length > 0)
			return dates[0];
		return null;
	},
	
	setDate: function(date){
		this.oCalendar.select(date);
		this.oCalendar.render();
	},
	
	setMaxDate: function(date)
	{
		this.oCalendar.cfg.setProperty("maxdate", date, false);
		this.oCalendar.render();
	},

	/**************************
	 * Parse Methods
	 **************************/
	formatDate: function(day, month, year) {
		return (day+'/'+month+'/'+year);
	}
}
