// Main

$(document).ready(function() {
  // Config
  jQuery.easing.def = "easeOutCubic";

  // IE6 PNG Fixes
  if(typeof DD_belatedPNG != 'undefined') {
  	DD_belatedPNG.fix('.sprite, #banner, #banner-featured, #banner-map, #banner-map-holder, a, li, h4, .extreme, .high, .medium, .low, #tooltip-top, #tooltip-middle, #tooltip-bottom');
  }
 
  // Back to top link
  if ($("body.page").length > 0) {
	if ($(".toc").length == 0) {
		$('#content h2').append('<a class="top" href="#masthead"></a>');
	} else {
		$('#content h2').append('<a class="top" href="#content"></a>');
  	};
  	if ($("#journey-to-excellence").length > 0) {
  		$("#journey-to-excellence h1").append('<a class="top" href="#masthead"></a>');
  	}
  	$(".top").show();
  }

  // Columizer
  $('#company-profile .entry-content, #journey-to-excellence .entry-content,').columnize();
  
  //jScrollPane
  $('#list .event-container').jScrollPane(
  {
    verticalGutter: 0
  });
 
  // Labels to Input values
  
  $('#search, #name, #email, #phone, #enquiry').clearingInput();
  
	// View alert button
	$('#view-alerts')
	.toggle(
		function() {
			if ($('#list:animated').size() == 0) {
				$(this).html('Close all recent world wide alerts').addClass("close");
        $.eventTooltip.destroy();
				$('#list').slideDown();
			}
		}, function() {
			if ($('#list:animated').size() == 0) {
				$(this).html('View all recent world wide events').removeClass("close");
        $.eventTooltip.destroy();
				$('#list').slideUp();
			}
		}
	)
	.hover(
		function () {
			$("#alerts").css("border-top","2px solid #272727");
 		}, 
		function () {
			$("#alerts").css("border-top", "2px solid #005E93");
		}
	);
  
  $('#list').slideUp(0);
  
  //$('#view-alerts').trigger('click');
	
  handleEventMarkers();
  
  handleAlertsPageReadMore();
  
	// List styling
	$("ul")
		.next("ul").addClass("listcolumn").end()
		.prev("ul").addClass("listcolumn");
		
	// Local smooth scrolling
	$.localScroll({
		hash:true	
	});
	
	// seo landing page enquiry button
	$('#button-toggle-enquiry').click(function() {
		
		if ($(this).hasClass('open')) {
			_gaq.push(['_trackPageview', '/seo-landing-page/enquiry-form-closed']);
			$(this).removeClass('open');
		} else {
			_gaq.push(['_trackPageview', '/seo-landing-page/enquiry-form-open']);
			$(this).addClass('open');
		}
		
		$('#enquiry-form').slideToggle();
		return false;
	});
	
	$('#enquiry-submit').click(function() {
		_gaq.push(['_trackPageview', '/seo-landing-page/enquiry-form-sent']);
	});
	
	$('#footer-contact-email').click(function() {
		_gaq.push(['_trackPageview', '/footer-contact-email']);
	});
	
	
});

function handleEventMarkers()
{
  if ($('#marker_map').length)
  {
    //if we have the marker map..
    $('#marker_map area').each(function()
    {
      var $this = $(this);
      var id = $(this).attr('id');
      id = id.split('-');
      id = id[2]; //just the number
      
      var content = $('#event-marker-'+id+'-description').html();
      
      $('.event-container a[rel="'+id+'"]').bind('click', function(e)
      {
        e.preventDefault();
        $this.trigger('click');
      });
      
      $.eventTooltip.add($('#event-marker-'+id), $('#event-marker-'+id+'-description'));//alert(id);
    });
  }
}

