// RE-POSITION MYMETEOR REGISTER LINK ON STARVED SCREENS
var resizeMyMeteor = function() {
	if (document.getElementById('MyMeteorLogin')) {
		if (jQuery(window).width() < (jQuery('#header').width() + 120)) {
			jQuery('#MyMeteorLogin').addClass('MyMeteorLoginSml');
		}
	}
};

// MEGA MENU TOGGLES
var displayMegaMenuMotion = false;
var displayMegaMenu = function(menuId) {
	jQuery('select').css({'visibility' : 'hidden'});
	var layoutHeight = jQuery(document).height() + document.body.scrollTop + 'px';
	jQuery('#MegaMenuOverlay').css({'display' : 'block', 'height' : layoutHeight, opacity : 0}).animate({opacity:0.4},600);
	jQuery('#'+ menuId).show();
	jQuery('#'+ menuId + ' div, #'+ menuId + ' h3').hide().fadeIn(5);
};


var hideMegaMenu = function() {
	jQuery('select').css({'visibility' : 'visible'});
	jQuery('#shop_menu, #find_out_menu, #help_menu').stop().hide();
	jQuery('#MegaMenuOverlay').stop().fadeOut(200);
};

var switchMegaMenu = function(menuId) {
	jQuery('#shop_menu, #find_out_menu, #help_menu').stop().hide();
	jQuery('#'+ menuId).show();
	jQuery('#'+ menuId + ' div, #'+ menuId + ' h3').hide().fadeIn(5);
};

// APPLY CURRENT PROTOCOL TO SCRIPT REQUESTS
var addProtocol = function(uri) {
	return (('https:' == document.location.protocol) ? 'https://' : 'http://');
};

// SUPPRESS JS ERRORS
//window.onerror = function() {
//	return true;
//};	

// INCLUDE GOOGLE CSE (before dom loaded)// 
// google.load('search', '1');
// google.setOnLoadCallback(function() {
// 	customSearchControl = new google.search.CustomSearchControl('013462338176100328386:ol-ikhvtuco');
// 	customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
// 	customSearchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);
// 	customSearchControl.setNoResultsString("Sorry, no pages matched that search term.")
// 	customSearchControl.draw('search_results-inner');
// }, true);

