/**
 * ING global script
 *
 * @version   1.00.091109
 * @requires  LBi, jQuery
 */
var ING = (function($) {

	/**
	 * Global ING singleton, provides access to enclosed functionality
	 *
	 */
	var ING = {
		initialize: function() {
			
			// tell css we have js
			$(document.getElementById("content-header")).addClass('js-enabled');

			// global ie6 boolean
			this.isIE6 = /msie\s?6/i.test(navigator.userAgent);
			
			// main navigation
			$('#navigation-main ul').simpleMenu({
				toggleMenu: function(item, toggle) {
					var $item = $(item);
					var $list = $item.find('ul:first');
					if(toggle) {
						$item.addClass(this.activeClass);
						$list.fadeIn('fast');
					} else {
						$item.removeClass(this.activeClass);
						$list.slideUp('fast');
					}
				}
			});
			
			// dom modifications (equal heights etc)
			this.modifications = new DOMModifications();

			// smooth scrolling
			this.smoothScrolling = new SmoothScrolling();

			// toggle links
			this.toggler = new Toggler();
			
			// form controller
			this.forms = new LBi.Forms({
				ajaxEnabled: false,
				hintValues: true,
				hintClass: 'blurred',
				hintSelector: 'input:text[title]',
				replaceInputs: true
			});

			// tabs controller
			this.tabs = new LBi.Tabs({
				activeClass: 'selected'
			});
		}
	};


	/**
	 * Various DOM Modifications
	 * 
	 */
	var DOMModifications = function() {		
		this.equalize('#individuals .navigation-site');
		this.equalize('#individuals .features');
		this.equalize('#businesses .navigation-site');
		this.equalize('#businesses .features');
		this.equalize('.column > .middle');
		this.splitList('#country-list ul', 6);
		this.enableIEHoverables();
	};

	DOMModifications.prototype = {
		equalize:function(selector) {
			var cols = $(selector);
			var height = 0;
			for(var i=0; i<cols.length; i++) {
				height = Math.max(height, cols[i].offsetHeight);
			}

			if(height > 0) {
				cols.css({ height: height });
			}
		},

		enableIEHoverables:function() {
			if(ING.isIE6) {
				$('.column').hoverable({hoverClass: 'col-hover'});
				$('.brand').hoverable({hoverClass: 'brand-hover'});
				$('.contact-info li').hoverable({hoverClass: 'info-hover'});
				$('.navigation-site li').hoverable({hoverClass: 'unit-hover'});
			}
		},

		splitList:function(selector, columns) {
			var list = $(selector).removeClass('splitted');
			var cls = list.attr('class');
			var items = list.find('li');
			var perColumn = Math.ceil(items.length / (columns || 2));
			
			var index = 0;
			for(var i=0; i<columns; i++) {
				var col = $('<ul></ul>').addClass(cls);
				for(var j=0; j<perColumn; j++) {
					if(!items[index]) {
						break;
					}
					col.append(items[index]);
					index += 1;
				}

				list.before(col);
			}

			list.remove();
		}
	};


	/**
	 * Smooth scrolling
	 *
	 */
	function SmoothScrolling() {
		LBi.subscribe('click:link', this.handleClick.bind(this));
	}

	SmoothScrolling.prototype = {
		handleClick: function(e) {
			var link = e.target;
			var hash = link.hash;
			if(hash) {
				var node = $(hash)[0];
				if(node && LBi.Dispatcher.fire('smooth-scroll', link)) {
					this.hash = hash;
					e.preventDefault();
					this.scrollTo(node);
				}
			}
		},

		scrollTo:function(target) {
			var $target = $(target);
			if($target.is(':visible')) {
				this.target = target;
				var targetY = $(target).offset().top;
				$(document.documentElement).animate({
					scrollTop: targetY
				}, 1000, this.setHash.bind(this));
			}
		},

		setHash:function() {
			if(this.hash) {
				window.location.hash = this.hash;
			}
		}
	};


	/**
	 * Hoverable elements plugin
	 *
	 */
	var Hoverable = function(node, settings) {
		var options = $.extend({}, Hoverable.Defaults, settings);
		var $node = $(node);
		$node.hover(function() {
			$node.addClass(options.hoverClass);
		}, function () {
			$node.removeClass(options.hoverClass);
		});
	};

	Hoverable.Defaults = {
		hoverClass: 'hover'
	};

	$.registerPlugin('hoverable', Hoverable);

	
	/**
	 * Toggleable elements via link hashes
	 *
	 */
	var Toggler = function(settings) {
		this.settings = $.extend({}, Toggler.Defaults, settings);
		this.regex = new RegExp('(^|\\s)' + this.settings.relation + '(\\s|$)');
		
		this.relations = new LBi.LinkRelations();
		this.relations.subscribe(this.regex, this.handleClick.bind(this));

		LBi.subscribe('smooth-scroll', this.checkToggle.bind(this));
	};

	Toggler.prototype = {
		handleClick:function(e) {
			var link = e.target;
			var hash = link.hash;
			var target = hash? $(hash)[0] : null;
			if(target) {
				e.preventDefault();
				this.toggle(target);
			}
		},

		checkToggle:function(e) {
			var link = e.target;
			if(this.regex.test(link.rel)) {
				e.preventDefault();
			}
		},

		toggle:function(node) {
			$(node).slideToggle()
		}
	};

	Toggler.Defaults = {
		relation: 'toggle'
	};

	// dom loaded
	$(function() {
		ING.initialize();
	});	
	
	// expose
	return ING;

})(jQuery);

/*  psfinder for Old content  */

function selectTab2(tab){
   document.getElementById("tab-"+currentTab).className="normal";
   document.getElementById("tab-"+tab).className="selected";

   //document.getElementById("a-"+currentTab).style.display="block";
   //document.getElementById("a-"+tab).style.display="none";

  // document.getElementById("span-"+currentTab).style.display="none";
  // document.getElementById("span-"+tab).style.display="block";
  
  if(currentCountry!=""){
     displayOFPanel(tab);
   }
   currentTab=tab;
  
}

/*  Old version of psfinder  */

function selectTab(tab){
   document.getElementById("tab-"+currentTab).className="normal";
   document.getElementById("tab-"+tab).className="selected";

   document.getElementById("a-"+currentTab).style.display="block";
   document.getElementById("a-"+tab).style.display="none";

   document.getElementById("span-"+currentTab).style.display="none";
   document.getElementById("span-"+tab).style.display="block";
  if(currentCountry!=""){
     displayOFPanel(tab);
   }
   currentTab=tab;
  
}

function displayOFPanel(tab){
   document.getElementById(currentTab).style.display="none";
   document.getElementById(tab).style.display="block";
}