/////////////////////////////////////////////////////////////////////////
//
// support.js
//
// Copyright (c) 2008 Richard L. Lynch <rich@richlynch.com>
// All Rights Reserved.
//
// Not For Redistribution.
//
// $Id$
//
/////////////////////////////////////////////////////////////////////////

function addThisFeed(rssURL)
{
	escapeRSSURL = rssURL;
	escapeRSSURL = escapeRSSURL.replace(/:/g, '%3A');
	escapeRSSURL = escapeRSSURL.replace(/\//g, '%2F');
	escapeRSSURL = escapeRSSURL.replace(/\?/g, '%3F');
	escapeRSSURL = escapeRSSURL.replace(/=/g, '%3D');
	escapeRSSURL = escapeRSSURL.replace(/~/g, '%7E');

	addThisFeedHTML = '<!-- AddThis Feed Button BEGIN -->' + "\n";
	addThisFeedHTML += '<a href="http://www.addthis.com/feed.php?pub=rllynch&h1=' + escapeRSSURL + '&t1=" title="Subscribe using any feed reader!"><img src="http://s9.addthis.com/button1-rss.gif" width="125" height="16" border="0" alt="AddThis Feed Button" /></a>' + "\n";
	addThisFeedHTML += '<!-- AddThis Feed Button END -->' + "\n";
	
	return addThisFeedHTML;
}

function getDirURL()
{
	var ret;
	
	ret = String(window.location);
	if (ret.indexOf('?') >= 0)
	{
		ret = ret.substring(0, ret.indexOf('?'));
	}
	if (ret.lastIndexOf('/') >= 0)
	{
		ret = ret.substring(0, ret.lastIndexOf('/') + 1);
	}
	return ret;
}

function makeHttpObject() 
{
	try 
	{
		return new XMLHttpRequest();
	}
	catch (error) {}
	
	try 
	{
		return new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (error) {}
	
	try 
	{
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (error) {}

	throw new Error("Could not create HTTP request object.");
}

function splitURL()
{
	var ret = new Object();
	var query = window.location.search;
	// Skip the leading ?, which should always be there,
	// but be careful anyway
	if (query.substring(0, 1) == '?') 
	{
		query = query.substring(1);
	}
	var data = query.split('&');
	for (i = 0; (i < data.length); i++) 
	{
		var nameValue = data[i].split('=');
		
		if (nameValue.length == 2)
		{
			var name = unescape(nameValue[0]);
			var value = unescape(nameValue[1]);
			ret[name] = value;
		}
	}
	return ret;
}

function getURLMulti(searchName)
{
	var ret = Array();
	var query = window.location.search;
	// Skip the leading ?, which should always be there,
	// but be careful anyway
	if (query.substring(0, 1) == '?') 
	{
		query = query.substring(1);
	}
	var data = query.split('&');
	for (i = 0; (i < data.length); i++) 
	{
		var nameValue = data[i].split('=');
		
		if (nameValue.length == 2)
		{
			var name = unescape(nameValue[0]);
			var value = unescape(nameValue[1]);
			
			if (searchName + "[]" == name)
			{
				ret.push(value);
			}
		}
	}
	return ret;
}

function FormatFloat(f, p)
{
	var m = Math.pow(10, p);
	return parseInt(f * m, 10) / m;
}

function sortAssoc(input)
{
	var tmp = [];
	for (var key in input)
		tmp.push([key, input[key]]);
	
	tmp.sort(function () {return arguments[1][1] - arguments[0][1]});

	var ret = [];
	for (var i = tmp.length-1; i >=0; i--)
		ret[tmp[i][0]] = tmp[i][1];

	return ret;
}

function assocMin(assoc)
{
	var min = Infinity;
	for (var key in assoc)
	{
		if (assoc[key] < min)
			min = assoc[key];
	}
	return min;
}

function assocMax(assoc)
{
	var max = -Infinity;
	for (var key in assoc)
	{
		if (assoc[key] > max)
			max = assoc[key];
	}
	return max;
}

function windowHeight() 
{
	var height = 0;
	if( typeof(window.innerWidth) == 'number' ) 
	{
		//Non-IE
		height = window.innerHeight;
	} 
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) 
	{
		//IE 6+ in 'standards compliant mode'
		height = document.documentElement.clientHeight;
	} 
	else if (document.body && (document.body.clientWidth || document.body.clientHeight)) 
	{
		//IE 4 compatible
		height = document.body.clientHeight;
	}
	return height;
}