jQuery(document).ready(function() {	
	// FIX IE BACKGROUND BUG 
	if (jQuery.browser.msie && (parseInt(jQuery.browser.version) === 6)) {
		try {
			document.execCommand('BackgroundImageCache', false, true);
		} catch (e) {}
	}
	
	// RESIZE MYMETEOR LOGIN IF NECESSARY
	resizeMyMeteor();	
	
	// CLEAR SEARCH FIELD (+ PIN IN IE6+7)
	if (document.getElementById('searchTerm')) {
		jQuery('#searchTerm').focus(function() {
			if (this.value === 'Search') {
				this.value = '';
			}
		}).blur(function(){
			if (this.value.length === 0) {
				this.value = 'Search';
			}	
		});
		if (jQuery.browser.msie && (parseInt(jQuery.browser.version) < 8)) {
			var pinBg = '';
			jQuery('#mobilePw').focus(function() {
				var pinBg = jQuery(this).css('background-image');
				jQuery(this).css({'background-image' : 'none'});
			}).blur(function(){
				if (this.value.length === 0) {
					jQuery(this).css({'background-image' : pinBg});
				}
			});
		}
	}

	//BUILD MEGA MENU DEPENDANCIES (TODO: document.location.protocol)
	if (document.getElementById('nav')) {
		var overlay = document.createElement('div');
		overlay.id = 'MegaMenuOverlay';
		document.body.appendChild(overlay);
		
		var megaMenuCallback = function() {
			var mnuContainer = document.createElement('div');
			mnuContainer.id = 'menuContainer'
			mnuContainer.innerHTML = megaMenuContents;
			document.body.appendChild(mnuContainer);
		
			jQuery('.find_out, .shop, .help').hoverIntent({    
				sensitivity: 3,
				interval: 25,
				over: function() {
					displayMegaMenu(this.className + '_menu');
				},
				timeout: 500,     
				out: function(){}
			});
			
			jQuery('.switch_to_shop').hoverIntent({    
				sensitivity: 3,
				interval: 25,
				over: function() {
					switchMegaMenu('shop_menu');
				},
				timeout: 500,     
				out: function(){}
			});
			
			jQuery('.switch_to_find_out').hoverIntent({    
				sensitivity: 3,
				interval: 25,
				over: function() {
					switchMegaMenu('find_out_menu');
				},
				timeout: 500,     
				out: function(){}
			});
			
			jQuery('.switch_to_help').hoverIntent({    
				sensitivity: 3,
				interval: 25,
				over: function() {
					switchMegaMenu('help_menu');
				},
				timeout: 500,     
				out: function(){}
			});
			
			jQuery('#MegaMenuOverlay, #menuContainer, .close_mega_menu').click(function() {
				hideMegaMenu();
			}).hoverIntent({
				sensitivity: 7,
				interval: 100,
				over: function() {
					hideMegaMenu();
				},
				timeout: 500,     
				out: function(){}
			});
			
			jQuery('#MegaMenuOverlay, #menuContainer, .close-left, .close-right').mouseover(function() {
				hideMegaMenu();	
			});
			
			jQuery('.mega_menu, .mega_menu h2').click(function(evt) {
				evt.stopPropagation();	
			}).mouseover(function(evt) {
				evt.stopPropagation();	
			})
			
			jQuery('#nav, #nav *, .mega_menu *').each(function() {
				this.onselectstart = 'return false';
			}).css({'-webkit-user-select' : 'none', '-moz-user-select' : '-moz-none'});
	
			megaMenusAvailable = true;
	
			// PRELOAD MEGAMENU IMAGES
			if (jQuery.browser.msie && (parseInt(jQuery.browser.version) === 6)) {
				var mmImgs = ['mega_menu_shop.gif', 'mega_menu_help.gif', 'mega_menu_findOut.gif', 'mega_menu_a_bg.gif'];		
			} else {
				var mmImgs = ['mega_menu_shop.png', 'mega_menu_help.png', 'mega_menu_findOut.png', 'mega_menu_a_bg.gif'];		
			}
			for (var i = 0, j = mmImgs.length; i < j; i++) {
				var nImg = new Image();
				nImg.src = '/v4_shared/i/global_nav/'+ mmImgs[i];
				jQuery(nImg).css({'position' : 'absolute', 'top' : '0px', 'left' : '-2000px'});
				document.body.appendChild(nImg);
			}
		};
		
		jQuery.getScript('/v4_shared/js/megaMenu.js', function(xhr) {
			try {
				megaMenuCallback();
			} catch(err) {
				eval(xhr);
				megaMenuCallback();
			}
		}); 
	}

	// SEARCH AUTOCOMPLETE (TODO: document.location.protocol)
	if (document.getElementById('search')) {
		var autoCompleteDataCallback = function() {
			var isGoogleSearch = false;
			
			var noResults = document.createElement('div');
			noResults.id = 'noRlts';
			noResults.innerHTML = 'Search Meteor online';
			document.body.appendChild(noResults);
			noResults.style.display = 'none';
			noResults.onclick = function() {
				searchSubmit(jQuery('#searchTerm').val());
				jQuery('#noRlts').css({'display' : 'none'});							
			};
			
			jQuery('#searchTerm').keyup(function() {
				var sTrm = jQuery('#searchTerm');
				if (jQuery('.ac_results li').length === 0 && sTrm.val().length > 0) {
					jQuery('#noRlts').css({'display' : 'block', 'position' : 'absolute', 'top' : sTrm.offset().top + sTrm.height() + 'px', 'left' : sTrm.offset().left + 'px'});
				} else {
					jQuery('#noRlts').css({'display' : 'none'});			
				}
			}).autocomplete(searchAutocompleteData, {
				formatItem: function(item, pos, ttl) {
					return item.text;
				},
				selectFirst: false,
				scroll: false
			}).result(function(event, item) {
				if (! isGoogleSearch) {
					var dom = '';
					if (typeof meteorIeDomain != 'undefined' && (item.url.indexOf('http') === -1)) {
						dom = meteorIeDomain();
					}
					location.href = dom + item.url;
				}
			});
		};
		jQuery.getScript('/v4_shared/js/autocompleteData.js', function(xhr) {
			try {
				autoCompleteDataCallback();
			} catch(err) {
				eval(xhr);
				autoCompleteDataCallback();
			}
		});
		
		// GOOGLE CSE SEARCH
		var resultsLayedOut = false;
		var resultsLoaded;		
		var searchSubmit = function(sTerm) {
			if (! document.getElementById('result_backBut')) {
				var bb = document.createElement('a');
				bb.innerHTML = 'Back';
				bb.href = '#';
				bb.id = 'result_backBut';

				var searchFor = document.createElement('div');
				searchFor.id = 'CSEsearchTrm';
			
				var searchPane = document.getElementById('search_results-inner');
				searchPane.insertBefore(searchFor, searchPane.firstChild);				
				searchPane.insertBefore(bb, searchPane.firstChild);			
			}
			var gooInputs = document.getElementById('search').getElementsByTagName('input');
			gooInputs[0].value = sTerm;
			jQuery(gooInputs[1]).click();
		
			clearInterval(resultsLoaded);
			document.getElementById('CSEsearchTrm').innerHTML = '<h1>Loading...</h1>';				
		
			// POSITION CSE ONSCREEN
			var contentLeft = jQuery('#header').offset().left;
			if(! resultsLayedOut) {
				jQuery('#search_results').css({'z-index' : '9999995', 'left': contentLeft + 'px', 'top' : jQuery('#header').offset().top + jQuery('#header').height() + 'px'});
				jQuery('#main_footer').css({'position' : 'absolute', 'top' : jQuery('#search_results').offset().top + jQuery('#search_results').height() + 'px', 'left' : contentLeft + 20 + 'px'});
				jQuery('#main_content_home, #main_content').css({'display' : 'none'});
				resultsLayedOut = true;				
			}

			var resultsHeight = jQuery('#search_results').height();
			var searchResults = jQuery('#search_results');
			var numberMatchesDisplayed = false;
			resultsLoaded = setInterval(function() {
				if(resultsHeight != searchResults.height()) {
					jQuery('#main_footer').css({'top' : jQuery('#search_results').offset().top + jQuery('#search_results').height() + 20 + 'px', 'left' : contentLeft + 20 + 'px'});
					resultsHeight = jQuery('#search_results').height();
					// SCROLL TO TOP
					jQuery('#search_results .gsc-cursor-page').click(function() {
						document.getElementById('CSEsearchTrm').innerHTML = '<h1>xxxxxxxxxxxxxxxxxxxxxxxxx...</h1>';
						jQuery('html,body').animate({scrollTop: 0}, 1);
					});
					numberMatchesDisplayed = false;
				}
				if (! numberMatchesDisplayed) {
					var numMatches = jQuery('#search_results .gsc-cursor-page').length;
					if (numMatches <= 1 || jQuery('.gsc-cursor-current-page')[0].innerHTML != '1') {
						var rsltText = '';
					} else {
						var rsltText = 'Around '+ ((numMatches * 10) - 10) +' matches found.';
					}
					document.getElementById('CSEsearchTrm').innerHTML = '<h1>Search results for \''+ sTerm +'\'. '+ rsltText +'</h1>';
					numberMatchesDisplayed = true;	
				}
			}, 50);
			
			// RETRACT AUTOCOMPLETE
			setTimeout(function() {
				jQuery('#noRlts').css({'display' : 'none'});			
				jQuery('#searchTerm').val(sTerm);
				jQuery('#searchTerm').blur();
			}, 50);	
			
			// BACK BUTTON
			jQuery('#result_backBut').click(function(evt) {
				evt.preventDefault();
				jQuery('#search_results').css({'left': '-2000px', 'top' : jQuery('#header').offset().top + jQuery('#header').height() + 'px'});
				jQuery('#main_footer').css({'position' : 'relative', 'top' : 'auto', 'left' : 'auto'});
				jQuery('#main_content_home, #main_content').css({'display' : 'block'});
				jQuery('#searchTerm').val('Search');				
				resultsLayedOut = false;								
			});	
		};
		
		jQuery('#search').submit(function(e) {
			e.preventDefault();
			searchSubmit(jQuery('#searchTerm').val());
		});		
	}	
});


var gaTrackEvent = function(category, action){
  _gaq.push(['_trackEvent', category, action])
}


// STATISTICS
/*
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
try {
	var pageTracker = _gat._getTracker("UA-1972035-1");
	pageTracker._setDomainName(".meteor.ie");
	pageTracker._trackPageview();
} catch(err) {}
*/
