﻿//AUTORUN...
$(document).ready(function() {
    FieldGroups.Setup();
    InputFields.Setup();
    ButtonGroup.Setup();
});

function ConfirmDelete(msg) {
    msg = msg ? msg : 'Are you sure you want to delete this record?\nType YES to confirm.';
    var ret = prompt(msg, '');
    if (ret && ret == 'YES') {
        return true;
    } else {
        alert("Action Canceled!")
        return false;
    }
}

//THE FUNCTIONS
var ButtonGroup = {
    options: {
        targets: [".button-group"]
    },
    Setup: function() {
        var elements = null;
        for (var i = 0; i < ButtonGroup.options.targets.length; i++) {
            if (elements) {
                elements = elements.add(ButtonGroup.options.targets[i]);
            } else {
                elements = $(ButtonGroup.options.targets[i]);
            }
        }
        // simple add click event
        elements.bind("click", function(e) {
            var $target = $(e.target);
            if ($target && ($target.is('input') || $target.is('button'))) {
                $(e.target).animate({ opacity: .5 }, 500).animate({ opacity: .3 }, 1000).animate({ opacity: 1 }, 5000);
            }
        });
    }
};

//** --- Input Fields --- **//
var InputFields = {
    options: {
        targets: [".textbox", ".selectbox"],
        requiredCss: "required",
        idleCss: 'idle-field', focusCss: 'focus-field', disabledCss: 'disabled-field',
        messageFlagCss: 'message-only',
        attention: { bgColor: "#ffffe3", borderColor: "#CDA4BB" },
        showPrompt: true
    },
    Setup: function() {
        var elements = null;
        for (var i = 0; i < InputFields.options.targets.length; i++) {
            if (elements) {
                elements = elements.add(InputFields.options.targets[i]);
            } else {
                elements = $(InputFields.options.targets[i]);
            }
        }
        elements.each(function(i) {
            var ctrl = $(this);
            if (ctrl.attr("disabled")) {
                ctrl.addClass(InputFields.options.disabledCss);
            } else {
                ctrl.addClass(InputFields.options.idleCss);
                InputFields.checkRequiredField(ctrl);
                ctrl.bind("focus", InputFields.fieldFocus);
                ctrl.bind("blur", InputFields.fieldBlur);
            }

        });
    },
    checkRequiredField: function(ctrl) {
        if (ctrl.hasClass(InputFields.options.requiredCss)) {
            var v = ctrl.val();
            if (v != null && v.replace(' ', '').length == 0) {
                ctrl.css("background-color", InputFields.options.attention.bgColor);
                ctrl.css("border-color", InputFields.options.attention.borderColor);
            } else {
                InputFields.clearRequiredField(ctrl);
            }
            //add required
            if (!ctrl.data("init")) {
                ctrl.after("<span title='* required!' class='required'></span>");
                ctrl.data("init", true);
            }
        }
    },
    clearRequiredField: function(ctrl) {
        ctrl.css("background-color", "");
        ctrl.css("border-color", "");
    },
    fieldFocus: function(e) {
        var ctrl = e.target;
        InputFields.clearRequiredField($(ctrl));
        $(ctrl).removeClass(InputFields.options.idleCss).addClass(InputFields.options.focusCss);
        if (!ctrl.value || (ctrl.value && ctrl.defaultValue && ctrl.value == ctrl.defaultValue && $(ctrl).hasClass(InputFields.options.messageFlagCss))) {
            $(ctrl).removeClass(InputFields.options.messageFlagCss);
            ctrl.value = '';
        } else if (ctrl.select) {
            ctrl.select();
        }
    },
    fieldBlur: function(e) {
        var ctrl = e.target;

        $(ctrl).removeClass(InputFields.options.focusCss).addClass(InputFields.options.idleCss);
        InputFields.checkRequiredField($(ctrl));

        /*
        if ($.trim(ctrl.value == '')) {
        ctrl.value = (ctrl.defaultValue ? ctrl.defaultValue : '');
        }
        */
    },
    fieldRequired: function(e) {
        var ctrl = e.target;
        if ($.trim(ctrl.value == '')) {
            // do something
        }
    }

};

//** --- Field Groups --- **//
var FieldGroups = {
    options: { targetCss: "field-group",
        fx: "blind", speed: 200,
        captionCss: "field-group-caption", contentCss: "field-group-content",
        openBgImagePath: "images/art/btn-minus.gif",
        closedBgImagePath: "images/art/btn-plus.gif"
    },
    Setup: function() {
        $("." + FieldGroups.options.targetCss).each(function(i) {

            var ctrl = $(this);
            var div;
            if (ctrl.attr("visible")) {     //flag for creating a toggle group
                var initShow = (ctrl.attr("visible") == "true");
                ctrl.attr("visible", "");  //remove the visible attribute

                //put all of the content into a div
                div = document.createElement("div");
                $(div).addClass(FieldGroups.options.contentCss);
                ctrl.children().each(function(i) {
                    div.appendChild(this);
                });
                ctrl.prepend(div);

                //is there a caption/title?
                if (ctrl.attr("title")) {
                    ctrl.prepend("<div class='" + FieldGroups.options.captionCss + "' onclick='FieldGroups.ToggleFieldGroup(this);'><span>" + ctrl.attr("title") + "</span></div>");
                    FieldGroups.ToggleFieldGroup($("." + FieldGroups.options.captionCss, ctrl), initShow);
                    ctrl.attr("title", ""); //remove the title
                }
            }
        });
    },

    ToggleFieldGroup: function(ctrl, show) {
        try {
            ctrl = $(ctrl);
            var parent = ctrl.parent();
            var content = $("." + FieldGroups.options.contentCss, parent);
            if (parent && content) {

                show = (arguments.length > 1) ? show : content.css("display") == "none";
                if (show == true) {
                    ctrl.css("background-image", "url(" + FieldGroups.options.openBgImagePath + ")");
                    content.show(FieldGroups.options.fx, {}, FieldGroups.options.speed, function() { });
                } else {
                    ctrl.css("background-image", "url(" + FieldGroups.options.closedBgImagePath + ")");
                    content.hide(FieldGroups.options.fx, {}, FieldGroups.options.speed, function() { });
                }
            }

        } catch (e) {
            alert(e);
        }
    }
};                            //end FieldGroups

function MaxLengthMultiLine(ref, count) {
    var maxlenth = new Number(count);
    ref = $(ref);
    if (ref.val().length > maxlenth) {
        ref.val(ref.val().substring(0, maxlenth));
        alert("Only " + count + " characters allowed!");
    }
}
