function writeEmailAddress(psName, psDomain, psTextname, psTextdomain)
{
	// write the mailto href to thwart mail spammer's address scrapers
	var link;
	
	if (psName.length != 0 && psDomain.length != 0)
		link = '<a href="mailto:' + psName + '@' + psDomain +'">';
	else
		link = '';
	if (psTextdomain.length > 0)
		link += psTextname + '@' + psTextdomain;
	else
		link += psTextname;
	if (psName.length != 0 && psDomain.length != 0)
		link += '</a>';
	document.write(link);
	return 0;
}

function isValidNumeric(piNum, piMinVal, piMaxVal)
{
    // check that the statement is numeric; if not return an error
    if ( isNaN(piNum) ) // isNaN is not a valid way to check for valid numerics will not work in all cases
        return false;
    else
    {
        // check that the num >= minval and num <= maxval; if not return an error
        if ((piNum >= piMinVal) && (piNum <= piMaxVal))
            return true;
        else
            return false;
    }
}

function isValidInteger(psStr)
{
	var i = 0;
	var sNums = '1234567890';
	
	while (i < psStr.length) {
		if (sNums.indexOf(psStr.substr(i,1)) == -1)
			return false;
		++i;
	}
	return true;
}

function isValidString(psStr, piMinLen, piMaxLen)
{
    // check that length of str >= minlen and str <= maxval; if not return an error msg
    if ((psStr.length >= piMinLen) && (psStr.length <= piMaxLen))
        return true;
    else
        return false;
}

function isValidDate(psDate, piDateFmt)
{
	var sDate;
	var sDay;
	var sMonth;
	var sYear;
	var aryDate;
	sDate = psDate.toString();
	
   	var iPos1;
	var iPos2;

	if(piDateFmt==1)
	{
		iPos1 = sDate.indexOf("/",0) > 0;
		if(iPos1 > 0)
		{
			iPos2 = iPos1 + 1;
			if(sDate.lastIndexOf("/", sDate.length) > iPos1)
			{
				aryDate = sDate.split("/")
				sMonth = aryDate[0].toString();
				sDay = aryDate[1].toString();
				sYear = aryDate[2].toString();
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	else
	{
		if(piDateFmt==2)
		{
			iPos1 = sDate.indexOf("-",0) > 0;
			if(iPos1 > 0)
			{
				iPos2 = iPos1 + 1;
				if(sDate.lastIndexOf("-", sDate.length) > iPos1)
				{
					aryDate = sDate.split("-")
					sMonth = aryDate[0].toString();
					sDay = aryDate[1].toString();
					sYear = aryDate[2].toString();
				}
				else
				{
					return false;
				}
			}
			else
			{
				return false;
			}
		}
	}
	
	
	if((sYear.length == 4) && (sYear >= 1000) && (sYear <= 9999))
	{
		if((sMonth.length == 2) && (sMonth >= 1) && (sMonth <= 12))
		{
			// 30 Day Months : April, June, September, November
			if(sMonth==4 || sMonth==6 || sMonth==9 || sMonth==11)
			{
				if((sDay.length == 2) && (sDay >= 1) && (sDay <= 30))
				{
					return true;
				}						
			}
			else
			{
				// Febuary
				if(sMonth==2)
				{
					// During a leap year	
					if(isLeapYear(sYear))
					{
						if((sDay.length == 2) && (sDay >= 1) && (sDay <= 29))
						{
							return true;
						}
						else
						{
							return false;
						}
					}
					// Not during a leap year
					else
					{
						if((sDay.length == 2) && (sDay >= 1) && (sDay <= 28))
						{
							return true;
						}
						else
						{
							return false;
						}
					}
				}
				// the other months with 31 days
				else
				{
					if((sDay.length == 2) && (sDay >= 1) && (sDay <= 31))
					{
						return true;
					}
				}
			}
		}				
	}
	else
	{
		return false;
	}
}

function SetCase(psStr, piCase)
{
	var rStr;
    // check the Case parameter and use the toLowerCase or toUpperCase methods 
    // of the String object to modify the Str to the respective case.
    if(piCase==1)
	{
    	rStr = psStr.toUpperCase();
	}
	if(piCase==2)
	{
           rStr = psStr.toLowerCase();
	}
	return rStr;
}

function isLeapYear(piYear)
{
	var Ly;
	var absolute;
	
	if((piYear%100)==0)
	{
		Ly = ((piYear%400)==0);
	}
	else
	{
		absolute = 2000-piYear;
			if(absolute<0)
			{
				absolute = absolute * (-1);
			}
		Ly = ((absolute%4)==0);
	}
	return Ly;
}