window.sampleLayout = new function() {
	eval(estrada.namespace);
	var layout = null;
	tilt.attachEvent(document, 'layout', function() {
		var content = gel('content');
		var context = gel('context');
		var errorinfo = gel('error-info');
	     var branding = gel('branding');
		var legacy = gel('legacy');
		var feeds = gel('feeds');
		var cqfeeds = gel('cqfeeds');
		var navigation = gel('navigation');
		var extensions = gel('extensions');
		var bricks = gel('bricks');
		var sitemap = gel('sitemap');
		
		var layout = sampleLayout.layout = frame('page',
			cols(
				frame('tool-wrapper',
					area('tools')
				),
				frame('holder',
					cols(
						area('branding'),
						area('widget')
					),
					area('global')
				)
			),
			cols(
				frame('left',
					area('nav'),
					area('ads')
				),
				frame('right',
				    cols(
				        area('location'), // breadcrumbs+title
				        area('print')
				    ),
					cols(
						frame('main',
							area('content'),
							cols(
								area('promo'),
								area('extra')
							)
						),
						area('related')
					),
					area('footer')
				)
			)).build(document.body);

		layout.push(grab(branding, {
			// content class : area ID
			page: 'location'
		}));
		
		layout.push(grab(navigation, {
			// content class : area ID
			breadcrumbs: 'location',
			"children": 'nav'
		}))
		
		// layout.push(grab(branding, {
			// content class : area ID
		// 	branding: 'branding'
		// }));


		rotatingImageHandler(feeds);
		logoImageHandler(cqfeeds);

			
		// push from grab-bucket
		layout.push(grab(content, {
			// content class : area ID
			related: 'related'
		}));
		
		layout.push(grab(feeds, {
			// content class | area ID
			content: 'content',
			promo: 'promo',
			extra: 'extra',
			related: 'related',
			left: 'left',
			tools: 'tools'
		}));

		layout.push(grab(cqfeeds, {
			// content class | area ID
			related: 'related',
			promo: 'promo',
			extra: 'extra',
		    branding: 'branding'  // added for new LGQ
		}));
		// layout.push(grab(branding, {
			// content class : area ID
		// 	branding: 'branding'
		// }));
		layout.push(grab(errorinfo, {
			// content class : area ID
			details: 'content'
		}));
		layout.push(grab(content, {
			// content class : area ID
			page: 'content',
			'promo': 'promo',
			'extra': 'extra'
		}));
		layout.push(grab(content, {
			// content class : area ID
			"extended-page": "content"
		}));
		layout.push(grab(context, {
			// content class : area ID
			'tools': 'tools',
			'global': 'global',
			'widget': 'widget',
			'search-box': 'tools',
			'more-info': 'tools',
			'ads': 'ads',
			'footer': 'footer'
		}));

		// push by id
		layout.push({
			// area ID : content class
			'content': 'extensions'
		});
		layout.push({
			// area ID : content class
			content: 'bricks'
		});
		layout.push(grab(sitemap, {
			// content class | area ID
			'sitemap-holder': 'content'
		}));
		if (bricks) {
			bricks.className = "";
		}
		if (extensions) {
			extensions.className = "";
		}
		var arrRichText = getElements(legacy, "div", "rich-text");
		if (arrRichText.length > 0) {
			layout.push({
				// area ID : content class
				content: 'legacy'
			});
			if (legacy) {
				legacy.className = "";
			}
		}

		//$('#l-content .content-query').removeClass('content-query');

		// let's bind behaviors to elements
		//layout.bind('pretty-search').to(document);
        layout.bind("add-print").to("print");
		// layout.bind("add-logo-link").to("branding");
		layout.bind('isolate-submits').to(document);
		layout.bind('date-selector').to(document);
		layout.bind('category-tree').to(document);
		layout.bind('grid-visibility').to(document);
		layout.bind('first-li').to(document);
		layout.bind("flash-replacement").to(document);
		layout.bind('tiny-mce').to(document);
		layout.bind("pretty-crumbs").to("location");
		layout.bind("url-highlight").to("global");
		layout.bind("limit-global").to("global");
		layout.bind("last-li").to("global");
		layout.bind("last-li").to("widget");
		layout.bind("last-div").to("related");
		layout.bind("number-li").to("global");
		layout.bind("format-feed-queries").to(document);
		layout.bind("add-more-link").to(document);
		layout.bind("last-li").to("related");
		layout.bind("search-box").to("tools");
		layout.bind("adjust-nav").to("nav");
		layout.bind("authoring-hack").to(document);
		layout.bind("rotate-image").to("content");
		layout.bind("new-window").to(document);
		layout.bind("sitemap-bookmarks").to(document);

		$.contentQuery();
		
		rem(content);
		rem(context);
		rem(feeds);
		rem(navigation);
		rem(branding);
	});

	attachEvent(document, 'layouterror', function(errors) {
		var msg = '';
		foreach(errors, function(error) {
			msg = '\n\t' + error.name + ': ' + error.message;
		});
		alert('layout errors occured:' + msg);
	});
	
    function logoImageHandler(cqfeeds) {
		var holder = $('.branding');
		if (holder.length > 0) {
			var items = $('li', holder);
			if (items.length > 0) {
				var idx = Math.floor(items.length * Math.random());
				var current = items.eq(idx);
				var link = $('<a href="' + current.find('.pageurl').text() + '" />');
				link.append(current.find('img'));
				$('#l-branding').prepend($('<div />').addClass('l-branding').append(link));
			}
			holder.remove();
		}
	}
	
	function rotatingImageHandler(feeds) {
		var holder = $('.spotlight');
		if (holder.length > 0) {
			holder.removeClass('extra');
			var items = $('li', holder);
			if (items.length > 0) {
				var idx = Math.floor(items.length * Math.random());
				var current = items.eq(idx);
				var link = $('<a href="' + current.find('.pageurl').text() + '" />');
				link.append(current.find('img'));
				$('#l-main').prepend($('<div />').addClass('rotating-image').append(link));
			}
			holder.remove();
		}
	}

	
	function gel(id) {
		return document.getElementById(id);
	}

	function rem(n) {
		n && n.parentNode.removeChild(n);
	}

}

