(function($){
	/* hoverIntent */
	$.fn.hoverIntent = function(f,g) {
		// default configuration options
		var cfg = {
			sensitivity: 7,
			interval: 100,
			timeout: 0
		};
		// override configuration options with user supplied object
		cfg = $.extend(cfg, g ? { over: f, out: g } : f );

		// instantiate variables
		// cX, cY = current X and Y position of mouse, updated by mousemove event
		// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
		var cX, cY, pX, pY;

		// A private function for getting mouse position
		var track = function(ev) {
			cX = ev.pageX;
			cY = ev.pageY;
		};

		// A private function for comparing current and previous mouse position
		var compare = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			// compare mouse positions to see if they've crossed the threshold
			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
				$(ob).unbind("mousemove",track);
				// set hoverIntent state to true (so mouseOut can be called)
				ob.hoverIntent_s = 1;
				return cfg.over.apply(ob,[ev]);
			} else {
				// set previous coordinates for next time
				pX = cX; pY = cY;
				// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
			}
		};

		// A private function for delaying the mouseOut function
		var delay = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s = 0;
			return cfg.out.apply(ob,[ev]);
		};

		// A private function for handling mouse 'hovering'
		var handleHover = function(e) {
			// next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
			while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
			if ( p == this ) { return false; }

			// copy objects to be passed into t (required for event object to be passed in IE)
			var ev = jQuery.extend({},e);
			var ob = this;

			// cancel hoverIntent timer if it exists
			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }

			// else e.type == "onmouseover"
			if (e.type == "mouseover") {
				// set "previous" X and Y position based on initial entry point
				pX = ev.pageX; pY = ev.pageY;
				// update "current" X and Y position based on mousemove
				$(ob).bind("mousemove",track);
				// start polling interval (self-calling timeout) to compare mouse coordinates over time
				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}

			// else e.type == "onmouseout"
			} else {
				// unbind expensive mousemove event
				$(ob).unbind("mousemove",track);
				// if hoverIntent state is true, then call the mouseOut function after the specified delay
				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
			}
		};

		// bind the function to the two event listeners
		return this.mouseover(handleHover).mouseout(handleHover);
	};
})(jQuery);

(function($){
	/* FONT-TEXT-RESIZER */
	$.fn.textResizer = function(opt) {
		var obj = $(this);
		var defaults = {
			largeButton: '.enlarge-text',
			mediumButton: '.default-size-text',
			smallButton: '.shrink-text',
			largeClass: 'large',
			smallClass: 'small'
		};
		var options = $.extend({}, defaults, opt);
		var increaseSize = function(obj) {
			obj.addClass(options.largeClass).removeClass(options.smallClass);
		};
		var decreaseSize = function(obj) {
			obj.addClass(options.smallClass).removeClass(options.largeClass);
		};
		var resetSize = function(obj) {
			obj.removeClass(options.largeClass).removeClass(options.smallClass);
		};
		$(options.largeButton).click(function(){
			increaseSize(obj);
			return false;
		});
		$(options.smallButton).click(function(){
			decreaseSize(obj);
			return false;
		});
		$(options.mediumButton).click(function(){
			resetSize(obj);
			return false;
		});
		return obj;
	};
})(jQuery);


jQuery(function($){
		$('div#main-navigation > ul > li').hoverIntent(
			function(){
				$(this).find('div.subnav:first').slideUp(function(){
					$(this).slideDown('fast');
				});
			},
			function(){
				$(this).find('div.subnav:first').slideUp('fast');
			}
		);
		$('div.subnav').css('display','block').slideUp(0);
	$('#main_body').textResizer();
	$('div.sub_navigation .sub_navigation_level_2 dt a.icon').click(function() {
		var parent = $(this).parent().parent('dl');
		if (parent.hasClass('with-child')) {
			if(!parent.hasClass('expanded')) {
				parent.addClass('expanded');
			} else {
				parent.removeClass('expanded');
			}
			return false;
		}
	});
	$('div.sub_navigation .sub_navigation_level_3 dt a.icon').click(function() {
		var parent = $(this).parent().parent('dl');
		if (parent.hasClass('with-child')) {
			if(!parent.hasClass('expanded')) {
				parent.addClass('expanded');
			} else {
				parent.removeClass('expanded');
			}
			return false;
		}
	});
	$('#page-controls .print_icon').click(function() {
		print();
	});
	//$('.subpage a[href$=pdf]').after('<img src="img/icon_pdf.gif" class="icon" alt="Download PDF" />');
	//$('.subpage a[href$=xls], .subpage a[href$=xlsx]').after('<img src="img/icon_xls.gif" class="icon" alt="Download Excel" />');
});

function languageSelector() {
	document.location.href = document.langSelector.language.value;
}

function changeFlashHeight(divHeight) {
	$('#product-selector').css('height', divHeight); 
	$.scrollTo( $('#product-selector'), 800);
}

var flashvars = {};
var params = {menu:"false", wmode:"opaque",allowScriptAccess:"always"}; 
var attributes = {};
swfobject.embedSWF("swf/contactus.swf", "sidebar_contact_us", "177", "180", "10.0.0",false, flashvars, params, attributes);
