/**
 * @projectDescription Claritin Javascript Library. Allergen Guide resources.
 * 
 * @author Ivan Vovnenko ivan.vovnenko@corporatevoice.com, 2009 (c) Corporate Voice
 */

$(function() {
	
	
	
	try{
		
		/*
		
		var regionsSizes={
				'southwest':{width:389,height:229},
				'southern':{width:389,height:238},
				'plains':{width:389,height:200},
				'pacific':{width:389,height:249},
				'northeast':{width:389,height:227},
				'mountains':{width:389,height:225},
				'great-lake':{width:389,height:268},
				'desert-region':{width:389,height:214}
		};
		
		
		
		$mapImage = $('img#mapImage');
		
		function showPopup(code) {
			$area = $('area[href$="'+code+'"]');
			$p=$('#preview').attr("src","/img/learn/popup-"+code+"-trans.png");
			$p.css("width",regions[code].width+"px").css("height",regions[code].height+"px");
			
			$p.css("top",($mapImage.position().top+$area.areaCenter().top - regions[code].height-10) + "px")
				.css("left",($mapImage.position().left+$area.areaCenter().left - regions[code].width*0.50) + "px");
			$p.attr('regionCode',code);
			$p.show();
		}
		function hidePopup(){
			$('#preview').hide();
		}
		
		
		
		$('<img id="preview" />').hover(function(){
			$(this).show();
			var code = $p.attr('regionCode');
			$mapImage.attr('src',"/img/learn/map-"+code+".gif");
			$("#"+code+" a").addClass('Selected');
		},function(){
			$(this).hide();
			var code = $p.attr('regionCode');
			$('#'+code+' a').removeClass('Selected');
			$mapImage.attr('src',"/img/learn/map.gif");
		}).appendTo($("body")).hide();
		
		$("#tabs-regional-allergen-guide ul li").hover(function () {
			var code = $('a',this).attr('href').split('#')[1];
			$mapImage.attr('src',"/img/learn/map-"+code+".gif");
			$(this).addClass('Selected');			
			showPopup(code);
		},function(){
			hidePopup();
			$mapImage.attr('src',"/img/learn/map.gif");
			$(this).removeClass('Selected');			
		});
		
		$("#tabs-regional-allergen-guide ul li a").click(function(){return false;});
		$('#map area').click(function(){return false;});
		vhover(function(e) {			
				try{
					var code = this.href.split('#')[1];
					$mapImage.attr('src',"/img/learn/map-"+code+".gif");
					$("#"+code+" a").addClass('Selected');
					showPopup(code);

				}catch(e){}
			},function() {
				hidePopup();
				$mapImage.attr('src',"/img/learn/map.gif");
				try{		
					var code = this.href.split('#')[1];
					$('#'+code+' a').removeClass('Selected');					
				}catch(e){}
			});

			$("#map area").each(function () {
				try{
					$.preloadImages("/img/learn/popup-"+this.href.split('#')[1]+"-trans.gif");
					$.preloadImages("/img/learn/map-"+this.href.split('#')[1]+".gif");
				}catch(e){alert(e);}
			});
			
		*/
		
		//$("MAP#map AREA").bt("heeeey",$.fn.glossaryTooltip.btOptions);
		
		var regionNameMap = {
			'desert-region' : 'DESERT',
			'great-lake' : 'GREAT_LAKES',
			'mountains' : 'MOUNTAINS',
			'northeast' : 'NORTHEAST',
			'pacific' : 'PACIFIC',
			'plains' : 'PLAINS',
			'southern' : 'SOUTHERN',
			'southwest' : 'SOUTHWEST'
		};
		
		var stateNames = {
				'AL':'ALABAMA','AK':'ALASKA','AS':'AMERICAN','AZ':'ARIZONA','AR':'ARKANSAS',
				'CA':'CALIFORNIA','CO':'COLORADO','CT':'CONNECTICUT','DE':'DELAWARE', 'DC':'DISTRICT OF COLUMBIA',
				'FM':'FEDERATED STATES OF MICRONESIA', 'FL':'FLORIDA','GA':'GEORGIA','GU':'GUAM','HI':'HAWAII',
				'ID':'IDAHO','IL':'ILLINOIS','IN':'INDIANA','IA':'IOWA','KS':'KANSAS','KY':'KENTUCKY',
				'LA':'LOUISIANA','ME':'MAINE', 'MH':'MARSHALL ISLANDS', 'MD':'MARYLAND','MA':'MASSACHUSETTS',
				'MI':'MICHIGAN','MN':'MINNESOTA','MS':'MISSISSIPPI','MO':'MISSOURI','MT':'MONTANA',
				'NE':'NEBRASKA','NV':'NEVADA', 'NH':'NEW HAMPSHIRE', 'NJ':'NEW JERSEY', 'NM':'NEW MEXICO', 
				'NY':'NEW YORK', 'NC':'NORTH CAROLINA', 'ND':'NORTH DAKOTA', 'MP':'NORTHERN MARIANA ISLANDS', 
				'OH':'OHIO','OK':'OKLAHOMA','OR':'OREGON','PW':'PALAU','PA':'PENNSYLVANIA', 'PR':'PUERTO RICO',
				'RI':'RHODE ISLAND', 'SC':'SOUTH CAROLINA', 'SD':'SOUTH DAKOTA', 'TN':'TENNESSEE','TX':'TEXAS',
				'UT':'UTAH','VT':'VERMONT', 'VI':'VIRGIN ISLANDS', 'VA':'VIRGINIA','WA':'WASHINGTON', 
				'WV':'WEST VIRGINIA', 'WI':'WISCONSIN','WY':'WYOMING'
		};
		
		var getTooltipContent = function(regionHash) {
			if (window.reg_guide) {
				var key = regionNameMap[regionHash];
				if (key){
					var regGuide = window.reg_guide.objects[key];
					var html = '<div onclick="$(\'DIV#imageWrapper DIV.tooltipPoint.bt-active\').btOff();" class="regGuideCloseButton">&nbsp;</div>';
					html += '<span class="regGuideTitle">'+regGuide.title+'</span>';
					if(window.regions && window.regions.objects[regGuide.region] && window.regions.objects[regGuide.region].length){
						html += '<span class="regGuideStates">(';
						
						var regionStates = window.regions.objects[regGuide.region];
						html += stateNames[regionStates[0]].toLowerCase();
						for(var i=1; i<regionStates.length; i++)
							html += ',' + stateNames[regionStates[i]].toLowerCase();
						
						html += ')</span>';
					}
					html += '<span class="regGuideText">'+regGuide.text+'</span>';
					
					return html; 
				}else
					return key + ": NOT FOUND";
			} else {
				return "window.reg_guide is " + window.reg_guide;
			}
		};
		
		var selectRegion = function(regionHash){
			$image.attr('src',"/img/learn/map-"+regionHash+".gif");
			$("#"+regionHash+" A").addClass('Selected');
		};
		
		var deselectRegion = function(){
			$image.attr('src',"/img/learn/map.gif");
			$('#tabs-regional-allergen-guide A.Selected').removeClass('Selected');
		};
		
		var regionalBtOptions = $.extend($.fn.glossaryTooltip.btOptions,{
			trigger:'none',
			width:'389px',
			strokeStyle: '#5c95c0',
			clickAnywhereToClose:false,
			preHide: function(){
				deselectRegion();
			}
		});
		
		
		var $image = $('IMG#mapImage').wrap("<div id='imageWrapper'></div>");
		var $imageWrapper = $('DIV#imageWrapper');
		
		$('#map AREA').each(function(){
			
			// Creating div(1x1) to trigger tooltip on it
			var $div = $("<div></div>").addClass("tooltipPoint");
			var regionHash = this.href.split('#')[1];
			$div.attr("id","center_"+ regionHash);
			var areaCenter = $(this).areaCenter();
			$div.css("top", areaCenter.top);
			$div.css("left", areaCenter.left);
			$div.bt(getTooltipContent(regionHash), regionalBtOptions);
			$imageWrapper.append($div);
			
			// This function  
			
			
			var regionClick = function(){
				var elementId = "#center_" + this.href.split('#')[1];
				$imageWrapper.find("DIV.tooltipPoint.bt-active").btOff();
				$(elementId).btOn();
				return false;
			};
			
			$(this).click(regionClick).click(function(){selectRegion(regionHash);});			
			
			$(this).hover(function(){
				if($imageWrapper.find("DIV.tooltipPoint.bt-active").length>0)
					return;
				selectRegion(regionHash);
			},function() {
				if($imageWrapper.find("DIV.tooltipPoint.bt-active").length>0)
					return;
				deselectRegion(regionHash);					
			});
			
			var $regionA = $('LI#'+regionHash+' A');
			
			$regionA.click(regionClick).click(function(){selectRegion(regionHash);});
			
			$regionA.hover(function(){
				if($imageWrapper.find("DIV.tooltipPoint.bt-active").length>0)
					return;
				selectRegion(regionHash);
			},function() {
				if($imageWrapper.find("DIV.tooltipPoint.bt-active").length>0)
					return;
				deselectRegion();					
			});
			
			try{
				$.preloadImages("/img/learn/map-"+regionHash+".gif");
			}catch(e){}
			
		});
		
		
		
		

		
					
		$(".sub-tabs > ul").tabs("div.tabPane",{
			history: false, 
			api:false,
			current:'ui-tabs-selected'
		});
		
		var tabsApi = $(".tabs > ul").tabs("div.tabPane",{
			history: true,
			api:true,
			current:'ui-tabs-selected'
		});
		
		/******** Spotlight tags ********/		
		var tabsSpotlightTags = {
			'#Outdoor':{src:'1608566',type:'learn810',cat:'aller237'},
			'#Indoor':{src:'1608566',type:'learn810',cat:'aller120'}
		};
		var subTabsSpotlightTags = {
			'#mold':{src:'1608566',type:'learn810',cat:'clari875'},
			'#pet-dander':{src:'1608566',type:'learn810',cat:'71cla477'},
			'#dust':{src:'1608566',type:'learn810',cat:'71cla449'},
			'#mold-allergens':{src:'1608566',type:'learn810',cat:'71cla582'},
			'#regional-allergen-guide':{src:'1608566',type:'learn810',cat:'clari431'},
			'#tree-pollens':{src:'1608566',type:'learn810',cat:'71cla151'},
			'#weed-pollens':{src:'1608566',type:'learn810',cat:'71cla770'},
			'#grass-pollens':{src:'1608566',type:'learn810',cat:'clari647'}
		};
		/* User switching tabs */
		$(window).bind('hash',function(event,hash){
			var tag = tabsSpotlightTags[hash];
			if(tag){ $.attachSpotlightTag(tag.src,tag.type,tag.cat); }
		});
		/* User switching sub-tabs */
		for(var subtabHash in subTabsSpotlightTags){
			$(".sub-tabs > ul li a[href$='"+subtabHash+"']").click(function() {
				var hash = '#'+this.href.split('#')[1];
				var tag = subTabsSpotlightTags[hash];
				if(tag){ $.attachSpotlightTag(tag.src,tag.type,tag.cat); }
			});
		}		
		/******** END Spotlight tags ********/
		

	} catch (err) {
		$.log(err);
	}

});