var Luminous = {};
Luminous.Columns = Class.create();
Luminous.Columns.prototype = {

    initialize: function(container, itemTagName, isVertical, maxWidth, maxHeight) {
    
        var columns = maxWidth;
        if(isNaN(columns) || columns < 1) {
            columns = 1;
        }
        container = $(container);
        if(container && itemTagName) {
        
            var items = container.getElementsByTagName(itemTagName);
        
            if(!isNaN(maxHeight) && maxHeight >= 1) {
                
                var count = items.length;
				
				columns = Math.ceil(count / maxHeight);
				
				// figure out optimal number of items per column
				var optColItemCount = Math.ceil(count / columns);
				
				if(columns > 1) {
					this._fillEmptyItems(container, itemTagName, (optColItemCount * columns) - count);
				}
            }
            
            if(isVertical) {
                this._repositionItems(container, itemTagName, columns);
            }
            
            for(var i = 0; i < items.length; i++) {
			    items[i].style.cssFloat = "left";
			    items[i].style.styleFloat = "left";
			    if(i % columns == 0) {
				    items[i].style.clear = "left";
				}
			}
            
        }
    },
    
    _fillEmptyItems: function(container, itemTagName, fillCount) {

		if(container) {
		
			var html = [];
			for(var i = 0; i < fillCount; i++) {
			    html.push("<");
			    html.push(itemTagName);
			    html.push("></");
			    html.push(itemTagName);
			    html.push(">");
			}
			// add to end
			new Insertion.Bottom(container, html.join(""));
		}
	},
	
	_repositionItems: function(container, itemTagName, columns) {

		if(container) {

		    var items = container.getElementsByTagName(itemTagName);
		
		    var itemsPerColumn = Math.ceil(items.length / columns);
		
			var tmpItems = new Array();
			var iters = 0;
			for(var i = 1; i < itemsPerColumn; i++) {
				var item = items[i];
				
				tmpItems.push(item);

				// move colCount - 1 items
				for(var j = 1; j < columns; j++) {
				
					var nio = i + (j * itemsPerColumn);

					// remove and insert before current item
					var nextItem = items[nio];
					if(nextItem) {
						//nextItem = menu.removeChild(nextItem);
						//alert(nextItem.className);
						//menu.insertBefore(nextItem, item);
						tmpItems.push(nextItem);
					}
				
				}
				
				//alert(item.className);
				
				// jump to the start of the next column
				//i += colCount;
				//iters++;
			}
			for(var i = 0; i < tmpItems.length; i++) {
			
				var item = tmpItems[i];
				var parent = item.parentNode;
				parent.removeChild(item);
				parent.appendChild(item);
				
			}
			
		}
		
	}

}

