/**
* class to put the calendar in one function wich can be accesed easily from anyone any where
*/
var Calendar = function()
{
    return{
        element : null,
        Show: function(ele,CloseFunc,gettedDate,t,l)
        {
            this.element = $(ele);
            var args = new Array();
            for(i = 0; i < arguments.length; i++) {
                if(i > 4) {
                    args.push(arguments[i]);
                }
            }
            
            var number = args.length;
            
            if(typeof t == "undefined")
                t = 0;
                
            if(typeof l == "undefined")
                l = 0;
                
                
            var start_date = new Date();
            start_date.setMilliseconds(parseInt(start_date.getMilliseconds()/100000)*100000);
            
            if(typeof gettedDate == "undefined" )
                gettedDate = start_date;
            
            var calendar_start = FloatCalendar.ShowCalendar(ele,start_date,gettedDate,t,l,{
                 DisablePast : true,
                 Cancel_function:
                                    {
                                     func : createDelegate(this, this.UncheckCheckbox),
                                     arguments : new Array()
                                    },
                 Close_function:
                                    {
                                     func : createDelegate(this, this.GetItsDate),
                                     arguments : new Array(ele, CloseFunc, args, number )
                                    },
                 Today : new Date(),
                 Callendar_format : "%F %Y",
                 Return_format : "%Y-%m-%d %h:%i",
                 days : new Array("Mo",
                                  "Di",
                                  "Mi",
                                  "Do",
                                  "Fr",
                                  "Sa",
                                  "So"),

                 months : new Array(
                                        "Januar",
                                        "Februar",
                                        "März",
                                        "April",
                                        "Mai",
                                        "Juni",
                                        "Juli",
                                        "August",
                                        "September",
                                        "Oktober",
                                        "November",
                                        "Dezember"
                                     ),
                 str_close : "übernehmen",
                 str_cancel : "abbrechen",
                 str_order_time : "Bestellzeit",
                 two_buttons : true,
                 no_tables_under_time : true,
                 error_time : "Die Zeit liegt in der Vergangenheit!"}
            );
        },
        
        UncheckCheckbox : function()
        {
            $GetElement(this.element).get(0).Instance.ForceUnclick();
            var sName = $(this.element).find("input[type='radio']").attr("name");
            $('body').find(".radiobox." + sName).get(0).Instance.ForceClick();
        },
        
        GetItsDate : function (that_ele,CloseFunc, args, number)
        {
            var newargs = new Array();
            for(i = 0; i < args.length; i++) {
                if(i < number) {
                    newargs.push(args[i]);
                }
            }
            
            args = newargs;
        
            if(args[0] != undefined) {
                var date = that_ele.calendar.GetFullSelectedDate();
                
                args.push(that_ele.calendar.FormatDate(date,'%Y-%m-%d %h:%i'));
                args.push(that_ele);
                return CloseFunc.apply(CloseFunc, args);
            } else {
                var oDate = new Date(that_ele.calendar.GetFullSelectedDate());
                return CloseFunc(oDate,that_ele);
            }
            
            
        }
    }
}(); // end of var
