
	/* =================================== megamenu vars */
		var menu_selected = 0;
		var tab_selected = 1;
		var was_selected = false;


	/* =================================== adjustSidebar() */
	var sidebarOffset = {left: undefined, top: undefined};
	var sidebarPosition = {left: undefined, top: undefined};
	var footerTop = 0;
	var offsetLeft = 0;
	var marginLeft = "";

	function adjustSidebarInit()
	{
		sidebarOffset = $("#summaryColumn").offset();
		sidebarPosition = $("#summaryColumn").position();

		var footerOffset = $("#relatedProduct").offset();
		footerTop = footerOffset.top - parseInt($("#relatedProduct").css("paddingTop")) - parseInt($("#relatedProduct").css("marginTop"));

		// remember left offset from #relatedProduct in case window resizes 
		var mainOffset = $("#contentWrapper").offset();
		offsetLeft = sidebarOffset.left - mainOffset.left;

		// hack for IE7, which seems to be 20px off
		var ua = $.browser;
		if ( ua.msie && ua.version.slice(0,2) == "7." )
			footerTop -= 20;

		adjustSidebar();
		window.onscroll = function() { adjustSidebar(); };
		window.onresize = function() { adjustSidebar(); };
	}

	function adjustSidebar()
	{
		// console.log("adjustSidebar()");

		var footerOffset = $("#relatedProduct").offset();
		footerTop = footerOffset.top;
		// console.log("footer.top=" + footerOffset.top);

		var mainOffset = $("#contentWrapper").offset();

		var sidebarHeight = $("#summaryColumn").height();
		// console.log("sidebarHeight=" + sidebarHeight);
		var sidebarTop = sidebarOffset.top;
		var scrollTop = $(window).scrollTop();
		// console.log("compare: sidebarTop=" + sidebarTop + ", scrollTop=" + scrollTop + ", sidebarHeight=" + sidebarHeight + ", sidebarBot=" + (scrollTop + sidebarHeight - sidebarTop) + " / footerTop=" + footerTop);
		if (scrollTop > sidebarTop) {
			var hitBottom = (scrollTop + sidebarHeight >= footerTop);
			$('#summaryColumn').css({
				position: 'fixed',
				left: (mainOffset.left + offsetLeft - parseInt($("#summaryColumn").css('marginLeft')) ) + 'px', 
				top: (hitBottom ? footerTop - scrollTop - sidebarHeight : 0) + 'px'});
		} else if (scrollTop < sidebarTop) {
			$('#summaryColumn').css({
				position: 'absolute', 
				left: sidebarPosition.left + 'px', 
				top: sidebarPosition.top + 'px'});
		}
	}

/* ===============================================
*									COMMERCIAL
================================================ */
function __COMMERCIAL__(){}

/* =================================== megaCom()
 	Commercial Mega Menu related functions */

function mousemoveCommercial(e)
{
	if (menu_selected == 0)
		return;
	var $g;
	// which mega menu?
	switch (menu_selected) {
		case 1: $g = $("#commercialMegaMenu"); break;
		case 2: $g = $("#menu-operators"); break;
		case 3: $g = $("#menu-education"); break;
		case 4: $g = $("#menu-before"); break;
		case 5: $g = $("#menu-support"); break;
		default: return;
	}
	var megaOffset = $g.offset();
	if (megaOffset == null)
	 	return;

	var left = megaOffset.left - parseInt($g.css('paddingLeft')) - 20;
	var right = megaOffset.left + $g.width() + parseInt($g.css('paddingRight')) + 20;
	var top = megaOffset.top - parseInt($g.css('paddingTop')) - 50;
	var bottom = megaOffset.top + $g.height() + parseInt($g.css('paddingBottom')) + 20;
	bottom = Math.max(bottom, top+20);

	var megaCoords = "( " + left + ", " + top + ", " + right + ", " + bottom + " )";

	var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
	// $("#debug").text("page: " + pageCoords + ", mega: " + megaCoords);

	if (left>0 && top>0)
		if (e.pageX < left || e.pageY < top || e.pageX > right || e.pageY > bottom) {
			megaMenuCommercial(0);
		}
}


function megaMenuCommercial(menu)
{
	if (menu == menu_selected)
		return;
	switch (menu_selected) {
		case 1:
			$('#commercialMegaMenu').slideUp(500, function() {
				// reset mega menu
				$("#navColumn1 dd a").removeClass("selected");
				$("#navColumn2-0").show();
				for (var i=1; i<5; ++i)
					$("#navColumn2-" + i).hide();
				$("#mega-commercial-beauty").attr({src: "/images/mega-menu/comm-mega-primary.jpg"})
			});
			tab_selected = 0;
			if (!was_selected)
				$("#nav1").removeClass("tabSelected");
			break;
			
		case 2:
			$("#menu-operators").slideUp("fast");
			if (!was_selected)
				$("#nav2").removeClass("tabSelected");
			break;
			
		case 3:
			$("#menu-education").slideUp("fast");
			if (!was_selected)
				$("#nav3").removeClass("tabSelected");
			break;

		case 4:
			$("#menu-architect").slideUp("fast");
			if (!was_selected)
				$("#nav4").removeClass("tabSelected");
			break;

		case 5:
			$("#menu-support").slideUp("fast");
			if (!was_selected)
				$("#nav5").removeClass("tabSelected");
			break;
	}
	
	switch(menu) {
		case 1:
			was_selected = $("#nav1").hasClass("tabSelected");
			$("#nav1").addClass("tabSelected");
			$('#commercialMegaMenu').slideDown();
			menu_selected = menu;
			break;
			
		case 2:
			was_selected = $("#nav2").hasClass("tabSelected");
			$("#nav2").addClass("tabSelected");
			$('#menu-operators').slideDown("fast");
			menu_selected = menu;
			break;
		
		case 3:
			was_selected = $("#nav3").hasClass("tabSelected");
			$("#nav3").addClass("tabSelected");
			$("#menu-education").slideDown("fast");
			menu_selected = menu;
			break;

		case 4:
			was_selected = $("#nav4").hasClass("tabSelected");
			$("#nav4").addClass("tabSelected");
			$("#menu-architect").slideDown("fast");
			menu_selected = menu;
			break;

		case 5:
			was_selected = $("#nav5").hasClass("tabSelected");
			$("#nav5").addClass("tabSelected");
			$("#menu-support").slideDown("fast");
			menu_selected = menu;
			break;

		default:
			was_selected = false;
			menu_selected = 0;
	}
	
}


	var comm_breadcrumbs = [
			['steel_sectional', "Steel Sectional", [
				['polyurethane_high_r_value', "Polyurethane High R-Value"],
				['polystyrene_three_layer', "Polystyrene Three Layer"],
				['single_layer', "Single Layer"]
				]],
			['aluminum_sectional', "Aluminum Sectional", [
				['aluminum_full_view', "Aluminum Full View"]
				]],
			['rolling_steel', "Rolling Steel", [
				['service', "Service"],
				['fire', "Fire"],
				['counter', "Counter"],
				['grille', "Grille"]
				]],
			['rolling_sheet', "Rolling Sheet", [
				['self_storage', "Self Storage"],
				['commercial', "Commercial"]
				]],
			['specialty', "Specialty", [
				['specialty', "Specialty"]
				]]
	];

	function updateDoorsDropdown1(default_value) {
		var options = '<option value="all">Choose...</option>;'
		for (var i in comm_breadcrumbs) {
			var id = comm_breadcrumbs[i][0];
			var name =  comm_breadcrumbs[i][1];
			options += '<option value="' + id + '"' +
						(default_value == id ? ' selected' : '') +
						'>' + name + '</option>';
		}		
		options += '<option value="all">Show All</option>;';
		$("#door_type").html(options);
	}
	
	function updateDoorsDropdown2(default_value) {
		var type = $("#door_type").val();
		var options = '<option value="all">Choose...</option>;'
		for (var i in comm_breadcrumbs) {
			if (type == comm_breadcrumbs[i][0] || type == "all") {
				var crumbs = comm_breadcrumbs[i][2];
				for (var j in crumbs) {
					var id = crumbs[j][0];
					var name =  crumbs[j][1];
					options += '<option value="' + id + '"' +
								(default_value == id ? ' selected' : '') +
								'>' + name + '</option>';
				}
			}
		}		
		options += '<option value="all">Show All</option>;';
		$("#door_strength").html(options);
	}


