$(document).ready( function() {
  // open external link in new tab/window
  // use rel="external" instead of target="_blank"
  $('a[rel="external"]').click( function() {
    this.target = "_blank";
  });

  $("ul#nav a").each(function() {
    setActiveNavItem($(this),/^nav-(.*)$/)
  });

  //CLICKABLE LI
  //if you have a list item and you need the each of the whole li's to link to a url, use this.
  //This will grab the first <a> tag (inside the selected li) and use it as the location to open (on li click).
  $("ul.clickable_li li").each(function() {
    var link = $(this).find("a").attr("href")

    if ( link ) {
      $(this).addClass("pointer")
      $(this).bind('click', function(){
        window.location = link
        });
    }
  });

  //EMAIL REPLACEMENT
  $("span.safemail").each(function(){
    exp = $(this).text().search(/\((.*?)\)/) != -1 ? new RegExp(/(.*?) \((.*?)\)/) : new RegExp(/.*/);
    match = exp.exec($(this).text());
    addr = match[1] ? match[1].replace(/ at /,"@").replace(/ dot /g,".") : match[0].replace(/ at /,"@").replace(/ dot /g,".");
    emaillink = match[2] ? match[2] : addr;
    subject = $(this).attr('title') ? "?subject="+$(this).attr('title').replace(/ /g,"%20") : "";
    $(this).after('<a href="mailto:'+addr+subject+'">'+ emaillink + '</a>');
    $(this).remove();
  });
  $("input.safemail").each(function(){
    $(this).val($(this).val().replace(/ at /,"@").replace(/ dot /g,"."));
  });

  //JQUERY CYCLE
  $(".cycle_image ul").cycle();

  //COLORBOX
  $(".colorbox_image").each(function() {
    $('.colorbox_image').colorbox();
  });
  $(".colorbox_page").each(function() {
    $('.colorbox_page').colorbox({
      width:"80%",
      height:"80%",
      iframe:true
    });
  });

  $("#enquire_now").colorbox({
    inline:true,
    href:"#product_enquiry",
    onOpen:function(){
      $('#product_enquiry').show();
    },
    onCleanup: function(){
      $('#product_enquiry').hide();
    }
  });

  //VALIDATE
  $(".validate_form").each(function() {
    $(this).validate();
  });

  //TEXT REPLACEMENT
  $("input.replace_text").each(function() {
    val = $(this).val()
    $(this).val('')

    $(this).input_replacement({
      text: val
    });
  });

  $('#weekdays li:first').css("margin-left", "190px");
	
  Cufon.replace('h1');
  Cufon.replace('#opening_hours li');
  Cufon.replace('#weekdays li h2');
  Cufon.replace('body.index h3');
	
  function image_swap(element){
    $('#' + element + '_images li').hide().filter(':last').show();
    $('#'+element+'_items li a').click(function(){
      $('#' + element + '_images li.' + $(this).attr('class')).fadeIn();
      $('#' + element + '_images li[class!=' + $(this).attr('class') + ']').hide();
      return false;
    });
  };
	
  image_swap('menu');
  image_swap('gallery');
  image_swap('about');
	
/*
	$(window).load(function() {
		$('#gallery_images').css("height", $('#gallery_images').find('li:last').find('img').height());
	});
	*/

/*
	$(window).load(function() {
		$('#menu_images').css("height", $('#menu_images li:last img').height());
	});
	*/	
	
});

//set the current active navigation item
//inputs - link - object we are checking
//inputs - pattern - the pattern we are checking for (e.g. /^nav-(.*)$/ id prefix followed by anything, it returns the anything
function setActiveNavItem(link,pattern) {
  if ( link.attr("id").length > 0 ) {
    if ( (link.attr("id").match(pattern) != null) ) {
      active_class = link.attr("id").match(pattern)[1]
      if ( $("body").hasClass(active_class) ) {
        link.addClass('active')
      }
    }
  }
}

// jquery.input_replacement.js by Dana Woodman
//Replaces default input text.
(function($) {
  $.fn.input_replacement = function(options) {
    // Compile default options and user specified options.
    var opts = $.extend({}, $.fn.input_replacement.defaults, options);
    return $(this).each(function() {
      var obj = $(this);
      // Build element specific options.
      obj.o = $.meta ? $.extend({}, opts, $this.data()) : opts;
      // If field is empty, append text, classes, etc...
      if (obj.val() == '') {
        obj.val(obj.o.text);
        if (obj.o.empty_class) {
          obj.addClass(obj.o.empty_class);
        };
        // Focus on the input has occurred.
        obj.bind('focus', function() {
          if (obj.val() == obj.o.text) {
            obj.val('');
          };
          if (obj.o.empty_class) {
            obj.removeClass(obj.o.empty_class);
          };
        });
        // Focus has been lost.
        obj.bind('blur', function() {
          if (obj.val() == '') {
            obj.val(obj.o.text);
            if (obj.o.empty_class) {
              obj.addClass(obj.o.empty_class);
            };
          };
        });
        // Clear out the values on reload so they arent loaded after refresh.
        $(window).unload(function() {
          if (obj.val() == obj.o.text) {
            obj.val('');
          };
        });
        // If nothing was entered, make sure the "text" is not submitted by removing it.
        var form = obj.parents('form'); //.map(function () { return this.tagName; }).get().join(", ");
        if (form) {
          form.find("input[type=submit]").each(function() {
            $(this).bind('click', function() {
              if (obj.val() == obj.o.text) {
                obj.val('');
              };
            });
          });
        };
      };
    });
  };

  $.fn.input_replacement.defaults = {
    text: '', // The text to put in the empty input field.
    empty_class: '' // A class to be applied to empty input field. Gets removed after 'focus'.
  };
})(jQuery);
