(function($){
	$.fn.extend({
		initGlobalNav: function(opt){
			var options = $.extend({
				timeout: 150,
				menu: '> ul > li',
				menuItem: 'ul',
				init: function(me){}
			}, opt || {});
			
			var openItem;
			var timer;
			
			var show = function() {
				hide();
				openItem = $(this).find(options.menuItem).eq(0).css('visibility', 'visible');
				
				if($.browser.msie && $.browser.version.number == 6){
					$(document).find("select").each(function() { $(this).css("visibility", "hidden"); });
				}
			};
			
			var hide = function(timeout) {
				if (timer) {
					window.clearTimeout(timer);
					timer = null;
				}
				
				var t = isNaN(timeout)? 0 : timeout;
				if (t > 0) {
					timer = window.setTimeout(hide, t);
				} else {
					if (openItem) openItem.css('visibility', 'hidden');
				}
				
				if($.browser.msie && $.browser.version.number == 6){
					$(document).find("select").each(function() { $(this).css("visibility", "visible"); });
				}
			};
			
			options.init(this);
			this.find(options.menu).hover(show, function(){ hide(options.timeout); });
			return this;
		},
		initTopNav: function(opt){
			var options = $.extend({
				navItem:		'.top-nav-item',
				navButton:		'.top-nav-button',
				activeState:	'active',
				closeBtnClass:	'.closeButton',
				outOfWinClass:	'.out-of-window',
				searchInput:	':text[name=keyword]',
 				subWrapper:		'#sub-wrapper'
			}, opt || {});

			var delegateDeactivate = function(evt){
				deactivate(evt.data);
			};
			var activate = function(el){
				var e = $(el);
				e.children(options.navButton).addClass(options.activeState).next().show();
				deactivate(e.siblings(options.navItem));
				$(document).one('mouseup', el, delegateDeactivate);
			};
			var deactivate = function(el){
				$(el).children(options.navButton).removeClass(options.activeState).next().hide();
				$(document).unbind('mouseup', delegateDeactivate);
			};
			
			var navItems = this.find(options.navItem).each(function(){
				var e = $(this);
				e.prepend(e.find(options.navButton + ', ' + options.subWrapper));
				if (e.is(':has(.error)'))
					activate(this);
				else
					deactivate(this);
			}).click(function(){
				activate(this);
			}).hover(
				function(){
					var dom = $(this).children(options.navButton);
					if (dom.hasClass('link-01'))
						activate(this);
					else
						$(this).children(options.navButton).addClass(options.activeState);
				},
				function(){
					var dom = $(this).children(options.navButton);
					if (dom.next(':visible').length < 1) dom.removeClass(options.activeState);
				}
			).mouseup(
				function(e){ e.stopPropagation(); }
			);
			navItems.find(options.closeBtnClass).click(
				function(){ deactivate($(this).parents(options.navItem)); return false;}
			);
			navItems.find(options.searchInput).each(function(){
				var $t = $(this);
				$t.data('indic', $t.val());
			}).focus(function(){
				var $t = $(this);
				if ($t.data('indic') == $t.val()) $t.val('');
			}).blur(function(){
				var $t = $(this);
				if (!$t.val()) $t.val($t.data('indic'));
			}).parents('form').submit(function(){
				var $s = $(this).find(options.searchInput);
				if ($s.val() == $s.data('indic')) $s.val('');
			});
			return this;
		},
		initSubmit: function(selector){
			var s = selector || '.submit-button';
			this.find(s).click(function(){
				$(this).parents('form').submit();
				return false;
			});
			return this;
		},
		initPromo: function(opt){
			var settings = $.extend({
				buttons: '> #home-buttons a',
				mouseOverColor: 'mouseOverColor',
				mouseOutColor: 'mouseOutColor',
				promoImage: 'promoImage'
			}, opt || {});
			
			var promos = this.find(settings.buttons);
			var rand = Math.floor(Math.random() * promos.size());
			this.css('background-image', 'url(' + promos.eq(rand).attr(settings.promoImage) + ')');
			
			var self = this;
			promos.each(
				function(){
					$(this).attr(settings.mouseOutColor, $(this).css('background-color'));
				}
			).hover(
				function(){
					$(this).css('background-color', $(this).attr(settings.mouseOverColor));
					self.css('background-image', 'url(' + $(this).attr(settings.promoImage) + ')');
				},
				function(){
					$(this).css('background-color', $(this).attr(settings.mouseOutColor));
				}
			);
			return this;
		},
		randomBgImg: function(opt){
			var settings = $.extend({
				imgPath: '/images',
				imgNames: ['1.jpg', '2.jpg', '3.jpg']
			}, opt || {});
			
			var rand = Math.floor(Math.random() * settings.imgNames.length);
			return this.css('background', '#000 url('+ settings.imgPath +'/'+ settings.imgNames[rand] +') no-repeat center top');
		},
		registerOmniLinkCall: function(opt){
			var settings = $.extend({
				defaultLinkName: 'generic_link_click',
				delimiter: '=',
				handle: 'omniValue'
			}, opt || {});
			
			return this.bind('click submit', function(e){
				if (window.omniLinkCall) {
					var linkName = settings.defaultLinkName;
					var classes = this.className.split(' ');
					$.each(classes, function(){
						var arr = this.split(settings.delimiter);
						if (arr[0] == settings.handle) {
							if (arr[1]) linkName = arr[1];
						}
					});
					
					var fire = !(this.tagName.toLowerCase() == 'form' && e.type == 'click');
					if (fire) omniLinkCall(this, linkName);
				}
			});
		}
	});
	
	$.extend({
		hasFlashPlayer: function(){
			var b = false;
			if (window.ActiveXObject) {
				try {
					if (new ActiveXObject('ShockwaveFlash.ShockwaveFlash')) b = true;
				} catch (e) {}
			} else if (navigator.mimeTypes) {
				var x = navigator.mimeTypes['application/x-shockwave-flash'];
				if (x && x.enabledPlugin) b = true;
			}
			return b;
		},
		hasFlashContent: function(selector){
			var s = selector || '.flash-wrapper';
			return $('body').is(':has(' + s + ')');
		},
		getNoFlashPath: function(opt){
			var settings = $.extend({
				indexPageRegex: /^\/+web\/+nfs.*(\/+(home\/*)?)?$/i,
				/**/
				indexPage: '/web/nfs/home',
				currPage: document.location.pathname,
				suffix: '-noflash'
			}, opt || {});
			
			var jd = ';'; // demiliter of jsessionid
			var a = settings.currPage.split(jd);
			if (settings.indexPageRegex.test(a[0])) {
				a[0] = settings.indexPage;
			}
			a[0] = a[0].replace(/\/+$/,'') + settings.suffix;
			return a.join(jd);
		},
		flashRedirect: function(selector, opt){
			if ($.hasFlashContent(selector) && !$.hasFlashPlayer()) {
				document.location.pathname = $.getNoFlashPath(opt);
			}
		}
	});
})(jQuery);

var orderOverlay = {
	pageName: 'Guest',
	locale: 'en_US',
	getURL: function(){
		return {
			en_AU: 'http://eastore.ea.com/store/eaemea/en_GB/pd/ProductID.119971300/Currency.GBP/ThemeID.850300/Pgm.23554300',
			en_CA: 'http://shift.needforspeed.com/us/commerceBox?omniPage='+ this.pageName.toUpperCase() +'&prop10='+ this.pageName +'&prop15=General%20Info&showPreOrderPromo=false',
			en_GB: 'http://shift.needforspeed.com/uk/commerceBox?omniPage='+ this.pageName.toUpperCase() +'&prop10='+ this.pageName +'&prop15=General%20Info&showPreOrderPromo=false',
			en_US: 'http://shift.needforspeed.com/us/commerceBox?omniPage='+ this.pageName.toUpperCase() +'&prop10='+ this.pageName +'&prop15=General%20Info&showPreOrderPromo=false',
			de_DE: 'http://affiliate.electronic-arts.de/affiliate.php?paid=2&pid=260&sid=1',
			es_ES: 'http://es.ea.com/pages/13782/',
			fr_FR: 'http://shift.needforspeed.com/fr/commerceBox?omniPage='+ this.pageName.toUpperCase() +'&prop10='+ this.pageName +'&prop15=General%20Info&showPreOrderPromo=false',
			it_IT: 'http://eastore.ea.com/DRHM/servlet/ControllerServlet?Action=DisplayProductSearchResultsPage&SiteID=ea&Locale=en_US&ThemeID=718200&CallingPageID=ProductSearchResultsPage&Env=BASE&keywords=nfsshift&intcmp=eaint85',
			ru_RU: 'http://shift.needforspeed.com/ru/commerceBox?omniPage='+ this.pageName.toUpperCase() +'&prop10='+ this.pageName +'&prop15=General%20Info&showPreOrderPromo=true',
			pl_PL: 'http://shift.needforspeed.com/pl/commerceBox?omniPage='+ this.pageName.toUpperCase() +'&prop10='+ this.pageName +'&prop15=General%20Info&showPreOrderPromo=true',
			pt_BR: '#'
		}[this.locale];
	}
};

jQuery(function($){
	//start preorder/buy now overlay
	var url = orderOverlay.getURL();
	var omniClass = 'omniture-link';
	var orderLinks = $('a.shift-preorder-link, a[href=shift-preorder-link]').addClass(omniClass).addClass('omniValue=buynow_link_click').removeClass('omniValue=preorder_link_click');
	if (/^http:\/\/shift.needforspeed.com/.test(url)) {
		if ($.browser.msie) {
			var _winWidth = 772;
			var _winHeight = 522;
			var leftPos = (screen.width) ? (screen.width - _winWidth)/2 : 0;
			var topPos = (screen.height) ? (screen.height - _winHeight)/2 : 0;
			orderLinks.click(function(e){
				window.open(url, "SHIFTPreorderWindow", "top="+topPos+",left="+leftPos+",width="+_winWidth+",height="+_winHeight+",resizable=no,scrollbars=no,status=no");
				return false;
			});
		} else {
			var conf = {
				target: '#shift-preorder-wrapper',
				finish: {top:200,absolute:true},
				speed: 'fast',
				fadeInSpeed: 'fast',
				closeOnClick: false,
				close: '#close',
				expose: {color:'#333333',opacity:0.75,loadSpeed:'fast',closeOnClick: false},
				onLoad: function(){
					if ($(conf.target).children('iframe').length == 0) {
						 $('<iframe/>').hide()
						.attr({src: url, scrolling: 'no', frameborder: '0'})
						.load(function(){
							$(this).show().siblings('#loading').remove();
						})
						.appendTo(conf.target);
					}
				}
			};
			var link0 = orderLinks.eq(0).overlay(conf);
			orderLinks.not(':first').removeClass(omniClass).click(function(e){link0.click(); return false;});
		}
	} else if (url == '#') {
		orderLinks.remove();
	} else {
		orderLinks.attr({href: url, target: '_blank'});
	}
	//end preorder/buy now overlay
	
	/*
	//start leaving warning
	(function(){
		var conf = {
			target: '#leaving-warning-wrapper',
			finish: {top:200, absolute:true},
			speed: 'fast',
			fadeInSpeed: 'fast',
			closeOnClick: false,
			close: '.cancel_leaving',
			expose: {color:'#333333',opacity:0.75,loadSpeed:'fast',closeOnClick:false},
			oneInstance: false,
			onLoad: function(){
				var trgr = this.getTrigger();
				$(conf.target).find('.continue_leaving').attr('href', trgr.data('href'));
				trgr.data('href', trgr.attr('href'));
			}
		};
		var links = $('a.leaving-warning-trigger, a[target=leaving-warning-wrapper]');
		var link0 = links.eq(0).overlay(conf);
		link0.data('href', link0.attr('href'));
		links.not(':first').click(function(){link0.data('href', $(this).attr('href')).click(); return false;});
	})();
	//end leaving warning
	*/
});