$.eventTooltip = 
{
  tooltip: { element: null, tooltip: null },
  
  add: function(element, contentElement)
  {
    //adds browser events to element
    $.data(element, 'tooltipContentElement', contentElement);
    
    var $element = $(element);
    
    $element.bind('click', function(e)
    {
      e.preventDefault();
      $.eventTooltip.doTooltip(element);
      $(this).blur();
    });
  },
  
  doTooltip: function(element)
  {
    //only one tooltip visible at a time, so we destroy then create
    //unless the element clicked on is the current tooltip.. then we just destroy
    
    //this function called on element click
    if ($.eventTooltip.tooltip.element != element)
    {
      $.eventTooltip.destroy();
      $.eventTooltip.create(element);
    }
    else
    {
      $.eventTooltip.destroy();
    }
  },
  
  create: function (element)
  {
    var $element = $(element);
    var $tooltip = $($('<div id="event-tooltip"></div>'));
    //$tooltip.append($.data($($(element, 'tooltipContentElement'))).html());
    var tooltipContentElement = $.data(element, 'tooltipContentElement');
    $tooltip.append('<div id="tooltip-top"></div>');
    $tooltip.append('<div id="tooltip-middle"><div class="spacing">'+tooltipContentElement.html()+'</div></div>');
    $tooltip.append('<div id="tooltip-bottom"></div>');
    
    $('body').append($tooltip);
    
    var position = { height: $tooltip.height(), width: $tooltip.width() };
    
    var $map = $($element.closest('map'));
    var coords = $element.attr('coords').split(',');
    coords = { x: parseInt(coords[0]), y: parseInt(coords[1]), radius: parseInt(coords[2]) };
    
    var $image = $($('img[usemap="#'+$map.attr('id')+'"]'));
    
    var offset = $image.offset();
    
    var position = { left: offset.left + coords.x - coords.radius - 72, top: offset.top + coords.y - coords.radius - position.height };
    //the minus 72 is to line up the tip part with the marker
    
    $tooltip.css(
    {
      'position': 'absolute',
      'top': position.top,
      'left': position.left,
      'zIndex': 9999
    });
    
    $.eventTooltip.tooltip = { 'element': element, 'tooltip': $tooltip };
  },
  
  destroy: function ()
  {
    $.eventTooltip.tooltip.element = null;
    
    if ($.eventTooltip.tooltip.tooltip)
    {
      $.eventTooltip.tooltip.tooltip.remove();
    }
    //alert('after destroy');
  }
}

function handleAlertsPageReadMore()
{
  if ($('#content.alerts').length)
  {
    $('.event-container .post-content').dgReadMore(
    {
      limit: 244,
      readLessText: 'Close'
    });
    
    //check the hash for event-{id}, and open the corresponding one automatically
    
    var hash = window.location.hash;
    hash = hash.split('-');
    if (hash[0] == '#event')
    {
      var id = hash[1];
      $('#event-'+id).find('.read-more').find('a').trigger('click');
      $('#event-marker-'+id).trigger('click')
    }
  }
}

// Contact Form 7 JS