/* =================================== commercialSlides()
 	Commercial Collection Overview Slideshow related functions */

	function commercialSlidesSetup(speed, transition_speed)
	{
		slideshow_speed = speed;
		slideshow_transition_speed = transition_speed;
		var $slides = $("#slides");
		var $slideNav = $("#slideNav");
		$slides.empty();
		$slideNav.empty();
		var n = 0;
		active_slide = 1;
		for (key in slides) {
			++n;
			var $img = $("<img>").attr({
				src: slides[n-1],
				id: "slide-" + n,
				alt: "Photo " + n,
				"class": "slidePhoto"
			});
			var $a = $("<a>").attr({
				href: "#",
				id: "bullet-" + n
			});
			$a.html(n);
			$a.click(function(x) {
				i = $(x.currentTarget).html();
				if (i != active_slide) {
					clearInterval(slideshow_function);
					commercialSlideAdvance(i);
	    			slideshow_function = setInterval( "commercialSlideAdvance()", slideshow_speed);
				}
				return false;
			});
			if (n == active_slide) {
				$img.addClass("active");
				$a.addClass("currentSlide");
			}
			$slides.append($img);
			$slideNav.append($a);
		}
	
		n = active_slide;

		if (slides.length > 1)
			slideshow_function = setInterval("commercialSlideAdvance()", slideshow_speed);
		else
			$("#slideNav").hide();
	}


	function commercialSlideAdvance(n)
	{
		if (slides.length < 2)
			return;

		var $active = $('#slides IMG.active');

		if ( $active.length == 0 ) $active = $('#slides IMG:last');

		var $next;
		if (n == undefined) {
			$next =  $active.next().length ? $active.next() : $('#slides IMG:first');
			n = $next.attr("id").substr(6);
		}
		else
			$next = $("#slide-" + n);

		// $("#nav1 a").html("next slide is " + n)
	    $active.addClass('last-active');

		active_slide = n;
		// var url = slides[n-1].linkURL;
		var url = "/commercial/collection_options/" + collection;

		$(".currentSlide").removeClass("currentSlide");
		$("#bullet-" + n).addClass("currentSlide");
		// $(".slideInfo .caption a").html(slides[n-1].linkText);
		// $(".slideInfo .caption a").attr({href: url});
		$next.css({opacity: 0.0})
			.addClass('active')
			.animate({opacity: 1.0}, slideshow_transition_speed, function() {
				$active.removeClass('active last-active');
			});

	}



/* ===============================================
*							FAVORITES
================================================ */
function __FAVORITES__(){}


function saveProductFave(sku, name, blurb, preview, kind)
{
	$.post("/ajax/save_favorite/product",
		{
			sku:	sku,
			name:	name,
			blurb:	blurb,
			preview: preview,
			kind:	kind
		},
		function(data){
			updateFavoritesCount(data);
			alert("This product has been added to your Favorites");
		}
	);

	return false;
}


function saveCommercialDoorFave()
{
	$.post("/ajax/save_favorite/commdoor",
		{
			collection:			collection,
			name:				collection_name,
			blurb:				collection_blurb,
			preview:			preview_path
		},
		function(data){
			updateFavoritesCount(data);
			alert("This commercial door has been added to your Favorites");
		}
	);

	return false;
}


function saveDoorFave()
{
	$.post("/ajax/save_favorite/door",
		{
			collection:			collection, 
			panel:				panels.selected_id,
			window:				toppanels.selected_id,
			color:				colors.selected_id,
			insulation:			insulations.selected_id,
			handle:				handles.selected_id,
			hinge:				hinges.selected_id,
			clavos:				clavos.selected_id,
			preview: 			preview_url,
			name_collection:	collection_names.collection, 
			name_panel:			collection_names.panel,
			name_window:		collection_names.toppanel,
			name_color:			collection_names.color,
			name_insulation:	collection_names.insulation,
			name_handle:		collection_names.handle,
			name_hinge:			collection_names.hinge,
			name_clavos:		collection_names.clavos
		},
		function(data){
			updateFavoritesCount(data);
			alert("This door has been added to your Favorites");
		}
	);

	return false;
}


function updateFavoritesCount(count)
{
	count = parseInt(count);
	var summary = (count == 1 ? "1 item" : count + " items");
	$("#favorites-count").html("(" + summary + ")");
}


// remove the nth favorite
function favoriteRemove(n)
{
	$.post("/ajax/favorite_remove/" + n,
		{},
		function(data){
			$("#favorite-" + n).fadeOut();
			updateFavoritesCount(data);
		}
	);
	return false;
}



/* ===============================================
*							RESIDENTIAL
================================================ */
function __RESIDENTIAL_HOME__(){}


/* =================================== megaRes()
 	Residential Mega Menu related functions */

function mousemoveResidential(e)
{
	if (menu_selected == 0)
		return;
	var $g;
	// which mega menu?
	switch (menu_selected) {
		case 1: $g = $("#garageMegaMenu"); break;
		case 2: $g = $("#menu-openers"); break;
		case 3: $g = $("#menu-accessories"); break;
		case 4: $g = $("#menu-before"); break;
		case 5: $g = $("#menu-support"); break;
		default: return;
	}
	var megaOffset = $g.offset();

	var left = megaOffset.left - parseInt($g.css('paddingLeft')) - 20;
	var right = megaOffset.left + $g.width() + parseInt($g.css('paddingRight')) + 20;
	var top = megaOffset.top - parseInt($g.css('paddingTop')) - 50;
	var bottom = megaOffset.top + $g.height() + parseInt($g.css('paddingBottom')) + 20;
	bottom = Math.max(bottom, top+20);

	var megaCoords = "( " + left + ", " + top + ", " + right + ", " + bottom + " )";

	var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
	// $("#debug").text("page: " + pageCoords + ", mega: " + megaCoords);

	if (left>0 && top>0)
		if (e.pageX < left || e.pageY < top || e.pageX > right || e.pageY > bottom) {
			// if (e.pageX < left)
			// 	console.log("left!");
			// if (e.pageY < top)
			// 	console.log("top!");
			// if (e.pageX > right)
			// 	console.log("right!")
			// if (e.pageY > bottom)
			// 	console.log("bottom!")
			// console.log("page: " + pageCoords + ", mega: " + megaCoords)
			megaMenuResidential(0);
		}

}



