var rim = rim || {};

rim.wtbApps = [
	['YouMail Visual Voicemail', 'youMailVisualVoicemail', 						'http://appworld.blackberry.com/webstore/content/724'],
	['Ultra Today Plus', 'ultraTodayPlus', 										'http://appworld.blackberry.com/webstore/content/8833'],
	['Lookout Mobile Security', 'lookoutMobileSecurity',						'http://appworld.blackberry.com/webstore/content/8469'],
	['SmrtGuard Mobile Security', 'smartGuardMobileSecurity',					'http://appworld.blackberry.com/webstore/content/6143'],
	['Viigo for BlackBerry', 'viigoForBlackBerry',								'http://appworld.blackberry.com/webstore/content/558'],
	['Bloomberg Mobile', 'bloombergMobile',										'http://appworld.blackberry.com/webstore/content/939'],
	['AP Mobile', 'apMobile', 													'http://appworld.blackberry.com/webstore/content/895'],
	['n-tv mobil', 'ntvMobile',													'http://appworld.blackberry.com/webstore/content/7715'],
	['TIME Mobile', 'timeMobile', 												'http://appworld.blackberry.com/webstore/content/2609'],
	['BlackBerry Messenger', 'blackBerryMessenger', 							'http://appworld.blackberry.com/webstore/content/3729'],
	['crunchSMS', 'crunchSms', 													'http://appworld.blackberry.com/webstore/content/4736'],
	['Facebook', 'facebook',													'http://appworld.blackberry.com/webstore/content/680'],
	['Twitter', 'twitter',														'http://appworld.blackberry.com/webstore/content/8160'],
	['Windows Live Messenger', 'windowsLiveMessenger',							'http://appworld.blackberry.com/webstore/content/687'],
	['Animated ScreenSavers', 'animatedScreenSavers', 							'http://appworld.blackberry.com/webstore/content/5695'],
	['BigTinCan BuzzMe', 'bigTinCanBuzzMe',										'http://appworld.blackberry.com/webstore/content/1019'],
	['Daily Horoscope', 'dailyHoroscope',										'http://appworld.blackberry.com/webstore/content/2152'],
	['Flixster', 'flixster', 													'http://appworld.blackberry.com/webstore/content/2180'],
	['PatternLock Lite', 'patternLockLite',										'http://appworld.blackberry.com/webstore/content/2296'],
	['Real Estate Powered by Smarter Agent', 'realEstatePoweredBySmarterAgent',	'http://appworld.blackberry.com/webstore/content/234'],
	['Call Time Tracker by momentem', 'callTimeTrackerByMomentem', 				'http://appworld.blackberry.com/webstore/content/830'],
	['Dragon for E-Mail', 'dragonForEmail',										'http://appworld.blackberry.com/webstore/content/8108'],
	['Activity Log Classic', 'activityLogClassic', 								'http://appworld.blackberry.com/webstore/content/8123'],
	['PhotoClub', 'photoClubFunnyMakeMachineWithPhotos', 'http://appworld.blackberry.com/webstore/content/10573'],
	['XENOZU YouTube Player', 'xenozuYouTubePlayer', 							'http://appworld.blackberry.com/webstore/content/1486'],
	['iTookThis- OnMyPhone', 'iTookThisOnMyPhone', 								'http://appworld.blackberry.com/webstore/content/894'],
	['Tivo&reg; DVR Scheduler', 'tivoDvrScheduler', 							'http://appworld.blackberry.com/webstore/content/3622'],
	['Poynt', 'poynt', 															'http://appworld.blackberry.com/webstore/content/844'],
	['WHERE', 'where', 															'http://appworld.blackberry.com/webstore/content/916'],
	['Trapster', 'trapster', 													'http://appworld.blackberry.com/webstore/content/529'],
	['GPS Tracker', 'gpsTracker', 												'http://appworld.blackberry.com/webstore/content/567'],
	['Buzzd', 'buzzd', 															'http://appworld.blackberry.com/webstore/content/1865'],
	['Call Control Blacklist Lite', 'callControlBlacklistLite', 				'http://appworld.blackberry.com/webstore/content/3535'],
	['QuickPull Free', 'quickPullFree', 										'http://appworld.blackberry.com/webstore/content/1300'],
	['PrivacyStar', 'privacyStar',												'http://appworld.blackberry.com/webstore/content/4890'],
	['Color ID FREE! LED Light Customizer', 'colorIdFreeLedLightCustomizer',	'http://appworld.blackberry.com/webstore/content/3003'],
	['DriveSafely', 'driveSafely', 												'http://appworld.blackberry.com/webstore/content/3381'],
	['BlackBerry App World', 'blackBerryAppWorld', 								'http://appworld.blackberry.com/webstore/content/1'],
	['eBay', 'ebay', 															'http://appworld.blackberry.com/webstore/content/4557'],
	['Cellufun Game Community', 'cellufunGameCommunity', 						'http://appworld.blackberry.com/webstore/content/850'],
	['Tesco Clubcard', 'tescoClubcard',											'http://appworld.blackberry.com/webstore/content/8986'],
	['OurGroceries Shopping List', 'ourGroceriesShoppingList', 					'http://appworld.blackberry.com/webstore/content/7224'],
	['Calorie Cruncher by FatSecret', 'calorieCruncherByFatSecret', 			'http://appworld.blackberry.com/webstore/content/1565'],
	['Calorie Tracker by LIVESTRONG', 'calorieTrackerByLivestrong', 			'http://appworld.blackberry.com/webstore/content/1068'],
	['Endomondo Sports Tracker', 'endomondoSportsTracker',						'http://appworld.blackberry.com/webstore/content/7593'],
	['Bones in Motion', 'bonesInMotion', 										'http://appworld.blackberry.com/webstore/content/2990'],
	['Food Network Canada Mobile', 'foodNetworkCanadaMobile',					'http://appworld.blackberry.com/webstore/content/2513'],
	['Ka-Glom - Free', 'kaGlomFree', 											'http://appworld.blackberry.com/webstore/content/2238'],
	['Pixelated', 'pixelated', 													'http://appworld.blackberry.com/webstore/content/2048'],
	['GT Blackjack Online', 'gtBlackjackOnline', 								'http://appworld.blackberry.com/webstore/content/1079'],
	['GT LinkFour Online', 'gtLinkFourOnline', 									'http://appworld.blackberry.com/webstore/content/2780'],
	['Number Cruncher', 'numberCruncher',										'http://appworld.blackberry.com/webstore/content/4548'],
	['ScoreMobile for BlackBerry', 'scoreMobileForBlackBerry',					'http://appworld.blackberry.com/webstore/content/1998'],
	['Goal Mobile', 'goalMobile', 												'http://appworld.blackberry.com/webstore/content/4904'],
	['Navita Sports', 'navitaSports', 											'http://appworld.blackberry.com/webstore/content/8319'],
	['Pandora', 'pandora', 														'http://appworld.blackberry.com/webstore/content/872'],
	['Slacker Radio', 'slackerRadio', 											'http://appworld.blackberry.com/webstore/content/901'],
	['iheartradio', 'iheartradio', 												'http://appworld.blackberry.com/webstore/content/927'],
	['Nobex Radio Companion', 'nobexRadioCompanion', 							'http://appworld.blackberry.com/webstore/content/811'],
	['Navita Translator', 'navitaTranslator', 									'http://appworld.blackberry.com/webstore/content/522'],
	['WorldMate Live Travel', 'worldMateLiveTravel', 							'http://appworld.blackberry.com/webstore/content/836'],
	['Interlecta Translator', 'interlectraTranslator', 							'http://appworld.blackberry.com/webstore/content/2009'],
	['TubeBuddy Lite', 'tubeBuddyLite', 										'http://appworld.blackberry.com/webstore/content/2295'],
	['Urbanspoon', 'urbanspoon',												'http://appworld.blackberry.com/webstore/content/4233'],
	['WeatherEye', 'weatherEye', 												'http://appworld.blackberry.com/webstore/content/1191'],
	['WeatherBug Elite', 'weatherBugElite', 									'http://appworld.blackberry.com/webstore/content/2448'],
	['The Weather Channel', 'theWeatherChannel',								'http://appworld.blackberry.com/webstore/content/3624'],
	['BeWeather Free', 'beWeatherFree', 										'http://appworld.blackberry.com/webstore/content/5350'],
	['BeWeather', 'beWeather', 													'http://appworld.blackberry.com/webstore/content/2448'],
	['Snap2Twitter', 'snap2Twitter', 											'http://appworld.blackberry.com/webstore/content/1150'],
	['Movela Netflix Queue Manager', 'movelaNetflixQueueManager', 				'http://appworld.blackberry.com/webstore/content/1067'],
	['7digital Music Store', '7digitalMusicStore',								'http://appworld.blackberry.com/webstore/content/3310'],
	['TuneWiki', 'tuneWiki', 													'http://appworld.blackberry.com/webstore/content/808'],
	['craigslist mobile by Movela', 'craigslistMobileByMovela',					'http://appworld.blackberry.com/webstore/content/4236'],
	['MiCoach', 'miCoach', 														'http://appworld.blackberry.com/webstore/content/12899'],
	['BeejiveIM', 'beejiveIm', 													'http://appworld.blackberry.com/webstore/content/495'],
	['LifeInPocket', 'lifeInPocket', 											'http://appworld.blackberry.com/webstore/content/5829'],
	['BeBuzz', 'beBuzz', 														'http://appworld.blackberry.com/webstore/content/534'],
	['MemoryBooster', 'memoryBooster',											'http://appworld.blackberry.com/webstore/content/1666'],
	['Nice Office LITE', 'niceOfficeLite',										'http://appworld.blackberry.com/webstore/content/2230'],
	['DataBackup', 'dataBackup', 												'http://appworld.blackberry.com/webstore/content/3292'],
	['BeamExplorer File', 'beamExplorerFile',									'http://appworld.blackberry.com/webstore/content/4841'],
	['Tube Map','tubeMap',														'http://appworld.blackberry.com/webstore/content/3105'],
	['My-Cast Weather', 'myCastWeather', 										'http://appworld.blackberry.com/webstore/content/3001'],
	['Hangman', 'hangman', 														'http://appworld.blackberry.com/webstore/content/8423'],
	['Sports Illustrated SI', 'sportsIllustratedSi', 							'http://appworld.blackberry.com/webstore/content/3141'],
	['The Hockey News', 'theHockeyNews', 										'http://appworld.blackberry.com/webstore/content/949'],
	['Swing by Swing', 'swingBySwing',											'http://appworld.blackberry.com/webstore/content/6671'],
	['Thomson Reuters News Pro', 'thomsonReutersNewsPro',						'http://appworld.blackberry.com/webstore/content/1822'],
	['Call Control Trial', 'callControlBlacklistLite', 							'http://appworld.blackberry.com/webstore/content/6126'],
	['WeatherBug', 'weatherBug', 												'http://appworld.blackberry.com/webstore/content/760'],
	['Calorie Count Nutrition Search', 'calorieCountNutritionSearch', 			'http://appworld.blackberry.com/webstore/content/755']
];

