﻿window.layoutSpecific = new function() {

	eval(estrada.namespace);
	
	this.layout = null;
	this.flash = { };
	this.contentAreas = [];
	this.toBind = [];

	attachEvent(document, "layout", function() {
		document.body.className = "l-wide";
		layoutSpecific.layout = frame("content",
			area("phyheader"),
			area("phybody")
		);
		
		layoutSpecific.contentAreas = grab(document.getElementById("feeds"), {
			pagecontent: "phybody"
		});
		
		
		layoutManager.grabMore(layoutSpecific.contentAreas, 
			"titling",
			{
				"page": "phyheader"
			}
		);
		
		layoutManager.addContentArea(layoutSpecific.contentAreas, "phyheader", "links");
		
		layoutManager.addContentArea(layoutSpecific.contentAreas, "phybody", "extensions");
		
		layoutSpecific.searchhelp = null;
		var feeds = document.getElementById("feeds");
		if (feeds) {
			var searchHelp = commonLayout.getFirstElement(feeds, "div", "searchhelp");
			if (searchHelp) {
				layoutSpecific.searchhelp = searchHelp;
				layoutSpecific.toBind.push(["searchHelpHandler", layoutSpecific.searchhelp]);
			}
		}
		
		var extension = document.getElementById("extensions");
		if (extension) {
			layoutSpecific.toBind.push(["physicianHeader", extension]);
			var segments = commonLayout.getElements(extension, "div", "segments");
			if (segments.length > 0) {
				layoutSpecific.toBind.push(["cloneSegments", segments[0]]);
			}
		}
		
	});
	
	
	/* position some elements into the l-phyheader div for styling */
	estrada.behavior("physicianHeader").is({
		bind: function(node) {
			var header = document.getElementById("l-phyheader");
			var divs = commonLayout.getElements(node, "div", "category-selector search-collection");
			if (header && divs) {
				var curNode = header.firstChild;
				foreach(map(divs), function(div) {
					//header.appendChild(div);
					estrada.insertAfter(div, curNode);
					curNode = div;
					if (estrada.hasClassName(div, "category-selector")) {
						/* Organize the selects, add labels 
						 * Assumes the categories are in the order with facility first 
						*/
						var selects = map(div.getElementsByTagName("select"));
						if (selects && selects.length == 2) {
							var div1 = document.createElement("div");
							var label1 = document.createElement("label");
							label1.setAttribute("for", "browsefacility");
							label1.innerHTML = "Browse by Facility";
							div1.appendChild(label1);
							selects[0].id = "browsefacility";
							selects[0].parentNode.insertBefore(div1, selects[0].parentNode.firstChild);
							div1.appendChild(selects[0]);
							
							var div2 = document.createElement("div");
							var label2 = document.createElement("label");
							label2.setAttribute("for", "browsespecialty");
							label2.innerHTML = "Browse by Physician Specialty";
							div2.appendChild(label2);
							selects[1].id = "browsespecialty";
							selects[1].parentNode.insertBefore(div2, div1.nextSibling);
							div2.appendChild(selects[1]);
							
							// Remove the 'View by' text since I've added specific labels above
							div2.nextSibling.parentNode.removeChild(div2.nextSibling);
						}
					}
					else if (estrada.hasClassName(div, "search-collection")) {
						// Get 'Start New Search' link
						var nav = commonLayout.getFirstElement(node, "div", "navigation");
						if (nav) {
							div.appendChild(nav);
						}
						// Get search help html
						if (layoutSpecific.searchhelp) {
							div.appendChild(layoutSpecific.searchhelp);
							var html = commonLayout.getFirstElement(layoutSpecific.searchhelp, "div", "html");
							if (html) {
								html.id = "searchhelptext";
								estrada.setClassName(html, "l-hide");
								estrada.insertAfter(html, layoutSpecific.searchhelp);
							}
						}
						// Show search query if needed
						if (commonLayout.queryString["directory-query"]) {
							var query = commonLayout.queryString["directory-query"];
							if (query != "*") {
								var searchinput = commonLayout.getFirstElement(div, "input", "text");
								searchinput.value = query;
							}
						}
					}
				});
				var clearDiv = document.createElement("div");
				clearDiv.className = "clear";
				header.appendChild(clearDiv);
			}
		}
	})
	
	estrada.behavior("cloneSegments").is({
		bind: function(node) {
			var grid = node.parentNode;
			if (grid) {
				grid.insertBefore(node.cloneNode(true), grid.firstChild);
			}
		}
	});
	
	estrada.behavior("searchHelpHandler").is({
		bind: function(node) {
			this.attachEvent(node, "click", function() {
				var node = estrada.scope.retrieve(arguments).getElement();
				toggleOpenClose(node);
				return false;
			});
			function toggleOpenClose(node) {
				if (node) {
					var div = document.getElementById("searchhelptext");
					if (div) {
						if (estrada.hasClassName(div, "l-show")) {
							estrada.replaceClassName(div, "l-show", "l-hide");
						} 
						else  {
							estrada.replaceClassName(div, "l-hide", "l-show");
						} 
					}
				}
			}
		}
	});
}