var activeProduct, newProduct, numproducts;

function resetSlidey() {
	if ($(".scroll").html() != null) {
		if ($(".scroll").scrollLeft() > 0) {
			$(".scroll").scrollLeft(0);
		}
	}
	if ($(".scroll .wrapper").html() != null) {
		if ($(".scroll .wrapper").scrollLeft() > 0) {
			$(".scroll .wrapper").scrollLeft(0);
		}
	}
}

/*--------------------------- Product Pop ----------------------------*/

function prodPop(defaultParam, thisProduct) {

	if(thisProduct){
	} else {
		thisProduct = $(this);
	}
		
	// id is in the form "productboxpop_[product]"
	newProduct = thisProduct.children(".container").attr("id").substring(5);

	// Only kick off billboard slidey if selecting a non-active product;
	if(newProduct == activeProduct)
		return true;
	
	var productboxpop, productcontent;
	
	numproducts = thisProduct.parent("div").hasClass("four") && 4 || thisProduct.parent("div").hasClass("three") && 3 || 	thisProduct.parent("div").hasClass("two") && 2 || 5;

	if ($("#sign_in_box .hdr_open").css("display") == "none") {
		$("#sign_in_box .hdr_close").click();
	}
	
	// Reset active productboxpop display and functionality
	if(activeProduct) {
		productboxpop = $("#prod_" + activeProduct).parent("div");
		
		productboxpop.removeClass("prodActive");
		productboxpop.children("div.shadow").hide();
		productboxpop.find(".autobtn").css("margin-bottom","5px");
		productboxpop.find(".autobtn-wide").css("margin-bottom","5px");
		productboxpop.find(".fs-smaller").addClass("fs-smallest").removeClass("fs-smaller");
		productboxpop.find(".fs-small").addClass("fs-smaller").removeClass("fs-small");
		productboxpop.find(".fs-normal").addClass("fs-small").removeClass("fs-normal");
		productboxpop.find(".fs-larger").addClass("fs-large").removeClass("fs-larger");
		productboxpop.find(".fs-largest").addClass("fs-larger").removeClass("fs-largest");
		productboxpop.find(".lh-normal").addClass("lh-small").removeClass("lh-normal");
		productboxpop.find(".lh-large").addClass("lh-normal").removeClass("lh-large");
	}
	
	productboxpop = thisProduct;	
	prodActivate(productboxpop, newProduct);
	
}
function prodUnPop() {
	
};

function prodActivate(productboxpopId, newProduct) {

	productboxpop = $(productboxpopId);
	activeProduct = newProduct;

	productboxpop.addClass("prodActive");	

	if (productboxpop.hasClass("initial")) {
		productboxpop.removeClass("initial");
		
		// Assign dynamic height to shadows
		$(".productbox .shadow .ml, .productbox .shadow .mr").height($(productboxpop).height()-7);
		$(".productbox .shadow .tc, .productbox .shadow .bc").width($(productboxpop).width()-18);
		
		// find position of the product within the billboard and adjust 
		// (no slide on initial load)
		var container = $(".billboard");
		$.each( container.find(".section"), function(i, n){
			$(n).attr("rel",i);
		});
		var width = container.width();
		var z = $("#bb_" + newProduct).attr("rel");
		var cnt = - (width*z);
		if (isNaN(cnt)) cnt = 0;
		if(cnt != 0) $(".billboard .content").css("left",cnt);
	} else {
		$(".billboard").slideTo("#bb_" + newProduct);
	}
	
	numproducts = productboxpop.parent("div").hasClass("four") && 4 || productboxpop.parent("div").hasClass("three") && 3 || 	productboxpop.parent("div").hasClass("two") && 2 || 5;

	productboxpop.children("div.shadow").show();
	productboxpop.find(".autobtn").css("margin-bottom","6px");
	productboxpop.find(".autobtn-wide").css("margin-bottom","6px");
	productboxpop.find(".lh-normal").addClass("lh-large").removeClass("lh-normal");	
	productboxpop.find(".lh-small").addClass("lh-normal").removeClass("lh-small");
	productboxpop.find(".fs-larger").addClass("fs-largest").removeClass("fs-larger");
	productboxpop.find(".fs-large").addClass("fs-larger").removeClass("fs-large");
	productboxpop.find(".fs-small").addClass("fs-normal").removeClass("fs-small");	
	productboxpop.find(".fs-smaller").addClass("fs-small").removeClass("fs-smaller");
	productboxpop.find(".fs-smallest").addClass("fs-smaller").removeClass("fs-smallest");

	return true;
}

