/*
 * SimpleModal Contact Form
 * http://www.ericmmartin.com/projects/simplemodal/
 * http://code.google.com/p/simplemodal/
 *
 * Copyright (c) 2010 Eric Martin - http://ericmmartin.com
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Revision: $Id: contact.js 243 2010-03-15 14:23:14Z emartin24 $
 *
 */

jQuery(function ($) {
   var contact = {
      message: null,
      init: function () {
         $('#contact-form input.contact, #contact-form a.contact').click(function (e) {
            e.preventDefault();

            // load the contact form using ajax
            $.get("/themes/fairhall/js/data/contact.php", function(data){
               // create a modal dialog with the data
               $(data).modal({
                  closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
                  position: ["15%",],
                  overlayId: 'contact-overlay',
                  containerId: 'contact-container',
                  onOpen: contact.open,
                  onShow: contact.show,
                  onClose: contact.close
               });
            });
         });
      },
      open: function (dialog) {
         // add padding to the buttons in firefox/mozilla
         if ($.browser.mozilla) {
            $('#contact-container .contact-button').css({
               'padding-bottom': '2px'
            });
         }
         // input field font size
         if ($.browser.safari) {
            $('#contact-container .contact-input').css({
               'font-size': '.9em'
            });
         }

         // dynamically determine height
         var h = 280;
         if ($('#contact-subject').length) {
            h += 26;
         }
         if ($('#contact-cc').length) {
            h += 22;
         }

         var title = $('#contact-container .contact-title').html();
         $('#contact-container .contact-title').html('Cargando...');
         dialog.overlay.fadeIn(200, function () {
            dialog.container.fadeIn(200, function () {
               dialog.data.fadeIn(200, function () {
                  $('#contact-container .contact-content').animate({
                     height: h
                  }, function () {
                     $('#contact-container .contact-title').html(title);
                     $('#contact-container form').fadeIn(200, function () {
                        $('#contact-container #contact-name').focus();

                        $('#contact-container .contact-cc').click(function () {
                           var cc = $('#contact-container #contact-cc');
                           cc.is(':checked') ? cc.attr('checked', '') : cc.attr('checked', 'checked');
                        });

                        // fix png's for IE 6
                        if ($.browser.msie && $.browser.version < 7) {
                           $('#contact-container .contact-button').each(function () {
                              if ($(this).css('backgroundImage').match(/^url[("']+(.*\.png)[)"']+$/i)) {
                                 var src = RegExp.$1;
                                 $(this).css({
                                    backgroundImage: 'none',
                                    filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' +  src + '", sizingMethod="crop")'
                                 });
                              }
                           });
                        }
                     });
                  });
               });
            });
         });
      },
      show: function (dialog) {
         $('#contact-container .contact-send').click(function (e) {
            e.preventDefault();
            // validate form
            if (contact.validate()) {
               var msg = $('#contact-container .contact-message');
               msg.fadeOut(function () {
                  msg.removeClass('contact-error').empty();
               });
               $('#contact-container .contact-title').html('Enviando...');
               $('#contact-container form').fadeOut(200);
               $('#contact-container .contact-content').animate({
                  height: '80px'
               }, function () {
                  $('#contact-container .contact-loading').fadeIn(200, function () {
                     $.ajax({
                        url: '/themes/fairhall/js/data/contact.php',
                        data: $('#contact-container form').serialize() + '&action=send',
                        type: 'post',
                        cache: false,
                        dataType: 'html',
                        success: function (data) {
                           $('#contact-container .contact-loading').fadeOut(200, function () {
                              $('#contact-container .contact-title').html('Gracias! Mensaje recibido.');
                              msg.html(data).fadeIn(200);
                           });
                        },
                        error: contact.error
                     });
                  });
               });
            }
            else {
               if ($('#contact-container .contact-message:visible').length > 0) {
                  var msg = $('#contact-container .contact-message div');
                  msg.fadeOut(200, function () {
                     msg.empty();
                     contact.showError();
                     msg.fadeIn(200);
                  });
               }
               else {
                  $('#contact-container .contact-message').animate({
                     height: '30px'
                  }, contact.showError);
               }
               
            }
         });
      },
      close: function (dialog) {
         $('#contact-container .contact-message').fadeOut();
         $('#contact-container .contact-title').html('Cerrar...');
         $('#contact-container form').fadeOut(200);
         $('#contact-container .contact-content').animate({
            height: 40
         }, function () {
            dialog.data.fadeOut(200, function () {
               dialog.container.fadeOut(200, function () {
                  dialog.overlay.fadeOut(200, function () {
                     $.modal.close();
                  });
               });
            });
         });
      },
      error: function (xhr) {
         alert(xhr.statusText);
      },
      validate: function () {
         contact.message = '';
         if (!$('#contact-container #contact-name').val()) {
            contact.message += 'Name is required. ';
         }

         var email = $('#contact-container #contact-email').val();
         return true;
      },
      validateEmail: function (email) {
         var at = email.lastIndexOf("@");
         return true;
      },
      showError: function () {
         $('#contact-container .contact-message')
            .html($('<div class="contact-error"></div>').append(contact.message))
            .fadeIn(200);
      }
   };

   contact.init();

});