//estrada.behavior("rotating-image-1-clarion").is({
//  bind: function(node) {
 //   node = $(node);
	
 //   if ($.presentation.behaviors['rotating-image-1']) {
  //    node.prepend($.presentation.behaviors['rotating-image-1']);
 //   }

//  }
//});
////////////////////////////////////////////////////////////////////
// add print page
////////////////////////////////////////////////////////////////////
estrada.behavior("add-print").is({
	bind: function(node) {
	    $(node).text('Print').click(function() {
	       // alert('print page');
	        window.print();
	    });
	}
});
////////////////////////////////////////////////////////////////////
// change the text of the first link in the breadcrumbs to 'Home'
////////////////////////////////////////////////////////////////////
estrada.behavior("pretty-crumbs").is({
	bind: function(node) {
		var oBreadcrumbs;
		if (oBreadcrumbs = first(getElements(node, "div", "breadcrumbs"))) {
			var oHome = first(oBreadcrumbs.getElementsByTagName("a"));
			if (oHome) {
				oHome.innerHTML = "Home";
				oHome.parentNode.className += " l-home-link";
			}
		}
	}
});
////////////////////////////////////////////////////////////////////
// mark the last list in an unordered list
////////////////////////////////////////////////////////////////////
estrada.behavior('last-li').is({
	bind: function(node) {
		foreach(map(node.getElementsByTagName("ul")), function(oUl) {
			if (oUl.hasChildNodes()) {
				var arrChildren = oUl.childNodes;
				var intLength = arrChildren.length;
				if (intLength > 0) {
					for (var i = (intLength-1); i >= 0; i--) {
						if (arrChildren[i].nodeName.toLowerCase() == 'li') {
							arrChildren[i].className += ' l-last';
							i = -1;
						}
					};
				}
			};		
		});
	}
});
////////////////////////////////////////////////////////////////////
// mark the current global link
////////////////////////////////////////////////////////////////////
estrada.behavior("url-highlight").is({
	bind: function(node) {
		// check current url with global links for match
		if (!foreach(map(node.getElementsByTagName("a")), function(oA) {
			if (window.location.href.indexOf(oA.href) == 0) {
				oA.parentNode.className += " l-current";
				var oNewDiv = document.createElement("div");
				oNewDiv.className = "l-current";
				oNewDiv.innerHTML = oA.innerHTML;
				oA.parentNode.insertBefore(oNewDiv, oA);
				oA.parentNode.removeChild(oA);
				return(true);
			}
		})) {
			// check global links with breadcrum for match
			var oBreadcrumbs;
			if (oBreadcrumbs = first(getElements(document, "div", "breadcrumbs"))) {
				var arrCrumbsA = oBreadcrumbs.getElementsByTagName("a");
				foreach(map(node.getElementsByTagName("a")), function(oGlobalA) {
					return(foreach(map(arrCrumbsA), function(oCrumbA) {
						if (oCrumbA.href.indexOf(oGlobalA.href) == 0) {
							oGlobalA.parentNode.className += " l-current";
							var oNewDiv = document.createElement("div");
							oNewDiv.className = "l-current";
							oNewDiv.innerHTML = oGlobalA.innerHTML;
							oGlobalA.parentNode.insertBefore(oNewDiv, oGlobalA);
							oGlobalA.parentNode.removeChild(oGlobalA);
							return(true);
						}
					}));
				});
			}
		}
	}
});
////////////////////////////////////////////////////////////////////
// limit the number of links to 6
////////////////////////////////////////////////////////////////////
estrada.behavior("limit-global").is({
	bind: function(node) {
		var oLi, arrLi = node.getElementsByTagName("li");
		while (arrLi.length > 6) {
			oLi = arrLi[arrLi.length-1];
			oLi.parentNode.removeChild(oLi);
		}
	}
});
////////////////////////////////////////////////////////////////////
// add some wrapping div's for styling purposes
////////////////////////////////////////////////////////////////////
estrada.behavior("adjust-search").is({
	bind: function(node) {
		var oQuery = document.getElementById("search-query");
		if (oQuery) {
			var oNewDiv1 = document.createElement("div");
			var oNewDiv2 = oNewDiv1.appendChild(document.createElement("div"));
			oNewDiv1.id = "l-search-query-outer";
			oNewDiv2.id = "l-search-query-inner";
			oQuery.parentNode.insertBefore(oNewDiv1, oQuery);
			oNewDiv2 = document.getElementById("l-search-query-inner");
			oNewDiv2.appendChild(oQuery);
		}
	}
});
////////////////////////////////////////////////////////////////////
// mark last feed
////////////////////////////////////////////////////////////////////
estrada.behavior('last-div').is({
	bind: function(node) {
		if (node.hasChildNodes()) {
			var arrChildren = node.childNodes;
			var intLength = arrChildren.length;
			if (intLength > 0) {
				for (var i = (intLength-1); i >= 0; i--) {
					if (arrChildren[i].nodeName.toLowerCase() == 'div') {
						arrChildren[i].className += ' l-last-div';
						i = -1;
					}
				};
			}
		};		
	}
});
////////////////////////////////////////////////////////////////////
// add numbered classes to the li elements in div.global
////////////////////////////////////////////////////////////////////
estrada.behavior("number-li").is({
	bind: function(node) {
		var intIdx = 1;
		foreach(map(node.getElementsByTagName("li")), function(oLi) {
			oLi.className += " i" + intIdx++;
		});
	}
});
////////////////////////////////////////////////////////////////////
// format an events feed
////////////////////////////////////////////////////////////////////
estrada.behavior("format-feed-queries").is({
	bind : function(node) {
		$("#l-page .content-query").each(function(intIdx, oQuery) {
			var oEvents = $(".event", this);
			if (oEvents.length > 0) {
				var oNewEventList, oAbbr, oA, oNewVevent;
				var oDtend, oStart, oEnd, oNow, strDate;
				oNewEventList = document.createElement("ul");
				oNewEventList.className = "events";
				this.appendChild(oNewEventList);
				oEvents.each(function() {
					oAbbr = first(getElements(this, "abbr", "dtstart"));
					if (oAbbr) {
						oDtend = first(getElements(this, "abbr", "dtend"));
						if (oDtend == null) {
							oDtend = oAbbr;
						}
						oStart = $.dates.iso8601date($.dates.parse(oAbbr.title));
						oEnd = $.dates.iso8601date($.dates.parse(oDtend.title));
						oNow = $.dates.iso8601date($.dates.parse("now"));
						if (oStart >= oNow) {
							strDate = $.dates.format($.dates.parse(oAbbr.title), "MMM d, yyyy");;
						} else if (oEnd > oStart) {
							strDate = $.dates.format($.dates.parse("now"), "MMM d, yyyy");;
						} else {
							strDate = $.dates.format($.dates.parse(oAbbr.title), "MMM d, yyyy");;
						}
						oA = first(getElements(this, "a", "title"));
						oNewVevent = oNewEventList.appendChild(document.createElement("li"));
						oNewVevent.className = "vevent";
						oNewVevent.innerHTML =
							"<a class=\"url\" href=\""
							+ oA.href + "\"><span class=\"dtstart\">"
							+ strDate
							+ "</span><span class=\"dash\">-</span>" +
							oA.innerHTML;
						oNewVevent.appendChild(oA);
						oAbbr.parentNode.removeChild(oAbbr);
						oA.parentNode.removeChild(oA);
					}
				});
				$("ul:first",this).remove();
			} else {
				oArticles = $(".article", this);
				if (oArticles.length > 0) {
					oNewArticleList = document.createElement("ul");
					oNewArticleList.className = "articles";
					this.appendChild(oNewArticleList);
					oArticles.each(function() {
						oA = $("a.title:first",this);
						oNewArticle = oNewArticleList.appendChild(document.createElement("li"));
						oNewArticle.className = "article";
						$(oNewArticle).append(oA);
					});
					$("ul:first",this).remove();
				}
				
			}
		});
	}
});
////////////////////////////////////////////////////////////////////
// format an article feed
////////////////////////////////////////////////////////////////////
estrada.behavior("format-article-feeds").is({
	bind : function(node) {
		var oNewArticleList, oA, oNewArticle, oArticles;
		$(".related .content-query").each(function(intIdx, oQuery) {
		})
	}
});
////////////////////////////////////////////////////////////////////
// add more link to bottom of feeds
////////////////////////////////////////////////////////////////////
estrada.behavior("add-more-link").is({
	bind : function(node) {
		var oH3, oRelated, oMore, strMore;
		$(".related h3 a").each(function(intIdx, oEvent) {
			oH3 = this.parentNode;
			if (oH3) {
				oRelated = oH3.parentNode;
				if (oRelated) {
					if ($("ul li",oRelated).length > 0) {
						oMore = oRelated.appendChild(document.createElement("a"));
						oMore.className = "l-more";
						strMore = "More";
						oMore.href = this.href;
						if ($(".articles", oRelated).length > 0) {
							strMore += " Stories";
						} else if ($(".events", oRelated).length > 0) {
							strMore += " Events";
						} else if ($(".documents", oRelated).length > 0) {
							strMore += " Documents";
						} else if ($("li.post", oRelated).length > 0) {
							strMore += " Posts";
						} else if ($("li.entry", oRelated).length > 0) {
							strMore += " Entries";
						}
						oMore.innerHTML = strMore + "...";
					} else {
						oRelated.parentNode.removeChild(oRelated);
					}
				}
			}
			
		});
	}
});
////////////////////////////////////////////////////////////////////
// format an events feed
////////////////////////////////////////////////////////////////////
estrada.behavior("search-box").is({
	bind : function(node) {
		var oLi, oTabDiv, oLiA, oSearchButton, oSearchInput, oMoreInfo;
		var strClass;
		var oTabOuter = node.appendChild(document.createElement("div"));
		oTabOuter.className = "l-tab-outer";
		var oUl = oTabOuter.appendChild(document.createElement("ul"));
		var oTabHolder = oTabOuter.appendChild(document.createElement("div"));
		oTabHolder.className = "l-tab-holder";
		$(".search-box a", node)
			.each(function(intIdx, oLink) {
				oLi = oUl.appendChild(document.createElement("li"));
				$(oLi).click(function() {
					$(this)
						.siblings().removeClass("l-current");
					$(this).addClass("l-current");
				});
				oLiA = oLi.appendChild(document.createElement("a"));
				$(oLiA)
					.addClass("l-tab")
					.html("<span>" + oLink.innerHTML + "</span>")
					.attr("searchurl",oLink.href)
					.addClass(oLink.className);
			});
		$(".search-box", node).remove();
		$(".l-tab:first").parent().addClass("l-current");
		oSearchInput = oTabHolder.appendChild(document.createElement("input"));
		oSearchInput.id = "l-search-text";
		oSearchInput.type = "text";
		oSearchButton = oTabHolder.appendChild(document.createElement("div"));
		oSearchButton.id = "l-go-search";
		$(oSearchButton).click(function() {
			var strQuery = "query=";
			var strQueryText = $("#l-search-text").val();
			var oCurrentLink = $("#l-tools .l-tab-outer ul li.l-current a")	
			var strUrl = oCurrentLink.attr("searchurl");
			if (oCurrentLink.hasClass("directory-search")) {
				strQuery = "directory-query=";
			}
			var strSep = "&";
			if (strUrl.indexOf("?") < 0) {
				strSep = "?";
			}
			window.location = strUrl
				+ strSep
				+ strQuery
				+ strQueryText;
		});
		$(oSearchInput).keyup(function(oEventData){
			if (oEventData.keyCode == 13) {
				$(oSearchButton).trigger('click');
			}
		});
		if (oMoreInfo = first(getElements(node, "div", "more-info"))) {
			oTabHolder.appendChild(oMoreInfo);
		}
	}
});
////////////////////////////////////////////////////////////////////
// remove last text node from li elements ( for IE 6 )
////////////////////////////////////////////////////////////////////
estrada.behavior('adjust-nav').is({
	bind: function(node) {
		$(".children ul li", node)
			.each(function(intIdx, oLi) {
				if (oLi.lastChild) {
					if (oLi.lastChild.nodeType == 3) {
						oLi.removeChild(oLi.lastChild);
					}
				}
			});
		var oCurrentLi = first(getElements(node, "li", "current"));
		if (oCurrentLi) {
			var oStrong = first(oCurrentLi.getElementsByTagName("strong"));
			if (oStrong) {
				var strLabel = oStrong.innerHTML;
				var oLi, oA, oUl = oCurrentLi.parentNode;
				foreach(oUl.getElementsByTagName("li"), function(oLi) {
					if (oA = first(oLi.getElementsByTagName("a"))) {
						if (oA.innerHTML == strLabel) {
							oUl.replaceChild(oCurrentLi, oLi);
							return true;
						}
					}
				});				
			}
		}
	}
});
///////////////////////////////////////////////////////////////////////
// replace images with flash by convention
///////////////////////////////////////////////////////////////////////
estrada.behavior("flash-replacement").is({
	bind: function(node) {
		flashManager.flashReplacement();
	}
});
///////////////////////////////////////////////////////////////////////
// rotate the an image in the l-content area
///////////////////////////////////////////////////////////////////////
estrada.behavior("rotate-image").is({
	bind: function(node) {
		var intLocalRotatingImageCount, oContent, oPage, oRotate;
		try {
			intLocalRotatingImageCount = intRotatingImageCount;
		} catch (err) {
			intLocalRotatingImageCount = 0;
		}
		if (intLocalRotatingImageCount > 0) {
			if (oMain = document.getElementById("l-main")) {
				oMain.className = "l-rotate-parent";
				oRotate = document.createElement("div");
				oRotate.className = "l-rotate";
				if (oFirst = first(getElements(oMain, "div", "*"))) {
					oMain.insertBefore(oRotate, oFirst);
				} else {
					oMain.appendChild(oRotate);
				}
				rotateimages(oRotate, intLocalRotatingImageCount);
			}
		}
		function rotateimages(oElm, oCount) {
			var intShowNumber = Math.floor(oCount * Math.random() + 1);
			oElm.style.backgroundImage = "";
			oElm.className = oElm.className + " item-" + intShowNumber;
		}
	}
});
///////////////////////////////////////////////////////////////////////
// open external links in new window
///////////////////////////////////////////////////////////////////////
estrada.behavior("new-window").is({
	bind: function(node) {
		// open all external links in a new window
		window.status = "Making external links open in new window...";
		var anchors = document.getElementsByTagName("A");
		var host = location.protocol + "//" + location.host;
		var shost = "https://" + location.host;
		var href;
		for(var i = 0; i < anchors.length; i ++)
		{
			href = anchors[i].getAttribute("href");
			if (href) {
				if ((href.indexOf("/") != 0) &&
						(((href.indexOf("http:") == 0) && (href.indexOf(host) != 0)) ||
						((href.indexOf("https:") == 0) && (href.indexOf(shost) != 0))) &&
						(href.indexOf("estrada3") < 0) &&
						(href.indexOf("javascript") < 0))
				{
					anchors[i].setAttribute("target", "_blank");
				}
			}
		}
		window.status = window.defaultStatus;
	}
});
///////////////////////////////////////////////////////////////////////
// sitemap bookmarks
///////////////////////////////////////////////////////////////////////
estrada.behavior("sitemap-bookmarks").is({
	bind: function(node) {
		var strName, oLetters, bolNotFound;
		oLetters = $(".sitemap-holder .items .letter a");
		$(".sitemap-holder .bookmark span a").each(function () {
			strUrl = this.href;
			intLength = strUrl.length;
			strName = strUrl.substring(intLength-1).toLowerCase();
			bolNotFound = true;
			oLetters.each(function() {
				if ($(this).attr("name").toLowerCase() == strName) {
					$(this).attr("name", $(this).attr("name").toLowerCase());
					bolNotFound = false;
					return false;
				}
			});
			if (bolNotFound) {
				// disable bookmark
				$(this).addClass("disabled");
			}
		});
	}
});

