var ProvidersCalendar = new Class({

	Implements: Options,

	options: {
        'zIndex' : 100,
        '_currDate' : null,
        '_cal' : null,
        '_targetElement' : null,
        'calContainer' : 'container'
	},


	initialize: function(options) {
		this.setOptions(options);
        this.options._currDate = this.getCurrentDate();
        this.options._cal = this.initCalendar(this.options.calContainer);
	},


    initCalendar: function(D) {
        if (!$(D)) {
            return false
        }

        var title = "Pasirinkite datą:"
        var B = new YAHOO.widget.Calendar(D, D, {
            title: title,
            close: true
        });

        //Nustatom yyyy-mm-dd datos formatą
        B.cfg.setProperty("MDY_YEAR_POSITION", 1);
        B.cfg.setProperty("MDY_MONTH_POSITION", 2);
        B.cfg.setProperty("MDY_DAY_POSITION", 3);
        B.cfg.setProperty("DATE_FIELD_DELIMITER", "-");
        B.cfg.setProperty("DATE_RANGE_DELIMITER", "/");

        B.cfg.setProperty("START_WEEKDAY",1);
        B.cfg.setProperty("LOCALE_WEEKDAYS","short");
        B.cfg.setProperty("LOCALE_MONTHS","long");
        B.cfg.setProperty("WEEKDAYS_SHORT",["S","P","A","T","K","Pe","Š"]);
        B.cfg.setProperty("MONTHS_LONG",["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"])

        //B.cfg.setProperty("mindate", this.options._currDate);

        B.hide();
        B.selectEvent.subscribe(this.onSelectDate,B,false);
        B.render();
        return B;
    },


    getCal: function() {
        return this.options._cal;
    },

    onSelectDate: function(F,E,C) {
        var A=E[0];
        var B=A[0];
        var G=B[0],D=B[1],I=B[2];
        var H=C.inputElement.value;
        C.inputElement.value=G+"-"+(D<10?"0":"")+D+"-"+(I<10?"0":"")+I;
        C.hide(true);
        if(H != C.inputElement.value && C.inputElement.onchange) {
            C.inputElement.onchange();
        }


        if (_targetElement !== null) {
            var val = document.getElementById(_targetElement).value;
            if (C.inputElement.value > val) {
                document.getElementById(_targetElement).value = C.inputElement.value;
            }
        }

    },

    showCalendar: function(target) {
        calendar = this.options._cal;
        calendar.render();
        this.displayCalendar(calendar, target);
    },


    showMinCalendar: function(target) {
        calendar = this.options._cal;
        var selected = $(target).value;
        if (selected !== null) {
            calendar.cfg.setProperty("selected", selected);
        }
        calendar.cfg.setProperty("mindate", this.options._currDate);
        calendar.render();
        
        this.displayCalendar(calendar, target);
    },

    showMaxCalendar: function(target, target2) {
        calendar = this.options._cal;
        var selected = $(target).value;
        var min = $(target2).value;

        if (selected !== null) {
            calendar.cfg.setProperty("selected", selected);
        }
        if (min !== null && min != "") {
            calendar.cfg.setProperty("mindate", min);
        }

        calendar.render();
        this.displayCalendar(calendar, target);
    },

    displayCalendar: function(calendar, target) {
        calendar.inputElement = $(target);
        calendar.show(true);
        calendar.oDomContainer.style.position="absolute";
        YAHOO.util.Dom.setXY(calendar.oDomContainer,YAHOO.util.Dom.getXY(target));
        calendar.oDomContainer.style.zIndex=this.options.zIndex++
    },

    getCurrentDate: function() {
        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        if (month < 10) {
            month = "0" + month;
        }
        var day = date.getDate();
        if (day < 10) {
            day = "0" + day;
        }
        var result = (year + "-" + month + "-" + day);
        return result;
    }
});