rim.wtbDevices = {	  //top devices				//bottom devices
	'blackberrytorch':[[23,24,69,25,26,70], 	[55,56,57,71,58,72]],
	'blackberrypearl3G':[[37,38,39,40,41,73],	[42,43,44,45,46,74]],
	'blackberrypearl8100':[[9,10,11,12,13,75], 	[27,28,29,30,31,76]],
	'blackberrypearl8200':[[14,15,16,17,18,77], [32,33,34,35,36,78]],
	'blackberrycurve3G':[[9,10,11,12,13,75], 	[14,15,16,17,18,77]],
	'blackberrycurve8300':[[19,79,20,21,22,80], [9,10,11,12,13,75]],
	'blackberrycurve8500':[[23,24,69,25,26,70], [27,28,29,30,31,76]],
	'blackberrycurve8900':[[14,15,16,17,18,77], [0,1,2,89,3,81]],
	'blackberrytour':[[59,60,61,62,63,82], 		[64,90,66,67,65,83]],
	'blackberrystorm':[[47,48,49,50,51,84], 	[52,53,54,85,86,87]],
	'blackberrystyle':[[42,43,44,91,46,74], 	[14,15,16,17,18,77]],
	'blackberrybold':[[0,1,2,32,3,81], 			[4,5,6,7,8,88]]
};


