﻿$(document).ready
(
    function () {

        simplePopupWindowResize(true);

        $("#headerSearchImg").mouseenter(
            function () {
                $("#headerSearchMenu").stop(true, true);
                $("#headerSearchMenu").delay(0).show(500);
            }
        )

        $("#headerSearchImg").mouseleave(
            function () {
                $("#headerSearchMenu").stop(true, true);
                $("#headerSearchMenu").delay(100).hide(500);
            }
        )

        $(".searchMenuChoice").click(
            function () {
                $("#ddMain").attr("src", "/images/dd_" + this.name + ".gif");
            }
        )

        $("#bodySearchImg").mouseenter(
            function () {
                $("#bodySearchMenu").stop(true, true);
                $("#bodySearchMenu").delay(0).show(500);
            }
        )

        $("#bodySearchImg").mouseleave(
            function () {
                $("#bodySearchMenu").stop(true, true);
                $("#bodySearchMenu").delay(100).hide(500);
            }
        )

        $(".bodyMenuChoice").click(
            function () {
                $("#ddBody").attr("src", "/images/dd_" + this.name + ".gif");
            }
        )

        $(".rowLink").click(
            function () {
                var redir = $(this).attr('name');
                $(window.location).attr("href", redir);
            }
        )

        $(".simplePopup a").click(
            function (event) {
                event.preventDefault();
                $.ajax
				(
					{
					    url: $(this).attr("content"),
					    data: {},
					    cache: false,
					    success: function (data) {
					        $(".simplePopupWrapper").html("");
					        $(".simplePopupWrapper").html(data);
					        onCallCenterHoursResize(false);
					    }
					}
				);

                $("#simplePopupOverlay").fadeTo(500, 0.45);
                $("#simplePopupDialog").delay(200).fadeIn(300);
            }
        )

        $("#simplePopupClose").live
		(
			"click",
			function () {
			    $("#simplePopupOverlay").fadeOut(500);
			    $("#simplePopupDialog").fadeOut(200);
			}
		);

        $(window).resize
		(
			function () {
			    simplePopupWindowResize(true);
			}
		);

        function simplePopupWindowResize(stop) {

            if ($("body").height() > $(window).height()) {
                $("#simplePopupOverlay").css("height", $("body").outerHeight() + "px");
            }
            else {
                $("#simplePopupOverlay").css("height", $(window).height() + "px");
            }

            $("#simplePopupOverlay").css("width", $("html").outerWidth() + "px");

            if ($("#simplePopupDialog").height() < $(window).height()) {
                $("#simplePopupDialog").css("top", (($(window).height() / 2) - ($("#simplePopupDialog").outerHeight() / 2) + $("#simplePopupDialog").scrollTop()) + "px");
            }
            else {
                $("#simplePopupDialog").css("top", "0px");
            }

            if ($("#simplePopupDialog").width() < $(window).width()) {
                $("#simplePopupDialog").css("left", (($(window).width() / 2) - ($("#simplePopupDialog").outerWidth() / 2) + $("#simplePopupDialog").scrollLeft()) + "px");
            }
            else {
                $("#simplePopupDialog").css("left", "0px");
            }
        }

    }
);

var fieldError;

$(document).ready
(
	function () {
	    fieldError =
		{
		    create: function (id, orintaion, field, errorMessage) {
		        var parent;

                

		        switch (true) {
		            case ($(field).is("input[type='checkbox']")):
		                parent = $(field).parents(".checkBoxABC");
		                break;

		            case ($(field).is("input[type='text']") || $(field).is("input[type='password']")):
		                parent = $(field).parents(".fieldBox");
		                break;

		            case ($(field).is("select")):
		                parent = $(field).parents(".fieldBox");
		                break;
		        }

		        if (parent.length > 0) {
		            $(parent).append("<div id=\"" + id + "\" class=\"field-error " + orintaion + "\">" + errorMessage + "</div>");

		            switch (orintaion) {
		                case "left":
		                    $("#" + id).css("left", -($("#" + id).outerWidth() + 2));
		                    break;

		                case "right":
		                    $("#" + id).css("left", $(parent).outerWidth() + 2);
		                    break;

		                case "top-left":
		                case "top-right":
		                    $("#" + id).css("top", -($("#" + id).outerHeight() - 10));
		                    break;

		                case "bottom-left":
		                case "bottom-right":
		                    $("#" + id).css("top", ($(parent).outerHeight() - 10));
		                    break;
		            }

		            if (($("#" + id).offset()).left < 0) {
		                $("#" + id).css("min-width", ($("#" + id).width() + ($("#" + id).offset()).left) - 2);
		                $("#" + id).css("left", -($("#" + id).outerWidth() + 2));
		            }
		        }
		    },
		    remove: function (id) {
		        $("#" + id).remove();
		    },
		    removeAll: function () {
		        $(".field-error").remove();
		    }
		};
	}
);

var validation =
{
    isValidEmailAddress: function (expression) {
        return RegExp(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/).test(expression);
    },
    isNumeric: function (expression) {
        return RegExp(/^[0-9]*$/).test(expression);
    },
    isValidUsZipCode: function (expression) {
        return RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/).test(expression);
    },
    isValidCanadianPostalCode: function (expression) {
        return RegExp(/^([ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9])*$/).test(expression);
    },
    isValidFirstOrLastName: function (expression) {
        return RegExp(/^([a-zA-Z\s\.,'-]+)$/).test(expression);
    },
    iIsValidStreetAddress: function (expression) {
        return RegExp(/^([a-zA-Z0-9\s\.,'-]+)$/).test(expression);
    },
    getCreditCardTypeByNumber: function (cardNumber) {
        var validator = RegExp(/^4[0-9]{12}(?:[0-9]{3})?$/);

        if (validator.test(cardNumber)) {
            return this.cardType.Visa;
        }

        validator = RegExp(/^5[1-5][0-9]{14}$/);

        if (validator.test(cardNumber)) {
            return this.cardType.MasterCard;
        }

        validator = RegExp(/^3[47][0-9]{13}$/);

        if (validator.test(cardNumber)) {
            return this.cardType.AmericanExpress;
        }

        validator = RegExp(/^6(?:011|5[0-9]{2})[0-9]{12}$/);

        if (validator.test(cardNumber)) {
            return this.cardType.Discover;
        }

        return this.cardType.Unknown;
    },
    isValidCreditCard: function (cardNumber, cardType) {
        switch (cardType) {
            case this.cardType.Visa:
                return RegExp(/^4[0-9]{12}(?:[0-9]{3})?$/).test(cardNumber);

            case this.cardType.MasterCard:
                return RegExp(/^5[1-5][0-9]{14}$/).test(cardNumber);

            case this.cardType.AmericanExpress:
                return RegExp(/^3[47][0-9]{13}$/).test(cardNumber);

            case this.cardType.Discover:
                return RegExp(/^6(?:011|5[0-9]{2})[0-9]{12}$/).test(cardNumber);

            case this.cardType.DinersClub:
                return RegExp(/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/).test(cardNumber);

            case this.cardType.JCB:
                return RegExp(/^(?:2131|1800|35\d{3})\d{11}$/).test(cardNumber);

            default:
                return false;
        }
    },
    cardType:
	{
	    Visa: "VI",
	    MasterCard: "MC",
	    AmericanExpress: "AX",
	    Discover: "DI",
	    Unknown: "none"
	}
};