(function($) {

	$(function() {
		try {
			if (typeof _wpcf7 == 'undefined' || _wpcf7 === null)
				_wpcf7 = {};

			_wpcf7 = $.extend({ cached: 0 }, _wpcf7);

			$('div.wpcf7 > form').ajaxForm({
				beforeSubmit: function(formData, jqForm, options) {
					jqForm.wpcf7ClearResponseOutput();
					jqForm.find('img.ajax-loader').css({ visibility: 'visible' });
					return true;
				},
				beforeSerialize: function(jqForm, options) {
					jqForm.find('.wpcf7-use-title-as-watermark.watermark').each(function(i, n) {
						$(n).val('');
					});
					return true;
				},
				data: { '_wpcf7_is_ajax_call': 1 },
				dataType: 'json',
				success: function(data) {
					var ro = $(data.into).find('div.wpcf7-response-output');
					$(data.into).wpcf7ClearResponseOutput();

					if (data.invalids) {
						$.each(data.invalids, function(i, n) {
							$(data.into).find(n.into).wpcf7NotValidTip(n.message);
						});
						ro.addClass('wpcf7-validation-errors');
					}

					if (data.captcha)
						$(data.into).wpcf7RefillCaptcha(data.captcha);

					if (data.quiz)
						$(data.into).wpcf7RefillQuiz(data.quiz);

					if (1 == data.spam)
						ro.addClass('wpcf7-spam-blocked');

					if (1 == data.mailSent) {
						$(data.into).find('form').resetForm().clearForm();
						ro.addClass('wpcf7-mail-sent-ok');

						if (data.onSentOk)
							$.each(data.onSentOk, function(i, n) { eval(n) });
					} else {
						ro.addClass('wpcf7-mail-sent-ng');
					}

					if (data.onSubmit)
						$.each(data.onSubmit, function(i, n) { eval(n) });

					$(data.into).find('.wpcf7-use-title-as-watermark.watermark').each(function(i, n) {
						$(n).val($(n).attr('title'));
					});

					ro.append(data.message).slideDown('fast');
				}
			});

			$('div.wpcf7 > form').each(function(i, n) {
				if (_wpcf7.cached)
					$(n).wpcf7OnloadRefill();

				$(n).wpcf7ToggleSubmit();

				$(n).find('.wpcf7-acceptance').click(function() {
					$(n).wpcf7ToggleSubmit();
				});

				$(n).find('.wpcf7-exclusive-checkbox').each(function(i, n) {
					$(n).find('input:checkbox').click(function() {
						$(n).find('input:checkbox').not(this).removeAttr('checked');
					});
				});

				$(n).find('.wpcf7-use-title-as-watermark').each(function(i, n) {
					var input = $(n);
					input.val(input.attr('title'));
					input.addClass('watermark');

					input.focus(function() {
						if ($(this).hasClass('watermark'))
							$(this).val('').removeClass('watermark');
					});

					input.blur(function() {
						if ('' == $(this).val())
							$(this).val($(this).attr('title')).addClass('watermark');
					});
				});
			});

		} catch (e) {
		}
	});

	$.fn.wpcf7ToggleSubmit = function() {
		return this.each(function() {
			var form = $(this);
			if (this.tagName.toLowerCase() != 'form')
				form = $(this).find('form').first();

			if (form.hasClass('wpcf7-acceptance-as-validation'))
				return;

			var submit = form.find('input:submit');
			if (! submit.length) return;

			var acceptances = form.find('input:checkbox.wpcf7-acceptance');
			if (! acceptances.length) return;

			submit.removeAttr('disabled');
			acceptances.each(function(i, n) {
				n = $(n);
				if (n.hasClass('wpcf7-invert') && n.is(':checked')
				|| ! n.hasClass('wpcf7-invert') && ! n.is(':checked'))
					submit.attr('disabled', 'disabled');
			});
		});
	};

	$.fn.wpcf7NotValidTip = function(message) {
		$('#search, #name, #email, #phone, #enquiry').clearingInput();
		return this.each(function() {
			var into = $(this);
			into.append('<span class="wpcf7-not-valid-tip error">' + message + '</span>');
			$('span.wpcf7-not-valid-tip').mouseover(function() {
				$(this).fadeOut('fast');
			});
			into.find(':input').mouseover(function() {
				into.find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
			});
			into.find(':input').focus(function() {
				into.find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
			});			
		});		
	};

	$.fn.wpcf7OnloadRefill = function() {
		return this.each(function() {
			var url = $(this).attr('action');
			if (0 < url.indexOf('#'))
				url = url.substr(0, url.indexOf('#'));

			var id = $(this).find('input[name="_wpcf7"]').val();
			var unitTag = $(this).find('input[name="_wpcf7_unit_tag"]').val();

			$.getJSON(url,
				{ _wpcf7_is_ajax_call: 1, _wpcf7: id },
				function(data) {
					if (data && data.captcha)
						$('#' + unitTag).wpcf7RefillCaptcha(data.captcha);

					if (data && data.quiz)
						$('#' + unitTag).wpcf7RefillQuiz(data.quiz);
				}
			);
		});
	};

	$.fn.wpcf7RefillCaptcha = function(captcha) {
		return this.each(function() {
			var form = $(this);

			$.each(captcha, function(i, n) {
				form.find(':input[name="' + i + '"]').clearFields();
				form.find('img.wpcf7-captcha-' + i).attr('src', n);
				var match = /([0-9]+)\.(png|gif|jpeg)$/.exec(n);
				form.find('input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]').attr('value', match[1]);
			});
		});
	};

	$.fn.wpcf7RefillQuiz = function(quiz) {
		return this.each(function() {
			var form = $(this);

			$.each(quiz, function(i, n) {
				form.find(':input[name="' + i + '"]').clearFields();
				form.find(':input[name="' + i + '"]').siblings('span.wpcf7-quiz-label').text(n[0]);
				form.find('input:hidden[name="_wpcf7_quiz_answer_' + i + '"]').attr('value', n[1]);
			});
		});
	};

	$.fn.wpcf7ClearResponseOutput = function() {
		return this.each(function() {
			$(this).find('div.wpcf7-response-output').hide().empty().removeClass('wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked');
			$(this).find('span.wpcf7-not-valid-tip').remove();
			$(this).find('img.ajax-loader').css({ visibility: 'hidden' });
		});
	};

})(jQuery);