if (typeof(singleDevice_rimpid) != "undefined") {
  $('#detailsNavInner .add').attr('rimpid', singleDevice_rimpid);
  $('#compare').attr('template', null);
  $('#compare').removeClass('modalLink');
  $('#compare').addClass('addToCompare');
  $('#compare').html(rim.lang.compare.compareOutCartText);
  $('#compareTemplate').remove();
  $('#compareModal').remove();
}

$('#selectHeroNetwork .replace').removeClass('replace');
$('#selectHeroModel .replace').removeClass('replace');
$('#selectHeroNetwork #carrier').removeClass('replace');
if ($('body').attr('id')=='deviceDetails') $('#detailsNav .tab a').removeClass('replace');

function aTabWasCalled(tab) { 
/* placeholder to overwrite in index if needed to call javascript when tabs are loaded */
}

rim.Details = function (selector) {
	this.noEvent = 				false;

	this.wtb_isSingleDevice =	true;
	this.wtb_isSingleColor =	true;

	this.ItemCache = {};

	this.MainSelector = selector;
	this.Self = $(this.MainSelector);

	this.TabLinkSelector = '#detailsNav .tab a';
	this.TabLinks = $(this.TabLinkSelector);

	this.TabItemSelector = '#detailsNav .tab';
	this.TabItems = $(this.TabItemSelector);

	this.HeroHoverSelector = '#detailsFlashInner .heroHover';

	this.NavSelector = '#detailsNav';

	this.CurrentTab = '';
	this.lastTab = '';
	
	this.InfoSelector = '#detailsInfoInner';
	this.InfoDiv = $(this.InfoSelector);

	this.CompareSelector = '#compare';
	this.CompareLink = $(this.CompareSelector);

	this.InnerFlashSelector = '#detailsFlashInner';
	this.InnerFlashDiv = $(this.InnerFlashSelector);

	this.FlashRightSelector = '#detailsFlashRight';
	this.FlashRightDiv = $(this.FlashRightSelector);
	
	this.cacheFalse = '.jsp?cache=false'
	this.appTooltipSelector = '.embed-application-tooltip';

    /*Whereto Start*/
    this.accessoriesDropdown = '#selectInfoModel';
    this.whereToSelectBoxesSelector = 		'#wheretoHero .selectBoxes';
    this.wtbCarrierAndColorSelector = 		'.wtbCarrierAndColorSelector';
    this.wtbCarrierAndColorOpenClass = 		'wtbCarrierAndColorSelector_open';
    this.wtbCarrierAndColorScrollingClass = 'wtbCarrierAndColorSelector_open_scrolling';
    this.wtbColorSelector = 				'#wtbColorSelector';
    /*Whereto End*/

    /*Buzz Start*/
    this.BuzzTabSelector = 			'#detailsInfo #buzz #inAction .right .topRow ul li';
    this.FeedContainerSelector = 	'#detailsInfo #buzz #inAction .right';

    this.BuzzTabSelectedClass = 'selected';
    this.FeedClass = 			'feed';
    /*Buzz End*/

	this.IsSmartphoneDetails = $('body').attr('id')=='deviceDetails';

    this.Init();
    
    this.loadedHero = '';
};

