var contactDialog = function(spec) {

  var that = {},
      container = spec && spec.container ? spec.container : $('#contact-form'),
      confirmation = spec && spec.confirmation ? spec.confirmation : $('#contact-confirmation'),
      trigger = spec && spec.trigger ? spec.trigger : $('div.contact:not(.support) > *').not('h3'),
      orig,
      cancel = $.merge(container.find('a.cancel'),confirmation.find('a.cancel')),
      form = container.find('form');

  var createDialog = function() {
    var config = {
      autoOpen: false,
      modal: true,
      width: 460,
      zIndex: 5000
    };

    container.dialog(config);
    confirmation.dialog(config);

  }();

  trigger.css({cursor:'pointer'});
  trigger.click(function(event) {
    event.preventDefault();
    orig = $(this);
    if(event.target.nodeName !== 'SELECT' && event.target.nodeName !== 'OPTION') {
      var name = $(event.target).parents('div.contact').find('span.first_name').text() || 'we',
          heading = $.trim(container.find('h3').text());

      name !== 'we' ? container.find('h3').text(heading.replace(/^We/, 'I')) : '';
      container.find('span.contact_name').text(name);
      confirmation.find('span.contact_name').text(name);

      container.dialog('open');
    }
  });

  cancel.click(function(event) {
    event.preventDefault();

    container.dialog('close');
    confirmation.dialog('close');
  });

  $('#email_call_back').click(function(){
    if($(this).is(":checked")) {
      $('p.phone').slideDown();
    }
    else {
      $('p.phone').slideUp();
    }
  });

  form.bind('submit', function(event) {
    event.preventDefault();

    var visitorID = s.c_r("s_vi").match(/\|([^\[]*)/);
    visitorID = visitorID ? "&email%5BvisitorID%5D=" + visitorID[1] : "";

    var validator = validate($(form), {required: ['#First_Name','#Last_Name','#Email_Address','#Company','#Question_or_comment']});
    var id = orig.parents('div.me').length > 0 ? orig.parents('div.me').attr('id').replace(/^contact-(.*)$/, '$1') : '',
        form_data = form.serialize() + "&email%5Bcontact_id%5D=" + id + visitorID;
    validator.validateForm();

    if (validator.isValid()) {
      $.post(form.attr('action'), form_data, function(data) {
        if(data.success) {
          confirmation.find('h3').remove();
          confirmation.prepend($('<h3></h3>').append(data.message));
          container.dialog('close');
          confirmation.dialog('open');
        }
      });
    }
  });

  return that;

};

var regionSelect = function() {

  $('div.regional select').bind('change', function() {
    var selector = $(this).val(),
        close    = $('<div></div>', {
                      'class': 'close',
                      css: {
                        cursor: 'pointer'
                      },
                      click: function(event) {
                        var parent = $(this).parents('div.contact');
                        $(this).remove();

                        $('div.regional select').val($('div.regional select option').first().text());
                        $(parent).hide();
                        $('div.region_select, div.contact.default').fadeIn();

                        return false;
                      }
                    });

    if($('div.contact.' + selector).length > 0) {
      $('div.contact.' + selector).prepend(close);
      $('div.contact.' + selector).fadeIn();
      $(this).parents('div.contact').hide();
    }
  });

};

$(function() {
  var contact = contactDialog(),
      technical = contactDialog({
          container: $('#technical-contact-form'),
          confirmation: $('#technical-contact-confirmation'),
          trigger: $('a.tech_problem')
      }),
      feedback = contactDialog({
          container: $('#feedback-contact-form'),
          confirmation: $('#feedback-contact-confirmation'),
          trigger: $('a.feedback')
      });

  if($('div.regional select').length > 0) {
    regionSelect();
  }
});




//(function($){
  //$.fn.contact = function(){
    //return this.each(function(){
      //var current_region_contact = $('.contact.me.' + current_region);
      //if (current_region_contact.length > 0) {
        //$('.contact.default').hide();
        //current_region_contact.show();
      //}
    //});
  //};
//})(jQuery);