/*-------------------------- Image Preload -----------------------------*/

jQuery.preloadImages = function() {
	for(var i = 0; i<arguments.length; i++)	{
		jQuery("<img>").attr("src", arguments[i]);
	}
}

/*-------------------------- Flippy ----------------------------*/

jQuery.fn.setFlippy = function(body_height) {
	var container = jQuery(this);
	container.find("li").addClass("flip");
	container.find("li").not(".active").children(".body").css("height","0").append("<p class='smallest lh-small' style='padding:0;'>&nbsp;</p>").css("overflow","hidden");	
	container.find("li.active").children(".body").css("height",body_height);
	container.find(".title").hoverIntent({
   sensitivity: 25, 
   interval: 100, 
   over: function() {
		var target = $(this).parent();
		var target_parent = target.parent();
		if (!target.hasClass("active")) {
			if (target_parent.find(".active_old").html() != null) {
				target_parent.find(".active").children(".body").stop();
				target_parent.find(".active_old").children(".body").height(0);
				target_parent.find(".active").children(".body").height(body_height);
				target_parent.find(".active_old").removeClass("active_old");				
			}
			target_parent.find(".active").addClass("active_old").removeClass("active");
			target.addClass("active");	
			target.children(".body").animate({height:body_height}, {
				step: function(now, fx) {
					target_parent.find(".active_old").children(".body").height(body_height - (now));
				},
				duration: 300,
				complete: function() {
					target_parent.find(".active_old").removeClass("active_old");
				}
			});
		}		
	 }, 
   timeout: 100, 
   out: function() {} 
	});	
}


/*-------------------------- Slidey ----------------------------*/

jQuery.fn.slideTo = function(target_id, settings) {
	settings = jQuery.extend({
     easeTime: 400
  }, settings);
	var container = jQuery(this);
	$.each( container.find(".section"), function(i, n){
		$(n).attr("rel",i);
	});
	var width = container.width();
	var z = $(target_id).attr("rel");
	var cnt = - (width*z);
	if (isNaN(cnt)) cnt = 0;

	container.find(".itab_content").animate({left:cnt}, {
		duration: 600,
		easing: "easeInOutQuint",
		complete: function() {
			var left = $(this).css("left");
			var distance = left.split("px");
			if (distance[0] > -500) $(this).css("left",0);
		}
	});		
}

/*--------------------------- Poppy ----------------------------*/

