/*
Requires: scriptaculous/lib/prototype.js
*/
var errorMsg = "An error has occured:<br />";
var mouseX=0;
var mouseY=0;
function requestFailed()
{
	var html = "";
	html += "<div class=\"errorMsg\" style=\"font-size:10px;\">";
	html += errorMsg + " unable to access to webservice.<br/>";
	html += "Please contact <a href=\"mailto:ukcn001@mail.umn.edu\">Support</a>.";
	html += "</div>";
	return html;
}

function convertTo24Hour(val)
{
	val = val.toLowerCase();
	var hr = val.match("\\d+[:]").toString().replace(":","");
	var min = val.match("[:]\\d{2}").toString().replace(":","");
	var meridian = val.match("pm|am").toString();
	if(meridian == "pm")
		hr = (hr%12)+12;
	
	if(meridian == "am")
		hr = (hr%12);

	return (hr + min);
}

// a global month names array
var gsMonthNames = new Array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
);
// a global day names array
var gsDayNames = new Array(
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);
// the date format prototype
Date.prototype.format = function(f)
{
    if (!this.valueOf())
        return '&nbsp;';

    var d = this;

    return f.replace(/(yyyy|yy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
        function($1)
        {
            switch ($1.toLowerCase())
            {
			case 'mm': return d.getMonth()+1;
            case 'yyyy': return d.getFullYear();
			case 'yy': return d.getFullYear().toString().substr(2,2);
            case 'mmmm': return gsMonthNames[d.getMonth()];
            case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
            case 'mm':   return (d.getMonth() + 1).zf(2);
            case 'dddd': return gsDayNames[d.getDay()];
            case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
            case 'dd':   return d.getDate();
            case 'hh':   return ((h = d.getHours() % 12) ? h : 12).zf(2);
            case 'nn':   return d.getMinutes().zf(2);
            case 'ss':   return d.getSeconds().zf(2);
            case 'a/p':  return d.getHours() < 12 ? 'a' : 'p';
            }
        }
    );
}

function lTrim(str) {
	for (var k=0; k<str.length && str.charAt(k)<=" " ; k++) ;
	return str.substring(k,str.length);
}
function rTrim(str) {
	for (var j=str.length-1; j>=0 && str.charAt(j)<=" " ; j--) ;
	return str.substring(0,j+1);
}
function trim(str) {
	return lTrim(rTrim(str));
}

function getNodeValue(parentNode,nodeName)
{
	var value = "";
	try
	{
		value = Element.cleanWhitespace(parentNode.getElementsByTagName(nodeName)[0]).firstChild.data;
	}catch(e)
	{
		try{
			value = (parentNode.getElementsByTagName(nodeName)[0]).firstChild.data;
		}catch(e){}
	}
	
	if(typeof trim == "function")
		value = trim(value);
		
	return value;
}

function getMousePosition(e)
{
	mouseX = 0;
	mouseY = 0;
	
	if(!e) var e = window.event;
	if(e.pageX)
	{
		mouseX = e.pageX;
		mouseY = e.pageY;
	}
	else if(e.clientX)
	{
		mouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		mouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
}
Event.observe(document,"mousemove",getMousePosition);