rim.Details.prototype = {
	Init: function () {
		$('a#overview').attr('href', '#');
		var me = this;
	
		
		if (document.location.hash) {
			var tabId = document.location.hash.substring(document.location.hash.indexOf("#!") + 2);
			
			if (tabId.indexOf("?") > -1) {
				tabId = tabId.substring(0, tabId.indexOf("?"));
			}
			
			if (tabId.indexOf("&") > -1) {
				tabId = tabId.substring(0, tabId.indexOf("&"));
			}
			
			if (tabId == '') {
		        tab = me.TabLinks[0];
		    }else{
		        tab = me.TabLinks.filter("#"+tabId+",a[href='#!"+tabId+"']");
		    }
		} else {
			tab = me.TabLinks[0];
		}
		
		
		$(window).bind( 'hashchange', function(event){
		        var tabId = document.location.hash.substring(document.location.hash.indexOf("#!") + 2);
		        
		        if (tabId.indexOf("?") > -1) {
		        	tabId = tabId.substring(0, tabId.indexOf("?"));
		        }
		        
		        if (tabId.indexOf("&") > -1) {
		        	tabId = tabId.substring(0, tabId.indexOf("&"));
		        }
		        if (tabId == '') {
		            tab = me.TabLinks[0];
		        }else{
		            tab = me.TabLinks.filter("#"+tabId+",a[href='#!"+tabId+"']");
		        }
                
                me.SetSelectedTab(tab);
        		me.SelectTab(tab);
            });
		
		
		/*me.TabLinks.live('click', function (e) {
			if(!$(this).parent().is('.selected')){
				me.SelectTab(this);
			}
		});*/
		
        if (!rim.IsTouchDevice) {
			var tooltipTemplate = '<div><div role="tooltip"></div></div>';
	
			$('.embed-tooltip').each(function() {
				new Rf.EmbeddedTooltip(this, '.tooltip-content', {
					ID : 'MyTooltip',
					ClassName : 'tooltip',
					Template : tooltipTemplate
				}).WatchHover(0)
				  .WatchFocus(0);
			});
        }
		
		me.SetSelectedTab(tab);
		rim.InitCufon();
		me.noEvent = true;
		me.SelectTab(tab);
	},
	/* use the right wtb icons */
	UpdateWTBApps: function() {
		var me = this;
		
		if (document.getElementById('applications')) {
			var appsUL = $('#applications ul'), top = $(appsUL[0]), bottom = $(appsUL[1]), device;

			for (var key in rim.wtbDevices) {
				if (document.location.href.indexOf(key) > -1) {
					device = rim.wtbDevices[key];
				}
			}

			if (device) {
				top.html("");
				bottom.html("");

				var topItems = device[0], bottomItems = device[1], topItemsLength = topItems.length, bottomItemsLength = bottomItems.length;

				for (var i = 0; i < topItemsLength; i++) {
					me.AppendWTBApp(topItems[i], top);
				}

				for (var i = 0; i < bottomItemsLength; i++) {
					me.AppendWTBApp(bottomItems[i], bottom);
				}
			}
		}
	},
	AppendWTBApp: function(itemIndex, element) {
		var item = rim.wtbApps[itemIndex];

		element.append("<li><div class='wtbAppIcon wtbAppIcon_" + item[1] + "'></div><div class='label'><a href='" + 
					   item[2] + "'>" + item[0] + "</a></div></li>");
	},
	LoadVideo: function(embedCode, xmlPathUrl) {
		rim.LoadVideo(embedCode, xmlPathUrl);
	},
	CloseVideo: function() {
		var lightBox = $('#videoLightbox');
		
		lightBox.css('display', 'none');
		$('#videoLightboxWrapper').css('display', 'none');
		lightBox.html('&nbsp;');
	},
	SetSelectedTab: function(selector){
		var me = this;

		var tabItemsClass =  me.TabItems.attr('class');
		me.TabItems.removeClass('selected');

		var elm = $(selector);
		elm.parent().addClass('selected');

	},
	SelectTab: function (selector) {
		var me = this, currentScrollLocation = $(window).scrollTop(), detailsUrl = 'Details.jsp?cache=false'
			     elm = $(selector), href = elm.attr('ajax'), tabName = elm.attr('ajax'), cache = me.ItemCache[href], savedHref = href;
		
		me.lastTab = me.CurrentTab ? me.CurrentTab : $(selector).attr('id');
		me.CurrentTab = $(selector).attr('id');
        
        if (me.IsSmartphoneDetails) $(window).scrollTop(0);

		if (!me.noEvent) {
			omnitureTabPageView(":" + me.CurrentTab);
		}

		me.noEvent = false;

		me.SetSelectedTab(selector);
		
		me.FlashRightDiv.hide();
		
		//get _TMP_ link from URL if there.
		if ($.getUrlVar(href) != undefined) {
			if ($.getUrlVar(href).split(',')[0] != '') {
				href = $.getUrlVar(href).split(',')[0] + me.cacheFalse;
			} else {
				href = me.IsSmartphoneDetails ?  href + detailsUrl :  href + me.cacheFalse;
			}
		} else {
			href = me.IsSmartphoneDetails ?  href + detailsUrl :  href + me.cacheFalse;
		}
		
		if (typeof(tabsFolder) != 'undefined') href = tabsFolder.replace('/','')+'/'+href;
		
		rim.InitCufon();

		/* debug include over-ride logic */	
		
		if (cache) {
			me.LoadTab(cache, href);
		} else {
			$.ajax({
				url:href,
				data: {'ajax' : 'true'},
				success: function (response) {
					me.ItemCache[href] = response;
					me.LoadTab(response, savedHref);
				},
				complete: function(response) {
					var tabToCall = tabName;
					
					if (typeof(tabToCall) == "undefined") {
						return;
					}
					
					tabToCall = tabToCall.replace(this.cacheFalse, '');
					
					/*run Buzz Feeds and WTB code for Smartphone Landing Pages only*/
					if (me.IsSmartphoneDetails) {
						if(me.WhichTab($('#' + tabToCall).attr('ajax'), "whereto")){
							me.InitWhereto();
						} else {
							if(me.WhichTab($('#' + tabToCall).attr('ajax'), 'buzz')){
								me.InitBuzz();
							}
							me.FixGetItLink();
						}
					};
					
					//pass tabCalled to index to run tab-specific js within wmc
					aTabWasCalled(tabToCall);
					$(window).trigger('tabloaded');
					
				}
			});
		}
	},
	LoadTab: function (response, href) {
		var me = this;

		me.InfoDiv.hide();
		me.InfoDiv.html(response);

		$('#selectInfoModel div').removeClass('replace');

		rim.InitCufon();
		me.InfoDiv.show();

		var tooltipTemplate = '<div><div role="tooltip"></div></div>';
		
        if (!rim.IsTouchDevice) {
			$('.embed-tooltip').each(function() {
				new Rf.EmbeddedTooltip(this, '.tooltip-content', {
					ID : 'MyTooltip',
					ClassName : 'tooltip',
					Template : tooltipTemplate
				}).WatchHover(250)
				  .WatchFocus(250);
			});
	
			var appTooltipTemplate = '<div><div role="appTooltip"></div></div>';
			
			$(me.appTooltipSelector).each(function() {
				var tip = new Rf.EmbeddedTooltip(this, '.application-tooltip-content', {
					ID : 'MyAppTooltip',
					ClassName : 'appTooltip',
					Template : appTooltipTemplate
				}).WatchHover(250)
				  .WatchFocus(250);
	
			    tip.Bind(Rf.Tooltip.Events.Show, function(element, event) {
			    	$('.appTooltip .title').addClass('replace');
			    	$('.appTooltip .price').addClass('replace');
			    	rim.InitCufon();
			    });
			});
			
			$(me.appTooltipSelector).each(function() {
				$(this).bind("mouseover", function() {
					$(this).data("omnitureEvent40", setTimeout("doOmnitureEvent40('" + $($(this).find("a")).html() + "')", 2000));
				});
				
				$(this).bind("mouseout", function() {
					clearTimeout($(this).data("omnitureEvent40"));
				});
			});
        }
        
		if (me.IsSmartphoneDetails) {
			var heroHref = href + "DetailsHero";
			
			heroHref = heroHref.replace(me.cacheFalse, '');
			heroHref = heroHref + me.cacheFalse;
		} else {
			var heroValue = $(me.CurrentTab).attr('hero') ? $(me.CurrentTab).attr('hero') : $(me.TabLinks[0]).attr('hero'),
			    lastHero = $('#'+me.lastTab).attr('hero') ? $('#'+me.lastTab).attr('hero') : $(me.TabLinks[0]).attr('hero'),
			    heroCache = me.ItemCache[heroValue];
			
			if (heroValue != lastHero || me.lastTab == me.CurrentTab) {
				var heroHref = heroValue + me.cacheFalse;
			} else {
				var heroHref = false;
			}
		}
		
		if ($.getUrlVar(href) != undefined) {
			heroHrefArray = $.getUrlVar(href).split(',');
			
			if (heroHrefArray.length>1) {
				heroHref = heroHrefArray[1] + me.cacheFalse;
			}
		}
		
		if (me.IsSmartphoneDetails || heroHref) {
			var cache = me.ItemCache[heroHref];

			if (me.loadedHero != me.CurrentTab) {
				if (cache) {
					me.LoadHero(cache);
				} else {
					$.ajax({
						url:heroHref,
						success: function (response) {
							me.ItemCache[heroHref] = response;
							me.LoadHero(response);
						}
					});
				}
			}
		}		
		
	},
	LoadHero: function (response) {
		var me = this;
		
		me.loadedHero = me.CurrentTab;
		
		me.InnerFlashDiv.fadeOut('slow', function(){
			me.InnerFlashDiv.attr('class', me.CurrentTab).html(response);
			
			if (navigator.userAgent.indexOf("IE 7") > -1 || navigator.userAgent.indexOf("IE 8") > -1) {
				$('#selectHeroNetwork .replace').removeClass('replace');
				$('#selectHeroModel .replace').removeClass('replace');
				$('#selectHeroNetwork #carrier').removeClass('replace');
			}
			
			rim.InitCufon();
            me.FixGetItLink();
			me.InnerFlashDiv.fadeIn('slow', function(){

				me.FlashRightDiv.show();

			});

			/* level studio modification: start: hero hovers AND wtb device/carrier/color dynamic data population */
			me.HeroHoverItems = $(me.HeroHoverSelector);
			me.HeroHoverItems.each(function() {
				$(this).hover(function() {
					$($(this).next()).css('display', 'block');
				},
				function() {
					$($(this).next()).css('display', 'none');
				});
			});

			var oClass = 'replace';
			
			if (navigator.userAgent.indexOf('IE 7') > -1 || navigator.userAgent.indexOf('IE 8') > -1) {
				oClass = '';
			}

			var html = '<ul class="level1 clr"><li id="carrier" class="network selected '+oClass+'">Carriers</li><li id="close"><a href="#" class="close"></a></li></ul><ul id="carrierList" class="level2 clr"><li class="col1">';

            rim.InitCufon();

            if ($('#hiddenTitle').length > 0) {
            	if (navigator.userAgent.indexOf("IE") > -1) {
            		document.title = $($('#hiddenTitle')[0]).html();
            	} else {
            		$('title').html($($('#hiddenTitle')[0]).html());
            	}
            }
            
            if ($('#hiddenDescription').length > 0) {
            	var mTags = 	$('meta');
            	var mTagsLen = 	mTags.length;
            	var mTag;

            	for (var i = 0; i < mTagsLen; i++) {
            		if ($(mTags[i]).attr('name') == "description") {
            			mTag = $(mTags[i]);
            			break;
            		}
            	}

            	if (mTag) {
            		mTag.attr('content', $($('#hiddenDescription')[0]).html());
            	}
            }
            
            if ($('#hiddenKeywords').length > 0) {
            	var mTags = 	$('meta');
            	var mTagsLen = 	mTags.length;
            	var mTag;

            	for (var i = 0; i < mTagsLen; i++) {
            		if ($(mTags[i]).attr('name') == "keywords") {
            			mTag = $(mTags[i]);
            			break;
            		}
            	}

            	if (mTag) {
            		mTag.attr('content', $($('#hiddenKeywords')[0]).html());
            	}
            }

			/* level studio modification: end */
		});
		
        if (rim.IsTouchDevice) {
            $('#pageLeft, #pageRight').find('.hoverText em').show();
        } else {
			$('#pageLeft, #pageRight').hover(
				function () {
					var button = $(this);
					if (button.is('.inactive')) return;
					$(this).find('.hoverText em').show();
				},
				function () {
					var button = $(this);
					if (button.is('.inactive')) return;
					$(this).find('.hoverText em').hide();
				}
			);
        }
	},
	FixGetItLink: function() {
		$('.badge a').attr('href', '#!where-to-buy');
	},
	WhichTab: function (href, tab){
		if (href.indexOf(tab) > -1) {
			return true;
		} else {
			return false
		}
	},
	InitWhereto: function () {
		var me = this;
        var dropdown = null;
    	me.UpdateWTBApps();
    	me.InitNewWTB();
    	$(me.accessoriesDropdown).click(function(event) {
            dropdown = $(this);
        	if(dropdown.hasClass('selectBoxDown')){
        	    if ($(event.target).is('.option')) {
        	        dropdown.find('.selected').html($(event.target).html());
        	        setTimeout($(event.target).attr('rel'),0);
        	    };
        		dropdown.css('height', '22px').find('.options').css('display','none');
        		dropdown.removeClass('selectBoxDown')
            } else {
        	  dropdown.addClass('selectBoxDown');
              dropdown.css('height', 'auto').find('.options').css('display','block');
            }
        });
	},
	
	InitNewWTB: function(){
		var me = this;

		me.selectACarrier = rim.lang.deviceDetails.selectACarrier;
		me.selectAModel = 	rim.lang.deviceDetails.selectAModel;

		if ($(this.whereToSelectBoxesSelector).html() == null) {
			setTimeout('detailsObject.InitNewWTB()', 1000);
			return;
		} else {
			/* if we have the wtbDataObject with carrier data, then we're good to go.. */
			if (typeof(wtbDataObject) != "undefined" && typeof(wtbDataObject["carriers"]) != "undefined" &&  typeof(wtbDataObject["devices"]) != "undefined") {

				$('#wheretoHero .badge').addClass('newWtbBadge');

				var carriers = wtbDataObject["carriers"], carriersLength = carriers.length,
				    devices = wtbDataObject["devices"], devicesLength = devices.length, extraClass = '';

				if (navigator.userAgent.indexOf("WebKit") > -1) {
					extraClass = "webkit_title";
				}

				var html = "<div class='wtbCarrierAndColorSelectorOuterContainer'>";

				html += "<div class='wtbCarrierAndColorSelectorContainer' id='wtbCarrierSelector'><div class='wtbCarrierAndColorSelector'>";
				html += "<div class='title replace " + extraClass + "'>" + me.selectACarrier + "</div><div class='upArrow'></div><div class='downArrow'></div>";
				html += "<div class='scrollingRegion'><ul>";

				for (var j = 0; j < carriersLength; j++) {
					var carrier = carriers[j], carrierName = carrier.name, carrierId = carrier.id;

					html += "<li><a href='" + document.location.hash + "' rel='" + carrierId + "' class='wtbCarrierLink'><span>" + carrierName + "</span></a></li>";
				}

				html += "</ul></div></div></div>";


				$(me.whereToSelectBoxesSelector).html(html);

				$(me.wtbCarrierAndColorSelector).bind('click', detailsObject.HandleWTBSelectorClick);

				me.scrollerPanes = [];

				$(me.wtbCarrierAndColorSelector + ' .scrollingRegion').jScrollPane({showArrows: true});

				$(me.wtbCarrierAndColorSelector + ' .jScrollPaneDrag').click(function(event) {
				  event.stopPropagation();
				  event.preventDefault();
				})
				$(me.wtbCarrierAndColorSelector + ' .jScrollArrowDown').click(function(event) {
				  event.stopPropagation();
				  event.preventDefault();
				})
				$(me.wtbCarrierAndColorSelector + ' .jScrollArrowUp').click(function(event) {
				  event.stopPropagation();
				  event.preventDefault();
				})
				
				$(me.wtbCarrierAndColorSelector + ' .jspVerticalBar').click(function(event) {
				  event.stopPropagation();
				  event.preventDefault();
				})

				$(me.wtbCarrierAndColorSelector + ' .scrollingRegion').css('top', '0px');

				$(me.wtbCarrierAndColorSelector + ' .wtbCarrierLink').bind('click', function(event) {
					detailsObject.selectedCarrierId = $(this).attr('rel');

					if ($(me.wtbColorSelector).length > 0) {
						$(me.wtbColorSelector).remove();
	    			}

	    			var extraClass = '';

					if (navigator.userAgent.indexOf("WebKit") > -1) {
						extraClass = "webkit_title";
					}

					var carriers = 			wtbDataObject["carriers"];
					var carriersLength = 	carriers.length;

					var html = "<div class='wtbCarrierAndColorSelectorContainer' id='wtbColorSelector'><div class='wtbCarrierAndColorSelector'>";
					html += "<div class='title replace " + extraClass + "'>" + me.selectAModel + "</div><div class='upArrow'></div><div class='downArrow'></div>";
					html += "<div class='scrollingRegion'><ul>";

					for (var j = 0; j < carriersLength; j++) {
						var carrier = 		carriers[j];

						if (carrier.id == detailsObject.selectedCarrierId) {
							var carrierName = carrier.name, carrierDevices = carrier.devices, carrierDevicesLength = carrierDevices.length;

							$('#wtbCarrierSelector .title').html(carrierName.replace("&", "&amp;"));

							doOmnitureCarrierEvent61(carrierName);

							for (var x = 0; x < carrierDevicesLength; x++) {
								var carrierDevice = carrierDevices[x], carrierDeviceId = carrierDevice.id,
									devices = wtbDataObject["devices"], devicesLength = devices.length, deviceName = "";

								for (var t = 0; t < devicesLength; t++) {
									var device = devices[t];

									if (device.id == carrierDeviceId) {
										deviceName = device.name;
										break;
									}
								}

								var colors = carrierDevice.colors, colorsLength = colors.length;

								for (var q = 0; q < colorsLength; q++) {
									var color = colors[q], colorName = color[0], carrierUrl = color[1];

									html += "<li><a href='" + carrierUrl + "' target='_blank' onclick=\"doOmnitureCarrierEvent('"+carrierName+"');\"><div id='" + 
											colorName + "'></div><span>" + deviceName + "</span></a></li>";
								}
							}

							break;
			    		}
				    }

					html += "</ul></div></div>";

					$(me.whereToSelectBoxesSelector + ' .wtbCarrierAndColorSelectorOuterContainer').append(html);

					rim.InitCufon();

					$(me.wtbColorSelector + ' .scrollingRegion').jScrollPane({showArrows: true});

					$(me.wtbColorSelector + ' .jScrollPaneDrag').click(function(event) {
					  event.stopPropagation();
					})
					$(me.wtbColorSelector + ' .jScrollArrowDown').click(function(event) {
					  event.stopPropagation();
					})
					$(me.wtbColorSelector + ' .jScrollArrowUp').click(function(event) {
					  event.stopPropagation();
					})

					$(me.wtbColorSelector + ' .scrollingRegion').css('top', '0px');

					$(me.wtbColorSelector + ' ' + me.wtbCarrierAndColorSelector).bind('click', detailsObject.HandleWTBSelectorClick);
				});
    		}
    	}
        
        var providerID = me.getUrlVars()['providerID'];
        
        if (typeof(providerID) != "undefined") {
        	$('.wtbCarrierAndColorSelector a.wtbCarrierLink').each(function() {
        		if ($(this).attr('rel') == providerID) {
        			$(this).trigger('click');
        			$('#wtbCarrierSelector').trigger('click');
        		}
        	});
        }
        
		rim.InitCufon();
	},
	getUrlVars: function() {
	    var vars = [], hash, hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	    
	    for (var i = 0; i < hashes.length; i++) {
	        hash = hashes[i].split('=');
	        
	        vars.push(hash[0]);
	        vars[hash[0]] = hash[1];
	        
	        if (typeof(vars[hash[0]]) != "undefined" && vars[hash[0]].indexOf("#") > -1) {
	        	vars[hash[0]] = vars[hash[0]].substring(0, vars[hash[0]].indexOf("#"));
	        }	   
	    }
	    
	    return vars;
	},
	HandleWTBSelectorClick: function(e) {
		var me = detailsObject;
		
		e.stopPropagation();

		var open = true;
		
		if ($(this).hasClass(me.wtbCarrierAndColorOpenClass)) {
			open = false;
		}

		$(me.wtbCarrierAndColorSelector).each(function(e) {
			$(this.parentNode).css('z-index', 1);
			$(this).removeClass(me.wtbCarrierAndColorOpenClass);
			$(this).removeClass(me.wtbCarrierAndColorScrollingClass);
					});

		if (open) {
			$(this.parentNode).css('z-index', 100);
			$(this).addClass(me.wtbCarrierAndColorOpenClass);
			$(this).addClass(me.wtbCarrierAndColorScrollingClass);
			$(document.body).click(function(e) {
				$(me.wtbCarrierAndColorSelector).each(function(e) {
					$(this.parentNode).css('z-index', 1);
					$(this).removeClass(me.wtbCarrierAndColorOpenClass);
					$(this).removeClass(me.wtbCarrierAndColorScrollingClass);
				});
			});
 		}
	},
	
	InitBuzz: function() {
		var me = this;
		me.BuzzTabs = $(this.BuzzTabSelector);

	    me.BuzzTabs.live('click', function(e){
   			var id = $(this).attr('id');

   			$(me.BuzzTabSelector + ' .' + me.BuzzTabSelectedClass).hide();
   			$(me.FeedContainerSelector + ' .' + me.FeedClass).hide();

   			$(this).children('.' + me.BuzzTabSelectedClass).show();
   			$(me.FeedContainerSelector + ' .' + id).show();

    		rim.InitCufon();
		});

		var feedsUrl = 'feeds.xml';

		if (typeof(deviceFeedsXmlUrl) != "undefined") {
			feedsUrl = deviceFeedsXmlUrl;
		}
		parseXML(feedsUrl, $("#buzz_thefeed_body"), $("#buzz_thefeed_head"));
	}

};

var detailsObject;

rim.OnloadEvents.Register(function () {
	detailsObject = new rim.Details('#details');
	
	$(window).bind('scroll',function() {
		if (rim.IsTouchDevice) return;
		try {
			var val = 0;
			
			if (navigator.userAgent.indexOf("IE ") > -1) {
				val = 2;
			}
			
			//$('#pageRight').css('right', val - $(window).scrollLeft());
			$('#pageflip').css('right', val - $(window).scrollLeft());
		} catch (e) {}
	});
	
	var linkTag = $('link[rel=canonical]');
	if (linkTag.length) {
	    var canonicalURL = 'http://' + document.location.hostname + document.location.pathname;
		
		if (document.location.hash && document.location.hash.indexOf('#!') > -1) {
			var tabId = document.location.hash.substring(document.location.hash.indexOf("#!") + 2);
			
			if (tabId.indexOf("?") > -1) {
				tabId = tabId.substring(0, tabId.indexOf("?"));
			}
				
			if (tabId.indexOf("&") > -1) {
				tabId = tabId.substring(0, tabId.indexOf("&"));
			}
			
			canonicalURL = canonicalURL + '#!' + tabId;
		}
		
		linkTag.attr('href', canonicalURL);
	}
});