function megaMenuResidential(menu)
{
	if (menu == menu_selected)
		return;
	switch (menu_selected) {
		case 1:
			$('#garageMegaMenu').slideUp(500, function() {
				// reset mega menu
				$("#navColumn1 dd a").removeClass("selected");
				$("#navColumn2-0").show();
				for (var i=1; i<4; ++i)
					$("#navColumn2-" + i).hide();
				$("#mega-garage-beauty").attr({src: "/images/mega-menu/opening-FPO.jpg"})
			});
			tab_selected = 0;
			if (!was_selected)
				$("#nav1").removeClass("tabSelected");
			break;
			
		case 2:
			$("#menu-openers").slideUp("fast");
			if (!was_selected)
				$("#nav2").removeClass("tabSelected");
			break;
			
		case 3:
			$("#menu-accessories").slideUp("fast");
			if (!was_selected)
				$("#nav3").removeClass("tabSelected");
			break;

		case 4:
			$("#menu-before").slideUp("fast");
			if (!was_selected)
				$("#nav4").removeClass("tabSelected");
			break;

		case 5:
			$("#menu-support").slideUp("fast");
			if (!was_selected)
				$("#nav5").removeClass("tabSelected");
			break;
	}
	
	switch(menu) {
		case 1:
			was_selected = $("#nav1").hasClass("tabSelected");
			$("#nav1").addClass("tabSelected");
			$('#garageMegaMenu').slideDown();
			menu_selected = menu;
			break;
			
		case 2:
			was_selected = $("#nav2").hasClass("tabSelected");
			$("#nav2").addClass("tabSelected");
			$('#menu-openers').slideDown("fast");
			menu_selected = menu;
			break;
		
		case 3:
			was_selected = $("#nav3").hasClass("tabSelected");
			$("#nav3").addClass("tabSelected");
			$("#menu-accessories").slideDown("fast");
			menu_selected = menu;
			break;

		case 4:
			was_selected = $("#nav4").hasClass("tabSelected");
			$("#nav4").addClass("tabSelected");
			$("#menu-before").slideDown("fast");
			menu_selected = menu;
			break;

		case 5:
			was_selected = $("#nav5").hasClass("tabSelected");
			$("#nav5").addClass("tabSelected");
			$("#menu-support").slideDown("fast");
			menu_selected = menu;
			break;

		default:
			was_selected = false;
			menu_selected = 0;
	}
	
}


/* =================================== homeSlides()
Home Page Slideshow related functions */

var active_slide = 0;
var slideshow_speed = 8000;
var slideshow_transition_speed = 500;
var slideshow_function = undefined;

	function homeSlidesSetup(speed, transition_speed)
	{
		if (slides.length < 2)
			return;
		slideshow_speed = speed;
		slideshow_transition_speed = transition_speed;
		var $slides = $("#slides");
		var $slideNav = $("#slideNav");
		$slides.empty();
		$slideNav.empty();
		var n = 0;
		active_slide = 1;
		for (key in slides) {
			++n;
			var $img = $("<img>").attr({
				src: slides[n-1][0],
				id: "slide-" + n,
				alt: "Photo " + n,
				"class": "slidePhoto xroundTopRight"
			});
			var $a = $("<a>").attr({
				href: "#",
				id: "bullet-" + n
			});
			$a.html(n);
			$a.click(function(x) {
				i = $(x.currentTarget).html();
				if (i != active_slide) {
					clearInterval(slideshow_function);
					homeSlideAdvance(i);
	    			slideshow_function = setInterval( "homeSlideAdvance()", slideshow_speed);
				}
				return false;
			});
			if (n == active_slide) {
				$img.addClass("active");
				$a.addClass("currentSlide");
			}
			$slides.append($img);
			$slideNav.append($a);
		}
		
		n = active_slide;
		$("#slideInfo1").css({opacity: 1.0});
		$("#slideInfo .title").html(slides[n-1][1]);
		$("#slideInfo .description").html(slides[n-1][2]);
		$("#slideInfo .button1")
			.html(slides[n-1][3])
			.attr({href: slides[n-1][4]});
		$("#edit-slide").attr('href', "/system/index.php?S=0&D=cp&C=content_publish&M=entry_form&channel_id=20&entry_id="+slides[n-1][5]);

		slideshow_function = setInterval("homeSlideAdvance()", slideshow_speed);
	}


	function homeSlideAdvance(n)
	{
    	var $active = $('#slides IMG.active');

    	if ( $active.length == 0 )
			$active = $('#slides IMG:last');

		var $next;
		if (n == undefined) {
			$next =  $active.next().length ? $active.next() : $('#slides IMG:first');
			n = $next.attr("id").substr(6);
		}
		else
			$next = $("#slide-" + n);

		$active.addClass('last-active');

		active_slide = n;

		$("#slideInfo1")
			.animate({opacity: 0.0}, slideshow_transition_speed/2, function() {
				$(".currentSlide").removeClass("currentSlide");
				$("#bullet-" + n).addClass("currentSlide");
				$("#slideInfo .title").html(slides[n-1][1]);
				$("#slideInfo .description").html(slides[n-1][2]);
				$("#slideInfo .button1")
					.html(slides[n-1][3])
					.attr({href: slides[n-1][4]});
				$("#dealerCaption a")
					.html(slides[n-1][3])
					.attr({href: slides[n-1][4]});
				$("#edit-slide").attr('href', 
					"/system/index.php?S=0&D=cp&C=content_publish&M=entry_form&channel_id=20&entry_id="+slides[n-1][5]);
			    $next.css({opacity: 0.0})
			        .addClass('active')
			        .animate({opacity: 1.0}, slideshow_transition_speed, function() {
			            $active.removeClass('active last-active');
						$("#slideInfo1")
							.animate({opacity: 1.0}, slideshow_transition_speed/2);
			        });
			})

	}


/* =================================== collectionSlides()
 	Residential Collection Page Slideshow related functions */

	function collectionSlidesSetup(speed, transition_speed)
	{
		if (slides.length < 2)
			return;
		slideshow_speed = speed;
		slideshow_transition_speed = transition_speed;
		var $slides = $("#slides");
		var $slideNav = $("#slideNav");
		$slides.empty();
		$slideNav.empty();
		var n = 0;
		active_slide = 1;
		for (key in slides) {
			++n;
			var $img = $("<img>").attr({
				src: slides[n-1].photo,
				id: "slide-" + n,
				alt: "Photo " + n,
				"class": "slidePhoto"
			});
			var $a = $("<a>").attr({
				href: "#",
				id: "bullet-" + n
			});
			$a.html(n);
			$a.click(function(x) {
				i = $(x.currentTarget).html();
				if (i != active_slide) {
					clearInterval(slideshow_function);
					collectionSlideAdvance(i);
	    			slideshow_function = setInterval( "collectionSlideAdvance()", slideshow_speed);
				}
				return false;
			});
			if (n == active_slide) {
				$img.addClass("active");
				$a.addClass("currentSlide");
			}
			$slides.append($img);
			$slideNav.append($a);
		}
	
		n = active_slide;
		$("h1").html(slides[n-1].title);
		$(".breadcrumb1").html(slides[n-1].style);
		$(".breadcrumb2").html(slides[n-1].material);
		$("#info .description").html(slides[n-1].description);
		$("#info-rvalue").html(slides[n-1].rValue);
		$("#info-maintenance").html(slides[n-1].maintenance);
		$("#info-safety").html(slides[n-1].safety);
		$("#info-warranty").html(slides[n-1].warranty);
		// $("#info-price").removeClass("price1 price2 price3 price4");
		$("#info-price").addClass("price" + slides[n-1].price);

		$(".slideInfo .caption a").html(slides[n-1].linkText);
		var url = "/residential/collection_options/" + collection + "/" + slides[n-1].panel +
				"/" + slides[n-1].window + "/" + slides[n-1].color +
				"/" + slides[n-1].insulation;
		$(".slideInfo .caption a").attr({href: url});



		slideshow_function = setInterval("collectionSlideAdvance()", slideshow_speed);
	}


	function collectionSlideAdvance(n)
	{
		var $active = $('#slides IMG.active');

		if ( $active.length == 0 ) $active = $('#slides IMG:last');

		var $next;
		if (n == undefined) {
			$next =  $active.next().length ? $active.next() : $('#slides IMG:first');
			n = $next.attr("id").substr(6);
		}
		else
			$next = $("#slide-" + n);

		// $("#nav1 a").html("next slide is " + n)
	    $active.addClass('last-active');

		active_slide = n;
		// var url = slides[n-1].linkURL;
		var url = "/residential/collection_options/" + collection + "/" + slides[n-1].panel +
				"/" + slides[n-1].window + "/" + slides[n-1].color +
				"/" + slides[n-1].insulation;

		$(".currentSlide").removeClass("currentSlide");
		$("#bullet-" + n).addClass("currentSlide");
		$(".slideInfo .caption a").html(slides[n-1].linkText);
		$(".slideInfo .caption a").attr({href: url});
		$next.css({opacity: 0.0})
			.addClass('active')
			.animate({opacity: 1.0}, slideshow_transition_speed, function() {
				$active.removeClass('active last-active');
			});

	}


