function isDefined(variable) {
    return (typeof(window[variable]) == "undefined") ? false : true;
}

function set_jDatepickerRO() {
    jQuery(".jDatepicker").attr("readonly", true);
}

function equalDates(d1, d2) {
    return ((d1.getYear() == d2.getYear()) && (d1.getMonth() == d2.getMonth()) && (d1.getDate() == d2.getDate()));
}

function compareDates(d1, d2) {
    if (d1.getYear() == d2.getYear()) {
        if (d1.getMonth() == d2.getMonth()) {
            if (d1.getDate() == d2.getDate()) {
                return 0;
            } else if (d1.getDate() > d2.getDate()) {
                return -1;
            } else {
                return 1;
            }
        } else if (d1.getMonth() > d2.getMonth()) {
            return -1;
        } else {
            return 1;
        }
    } else if (d1.getYear() > d2.getYear()) {
        return -1;
    } else {
        return 1;
    }
}

function checkDayDisable(date) {
    if (compareDates(NOW, date) < 0) {
        return [false, "disabled_day"];
    }
    if (!isDefined("valid_dates")) {
        return [false, "disabled_day"];
    }
    for (var ii = 0; ii < valid_dates.length; ii++) {
        if (equalDates(date, valid_dates[ii])) return [true, "enabled_day"];
    }
    return [false, "disabled_day"];
}

function attachDatepicker() {
    jQuery(document).ready(function() {
        jQuery(".jDatepicker, .jDatepickerAjax").datepicker({
            showOn: "both", 
            buttonImage: MEDIA_URL + "jquery/datepicker/calendar.gif", 
            buttonImageOnly: true, 
            dateFormat: "d.m.yy",
            firstDay: 1,
            minDate: 0,
            beforeShowDay: checkDayDisable
        });
        set_jDatepickerRO();
    });
}

function attachTermDatepicker() {
    jQuery(".jDatepickerTerm").each(function(i, e) {
        var input_element = jQuery(e);
        var period_id = input_element.attr("rel");
        input_element.datepicker({
            showOn: "both",
            buttonImage: MEDIA_URL + "jquery/datepicker/calendar.gif", 
            buttonImageOnly: true, 
            dateFormat: "d.m.yy", 
            firstDay: 1, 
            minDate: period_dates[period_id]["min_date"], 
            maxDate: period_dates[period_id]["max_date"]
        });
    });
    
}

function _switchInputs(inputs, test_ok) {
    if (test_ok) {
        inputs.attr("disabled", "disabled");
        inputs.siblings("ul.errorlist").hide();
    } else {
        inputs.removeAttr("disabled");
        inputs.siblings("ul.errorlist").show();
    }
    return false;
}

function switchBeneficierInputs(chbox) {
    var parent_table = jQuery(chbox).closest("table");
    var fields = parent_table.find(".beneficier_field");
    _switchInputs(fields, chbox.checked);
//     if (chbox.checked) {
        fields.each(function(i, e) {
            var elem = jQuery(e);
            var curr_val = elem.attr("value");
            elem.attr("value", elem.attr("rel"));
            elem.attr("rel", curr_val);
        });
//     } else {
//         fields.each(function(i, e) {
//             elem.attr("value", "");
//         });
//     }
    return false;
}

function switchCompanyInputs(chbox) {
    var fields = jQuery(".company_field");
    return _switchInputs(fields, !chbox.checked);
}

function switchOptionalProductCostInput(chbox) {
    var items_id = chbox.id.replace("copy", "items");
    var items = jQuery("#" + items_id);
    if (chbox.checked) {
        items.removeAttr("disabled");
        items.siblings("ul.errorlist").show();
    } else {
        items.attr("disabled", "disabled");
        items.siblings("ul.errorlist").hide();
    }
}

function loadTimePickerSelect(date_input, time_input, time_input_container, reload_pricecraft) {
    var req_url = jQuery(date_input).attr("rel") + "?date=" + date_input.value + "&value=" + time_input.value + "&name=" + time_input.name + "&id=" + time_input.id;
//     alert(req_url);
    jQuery.ajax({
        url: req_url,
        success: function(data, textStatus) {
            jQuery(time_input_container).html(data);
            new_time_input = jQuery("#" + time_input.id);
            if (reload_pricecraft) {
                if (new_time_input.attr("rel") != undefined) {
                    loadPricecraftForm(new_time_input, document.getElementById("setup_form"), document.getElementById("pricecraft_form_container"));
                }
            }
        }
    });
}

preload_loader = new Image();
preload_loader.src = MEDIA_URL + 'img/loader.gif';

function loadPricecraftForm(input_element, public_setup_form, pricecraft_form_container) {
    var req_url = jQuery(input_element).attr("rel");
    var options = {
        url:        req_url, 
        success:    function(response_data) { 
            jQuery(pricecraft_form_container).html(response_data);
        } 
    };
    jQuery(pricecraft_form_container).html('<img src="' + preload_loader.src + '" alt="loading..."');
    jQuery(public_setup_form).ajaxSubmit(options);
}
