function $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}

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: "Flock",
			identity: "Flock"
		},
		{
			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"
		}
	]
};

function showIncompatibilityMessage( browser ) {
  var body = document.getElementsByTagName( "body" )[0];
  var message = '<div class="incompatibilityMessage">'
              + '<a class="b" href="http://www.getfirefox.com"><img src="site_images/browsers/browser_firefox.gif" height="100" width="100"> Firefox</a>'
              + '<a class="b" href="http://www.microsoft.com/windows/internet-explorer/default.aspx"><img src="site_images/browsers/browser_ie.gif" height="100" width="100"> Internet Explorer 8</a>'
              + '<a class="b" href="http://www.google.com/chrome"><img src="site_images/browsers/browser_chrome.gif" height="100" width="100"> Chrome</a>'
              + '<a class="b" href="http://www.opera.com"><img src="site_images/browsers/browser_opera.gif" height="100" width="100"> Opera</a>'
              + '<p><strong>Did you know that your browser is out of date?</strong></p>'
              + '<p>Like many other major websites, we no longer support older, insecure browsers that are not compatible with Web Standards, such as the one you are using.<p>'
              + '<p>It is highly recommended that you upgrade to a modern browser such as <a href="http://www.getfirefox.com" title="Firefox" target="_blank">Firefox</a>, <a href="http://www.microsoft.com/windows/internet-explorer/default.aspx" title="Internet Explorer 8" target="_blank">Internet Explorer 8</a>, <a href="http://www.google.com/chrome" title="Chrome" target="_blank">Chrome</a>, <a href="http://www.opera.com" title="Opera" target="_blank">Opera</a> or <a href="http://www.apple.com/safari/" title="Safari" target="_blank">Safari</a>. These are all free, much better browsers, and take only a couple of minutes to install.</p>'
              + '</div>';
  
  body.style.paddingTop = ( browser == "Explorer") ? "160px" : "120px";
  /* This will force a redraw, but IE6 won't pick up on attributes when added via a proper DOM element? */
  body.innerHTML += message;
}

/*
  A dictionary of browsers in which curvycorners and cufon either flat out don't work
  or break layout elements and the minumum version the user must be running for
  these scripts to be executed.
*/
var disallowedBrowsers = new Object( );
disallowedBrowsers["Firefox"] = 3;
disallowedBrowsers["Opera"] = 10;
disallowedBrowsers["Netscape"] = 10;
disallowedBrowsers["Flock"] = 2;
disallowedBrowsers["Camino"] = 2;

window.onload = function( ) {
  BrowserDetect.init();
  
  if ( disallowedBrowsers[ BrowserDetect.browser ] !== undefined && disallowedBrowsers[ BrowserDetect.browser ] > BrowserDetect.version ) {
    showIncompatibilityMessage( BrowserDetect.browser );
    return;
  }

  var settings = {
    tl: { radius: 7 },
    tr: { radius: 7 },
    bl: { radius: 7 },
    br: { radius: 7 },
    antiAlias: true
  }

  Cufon.replace( [ 'h2', 'h3', 'h4' ] );
  curvyCorners(settings, $('menu'), $('footer') );
  curvyCorners(settings, '.curved' );
};