﻿

function open_window(url, w, h) {
    window.open(url, 'win', 'toolbar=no,width=' + w + ',height=' + h + ',directories=no,status=no,scrollbars=yes,menubar=no,resizable=yes');
}

(function($) {
    // common jq fns
    $.fn.addItemToStringArray = function(s, d) {
        if (s == "") return;
        if (!s) return;
        if (!d) d = ",";
        var val = $(this).val();
        var stmp = d + val + d;
        if (stmp.indexOf(d + s + d) == -1) {
            if (val != "") val += d;
            val += s;
        }
        $(this).val(val);
    };

    $.fn.removeItemFromStringArray = function(s, d) {
        if (!s) return;
        if (!d) d = ",";
        var arr = $(this).val().split(d);
        for (i = 0; i < arr.length; i++) {
            if (s == arr[i]) arr.splice(i, 1);
        }
        var snew = arr.join(d);
        $(this).val(snew);
    };


    $.fn.isValidList = function(el) {
        var o = $(this);
        if (el) o = el;
        if (o.parent().find(".requiredmessage").size() == 0) {
            o.parent().append("<div class=requiredmessage></div>");
        }
        o.parent().find(".requiredmessage").hide();
        o.removeClass("required");
        if (o.attr("required") === "false")
            return true;
        if (o.find(":checked").size() == 0) {
            o.addClass("required");
            var rm = o.attr("requiredmessage");
            if (rm == undefined) rm = "";
            o.parent().find(".requiredmessage").text(rm);
            o.parent().find(".requiredmessage").show();
            return false;
        } else {
            return true;
        }
    };

    $.fn.isValidElement = function(el) {
        var o = $(this);
        if (el) o = el;

        if (o.parent().find(".requiredmessage").size() == 0) {
            o.parent().append("<div class=requiredmessage></div>");
        }
        o.parent().find(".requiredmessage").hide();
        o.removeClass("required");
        if (o.attr("maxlength")) {
            var ml = parseInt(o.attr("maxlength"));
            if (o.val().length > ml && ml > 0) {
                o.parent().find(".requiredmessage").text(o.attr("maxlength") + " characters allowed.");
                o.parent().find(".requiredmessage").show();
                o.addClass("required");
                return false;
            }
        }

        if (o.attr("valtype")) {
            if (!o.epIsValidExtended(o.attr("valtype"))) {
                var msg = "";
                if (o.attr("valtype") == "phone") msg = "Please enter a valid phone number";
                o.parent().find(".requiredmessage").text(msg);
                o.parent().find(".requiredmessage").show();
                o.addClass("required");
                return false;
            }
        }

        if (o.attr("required") === "false")
            return true;

        if (o.val() == "") {
            o.addClass("required");
            var rm = o.attr("requiredmessage");
            if (rm == undefined) rm = "";
            o.parent().find(".requiredmessage").text(rm);
            o.parent().find(".requiredmessage").show();
            return false;
        } else {
            return true;
        }
    };

    $.fn.epIsValidExtended = function(valtype) {
        if (valtype == "phone") {
           var v = $(this).val();
           if (v == "") return true;
           var b = /[a-zA-Z]/.test(v);
           if (!b) {
               return /\d{4}/.test(v);
           }
           return false;

        }
    };


    $.fn.doWordCount = function(suppressCount) {
        var o = $(this);

        if (o.parent().find(".wordcountmessage").size() == 0) {
            o.parent().append("<div class=wordcountmessage>Words: <span class=wc_words></span>,&nbsp;Characters: <span class=wc_chars></span></div>");
        }

        var txt = o.val();
        var len = txt.length;

        if (!suppressCount) {
            var words = txt.split(' ');
            var wc = 0;
            for (var i = 0; i < words.length; i ++) {
               if (words[i] != "") wc++;
            }
            o.parent().find(".wc_words").text(wc);
        }

        o.parent().find(".wc_chars").text(len);
    };

})(jQuery);



(function($) {

    $.setupEpValForm = function(t, p) {


        p = $.extend({
            errorMessageElement: false,
            invalidMessage: "Please complete all of the required fields.",
            showAlert: true,
            buttonSelector: false,
            invalidCallback: false
        }, p);
        if (t.frm) return false;

        var f = {
            checkvalid: function() {

                var b = true;
                if (p.errorMessageElement) $(p.errorMessageElement).text("");
                $("[required]").each(function() {

                    if ($(this).find(":radio,:checkbox").size() > 0) {
                        if (!$(this).isValidList()) {
                            b = false;
                        }
                    } else {
                        if (!$(this).isValidElement()) {
                            b = false;
                        }
                    }

                });
                if (!b) {
                    if (p.errorMessageElement) {
                        $(p.errorMessageElement).text(p.invalidMessage);
                        var h = $(p.errorMessageElement).height();
                    }
                }
                return b;
            },
            isvalid: function() {
                var b = f.checkvalid();
                var msg = p.invalidMessage;
                if (b) msg = "";

                if ($("#iagree").size() > 0) {
                    if ($("#iagree:checked").size() == 0) {
                        b = false;
                        if (msg != '') msg += "\n";
                        msg += "Please agree to the Terms and Conditions.";
                    }
                }

                if (!b) {
                    if (p.showAlert) {
                        alert(msg);
                    }
                    if (p.invalidCallback) {
                        p.invalidCallback();
                    }
                }
                return b;
            },
            init: function() {


                $(t).find("[wordcount='true']").keyup(function(e) {
                    if (e.which == 13) {
                       return false;
                    } else if (e.which == 32) {
                        $(this).doWordCount();
                    } else {
                        $(this).doWordCount(false);
                    }
                }).change(function() {
                    $(this).doWordCount();
                }).each(function() {
                    $(this).doWordCount();
                });

                $(t).find("[required]").each(function() {
                    if ($(this).is("select,:text,textarea")) {
                        $(this).change(function() {
                            $(this).isValidElement();
                        });
                    } else if ($(this).find(":radio,:checkbox").size() > 0) {
                        var list = $(this);
                        list.find(":radio,:checkbox").click(function() {
                            $(this).isValidList(list);
                        });
                    }
                });

                if (p.buttonSelector) {
                    var tmp = {
                        click: $(p.buttonSelector).attr("onclick")
                    };

                    $(p.buttonSelector).removeAttr("onclick");
                    $(p.buttonSelector).bind('click', function() {
                        var b = f.isvalid();
                        if (!b) return false;
                        try {
                            tmp.click();
                        } catch (E) { }
                    });
                } else {
                    if ($(t).is("form")) $(t).submit(f.isvalid);
                }


            }
        };


        if (!t.frm) {
            f.init();
            t.frm = f;
        }

    };


    $.fn.epvalidate = function(p) {
        return this.each(function() {
            $.setupEpValForm(this, p);
        });

    }; //end epvalidate



})(jQuery);
