$(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
  //$("#banner").cycle();

  //COLORBOX
  $(".colorbox_image").each(function() {
      $('.colorbox_image').colorbox();
  });
  $(".colorbox_page").each(function() {
      $('.colorbox_page').colorbox({ width:"80%", height:"80%", iframe:true });
  });

  //VALIDATE
  $(".validate_form").each(function() {
      $(this).validate();
  });

  //TEXT REPLACEMENT
  $(".replace_text").each(function() {
      val = $(this).val()
      $(this).val('')

     $(this).input_replacement({text: val});
  });

	//CUFON
	Cufon.replace('h1');
	
	//ACCORDIAN
	$("#drinks").accordion({
		autoHeight: false,
		navigation: true,
		collapsible: true,
		active: false
	}).bind("accordionchange", function(event, ui){
		$('#text').jScrollPane({
			showArrows:true,
			scrollbarWidth: 24
			});
	});
	
	//MODAL
	$(".enquiry").click(function() {
					$('#merchandise_enquiry').dialog('open');
					$('#merchandise_enquiry h3.product').html($(this).attr('title'));
	});

	$("#merchandise_enquiry").dialog({
				autoOpen: false,
				height: 450,
				width: 350,
				modal: true
	});
	
	//BANNER WIDTH
	$("#banner ul").cycle(
		{ fx: 'fade', timeout: 6000, speed: 3000, cleartype: true, cleartypeNoBg: true}
	);

	
	$.event.add(window, "load", resizeBanner);
  $.event.add(window, "resize", resizeBanner);

  function resizeBanner() 
  {
      // check if this works on Windows, for Mac it does
      var h = $(document).height();
      var w = $(window).width();
			var mLR = 0;
      
      $("#banner").css('height', h);
      $("#banner").css('width', w);

			if (w > 1360) {
				mLR = (w - 1360) / 2;
				// alert("document.width=" + w + " margin-LR=" + mLR);
			}
			
			if (mLR > 0) {	
				$("#banner ul li").css('height', h);
				$("#banner ul li").css('width', w);
				
				if ( w > 1360) {
					$("#banner").css('margin-left', mLR);
					$("#banner").css('width', $(this).width() - mLR);
				} else {
					$("#banner").css('width', w);
				}
			}
  }


	
	//GALLERY IMAGES
	$("#gallery li").hover(function() {
		$(this).css({'z-index' : '10'});
			$(this).find('img').addClass("hover").stop()
				.animate({
					marginTop: '-86px', 
					marginLeft: '-86px', 
					top: '50%', 
					left: '50%', 
					width: '140px', 
					height: '140px',
					padding: '10px' 
				}, 200);

			} , function() {
			$(this).css({'z-index' : '0'});
			$(this).find('img').removeClass("hover").stop()
				.animate({
					marginTop: '0', 
					marginLeft: '0',
					top: '0', 
					left: '0', 
					width: '100px', 
					height: '100px', 
					padding: '5px'
				}, 400);
	});

	$('#text').jScrollPane({
		showArrows:true,
		scrollbarWidth: 24
		});
	$('#text_small').jScrollPane({
		showArrows:true,
		scrollbarWidth: 24
		});
  		
	$('#navigation li a').hover(function(){
		$(this).stop().animate({
			paddingLeft: "10px"
		})
	}, function(){
		$(this).stop().animate({
			paddingLeft: "0px"
		});
	});
	
});

//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);
