Home = {
	loadedBackgrounds: 0,
	currentCallout: 0,
	backgrounds: [],
	
	init: function() {
		jQuery("#ImageGallery .Close").click(function() {
			jQuery("#ImageGallery").fadeOut(500);
		});
		
		jQuery("#VideoPlayer .Close").click(function() {
			jQuery("#VideoPlayer").fadeOut(500);
		});
		
		// CACHE BAKGROUND IMAGES
		jQuery(".Callout").each(function(i, item) {
			item = jQuery(item);
			
			var url = item.css("background-image").split("\"")[1];
			if (url) {
				var img = new Image();
				jQuery(img).load(function() {
					Home.loadedBackgrounds++;
					if (Home.loadedBackgrounds == jQuery(".Callout").length) {
						jQuery("#GeneralLoader").fadeOut(1000, function() {
							Home.activateCallout(0);
							Home.setAutomaticAdvance();
						});
					}
				}).attr("src", url);
			} else {
				Home.loadedBackgrounds++;
				if (Home.loadedBackgrounds == jQuery(".Callout").length) {
					jQuery("#GeneralLoader").fadeOut(1000, function() {
						Home.activateCallout(0);
						Home.setAutomaticAdvance();
					});
				}
			}
		});
		//Home.hasFlashMin();
	},
	
	auto: null,
	
	currentIdx: -1,
	clearAutomaticAdvance: function() {
		if (Home.isFlashVersion()) {
			try {
				Home.flashMovie().stopTimer();
			} catch(e) { }
		} else {
			if (Home.auto != null) {
				clearInterval(Home.auto);
				Home.auto = null;
			}
		}
	},
	
	setAutomaticAdvance: function() {
		Home.clearAutomaticAdvance();
		
		if (Home.isFlashVersion()) {
			try {
				Home.flashMovie().resetTimer(10 * 1000);
			} catch(e) { }
		} else {
			Home.auto = setInterval(function() {
				var callout = Home.currentIdx + 1;
				if (callout >= 6) callout -= 6;
				Home.activateCallout(callout);
			}, 10 * 1000);
		}
	},
	
	gallery: function(node, img) {
		node = jQuery(node).parent();
		
		if (img != '' && typeof img != 'undefined') {
			jQuery("#ImageGallery h3").html(node.find("div strong").html());
			jQuery("#ImageGallery p").html(node.find("div p").html());
			jQuery("#ImageGallery img").attr("src", img);
			
			var _img = new Image();
			jQuery(_img).load(function() {
				jQuery("#ImageGallery").fadeIn(250);
			}).attr("src", img);
		} else {
			alert("NO IMAGE FOR " + jQuery(node).parent().parent().find("h3").html());
		}
	},
	
	videos: function(node, vid) {
		node = jQuery(node).parent();
		
		if (vid != '' && typeof vid != 'undefined') {
			// jQuery("#VideoPlayer").fadeIn(250);
			jQuery("#VideoPlayer h3").html(node.find("div strong").html());
			jQuery("#VideoPlayer p").html(node.find("div p").html());
			
			var params = {
				quality: "high",
				scale: "noscale",
				wmode: "transparent",
				allowscriptaccess: "always",
				bgcolor: "#000000",
				allowFullScreen:"true"
			};
			
			var flashvars = {
				width : 530,
				height : 400,
				x : -250,
				y : -50,
				autoPlay : true,
				videos : '[ { "id" : "720_24", "src" : "' + vid + '" }, { "id" : "1200_24", "src" : "video/' + vid + '" } ]'
			};
			
			var attributes = {
				id: "VideoContent",
				name: "VideoContent"
			};
			
			swfobject.embedSWF("main.swf", "VideoContent", "100%", "100%", "10.0.0", "swf/expressInstall.swf", flashvars, params, attributes);
			// jQuery("#VideoPlayer img").attr("src", img);
			/*
			jQuery("#VideoPlayer img").load(function() {
				jQuery("#VideoPlayer").fadeIn(250);
			});
			*/
		} else {
			alert("NO VIDEO FOR " + jQuery(node).parent().parent().find("h3").html());
		}
	},
	
	buckets: function() {
		if (parseInt(jQuery("#Buckets .Nav").css("height")) == 0) {
			if (!jQuery.browser.msie || jQuery.browser.version > 8) {
				jQuery("#Banners").animate({ top: -190, opacity: 1 }, { duration: 250 });
			} else {
				jQuery("#Banners").css({ display: "block" });
			}
			
			jQuery("#Buckets .Nav").animate({ height: 42, top: -42 }, { 
				duration: 250,
				complete: function() {
					var left = jQuery("#Buckets .Nav .Left");
					left.css({ opacity: 0 });
					left.animate({ left: 0, opacity: 1 }, { duration: 500 });
					
					var right = jQuery("#Buckets .Nav .Social");
					right.css({ opacity: 0 });
					right.animate({ left: 0, opacity: 1 }, { duration: 500 });
				}
			});
		} else {
			if (!jQuery.browser.msie || jQuery.browser.version > 8) {
				jQuery("#Banners").animate({ top: -166, opacity: 0 }, { duration: 250 });
			} else {
				jQuery("#Banners").css({ display: "none" });
			}
			
			var right = jQuery("#Buckets .Nav .Social");
			right.css({ opacity: 1 });
			right.animate({ left: 15, opacity: 0 }, { duration: 500 });
			
			var left = jQuery("#Buckets .Nav .Left");
			left.css({ opacity: 1 });
			left.animate({ left: -15, opacity: 0 }, { 
				duration: 500,
				complete: function() {
					jQuery("#Buckets .Nav").animate({ height: 0, top: 0 }, { duration: 250 });
				}
			});
		}
	},
	
	transitionStarted: function(idx) {
		// idx = the current callout (the one that needs to go out)
		// Home.toDeactivate = Home.currentIdx;
		var tD = idx;
		jQuery(jQuery(".Callout").get(tD)).animate({ opacity: 0 }, { 
			duration: 1000,
			complete: function() {
				jQuery(jQuery(".Callout").get(tD)).css({ display: "none" });
			}
		});
	},
	
	transitionEnded: function(idx) {
		// if (Home.activatingCallout) return;
		
		// Home.activatingCallout = true;
		Home.clearAutomaticAdvance();
		
		jQuery("ol.Nav a").removeClass("On");
		jQuery(jQuery("ol.Nav a")[Math.floor(idx/2)]).addClass("On");
		
		var duration = 500 + 500 * ((Math.floor(idx/2) != Home.currentCallout) ? 0 : 1);
		
		Home.toDeactivate = Home.currentIdx;
		Home.currentIdx = idx;
		Home.currentCallout = Math.floor(idx/2);
		
		if (Home.toDeactivate != null) {
			jQuery(jQuery(".Callout").get(Home.toDeactivate)).css({ display: "none" });
		}
		
		// idx = the current callout (the one that needs to show up)
		var item = jQuery(jQuery(".Callout").get(Home.currentIdx));
		
		// SHOW NEW CONTENT
		item.css({ display: "block", opacity: 1 });
		
		// HIDE TRIANGLE
		Home.toDeactivate = null;
		
		// FADE IN HOTSPOTS
		item.find(".Hotspot, .Cargo").each(function(x, hotspot) {
			hotspot = jQuery(hotspot);
			var fromLeft = parseInt(hotspot.css("left"));
			var amount = Math.floor(Math.random()*31) - 15; // -15:15
			
			if (!jQuery.browser.msie || jQuery.browser.version > 8) {
				hotspot.css({ left: fromLeft + amount, opacity: 0 });
				hotspot.animate({ left: fromLeft, opacity: 1 }, { 
					duration: duration
				});
			} else {
				hotspot.css({ opacity: "" });
			}
		});
		
		// TITLE
		var fromLeft = parseInt(item.find("h2").css("left"));
		var amount = 20; // Math.floor(Math.random()*31) - 15; // -15:15
		
		if (!jQuery.browser.msie || jQuery.browser.version > 8) {
			item.find("h2").css({ left: fromLeft + amount, opacity: 0 });
			item.find("h2").animate({ left: fromLeft, opacity: 1 }, { 
				duration: duration
			});
		} else {
			item.find("h2").css({ display: "block" });
		}
		
		// DETAILS
		var fromLeft = parseInt(item.find(".Details").css("left"));
		var amount = 20; // Math.floor(Math.random()*31) + 5; // -15:15
		
		var detailsBackground = item.find(".Details").css("backgroundImage");
		if (!jQuery.browser.msie || jQuery.browser.version > 8) {
			item.find(".Details").css({ left: fromLeft + amount, opacity: 0, display: "block" });
		} else {
			item.find(".Details").css({ backgroundImage: "none", left: fromLeft + amount, opacity: 0, display: "block" });
		}
		item.find(".Details").animate({ left: fromLeft, opacity: 1 }, { 
			duration: duration,
			complete: function() {
				item.find(".Details").css({ opacity: "", backgroundImage: detailsBackground });
				Home.activatingCallout = false;
				Home.setAutomaticAdvance();
			}
		});
	},
	
	flashMovie: function() {
     	if (navigator.appName.indexOf("Microsoft") != -1) {
         	return window["Background"];
     	} else {
         	return document["Background"];
     	}
 	},
 	
 	isFlashVersion: function() {
 		return (Home.flashMovie() != null && Home.flashMovie() != 'undefined');
 	},
	/*
	hasFlashMin: function(){
		var debug_html = getParameter('flash');
		var flash_version = 8;
		if(debug_html == "false" && debug_html !=  ""){
		flash_version = 10;
		}
		flash_version_string = flash_version.toString() + ".0.0";
		if(swfobject.hasFlashPlayerVersion(flash_version_string)){
			jQuery(".Callout").css(background:none !important);
			jQuery(".Triangle").css(display:none !important);
		};
	},
	*/
	activatingCallout: false,
	activateCallout: function(idx) {
		if (Home.activatingCallout) return;
		if (Home.currentIdx == idx) return;
		
		Home.activatingCallout = true;
		Home.clearAutomaticAdvance();
		
		jQuery("ol.Nav a").removeClass("On");
		jQuery(jQuery("ol.Nav a")[Math.floor(idx/2)]).addClass("On");
		
		var duration = 500 + 500 * ((Math.floor(idx/2) != Home.currentCallout) ? 0 : 1);
		var timeout = duration * ((Math.floor(idx/2) != Home.currentCallout) ? 1 : 0);
		
		Home.toDeactivate = Home.currentIdx;
		Home.currentIdx = idx;
		Home.currentCallout = Math.floor(idx/2);
		
		if (Home.isFlashVersion()) {
			try {
				Home.flashMovie().selectSetByAlias(idx);
			} catch(e) { }
			return;
		}
		
		var leftToRight = !(Home.toDeactivate % 2 == 0);
			
		var cHeight = jQuery(jQuery(".Callout").get(idx)).height();
		var cWidth = jQuery(jQuery(".Callout").get(idx)).width();
		var triangleContainer = jQuery(".TriangleContainer");

		triangleContainer.html("");
		triangleContainer.css({ display: "block" });
		var backgroundUrl = jQuery(jQuery(".Callout").get(idx)).css("background-image");

		var PIECE_HEIGHT = 15;
		for(var i=0; i<=cHeight; i+=PIECE_HEIGHT) {
			var piece = jQuery(document.createElement("div"));
			var w = Math.round(cWidth * i / cHeight);
			piece.css({ 
				 height: PIECE_HEIGHT,
				 width: 0, 
				 backgroundImage: backgroundUrl,
				 backgroundRepeat: "no-repeat",
				 backgroundPosition: leftToRight ? ("0px -" + i + "px") : ("-" + cWidth + "px -" + (cHeight - i) + "px"),
				 left: leftToRight ? 0 : cWidth,
				 top: leftToRight ? i : cHeight - i,
				 opacity: 0
			});
			
			triangleContainer.append(piece);
		}

		Home.finishedPieces = 0; 
		
		triangleContainer.find("div").each(function(i, item){
			item = jQuery(item);
			
			setTimeout(function() {
				item.animate({ 
					opacity: 1
				},
				
				{ 
					duration: 1000,
					
					step: function(now, fx) {
						var elem = jQuery(fx.elem);
						
						var w = fx.pos * cWidth;
						if (!leftToRight) {
							var bgpos = elem.css("backgroundPosition").split(" ");
							elem.css({
								width: w,
								left: cWidth - w,
								backgroundPosition: "-" + (cWidth - w) + "px " + bgpos[1]
							});
						} else {
							elem.css({ width: w });
						}
					},
					
					complete: function() {
						Home.finishedPieces++;
						
						if (Home.finishedPieces == triangleContainer.find("div").length) {
							
							var item = jQuery(jQuery(".Callout").get(Home.currentIdx));
							
							// DEACTIVATE OLD CALLOUT
							if (Home.toDeactivate != null) {
								jQuery(jQuery(".Callout").get(Home.toDeactivate)).css({ display: "none" });
							}
							// SHOW NEW CONTENT
							item.css({ display: "block" });
							
							// HIDE TRIANGLE
							triangleContainer.css({ display: "none" });
							Home.toDeactivate = null;
							
							// FADE IN HOTSPOTS
							item.find(".Hotspot, .Cargo").each(function(x, hotspot) {
								hotspot = jQuery(hotspot);
								var fromLeft = parseInt(hotspot.css("left"));
								var amount = Math.floor(Math.random()*31) - 15; // -15:15
								
								if (!jQuery.browser.msie || jQuery.browser.version > 8) {
									hotspot.css({ left: fromLeft + amount, opacity: 0 });
									hotspot.animate({ left: fromLeft, opacity: 1 }, { 
										duration: duration
									});
								} else {
									hotspot.css({ opacity: "" });
								}
							});
							
							// TITLE
							var fromLeft = parseInt(item.find("h2").css("left"));
							var amount = 20; // Math.floor(Math.random()*31) - 15; // -15:15
							
							if (!jQuery.browser.msie || jQuery.browser.version > 8) {
								item.find("h2").css({ left: fromLeft + amount, opacity: 0 });
								item.find("h2").animate({ left: fromLeft, opacity: 1 }, { 
									duration: duration
								});
							} else {
								item.find("h2").css({ display: "block" });
							}
							
							// DETAILS
							var fromLeft = parseInt(item.find(".Details").css("left"));
							var amount = 20; // Math.floor(Math.random()*31) + 5; // -15:15
							
							var detailsBackground = item.find(".Details").css("backgroundImage");
							if (!jQuery.browser.msie || jQuery.browser.version > 8) {
								item.find(".Details").css({ left: fromLeft + amount, opacity: 0, display: "block" });
							} else {
								item.find(".Details").css({ backgroundImage: "none", left: fromLeft + amount, opacity: 0, display: "block" });
							}
							item.find(".Details").animate({ left: fromLeft, opacity: 1 }, { 
								duration: duration,
								complete: function() {
									item.find(".Details").css({ opacity: "", backgroundImage: detailsBackground });
								}
							});
							Home.setAutomaticAdvance();
							Home.activatingCallout = false;
						}
					}
				});
			}, i * 30);
		});
	}
}