jQuery.fn.popIt = function(settings) {
	settings = jQuery.extend({
		overlayBgColor: '#FFF',
		overlayOpacity: '0.80',
    imgLoading: '/images/loading_blue.gif',
    imgBtnClose: '/images/icn_close.png',
    iFrameWidth: 675,
    iFrameHeight: 450
  }, settings);
	
	function init() {
		// Loading...
		var obj = $(this);
		var pClass = $(this).hasClass("taxCalc") && "taxCalc" || $(this).hasClass("helpMeChoose") && "helpMeChoose" || $(this).hasClass("screenshotzoom") && "screenShotZoom" || " ";

		var url = $(this).attr("href");
		var baseURL = url.indexOf(";")!==-1 && url.substr(0, url.indexOf(";")) || url.indexOf("?")!==-1 && url.substr(0, url.indexOf("?")) || url;
		
		var queryString = url.replace(/^[^\?]+\??/,'');
		var params = parseQuery( queryString );
		
	  var pWidth = pClass == "screenShotZoom" && 670 || pClass == "taxCalc" && 642 || pClass == "helpMeChoose" && 787 || !params['width'] && settings.iFrameWidth || params['width'];
	  var pHeight = pClass == "screenShotZoom" && 394 || pClass == "taxCalc" && 584 || pClass == "helpMeChoose" && 600 || !params['height'] && settings.iFrameHeight || params['height'];
			  		
		$('body').append('<div id="blur-overlay"></div><div id="poppyBox"><div class="container ' + pClass + '"><div id="poppyLoading"><strong>Loading...</strong><img src="'+settings.imgLoading+'" border=0></div></div><a href="javascript:;" id="poppyClose" class="poppClose" title="Close"><img src="/images/icn_close.png" class="png" border=0 width=28 height=28 /></a><img src="/images/poppy_fade_top.png" class="fadeTop png" border=0 width=25 height=25><img src="/images/poppy_fade_btm.png" class="fadeBtm png" border=0 width=25 height=25></div>');
		
		$("#poppyBox").append('<div class="shadow" id="poppyShadow"><table cellspacing=0 cellpadding=0><tr><td><img src="/images/poppy_shadow_tl.png" class="tl png" border=0 width=17 height=17></td><td><img src="/images/poppy_shadow_tc.png" class="tc png" border=0 width=17 height=17></td><td><img src="/images/poppy_shadow_tr.png" class="tr png" border=0 width=17 height=17></td></tr><tr><td><img src="/images/poppy_shadow_ml.png" class="ml png" border=0 width=17 height=17></td><td style="background-color:#FFF"><img src="/images/poppy_shadow_mc.png" class="mc png" border=0 width=17 height=17></td><td><img src="/images/poppy_shadow_mr.png" class="mr png" border=0 width=17 height=17></td></tr><tr><td><img src="/images/poppy_shadow_bl.png" class="bl png" border=0 width=17 height=17></td><td><img src="/images/poppy_shadow_bc.png" class="bc png" border=0 width=17 height=17></td><td><img src="/images/poppy_shadow_br.png" class="br png" border=0 width=17 height=17></td></tr></table></div>');
		
		$("#poppyShadow .tc, #poppyShadow .bc, #poppyShadow .mc").width($("#poppyLoading").width());
		$("#poppyShadow .ml, #poppyShadow .mr, #poppyShadow .mc").height($("#poppyLoading").height());				
		
		$('embed, object, select').css({ 'visibility' : 'hidden' });
		
		if($.browser.firefox && $.browser.mac)
			$("#blur-overlay").addClass("overlayMacFFBGHack"); // MacFF Only
			  				
		posOverlay();
		$('#blur-overlay').css({
			backgroundColor: settings.overlayBgColor,
			opacity: settings.overlayOpacity
		}).fadeIn("fast", function() {
			$("#poppyShadow").fadeIn("fast");
			$("#poppyLoading").fadeIn("fast", function() {

				// Content Insert
			  if (pClass == "screenShotZoom") {
			  	$("#poppyBox .container").append("<img src='" + baseURL + "' id='poppyImg' name='poppyimg" + Math.round(Math.random()*1000) + "' onload='poppyIframeLoaded($(this))' width='" + pWidth + "' height='" + pHeight + "' class='" + pClass + "' >" + "<div class='imgCaption'>" + obj.prev("div").html() + "</div>");
			  } else {
			  	$("#poppyBox .container").append("<iframe frameborder='0' hspace='0' src='" + baseURL + "' id='poppyIframeContent' name='iframeContent" + Math.round(Math.random()*1000) + "' onload='poppyIframeLoaded($(this))' style='width:" + pWidth + "px;height:" + pHeight + "px;' class='" + pClass + "' > </iframe>");
			  }

				// Window Resize Adjust
				$(window).resize(function() {	
					$('#blur-overlay').hide();
					posOverlay();
					$('#blur-overlay').show();			
					posBox();			
				});	
				
				// Exit		
				document.onkeyup = function(e){
					var keycode = e==null ? event.keyCode : e.which;
					if(keycode == 27)	end(); // Escape Key
				};			
				$("#blur-overlay, #poppyLoading, #poppyClose, #poppyImg").click(function() {end();});

				
			});
		});
		posBox();
		
	
		return false;
	}
	
	function end() {
		$("#poppyBox, #poppyLoading, #poppyShadow").remove();
		$("#blur-overlay").fadeOut("fast", function() { $(this).remove(); });
		$('embed, object, select').css({ 'visibility' : 'visible' });
	}
	
	function posOverlay() {
		var arrPageSizes = getPageSize();
		$('#blur-overlay').css({
			width: arrPageSizes[0],
			height: arrPageSizes[1]
		});
	}
	
	function posBox() {
		var arrPageSizes = getPageSize();
		var arrayPageScroll = getPageScroll();
		var fromLeft = ((arrPageSizes[2]-$('#poppyBox').width())/2)+arrayPageScroll[0];
		var fromTop = ((arrPageSizes[3]-$('#poppyBox').height())/2)+arrayPageScroll[1];
		$('#poppyBox').css({
			left:	fromLeft < 0 ? 0 : fromLeft,
			top: fromTop < 0 ? 10 : fromTop
		}).show();
	}
	
	function parseQuery ( query ) {
  	var Params = {};
  	if ( ! query ) {return Params;}// return empty object
  	var Pairs = query.split(/[;&]/);
  	for ( var i = 0; i < Pairs.length; i++ ) {
    	var KeyVal = Pairs[i].split('=');
    	if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
  	}
  	return Params;
	}
	
	return this.unbind('click').click(init);
}


	
function poppyIframeLoaded(obj) {
	
	var objWidth = obj.hasClass("taxCalc") && $(obj).width() - 19 || obj.hasClass("helpMeChoose") && $(obj).width() - 22 || $(obj).width() - 6;
	var objHeight = obj.hasClass("screenShotZoom") && $(obj).height() + 75 || obj.hasClass("taxCalc") && $(obj).height() - 19 || obj.hasClass("helpMeChoose") && $(obj).height() - 28 || $(obj).height() + 10;

	var arrPageSizes = getPageSize();
	var arrayPageScroll = getPageScroll();
	var fromLeft = ((arrPageSizes[2]-objWidth)/2)+arrayPageScroll[0];
	var fromTop = ((arrPageSizes[3]-objHeight)/2)+arrayPageScroll[1];
	fromLeft = fromLeft < 0 ? 0 : fromLeft;
	fromTop = fromTop < 0 ? 0 : fromTop;
		
	$("#poppyLoading").fadeOut("fast",function() { 
		$("#poppyLoading").remove(); 
		$("#poppyBox, #poppyBox .container").width(objWidth).height(objHeight);		
		
		$('#poppyBox').animate({ top: fromTop, left:	fromLeft }, 500);
		$("#poppyShadow .mc").animate({ height: objHeight+"px", width: objWidth+"px" }, 500, function() {
			if (obj.attr("id")=="poppyImg")
				$("#poppyImg, #poppyBox .imgCaption").css({display:"block"});
			else
				$("#poppyIframeContent").css({display:"block"});

			$("#poppyClose").css({ top: "-10px", left: objWidth + "px" }).show();
			
			if (obj.hasClass("taxCalc")||obj.hasClass("helpMeChoose")) {
				$("#poppyShadow").hide();
			}	else if (!(obj.attr("id")=="poppyImg")){
				
				$("#poppyBox .fadeTop").css({ top: "18px", left: "10px", width: objWidth - 15 + "px" }).show();
				$("#poppyBox .fadeBtm").css({ top: objHeight - 42 + "px", left: "10px", height: "50px", width: objWidth - 15 + "px" }).show();
			}				
			
		});
		$("#poppyShadow .ml, #poppyShadow .mr").animate({ height: objHeight+"px"	}, 500);
		$("#poppyShadow .tc, #poppyShadow .bc").animate({	width: objWidth+"px"	}, 500);
	});
	
}
/*--------------------------- Page Sizes ----------------------------*/

