/*
 * Loft Labels jQuery Plugin
 * http://intheloftstudios.com
 *
 * Copyright (c) 2011 Aaron Klump
 * Dual licensed under the MIT and GPL licenses.
 * Uses the same license as jQuery, see:
 * http://docs.jquery.com/License
 *
 * @version 0.1
 */
(function($){	
  $.LoftLabels = function($input){      
    var id = $input.attr('id');
    var text = $input.siblings('label[for=' + id + ']').text();
    
    if ($input.val()) {
      $input.addClass('active-text');
      return;
    }
    else {
      $input.val(text);
      $input.removeClass('active-text');
    }
    $input
    .addClass('fh-common-processed')
    .click(function() {
      $input.addClass('active-text');
      if ($input.val() === text) {
        $input.val('');
      }
    })
    .focus(function() {
      $input.addClass('active-text');
      if ($input.val() === text) {
        $input.val('');
      }
    })
    .hover(function() {
      $input.addClass('hover-text');
    }, function() {
      $input.removeClass('hover-text');
    })
    .blur(function() {
      if (!$input.val()) {
        $input.val(text);
        $input.removeClass('active-text');
        $input.removeClass('hover-text');
      }
    });
  };
})(jQuery);;
// $Id$

/**
 * @file
 * The main javascript file for the fh_common module
 *
 * @ingroup fh_common
 * @{
 */

(function ($) {

  Drupal.fhCommon = Drupal.fhCommon || {};
  
  //Drupal.fhCommon.someVariable = Drupal.fhCommon.someVariable || {};
  //Drupal.fhCommon.someVariable = value;
  
  //Drupal.fhCommon.someFunction = function() {
  //
  //}
  
  /**
  * Core behavior for fh_common.
  */
  Drupal.behaviors.fhCommon = Drupal.behaviors.fhCommon || {};
  Drupal.behaviors.fhCommon.attach = function (context, settings) {
    
    // Define how the inputs to apply this to
    var inputs = $('.inline-label:not(.fh-common-processed)');
    for (var i = 0; i < inputs.length; ++i) {
      $.LoftLabels($(inputs[i]));
    }
  }
  
  /**
  * @} End of "defgroup fh_common".
  */

})(jQuery);

/** @} */ //end of group fh_common
;
(function ($) {

$(document).ready(function() {

  // Accepts a string; returns the string with regex metacharacters escaped. The returned string
  // can safely be used at any point within a regex to match the provided literal string. Escaped
  // characters are [ ] { } ( ) * + ? - . , \ ^ $ # and whitespace. The character | is excluded
  // in this function as it's used to separate the domains names.
  RegExp.escapeDomains = function(text) {
    return (text) ? text.replace(/[-[\]{}()*+?.,\\^$#\s]/g, "\\$&") : '';
  }

  // Attach onclick event to document only and catch clicks on all elements.
  $(document.body).click(function(event) {
    // Catch the closest surrounding link of a clicked element.
    $(event.target).closest("a,area").each(function() {

      var ga = Drupal.settings.googleanalytics;
      // Expression to check for absolute internal links.
      var isInternal = new RegExp("^(https?):\/\/" + window.location.host, "i");
      // Expression to check for special links like gotwo.module /go/* links.
      var isInternalSpecial = new RegExp("(\/go\/.*)$", "i");
      // Expression to check for download links.
      var isDownload = new RegExp("\\.(" + ga.trackDownloadExtensions + ")$", "i");
      // Expression to check for the sites cross domains.
      var isCrossDomain = new RegExp("^(https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal):\/\/.*(" + RegExp.escapeDomains(ga.trackCrossDomains) + ")", "i");

      // Is the clicked URL internal?
      if (isInternal.test(this.href)) {
        // Is download tracking activated and the file extension configured for download tracking?
        if (ga.trackDownload && isDownload.test(this.href)) {
          // Download link clicked.
          var extension = isDownload.exec(this.href);
          _gaq.push(["_trackEvent", "Downloads", extension[1].toUpperCase(), this.href.replace(isInternal, '')]);
        }
        else if (isInternalSpecial.test(this.href)) {
          // Keep the internal URL for Google Analytics website overlay intact.
          _gaq.push(["_trackPageview", this.href.replace(isInternal, '')]);
        }
      }
      else {
        if (ga.trackMailto && $(this).is("a[href^=mailto:],area[href^=mailto:]")) {
          // Mailto link clicked.
          _gaq.push(["_trackEvent", "Mails", "Click", this.href.substring(7)]);
        }
        else if (ga.trackOutbound && this.href) {
          if (ga.trackDomainMode == 2 && isCrossDomain.test(this.href)) {
            // Top-level cross domain clicked. document.location is handled by _link internally.
            _gaq.push(["_link", this.href]);
          }
          else if (ga.trackOutboundAsPageview) {
            // Track all external links as page views after URL cleanup.
            // Currently required, if click should be tracked as goal.
            _gaq.push(["_trackPageview", '/outbound/' + this.href.replace(/^(https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal):\/\//i, '').split('/').join('--')]);
          }
          else {
            // External link clicked.
            _gaq.push(["_trackEvent", "Outbound links", "Click", this.href]);
          }
        }
      }
    });
  });
});

})(jQuery);
;