jQuery(document).ready(function() {
	Home.init();
	
	banners();
	
	jQuery(".Callout .Hotspot .Open").mouseenter(function() {
		Home.clearAutomaticAdvance();
		var parent = jQuery(this).parent();
		if (parent.hasClass("On")) return;
		parent.addClass("On");
		
		if (!jQuery.browser.msie || jQuery.browser.version > 8) {
			parent.find(".Content").css({ opacity: 0 });
			parent.find(".Content h3, .Content p, .Content a").css({ opacity: 0 });
		} else {
			parent.find(".Content h3, .Content p, .Content a").css({ opacity: "" });
		}
		
		parent.parent().find(".OverlayBackground").fadeIn(250, function() {
			parent.find(".Content h3, .Content p, .Content a").each(function(q, item) {
				item = jQuery(item);
				if (item.attr("animating") == true) return;
				
				item.attr("animating", true);
				var fromLeft = parseInt(item.css("left"));
				var amount = 10; // Math.floor(Math.random()*11); // 0:10
				
				if (!jQuery.browser.msie || jQuery.browser.version > 8) {
					item.css({ left: fromLeft + amount, opacity: 0 });
					item.animate({ left: fromLeft, opacity: 1 }, { 
						duration: 500,
						complete: function() {
							item.attr("animating", false);
						}
					});
				}
			});
			
			if (!jQuery.browser.msie || jQuery.browser.version > 8) {
				parent.find(".Content").animate({ opacity: 1 }, { duration: 500 });
			} else {
				parent.find(".Content").css({ opacity: "" });
			}
		});
	});
	
	jQuery(".Callout .Hotspot .Open").click(function() {
		jQuery(this).mouseenter();
	});
	
	jQuery(".Callout .Hotspot").mouseleave(function() {
		jQuery(this).removeClass("On");
		jQuery(this).parent().find(".OverlayBackground").fadeOut(250);
		Home.setAutomaticAdvance();
	});
});