function getPageSize(){
	var xScroll = (window.innerHeight && window.scrollMaxY) && window.innerWidth + window.scrollMaxX || (document.body.scrollHeight > document.body.offsetHeight) && document.body.scrollWidth || document.body.offsetWidth;
	var yScroll = (window.innerHeight && window.scrollMaxY) && window.innerHeight + window.scrollMaxY || (document.body.scrollHeight > document.body.offsetHeight) && document.body.scrollHeight || document.body.offsetHeight;

	var windowWidth = self.innerHeight && (document.documentElement.clientWidth ? document.documentElement.clientWidth : self.innerWidth) || (document.documentElement && document.documentElement.clientHeight) && document.documentElement.clientWidth || document.body && document.body.clientWidth;
	var windowHeight = self.innerHeight && self.innerHeight || (document.documentElement && document.documentElement.clientHeight) && document.documentElement.clientHeight || document.body && document.body.clientHeight;

	// for small pages with total height less then height of the viewport
	var pageHeight = yScroll < windowHeight ? windowHeight : yScroll;
	
	// for small pages with total width less then width of the viewport
	var pageWidth = xScroll > windowWidth ? xScroll : windowWidth;

	var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
		return arrayPageSize;
}

function getPageScroll(){
	var xScroll = self.pageYOffset && self.pageXOffset || (document.documentElement && document.documentElement.scrollTop) && document.documentElement.scrollLeft || document.body.scrollLeft;
	var yScroll = self.pageYOffset && self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) && document.documentElement.scrollTop || document.body.scrollTop;
	var arrayPageScroll = new Array(xScroll,yScroll);
	return arrayPageScroll;
}