/* =================================== dealerSlides()
 	Dealer Home Page Slideshow related functions */

	function dealerSlidesSetup(speed, transition_speed)
	{
		if (slides.length < 2)
			return;
		slideshow_speed = speed;
		slideshow_transition_speed = transition_speed;
		var $slides = $("#slides");
		var $slideNav = $("#slideNav");
		$slides.empty();
		$slideNav.empty();
		var n = 0;
		active_slide = 1;
		for (key in slides) {
			++n;
			var $img = $("<img>").attr({
				src: slides[n-1].photo,
				id: "slide-" + n,
				alt: "Photo " + n,
				"class": "slidePhoto"
			});
			var $a = $("<a>").attr({
				href: "#",
				id: "bullet-" + n
			});
			$a.html(n);
			$a.click(function(x) {
				i = $(x.currentTarget).html();
				if (i != active_slide) {
					clearInterval(slideshow_function);
					dealerSlideAdvance(i);
	    			slideshow_function = setInterval( "dealerSlideAdvance()", slideshow_speed);
				}
				return false;
			});
			if (n == active_slide) {
				$img.addClass("active");
				$a.addClass("currentSlide");
			}
			$slides.append($img);
			$slideNav.append($a);
		}
	
		n = active_slide;
		$(".slideInfo a").html(slides[n-1].caption);
		var url = slides[n-1].link;
		$(".slideInfo a").attr({href: url});

		slideshow_function = setInterval("dealerSlideAdvance()", slideshow_speed);
	}


	function dealerSlideAdvance(n)
	{
		var $active = $('#slides IMG.active');

		if ( $active.length == 0 ) 
			$active = $('#slides IMG:last');

		var $next;
		if (n == undefined) {
			$next =  $active.next().length ? $active.next() : $('#slides IMG:first');
			n = $next.attr("id").substr(6);
		}
		else
			$next = $("#slide-" + n);

		// $("#nav1 a").html("next slide is " + n)
	    $active.addClass('last-active');

		active_slide = n;
		$(".currentSlide").removeClass("currentSlide");
		$("#bullet-" + n).addClass("currentSlide");
		$(".slideInfo a").html(slides[n-1].caption);
		$(".slideInfo a").attr({href: slides[n-1].link});
		$next.css({opacity: 0.0})
			.addClass('active')
			.animate({opacity: 1.0}, slideshow_transition_speed, function() {
				$active.removeClass('active last-active');
			});

	}


	function download_select(id)
	{
		var path = $("#" + id).val();
		document.location.href = "/amarr/actions/download.php?path=" + escape(path);
	}


