
var itumaDateLoaded = true;

var claItumaDate = Class.create({
    config : null,
    fields : null,
    initialize : function(config) {
        this.config = {};
        if (config != null)
            Object.extend(this.config, config || { });
        this.fields = new Array();
        this.init();
    },
    init : function(parent) {
        var elms;
        if (parent == null)
            parent = $$('body')[0];
        elms = parent.adjacent('input.itumaDate');
        var me = this;
        elms.each(function(elm) {
            if (!me.isDefined(elm)) {
                var obj = {};
                obj.orig = elm;
                obj._new = me.raw();
                obj.init = false;
                obj.orig.addClassName('dhidden');
                obj.orig.insert({'after':obj._new.span});
                me.fill(obj,true);
                obj._new.field1.observe('change',me.change.bindAsEventListener(me,obj));
                obj._new.field2.observe('change',me.change.bindAsEventListener(me,obj));
                obj._new.field3.observe('change',me.change.bindAsEventListener(me,obj));
                me.fields.push(obj);
            }
        });
    },
    refresh : function(elm) {
        var me = this;
        this.fields.each(function(obj) {
            if (obj.orig == elm) {
                me.fill(obj,true);
            }
        });
    },
    isDefined : function(elm) {
        var defined = false;
        this.fields.each(function(obj) {
            if (obj.orig == elm) {
                defined = true;
            }
        });
        return defined;
    },
    change : function(event) {
        event.stop();
        var args = $A(arguments);
        args.shift();
        this.fill(args[0]);
    },
    raw : function() {
        var result = {};
        result.span = new Element('span');
        result.field1 = new Element('select');
        result.field1.addClassName('it_select');
        result.field2 = new Element('select');
        result.field2.addClassName('it_select');
        result.field3 = new Element('select');
        result.field3.addClassName('it_select');
        result.span.insert({'bottom':result.field1});
        result.span.insert({'bottom':result.field2});
        result.span.insert({'bottom':result.field3});
        var i;
        return result;
    },
    fill : function(obj,init) {
        var day;
        var month;
        var year;
        if (init) {
            day = parseInt(obj.orig.value.substr(8,2));
            month = parseInt(obj.orig.value.substr(5,2));
            year = parseInt(obj.orig.value.substr(0,4));
            //alert(day+"+"+month+"+"+year);
        } else {
            day = parseInt(obj._new.field1.value);
            month = parseInt(obj._new.field2.value);
            year = parseInt(obj._new.field3.value);
        }
        var i;
        var run;
        var has;
        var option;
        var field;

        for (run=0;run<3;run++) {
            has = "0";
            if (run == 0)
                field = obj._new.field3;
            else if (run == 1)
                field = obj._new.field2;
            else if (run == 2)
                field = obj._new.field1;
            field.update('');
            option = '<option value="0">--</option>';
            field.insert({'bottom':option});
            if (run == 0) {
                for (i=1920;i<2000;i++) {
                    option = '<option value="'+i+'">'+i+'</option>';
                    field.insert({'bottom':option});
                    if (i == year)
                        has = i;
                }
            } else if (run == 1) {
                for (i=1;i<13;i++) {
                    option = '<option value="'+i+'">'+i+'</option>';
                    field.insert({'bottom':option});
                    if (i == month)
                        has = i;
                }
            } else if (run == 2) {
                var end = 31;
                if (month == 2 && ((year/4) == Math.floor(year/4)))
                    end = 29;
                else if (month == 2)
                    end = 28;
                else if (month == 4 || month == 6)
                    end = 30;
                for (i=1;i<(end+1);i++) {
                    option = '<option value="'+i+'">'+i+'</option>';
                    field.insert({'bottom':option});
                    if (i == day)
                        has = i;
                }
            }

            field.value = has;
            if (has == 0) {
                field.removeClassName('it_select');
                field.addClassName('it_selecterrorfield');
            } else {
                field.addClassName('it_select');
                field.removeClassName('it_selecterrorfield');
            }
        }

        obj.orig.value = obj._new.field3.value+"-"+obj._new.field2.value+"-"+obj._new.field1.value;
    }
});


