function isNumeric(value)
{
	if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
	return true;
}

function isValidDate(dateStr)
{
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null)
	{
		alert("Date is not in a valid format.")
		return false;
	}
	month = matchArray[1];
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12)
	{
		alert("Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31)
	{
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31)
	{
		alert("Month "+month+" doesn't have 31 days!")
		return false
	}
	if (month == 2)
	{
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap))
		{
			alert("February " + year + " doesn't have " + day + " days!");
			return false;
		}
	}
	return true;
}

function checkEmail(d)
{
	var b=true;
	var c=true;
	if (d.length < 2)
	{
		return false;
	};
	test=d;
	for (var i=0; i<test.length;i++)
	{
		var check=test.substring(i, i+1)
		if (check == "@")
		{
			b=false;
		};
		if ((check == ".") && (b == false))
		{
			c=false;
		};
	};
	if ((b) || (c))
	{
		return false;
	};
	return true;
}
function checkSpecialChar(d)
{
	var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>? ";

	for (var i = 0; i < d.value.length; i++)
	{
		if (iChars.indexOf(d.value.charAt(i)) != -1)
		{
			return false;
		}
	}
	return true;
}
function trim(stringToTrim)
{
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function isUrl(s) {
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(s);
}
function getElementsByName_iefix(tag, name)
{
	var elem = document.getElementsByTagName(tag);
	var arr;
	for(i = 0,iarr = 0; i < elem.length; i++)
	{
		att = elem[i].getAttribute("name");
		if(att == name)
		{
			if(tag=="select") arr = elem[i][elem[i].selectedIndex].text;
			else if(tag=="span" || tag=="div") arr = elem[i];
			else arr = elem[i].value;//
			iarr++;
		}
	}
	return arr;
}
function GetXmlHttpObject()
{
	var xmlHttpRequest=null;

	try
	{
		xmlHttpRequest = new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttpRequest;
}
function GeneratePassword() {

    if (parseInt(navigator.appVersion) <= 3) {
        alert("Sorry this only works in 4.0+ browsers");
        return true;
    }

    var length=16;
    var sPassword = "";

    var noPunction = true;
    var randomLength = false;

    if (randomLength) {
        length = Math.random();

        length = parseInt(length * 100);
        length = (length % 7) + 6
    }


    for (i=0; i < length; i++) {

        numI = getRandomNum();
        if (noPunction) { while (checkPunc(numI)) { numI = getRandomNum(); } }

        sPassword = sPassword + String.fromCharCode(numI);
    }

    return sPassword;

    //return true;
}

function getRandomNum() {

    // between 0 - 1
    var rndNum = Math.random()

    // rndNum from 0 - 1000
    rndNum = parseInt(rndNum * 1000);

    // rndNum from 33 - 127
    rndNum = (rndNum % 94) + 33;

    return rndNum;
}

function checkPunc(num) {

    if ((num >=33) && (num <=47)) { return true; }
    if ((num >=58) && (num <=64)) { return true; }
    if ((num >=91) && (num <=96)) { return true; }
    if ((num >=123) && (num <=126)) { return true; }

    return false;
}