jQuery(document).ready(function($) {

    var dropdown_pad_x = 15;
    var dropdown_pad_y = 15;

    function hide_contact_dropdown() {
        if ($("#contact_overlay")) {
            $("#contact_overlay").fadeOut(150, function() {
                $(this).remove();
            });
        }
        $(".contact_dropdown").fadeOut(150);
    }

    function contact_handle_escape() {
        hide_contact_dropdown();
    }

    function check_ie(check_version) {
        if ($.browser.msie) {
            if (check_version) {
                version = parseInt(jQuery.browser.version);
                if (check_version == version) {
                    return true;
                }
            } else {
                return true;
            }
        }
        return false;
    }
    
    $(".contact_button").click(function() {
        // create overlay
        overlay = $("<div id='contact_overlay'></div>");

        // append the overlay to the document body
        $("#jv-wrapper").append(overlay.click(function() {
            hide_contact_dropdown();
        }));

        // set the css and fade in our overlay
        overlay.css("opacity", 0.5);
        overlay.fadeIn(150);

        // keydown event
        $(document).keydown(function(e) {
            if (e.keyCode == 27) {
                hide_contact_dropdown();
            }
        });

        // get current x, y
        self_x = $(this).offset().left;
        self_y = $(this).offset().top;

        // get drop down
        dropdown_id = $(this).attr('title');
        dropdown = $("#" + dropdown_id);

        // add header
        header = $(this).clone().click(function() {
            hide_contact_dropdown();
            return false;
        });
        dropdown.find('.contact_dropdown_header').html(header);

        // show dropdown
        dropdown.css({
            position: "absolute",
            top: self_y - dropdown_pad_y,
            left: self_x - dropdown_pad_x,
            zIndex: 999
        });
        dropdown.show();

    
        return false;
    });

    var contact_original_values = [];
    $(".contact_dropdown").find("input,textarea").each(function() {
        contact_original_values[$(this).attr("name")] = $(this).val();
    });
    $('.contact_dropdown').find("input,textarea").bind('focus', function() {
        if($(this).val() == contact_original_values[$(this).attr('name')]) {
            $(this).val('');
        }
    });
    $('.contact_dropdown').find("input,textarea").bind('blur', function() {
        if($(this).val() == '') {
            $(this).val(contact_original_values[$(this).attr('name')]);
        }
    });

    var form_check = true;
    var email_regexp = /[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i;
    var form_alert = false;

    $('.contact_dropdown').find('form').submit(function() {
        form_check = true;
        email_regexp = /[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i;
        form_alert = false;

        $(this).find("input,textarea").each(function () {
            check_input(this);
        });
        return form_check;
    });

    function check_input(input) {
        if (!check_valid(input)) {
            form_check = false;
            $(input).css({
                color: "#F00"
            });
            if (!form_alert) {
                alert("Please enter " + contact_original_values[$(input).attr('name')].replace("*", ""));
                $(input).focus();
                form_alert = true;
            }
        } else {
            $(input).css({
                color: "#666"
            });
        }

        $(input).blur(function() {
            if (!check_valid(input)) {
                form_check = false;
                $(input).css({
                    color: "#F00"
                });
            } else {
                $(input).css({
                    color: "#666"
                });
            }
        });
    }

    function check_valid(input) {
        if (($(input).attr('name') != 'email' && ($(input).val() == '' || $(input).val() == contact_original_values[$(input).attr('name')]) && $(input).hasClass('contact_required')) || ($(input).attr('name') == 'email' && !email_regexp.test($(input).val()))) {
            return false;
        } else {
            return true;
        }
    }
    
});