/* ===============================================
*							 COLLECTION OPTIONS
================================================ */
	function __COLLECTION_OPTIONS__(){}


	var preload = true;

	var panels = {
			name: "panel",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	};

	var toppanels = {
			name: "toppanel",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	};

	var colors = {
			name: "color",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	};
	var oak_summit_colors = {};

	var insulations = {
			name: "insulation",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	}

	var handles = {
			name: "handle",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	}

	var hinges = {
			name: "hinge",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	}

	var clavos = {
			name: "clavo",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	}

	var constructions = {
			name: "construction",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	}

	var features = {
			name: "feature",
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	}

	var collection_names = {
			collection: "", 
			panel: "", 
			toppanel: "", 
			color: "", 
			insulation: "", 
			handle: "", 
			hinge: "", 
			clavos: "",
			construction: ""
	}


	function addPanel(id, name, solo_window)
	{
		panels.panel[++panels.count] = {id: id, name: name, solo_window: solo_window};
	}

	function showPanels(scroll)
	{
		var sel = 1;
		if (preload) {
			if (def_panel != "") {
				for (i in panels.panel) {
					if (panels.panel[i].id == def_panel) {
						scroll = 5* Math.floor((i-1) / 5) + 1;
						sel = i; 	// ((i-1) % 5) + 1;
					}
				}
			}
		}
		var selected = 1;
		$("#panels").html("");
		for(i=0; i<5; ++i) {
			if (scroll+i <= panels.count) {
				var $pane = panelHTML(scroll+i)
								.fadeIn(500 + i*100);
				$("#panels").append($pane);
				if (panels.panel[scroll+i].id == panels.selected_id)
					selected = scroll+i;
			}
		}
		panels.scroll = scroll;
		if (preload)
			selectPanel(sel);
		else if (selected > 0)
			selectPanel(selected);
		updateNumbersAndScroll(panels);
	}
	

	function updateNumbersAndScroll(thing)
	{
		var pound_thing = "#" + thing.name;
		if (thing.count <= 5)
			$(pound_thing+"-numbers").html("Showing " + thing.scroll + " of " + thing.count);
		else
			$(pound_thing+"-numbers").html("Showing " + thing.scroll + " of " 
				+ Math.min(thing.scroll+4, thing.count)
				+ " out of " + thing.count);
		if (thing.count <= 5 || thing.scroll >= thing.count-4)
			$(pound_thing+"-next").hide(); 
		else
			$(pound_thing+"-next").show();
		if (thing.scroll == 1 || thing.count <= 5)
			$(pound_thing+"-prev").hide();
		else
			$(pound_thing+"-prev").show();
		// adjust the sidebar while we're here
		adjustSidebar();
	}


	function prevPanel()
	{
		if (panels.scroll == 1)
			return;
		showPanels(panels.scroll - 5);
		return false;
	}

	function nextPanel()
	{
		if (panels.scroll >= panels.count-4)
			return;
		showPanels(panels.scroll + 5);
		return false;
	}

	function panelHTML(i)
	{
		// console.log("panelHTML(), i=" + i)
		var id = panels.panel[i].id;
		var name = panels.panel[i].name;
		var html = '<li style="display: none;"><a href="#" id="panel-' + i + '" onclick="return selectPanel(' + i + ');"><img src="/images/panels/' + id + '.jpg" width="84" alt="' + name + '" title="' + name + '/' + id + '" /></a>';
		if (!preview)
			html += '<a href="#">Zoom</a>';
		html += '</li>';
		return $(html);
	}

	function filterCustomOptions(prev_id) {
		var panel = panels.panel[ panels.selected ];

		if (panel.id == 'LPBB' || prev_id == 'LPBB') {
			// rebuild colors
			colors = {
				name: oak_summit_colors.name,
				count: 0,
				scroll: 0,
				selected: 0,
				selected_id: "",
				panel: []
			};
			for (j=1; j<=oak_summit_colors.count; ++j) {
				var color = oak_summit_colors.panel[j];
				// LPBB not available in GY, HG, BR, DW, MW
				if (panel.id != 'LPBB' || jQuery.inArray(color.id, ['GY', 'HG', 'BR', 'DW', 'MW'])<0)
					colors.panel[++colors.count] = color;
			}
			showColors(1);
			updateNumbersAndScroll(colors);
			showInsulations(1);
			//updateNumbersAndScroll(colors);
		}

		if (panel.id == 'RP' || prev_id == 'RP') {
			showColors(1);
			updateNumbersAndScroll(colors);
		}
	}

	function selectPanel(i)
	{
		// console.log("selectPanel("+i+")");
		$("#panels li a").removeClass("selected");
		$("#panel-" + i).addClass("selected");
		var panel = panels.panel[i];
		$("#panel-name").html(panel.name);
		$("#summary-panel-name").html(panel.name);
		collection_names.panel = panel.name;
		panels.selected = i;
		var prev_id = panels.selected_id;
		panels.selected_id = panel.id;
		fetchTopPanels();
		//if (!preload) filterCustomOptions(prev_id);

		if (!preload && (panel.id == 'LPBB' || prev_id == 'LPBB')) {
			// rebuild colors
			colors = {
				name: oak_summit_colors.name,
				count: 0,
				scroll: 0,
				selected: 0,
				selected_id: "",
				panel: []
			};
			for (j=1; j<=oak_summit_colors.count; ++j) {
				var color = oak_summit_colors.panel[j];
				// LPBB not available in GY, HG, BR, DW, MW
				if (panel.id != 'LPBB' || jQuery.inArray(color.id, ['GY', 'HG', 'BR', 'DW', 'MW'])<0)
					colors.panel[++colors.count] = color;
			}
			showColors(1);
			showInsulations(1);
		}
		if (!preload && (panel.id == 'RP' || prev_id == 'RP')) {
			showColors(1);
		}

		return false;
	}

	function fetchTopPanels()
	{
		// console.log("fetchTopPanels()");
		$.get("/ajax/toppanel/" + collection + "/" + panels.selected_id, 
			function(data) {
				// populate toppanels object
				toppanels.panel = [];
				toppanels.count = toppanels.scroll = toppanels.selected = 0;
				var lines = data.split("\n");
				var ids = {};
				var solo_window = panels.panel[panels.selected].solo_window;
				for (j=0; j<lines.length; ++j) {
					if (lines[j].indexOf("|") >= 0) {
						var f = lines[j].split("|");
						var id = f[0];
						var name = f[1];
						var thumbnail = f[2];
						var solo = f[3];
						if (id == "N1" || id == "N2" || id == "B1" || id == "B2") {
							id = id.substr(1);
						}
						if (solo_window != "") {
							if (solo_window == id) {
								++toppanels.count;
								toppanels.panel[toppanels.count] = {id: id, name: name, thumbnail: thumbnail};
							}
						}
						else if (ids[id] == undefined) {
							++toppanels.count;
							toppanels.panel[toppanels.count] = {id: id, name: name, thumbnail: thumbnail};
							ids[id] = true;
						}
					}
				}
				if (toppanels.count == 0) {
					$("#topPanel").hide();
					updatePreview();
				}
				else
					$("#topPanel").show();
				fixSequenceNumbers();
				// alert("fetchTopPanels() done, preload=" + preload)
				showTopPanels(1);
			});

	}


	function showTopPanels(scroll)
	{
		// console.log("showTopPanels("+scroll+")");
		var sel = 1;
		if (preload) {
			if (def_window != "") {
				for (i in toppanels.panel) {
					if (toppanels.panel[i].id == def_window) {
						scroll = 5 * Math.floor((i-1) / 5) + 1;
						sel = i;
					}
				}
			}
		}

		$("#top_panels").html("");
		var selected = 1;
		for(i=0; i<5; ++i) {
			if (scroll+i <= toppanels.count) {
				var $pane = toppanelHTML(scroll+i)
								.fadeIn(500 + i*100);
				$("#top_panels").append($pane);
				if (toppanels.panel[scroll+i].id == toppanels.selected_id) {
					selected = scroll+i;
					// console.log("selected toppanel=" + selected);
				}
			}
		}
		toppanels.scroll = scroll;
		if (preload)
			selectTopPanel(sel);
		else if (selected>0)
			selectTopPanel(selected);
		updateNumbersAndScroll(toppanels);
	}
	


	function selectTopPanel(i)
	{
		if (toppanels.count == 0)
			toppanels.selected_id = "Z";
		else {
			// console.log("selectTopPanel("+i+")");
			$("#top_panels li a").removeClass("selected");
			$("#toppanel-" + i).addClass("selected");
			var toppanel = toppanels.panel[i];
			$("#toppanel-name").html(toppanel.name);
			if (toppanel.id == "O")
				$("#summary-toppanel-name").html(toppanel.name + "**");
			else
				$("#summary-toppanel-name").html(toppanel.name);
			collection_names.toppanel = toppanel.name;
			toppanels.selected_id = toppanel.id;
		}
		updatePreview();
		return false;
	}

	function prevTopPanel()
	{
		if (toppanels.scroll == 1)
			return;
		showTopPanels(toppanels.scroll - 5);
		return false;
	}

	function nextTopPanel()
	{
		if (toppanels.scroll >= toppanels.count-4)
			return;
		showTopPanels(toppanels.scroll + 5);
		return false;
	}

	function toppanelHTML(i)
	{
		var id = toppanels.panel[i].id;
		var panel_id = toppanels.panel[i].panel_id;
		var name = toppanels.panel[i].name;
		var thumbnail = toppanels.panel[i].thumbnail;
  		var html = '<li style="display: none;"><a id="toppanel-' + i + '" href="#" onclick="return selectTopPanel(' + i + ');">' + 
				'<img src="/images/windows/' + thumbnail + '" width="84" height="18" title="' + name + '/' + id + '" alt="' + name + "/" + id + '" /></a></li>';
		return $(html);
	}

	function fetchColors()
	{
		// console.log("fetchColors()");
		$.get("/ajax/colors/" + collection, 
			function(data) {
				// populate colors object
				colors.panel = [];
				colors.count = colors.scroll = colors.selected = 0;
				var lines = data.split("\n");
				var colorInfo = {};
				for (j=0; j<lines.length; ++j) {
					if (lines[j].indexOf("ID:") >= 0) {
						var f = lines[j].split(":");
						colorInfo[f[1]] = {name: f[2], used: false};
					}
					else if (lines[j].indexOf("COLOR:") >= 0) {
						var f = lines[j].split(":");
						colorInfo[f[1]].used = true;
					}
				}
				for (c in colorInfo) {
					if (colorInfo[c].used)
						colors.panel[++colors.count] = {id: c, name: colorInfo[c].name};
				}
				if (collection == "oak_summit") {
					// save a copy
					oak_summit_colors = {
						name: colors.name,
						count: colors.count,
						scroll: colors.scroll,
						selected: colors.selected,
						selected_id: colors.selected_id,
						panel: colors.panel
					};
				}
				showColors(1);
			});
	}

	function showColors(scroll)
	{
		// console.log("showColors("+scroll+")");
		var sel = 1;
		if (preload) {
			if (def_color != "") {
				for (i in colors.panel) {
					if (colors.panel[i].id == def_color) {
						scroll = 5* Math.floor((i-1) / 5) + 1;
						sel = i;
					}
				}
			}
		}

		$("#colors").html("");
		var dur = 500;
		var selected = 1;
		for(i=0; i<5; ++i) {
			if (scroll+i <= colors.count) {
				var $pane = $(colorHTML(scroll+i));
				$("#colors").append($pane);
				if (colors.panel[scroll+i].id == colors.selected_id)
					selected = scroll+i;
				$pane.fadeIn(500 + i*100);
				dur += 100;
			}
		}
		colors.scroll = scroll;
		if (preload)
			selectColor(sel);
		else if (selected > 0)
			selectColor(selected);
		updateNumbersAndScroll(colors);
	}
	

	function colorHTML(i)
	{
		var id = colors.panel[i].id;
		var name = colors.panel[i].name;
		return '<li id="color-' + i + '" class="roundAll" style="display: none;"><a href="#" onclick="return selectColor(' + i + ');" style="background: #fff url(/images/swatches/' + id + '.jpg) no-repeat center 0;" title="' + name + '"></a></li>';
	}


	function selectColor(i)
	{
		// console.log("selectColor("+i+")");
		$("#colors li").removeClass("selected");
		$("#color-" + i).addClass("selected");
		var color = colors.panel[i];
		if (color == undefined) {
			updatePreview();
			return;
		}
		$("#color-name").html(color.name);
		$("#summary-color-name").html(color.name);
		collection_names.color = color.name;
		colors.selected = i;
		colors.selected_id = color.id;
		fetchInsulations();
		updatePreview();
		return false;
	}


	function prevColor()
	{
		if (colors.scroll == 1)
			return;
		showColors(colors.scroll - 5);
		return false;
	}

	function nextColor()
	{
		if (colors.scroll >= colors.count-4)
			return;
		showColors(colors.scroll + 5);
		return false;
	}

	function fetchInsulations()
	{
		var url = "/ajax/insulation/" + colors.selected_id + "/" + collection; 
		$.get(url, 
			function(data) {
				insulations.panel = [];
				insulations.count = insulations.scroll = insulations.selected = 0;
				var lines = data.split("\n");
				for (j=0; j<lines.length; ++j) {
					if (lines[j].indexOf("INS|") >= 0) {
						var f = lines[j].split("|");
						if (collection == "stratford" || collection == "heritage") {
							if (panels.selected_id == 'RP' && f[1].substr(f[1].length-4) != "3000")
								continue;
						}
						insulations.panel[++insulations.count] = {
								id: f[1], 
								name: f[2], 
								thumbnail: f[3], 
								photo: f[4], 
								copy: f[5],
								details: f[6],
								disclaimer: f[7]
							};
					}
				}
				showInsulations(1);
			});
	}



	function showInsulations(scroll)
	{
		// console.log("showInsulations("+scroll+")");
		var sel = 1;
		if (preload) {
			if (def_insulation != "") {
				for (i in insulations.panel) {
					if (insulations.panel[i].id == def_insulation) {
						scroll = Math.floor((i-1) / 5) + 1;
						sel = ((i-1) % 5) + 1;
					}
				}
			}
		}
		$("#insulations").html("");
		for(i=0; i<5; ++i) {
			if (scroll+i <= insulations.count) {
				if (panels.selected_id == "LPBB" && insulations.panel[scroll+i].id == "oak_summit_3000") {
					// oak_summit_3000 not available for LPBB panel
				}
				else {
					var $pane = insulationHTML(scroll+i)
						.fadeIn(500 + i*100);
					$("#insulations").append($pane);
				}
			}
		}
		insulations.scroll = scroll;
		if (preload) {
			selectInsulation(sel);
			filterCustomOptions();
		} else {
			var found = false;
			for (i in insulations.panel) {
				if (insulations.panel[i].id == insulations.selected_id) {
					selectInsulation(i = insulations.scroll);
					found = true;
				}
			}
			if (!found)
				selectInsulation(1);
		}	
		refreshFancyBox();
	}
	


	function insulationHTML(i)
	{
		var ins = insulations.panel[i];
		var thumb = ins.photo;
 		thumb = thumb.replace(/insulation\//, 'insulation/_thumbs/thumb_'); 
		var html = '<li id="insulation-' + i + '">' +
				'<a href="#" onclick="return selectInsulation(' + i + ')"><img src="' + thumb + '" width="84" /></a>' + 
				// ins.name + ': ' + 
				ins.copy + '<br />' +
				'<a href="/residential/insulation_details/' + ins.id + '" class="LBdetails">Details</a></li>';
		return $(html);
	}


	function selectInsulation(i)
	{
		var sel = i;
		if (preload) {
			if (def_insulation != "") {
				for (i in insulations.panel) {
					if (insulations.panel[i].id == def_insulation) {
						sel = ((i-1) % 5) + 1;
					}
				}
			}
		}

		$("#insulations li a").removeClass("selected");
		$("#insulation-" + sel + " a").addClass("selected");
		var insulation = insulations.panel[sel];
		insulations.selected = sel;
		insulations.selected_id = insulation.id;
		$("#insulation-name").html(insulation.name);
		$("#summary-insulation-name").html(insulation.name);
		$("#insulation-note").html(insulation.disclaimer);
		collection_names.insulation = insulation.name;
		preload = false;
		updatePreview();
		adjustSidebar();
		return false;
	}


	function addHandle(name, thumbnail, zoom)
	{
		// console.log("addHandle: " + name)
		handles.panel[++handles.count] = {name: name, thumbnail: thumbnail, zoom: zoom};
	}

	function showHandles(scroll)
	{
		// console.log("showHandles("+scroll+")");
		if (handles.count == 0) {
			$("#handle").hide();
			$("#summary-handle").hide();
		}
		else
			$("#handle").show();
		fixSequenceNumbers();
		$("#handles").html("");
		for(i=0; i<5; ++i) {
			if (scroll+i <= handles.count) {
				var $pane = handleHTML(scroll+i)
								.fadeIn(500 + i+100);
				$("#handles").append($pane);
			}
		}
		handles.scroll = scroll;
		updateNumbersAndScroll(handles);
		refreshFancyBox();
	}
	
	function prevHandle()
	{
		if (handles.scroll == 1)
			return;
		showHandles(handles.scroll - 5);
		return false;
	}

	function nextHandle()
	{
		if (handles.scroll >= handles.count-4)
			return;
		showHandles(handles.scroll + 5);
		return false;
	}

	function handleHTML(i)
	{
		// console.log("handleHTML(), i=" + i)
		var handle = handles.panel[i];
		var html = '<li><a href="#" id="handle-' + i + '" onclick="return selectHandle(' + i + ');"><img src="' + handle.thumbnail + '" width="84" alt="' + handle.name + '" title="' + handle.name + '" /></a>' +
					handle.name + '<br />' +
					'<a href="' + handle.zoom + '" class="LBlargerView" title="' + handle.name + '">Zoom</a>';
					'</li>';
		return $(html);
	}

	function selectHandle(i)
	{
		// console.log("selectHandle("+i+")");
		$("#handles li a").removeClass("selected");
		if (handles.selected == i) {
			handles.selected = 0;
			handles.selected_id = "";
			$("#handle-name").html("&mdash;");
			$("#summary-handle-name").html("&mdash;");
			collection_names.handle = "";
			return false;
		}
		$("#handle-" + i).addClass("selected");
		var handle = handles.panel[i];
		$("#handle-name").html(handle.name);
		$("#summary-handle-name").html(handle.name);
		collection_names.handle = handle.name;
		handles.selected = i;
		handles.selected_id = handle.name;
		return false;
	}

	function addHinge(name, thumbnail, zoom)
	{
		// console.log("addHinge: " + name)
		hinges.panel[++hinges.count] = {name: name, thumbnail: thumbnail, zoom: zoom};
	}

	function showHinges(scroll)
	{
		// console.log("showHinges("+scroll+")");
		if (hinges.count == 0) {
			$("#hinge").hide();
			$("#summary-hinge").hide();
		}
		else
			$("#hinge").show();
		fixSequenceNumbers();
		$("#hinges").html("");
		for(i=0; i<5; ++i) {
			if (scroll+i <= hinges.count) {
				$pane = hingeHTML(scroll+i)
							.fadeIn(500 + i*100);
				$("#hinges").append($pane);
			}
		}
		hinges.scroll = scroll;
		updateNumbersAndScroll(hinges);
	}
	
	function hingeHTML(i)
	{
		var hinge = hinges.panel[i];
		var html = '<li><a href="#" id="hinge-' + i + '" onclick="return selectHinge(' + i + ');"><img src="' + hinge.thumbnail + '" width="84" alt="' + hinge.name + '" title="' + hinge.name + '" /></a>' +
					hinge.name + '<br />' +
					'<a href="' + hinge.zoom + '" class="LBlargerView" title="' + hinge.name + '">Zoom</a>';
					'</li>';
		return $(html);
	}

	function prevHinge()
	{
		if (hinges.scroll == 1)
			return;
		showHinges(hinges.scroll - 5);
		return false;
	}

	function nextHinge()
	{
		if (hinges.scroll >= hinges.count-4)
			return;
		showHinges(hinges.scroll + 5);
		return false;
	}

	function selectHinge(i)
	{
		// console.log("selectHinge("+i+")");
		$("#hinges li a").removeClass("selected");
		if (hinges.selected == i) {
			hinges.selected = 0;
			hinges.selected_id = "";
			$("#hinge-name").html("&mdash;");
			$("#summary-hinge-name").html("&mdash;");
			collection_names.hinge = "";
			return false;
		}
		$("#hinge-" + i).addClass("selected");
		var hinge = hinges.panel[i];
		$("#hinge-name").html(hinge.name);
		$("#summary-hinge-name").html(hinge.name);
		collection_names.hinge = hinge.name;
		hinges.selected = i;
		hinges.selected_id = hinge.name;
		return false;
	}

	function addClavos(name, thumbnail, zoom)
	{
		// console.log("addClavos: " + name)
		clavos.panel[++clavos.count] = {name: name, thumbnail: thumbnail, zoom: zoom};
	}

	function showClavos(scroll)
	{
		// console.log("showClavos("+scroll+")");
		if (clavos.count == 0) {
			$("#clavo").hide();
			$("#summary-clavos").hide();
		}
		else
			$("#clavo").show();
		fixSequenceNumbers();
		$("#clavos").html("");
		for(i=0; i<5; ++i) {
			if (scroll+i <= clavos.count) {
				var $pane = clavosHTML(scroll+i)
								.fadeIn(500 + i*100);
				$("#clavos").append($pane);
			}
		}
		clavos.scroll = scroll;
		updateNumbersAndScroll(clavos);
	}
	
	function clavosHTML(i)
	{
		// console.log("clavosHTML(), i=" + i)
		var clavo = clavos.panel[i];
		var html = '<li><a href="#" id="clavos-' + i + '" onclick="return selectClavos(' + i + ');"><img src="' + clavo.thumbnail + '" width="84" alt="' + clavo.name + '" title="' + clavo.name + '" /></a>' +
					clavo.name + '<br />' +
					'<a href="' + clavo.zoom + '" class="LBlargerView" title="' + clavo.name + '">Zoom</a>';
					'</li>';
		return $(html);
	}


	function selectClavos(i)
	{
		// console.log("selectClavos("+i+")");
		$("#clavos li a").removeClass("selected");
		if (clavos.selected == i) {
			clavos.selected = 0;
			clavos.selected_id = "";
			$("#clavo-name").html("&mdash;");
			$("#summary-clavo-name").html("&mdash;");
			collection_names.clavo = "";
			return false;
		}
		$("#clavo-" + i).addClass("selected");
		var clavo = clavos.panel[i];
		$("#clavos-name").html(clavo.name);
		$("#summary-clavos-name").html(clavo.name);
		collection_names.clavo = clavo.name;
		clavos.selected = i;
		clavos.selected_id = clavo.name;
		return false;
	}

	function selectConstruction(i)
	{
		// console.log("selectConstruction("+i+")");
		$("#constructions li a").removeClass("selected");
		if (constructions.selected == i) {
			constructions.selected = 0;
			constructions.selected_id = "";
			$("#construction-name").html("&mdash;");
			$("#summary-construction-name").html("&mdash;");
			collection_names.construction = "";
			return false;
		}
		$("#construction-" + i).addClass("selected");
		var construction = constructions.panel[i];
		$("#construction-name").html(construction.name);
		$("#summary-construction-name").html(construction.name);
		collection_names.construction = construction.name;
		constructions.selected = i;
		constructions.selected_id = construction.name;
		return false;
	}



	function fixSequenceNumbers() {
		var n = 2;
		if (toppanels.count > 0)
			$("#toppanel-seq").html(n++);
		// if (colors.count > 0)
			$("#color-seq").html(n++);
		if (collection == 'vista')
			n += 2;
		// if (insulations.count > 0)
			$("#insulation-seq").html(n++);
		if (handles.count > 0)
			$("#handle-seq").html(n++);
		if (hinges.count > 0)
			$("#hinge-seq").html(n++);
		if (clavos.count > 0)
			$("#clavo-seq").html(n++);
	}




	var preview_loading = false;
	var preview_url = "";

	function updatePreview()
	{
		if (preload && preview_loading)
			return;

		var url = "";

		// can we preview?
		var can_preview = false;
		if (door_builder)
			can_preview = panels.selected_id && toppanels.selected_id && colors.selected_id;
		else
			can_preview = panels.selected_id;
		// alert("can_preview=" + can_preview)

		if (can_preview) {
			url = doorPreviewURL(preview_path, panels.selected_id, toppanels.selected_id, colors.selected_id);
			if (url == preview_url)
				return;
			preview_url = url;
			// $("#preview-image").html(url);

			// check for certain Jeld-Wen colors
			var note = "";
			if (collection.substr(0, 8) == "jeld_wen") {
				if (colors.selected_id == "PM")
					note += "* All six sides of each section must be painted or stained prior to installation to validate section warranty.<br />";
				if (jQuery.inArray(colors.selected_id, ['TW','PB','PBTW','TWPB']) >= 0)
					note += "* Price upcharge applies.<br />";
			}

			// check for Obscure windows
			if (toppanels.selected_id == "O")
				note += "** Inserts available with obscure glass, but not shown.<br />";

			$("#summary-note").html(note);
		}

		if (url) {
			preview_loading = true;
			setTimeout("showPreloadSpinner()", 200);
			$("#preview")
				.hide()
				.load(function() {
						preview_loading = false;
						$("#preview").fadeIn(500);
						$("#spinner").hide();
					})
				.attr({
						src: url,
						title: "Door Preview photo"
					});
		}
	}

	function doorPreviewURL(collection, panel, toppanel, color)
	{
		if (door_builder) {
			if (toppanel.length == 1 && toppanel >= "1" && toppanel <= "9")
				toppanel = "0" + toppanel;
			var url = "/images/doors/" + collection + "/" + color + "/" +
						panel + "_" + toppanel + "_" + color + "_S.jpg";
			return url;
		}
		else {
			var url = "/images/doors/" + collection + "/" + panel + ".jpg";
			return url;
		}
	}


	function showPreloadSpinner()
	{
		if (preview_loading)
			$("#spinner").show();
	}


/* ===============================================
*								COLLECTION GALLERY
================================================ */
function __COLLECTION_GALLERY__(){}

	var thumbs = {
			count: 0,
			scroll: 0,
			selected: 0,
			selected_id: "",
			panel: []
	};


	function collectionGallerySetup(speed, transition_speed)
	{
		var $thumbs = $("#thumbs");
		$thumbs.empty();
		var n = 0;
		for (key in gallery) {
			var url = "/residential/collection_options/" + collection + 
					"/" + gallery[key].panel +
					"/" + gallery[key].window + 
					"/" + gallery[key].color +
					"/" + gallery[key].insulation
					"/" + gallery[key].handle
					"/" + gallery[key].hinge
					"/" + gallery[key].clavos;
			addThumb(gallery[key].name, gallery[key].photo, gallery[key].thumbnail, gallery[key].copy, gallery[key].url);
		}
		showThumbs(1);
		collectionGalleryUpdateNumbers();
		selectThumb(1);
	}


	function addThumb(name, photo, thumbnail, copy, url)
	{
		thumbs.panel[++thumbs.count] = {name: name, photo: photo, thumbnail: thumbnail, copy: copy, url: url};
	}

	function selectThumb(n)
	{
		if (n<1 || n>thumbs.count)
			return false;

		$("#thumbs A").removeClass("selected");
		$("#thumb-" + n).addClass("selected");

		// $("#nav1 a").html("next slide is " + n)
	    // $active.addClass('last-active');

		thumbs.selected = n;
		var photo = gallery[n-1];
		var url = "/residential/collection_options/" + collection + 
				"/" + photo.panel +
				"/" + photo.window + 
				"/" + photo.color +
				"/" + photo.insulation
				"/" + photo.handle
				"/" + photo.hinge
				"/" + photo.clavos;
		$("#show-me-link").attr({href: url});

		$("#photo IMG").attr({src: photo.photo});
		$("#photo-title").html(photo.name);
		$("#photo-copy").html(photo.copy);
		$("#edit-slide").attr('href', "/system/index.php?S=0&D=cp&C=content_publish&M=entry_form&channel_id=22&entry_id="+photo.entry_id);

		return false;
	}


	function collectionGalleryUpdateNumbers()
	{
		if (thumbs.count == 0)
			$("#gallery").html('<div id="caption">There are no gallery images for this collection</div>')
		$("#thumb-count").html(thumbs.count);
		$("#thumb-from").html(thumbs.scroll);
		$("#thumb-to").html(Math.min(thumbs.scroll+8, thumbs.count));
		if (thumbs.count <= 8 || thumbs.scroll >= thumbs.count-7)
				$("#thumb-next").hide(); 
		else
			$("#thumb-next").show();
		if (thumbs.scroll == 1 || thumbs.count <= 9)
			$("#thumb-prev").hide();
		else
			$("#thumb-prev").show();
	}


	function showThumbs(scroll)
	{
		// console.log("showThumbs("+scroll+")");
		$("#thumbs").html("");
 		for(i=0; i<9; ++i) {
			if (scroll+i <= thumbs.count) {
				var html = thumbHTML(scroll+i);
				$("#thumbs").append(html);
				var x = 1;
			}
		}
		if (thumbs.count > 0)
			thumbs.scroll = scroll;
		else
			thumbs.scroll = 0;
		
		collectionGalleryUpdateNumbers();
	}
	

	function thumbHTML(i)
	{
		// console.log("thumbHTML(), i=" + i)
		var thumb = thumbs.panel[i];
		// console.log("thumbHTML(" + i + "), name=" + thumb.name + ", thumbnail=" + thumb.thumbnail)
		return '<li><a id="thumb-' + i + '" href="#" onclick="return selectThumb(' + i + ')"><img src="' + thumb.thumbnail + '" width="84" height="46" alt="" /></a></li>' + "\n";
	}

	function prevThumb()
	{
		if (thumbs.scroll == 1)
			return;
		showThumbs(thumbs.scroll - 9);
		return false;
	}

	function nextThumb()
	{
		if (thumbs.scroll >= thumbs.count-8)
			return;
		showThumbs(thumbs.scroll + 9);
		return false;
	}



/* ===============================================
*								DEALER
================================================ */
function __DEALER__(){}

function switchToChildAccount()
{
	var child = $("#child-account").val();
	document.location.href = "/amarr/actions/dealer_child_account.php?account=" + child;
}

/* =================================== megaDealer()
 	Dealer Mega Menu related functions */

function mousemoveDealer(e)
{
	if (menu_selected == 0)
		return;
	var $g;
	// which mega menu?
	switch (menu_selected) {
		case 1: $g = $("#whats-new"); break;
		case 2: $g = $("#marketing-advertising"); break;
		case 3: $g = $("#pricing"); break;
		case 4: $g = $("#technical-info"); break;
		case 5: $g = $("#my-account"); break;
		default: return;
	}
	var megaOffset = $g.offset();

	var left = megaOffset.left - parseInt($g.css('paddingLeft')) - 20;
	var right = megaOffset.left + $g.width() + parseInt($g.css('paddingRight')) + 20;
	var top = megaOffset.top - parseInt($g.css('paddingTop')) - 50;
	var bottom = megaOffset.top + $g.height() + parseInt($g.css('paddingBottom')) + 20;
	bottom = Math.max(bottom, top+20);

	var megaCoords = "( " + left + ", " + top + ", " + right + ", " + bottom + " )";

	var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";

	if (left>0 && top>0 && (e.pageX < left || e.pageY < top || e.pageX > right || e.pageY > bottom))
		megaMenuDealer(0);

}


function megaMenuDealer(menu)
{
	if (menu == menu_selected)
		return;
	switch (menu_selected) {
		case 1:
			$('#whats-new').slideUp("fast");
			if (!was_selected)
				$("#nav1").removeClass("tabSelected");
			break;
			
		case 2:
			$("#marketing-advertising").slideUp("fast");
			if (!was_selected)
				$("#nav2").removeClass("tabSelected");
			break;
			
		case 3:
			$("#pricing").slideUp("fast");
			if (!was_selected)
				$("#nav3").removeClass("tabSelected");
			break;

		case 4:
			$("#technical-info").slideUp("fast");
			if (!was_selected)
				$("#nav4").removeClass("tabSelected");
			break;

		case 5:
			$("#my-account").slideUp("fast");
			if (!was_selected)
				$("#nav5").removeClass("tabSelected");
			break;

		case 6:
			$("#amarr-admin").slideUp("fast");
			if (!was_selected)
				$("#nav6").removeClass("tabSelected");
			break;
	}
	
	switch(menu) {
		case 1:
			was_selected = $("#nav1").hasClass("tabSelected");
			$("#nav1").addClass("tabSelected");
			$('#whats-new').slideDown();
			menu_selected = menu;
			break;
			
		case 2:
			was_selected = $("#nav2").hasClass("tabSelected");
			$("#nav2").addClass("tabSelected");
			$('#marketing-advertising').slideDown("fast");
			menu_selected = menu;
			break;
		
		case 3:
			was_selected = $("#nav3").hasClass("tabSelected");
			$("#nav3").addClass("tabSelected");
			$("#pricing").slideDown("fast");
			menu_selected = menu;
			break;

		case 4:
			was_selected = $("#nav4").hasClass("tabSelected");
			$("#nav4").addClass("tabSelected");
			$("#technical-info").slideDown("fast");
			menu_selected = menu;
			break;

		case 5:
			was_selected = $("#nav5").hasClass("tabSelected");
			$("#nav5").addClass("tabSelected");
			$("#my-account").slideDown("fast");
			menu_selected = menu;
			break;

		case 6:
			was_selected = $("#nav6").hasClass("tabSelected");
			$("#nav6").addClass("tabSelected");
			$("#amarr-admin").slideDown("fast");
			menu_selected = menu;
			break;

		default:
			was_selected = false;
			menu_selected = 0;
	}
	
}


/* ===============================================
*								FLASH PLAYER
================================================ */
function __FLASH_PLAYER__(){}

/* ============================================================================= */
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2008 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
	var version;
	var axo;
	var e;
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}
	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";
			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";
			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }
  document.write(str);
}
function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    
    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