var MenuColumnSizing = {

	size: function(menu, itemTagName, colItemCount) {
	
		menu = $(menu);
		if(menu && itemTagName)
		{
		
			if(!menu.isColumnSized)
			{
		
				var count = 0;
				for(var i = 0; (el = menu.childNodes[i]); i++)
					if(el.nodeName.toUpperCase() == itemTagName.toUpperCase())
						count++;
						
				var cols = Math.ceil(count / colItemCount);
				
				// figure out optimal number of items per column
				var optColItemCount = Math.ceil(count / cols);
				
				// get menu dimensions
				var menuDim = Element.getDimensions(menu);
				menu.style.width = (menuDim.width * cols) + "px";
				
				if(cols > 1) {
					//if(count % optColItemCount > 0) {
						MenuColumnSizing._fillEmptyItems(menu, (optColItemCount * cols) - count);
						//alert(menu.getElementsByTagName("li").length);
					//}
					MenuColumnSizing._repositionItems(menu, cols, optColItemCount);
				
				}
				
				menu.isColumnSized = true;
				
			}
		
		}
	
	},
	
	_fillEmptyItems: function(menu, fillCount) {
	
		menu = $(menu);
		if(menu) {
		
			var html = "";
			for(var i = 0; i < fillCount; i++) {
				html += "<li></li>";
			}
			// add to end
			new Insertion.Bottom(menu, html);
		}
	},
	
	_repositionItems: function(menu, colCount, colItemCount) {
	
		menu = $(menu);
		if(menu) {
		
			/*var i = 0;
			var tmpItems = new Array();
			for(i = 0; i < menu.childNodes.length; i++)
				tmpItems[i] = menu.childNodes[i].cloneNode(true);
			//alert(tmpItems.length);
			//var oItems = new Array();
			var newMenu = document.createElement("ul");
			//alert(menu.getElementsByTagName("li").length);
			for(i = 0; i < colItemCount; i++)
			{
			
				newMenu.appendChild(tmpItems[i]);
			
				for(var j = 1; j < colCount; j++) {
				
					var nio = (j * colItemCount) + i;
					// remove and insert before current item
					//if(li = menu.getElementsByTagName("li")[nio])
					newMenu.appendChild(tmpItems[nio]);
				
				}
			}
			
		
			// skip first item
			//var i = 0;
			//alert(colCount * colItemCount);
			//alert(menu.getElementsByTagName("li").length);
			while(item = menu.getElementsByTagName("li").item(0)) {
			
				itms.push(menu.removeChild(item));
				
				for(var j = 1; j < colCount; j++) {
				
					var nio = (j * colItemCount) - 1;
					// remove and insert before current item
					var nextItem = menu.getElementsByTagName("li").item(nio);
					if(nextItem)
						itms.push(menu.removeChild(nextItem));
				
				}
			
				//i++;
			
			}
			//alert(itms.length);
			menu.innerHTML = "";
			alert(newMenu.childNodes.length);
			for(var i = 0; i < newMenu.childNodes.length; i++)
				menu.appendChild(newMenu.childNodes[i]);
			alert(menu.childNodes.length);*/
			
			var tmpItems = new Array();
			var iters = 0;
			for(var i = 1; i < colItemCount; i++) {
				var item = menu.childNodes[i];
				
				tmpItems.push(item);

				// move colCount - 1 items
				for(var j = 1; j < colCount; j++) {
				
					var nio = i + (j * colItemCount);

					// remove and insert before current item
					var nextItem = menu.childNodes[nio];
					if(nextItem) {
						//nextItem = menu.removeChild(nextItem);
						//alert(nextItem.className);
						//menu.insertBefore(nextItem, item);
						tmpItems.push(nextItem);
					}
				
				}
				
				//alert(item.className);
				
				// jump to the start of the next column
				//i += colCount;
				//iters++;
			}
			for(var i = 0; i < tmpItems.length; i++) {
			
				var item = tmpItems[i];
				item = menu.removeChild(item);
				menu.appendChild(item);
				
			}
			
		}
		
	}
	
}


document.observe("dom:loaded", function(e) {

	var healthSearch = $("healthSearch");
	var hsInput = healthSearch.down("input");
	hsInput.defaultValue = hsInput.value;
	hsInput.observe("focus", function(e) {
		this.addClassName("active");
		if(this.value == this.defaultValue) {
			this.value = "";
		}
	});
	hsInput.observe("blur", function(e) {
		
		if(this.value == "") {
			this.value = this.defaultValue;
		}
		if(this.value == this.defaultValue) {
			this.removeClassName("active");
		}
	
	});
	var hsBase = window.location.href.match(/\/extranet/i) ? "/extranet/?p=1300" : "/?p=1300";
	healthSearch.down("button").observe("click", function(e) {
		if(hsInput.value == hsInput.defaultValue) {
			window.location.href = hsBase;
		} else {
			window.location.href = hsBase + "&searchterm=" + hsInput.value;
		}
	});
	healthSearch.observe("keyup", function(e) {
	
		if(e.keyCode == Event.KEY_RETURN) {
			if(hsInput.value == "") {
				window.location.href = hsBase;
			} else {
				window.location.href = hsBase + "&searchterm=" + hsInput.value;
			}
			return false;
		}
		return true;
	
	});

	var selectChange = function(e) {
		window.location.href = this.value;
	};

	$$("select.nav-select").each(function(select) {
		select.onchange = selectChange.bindAsEventListener(select);
	});

	var specialtyDepartments = $("departments-specialty");
	if(specialtyDepartments != null)
	{
		new Luminous.Columns(specialtyDepartments.down("ul"), "li", true, 2);
	}
	
	// find any bad images
    //$$("img[src=]").each(Element.hide);
    
    $$(".HeadlineGridItemPadding img").each(function(img) {
        if(!img.src || img.src == "") {
            img.src="/orchestrate/images/iconset/ie_icon.gif";
            //img.show();
        }
    });

});