var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
function getElementsByClass(searchClass,node,tag)
{
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
function FF_ellipsis(nodes)
{
	for (i=0;i<nodes.length;i++)
	{
		var parentWidth = nodes[i].parentNode.clientWidth-(document.defaultView.getComputedStyle(nodes[i].parentNode,"").getPropertyValue("padding-left").replace("px",""));
		var childNodes = nodes[i].childNodes;
		var element = document.createElement("span");
		for (n=0;n<childNodes.length;n++)
		{
			element.appendChild(childNodes[n].cloneNode(true));
		}
		nodes[i].parentNode.appendChild(element);
		
		if(element.offsetWidth > parentWidth)
		{
			var n = element.childNodes.length-1
			while(n>=0)
			{
				//st0ring the removed node...in this case we are only storing the last removed node.  if more than one node have to be removed to get the size down then this needs tweaking.
				var removedNode = element.removeChild(element.childNodes[n]);
				if(element.offsetWidth < parentWidth)
					n=-1
				else
					n--;
			}
			var k = 1;
			var text = removedNode.innerHTML;
			removedNode.innerHTML = "";
			element.appendChild(removedNode);
			while(element.offsetWidth < parentWidth && k < text.length)
			{
				removedNode.innerHTML = text.substr(0,k) + '...';
				k++;
			}
			removedNode.innerHTML = text.substr(0,k-3) + '...';
			for (z=nodes[i].childNodes.length-1;z>=0;z--)
			{
				nodes[i].removeChild(nodes[i].childNodes[z]);
			}
			while(element.childNodes.length>0)
			{
				nodes[i].appendChild(element.childNodes[0]);
			}
		}
		else
		{
			element.style.display='none';
		}
	}
}
function objectification(obj)
{
	props='';
	for(prop in obj)
	{
		props+=prop+'|'+obj[prop]+'\n';
	}
	return props;
}
function formatInit()
{
	var Node = document.getElementById('sfltihwamymfymafykfguitm');
	Node.style.left='1px';
	Node.childNodes[2].childNodes[0].src='http://www.harrisonburgva.gov/includes/front/images/horiz_leftside.gif';
	Node.childNodes[2].childNodes[1].src='http://www.harrisonburgva.gov/includes/front/images/horiz_middle.gif';
	Node.childNodes[2].childNodes[2].src='http://www.harrisonburgva.gov/includes/front/images/horiz_rightside.gif';
}
