function Trim(s) 
{
	return trim(s)
}
function trim(s) 
{
	//Remove leading spaces and carriage returns
	while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
	s = s.substring(1,s.length);

	// Remove trailing spaces and carriage returns
	while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
	s = s.substring(0,s.length-1);
	return s;
}


function padChars(str,chars)
{
	if(str != "")
	{
		pad = "";
		padCnt = chars.length - str.length;
		str = pad + str;
	}
	return str;
}

function LimitChars(obj,e,maxLen)
{
	var key;
	var keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
		
	//alert(obj.value.length + "  " + maxLen);
	 if (obj.value.length == maxLen)
		 return false;
	 else
		 return true;
}

function textLimit(field, maxlen) 
{
	//if (field.value.length > maxlen + 1)
	//	alert('your input has been truncated!');
	if (field.value.length > maxlen)
		field.value = field.value.substring(0, maxlen);
}

function checkLength(field, len) 
{ 
  if(field.value.length > len) 
	  field.value = field.value.substr(0, len); 
} 

function numbersonly(myfield, e, dec)
{
	var key;
	var keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (e)
	 	key = e.which;
	else
	 	return true;
	 	
	keychar = String.fromCharCode(key);
	// control keys
	if ((key==null) || (key==0) || (key==8) || 
	 (key==9) || (key==13) || (key==27) )
	 return true;

	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
	 return true;

	// decimal point jump
	else if (dec && (keychar == "."))
	 {
	 myfield.form.elements[dec].focus();
	 return false;
	 }
	else
	 return false;
}

function setDropDown(obj,val,proptype)
{
	if(proptype == undefined) proptype = "value";
	//obj = eval("document." + frm + "." + fldname); 
	if(proptype == "value")
		for(var i=0; i<obj.length; i++)
			if(obj.options[i].value ==  val) obj.selectedIndex = i;
	if(proptype == "text")
		for(var i=0; i<obj.length; i++)
			if(obj.options[i].text ==  val) obj.selectedIndex = i
}

function setRadioButton(obj,val)
{		
	for(var i=0; i<obj.length; i++)
		if(obj[i].value ==  val) obj[i].checked = true;
}

function checkValue(obj, valtype)
{
  	var emailReg =  /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
   var regex = new RegExp(emailReg);
     
	if(valtype == "number" && isNaN(obj.value)) return false;
	if(valtype == "email") return regex.test(obj.value);
	if(valtype == "phonenumber")
	{
		for(i=0; i<obj.value.length; i++)
			if("0123456789()- ".indexOf(obj.value.substr(i,1)) == -1) return false;
	}
	return true;
}

function getCBoxId(obj)
{
	var arr = new Array();
	if(obj.length == undefined)
	{
		if(obj.checked == true) 
			return obj.value;
		return "";
	}
	else
	{
		for(i=0; i<obj.length; i++)
			if(obj[i].checked == true)
				arr[arr.length] = obj[i].value;
		return arr.join(",");
	}
}

function getForm(objname)
{
	s="";
	for(i=0; i<document.forms.length; i++)
	{
		s = s + "name="+document.forms[i].name + "\n";
		for(j=0; j<document.forms[i].elements.length; j++)
			if(document.forms[i].elements[j].name == objname)
				return document.forms[i];
		//s = s + "\telement="+document.forms[i].elements[j].name + "\n";
	}
}

function getFormObj(objname)
{
	s="";
	for(i=0; i<document.forms.length; i++)
	{
		s = s + "name="+document.forms[i].name + "\n";
		for(j=0; j<document.forms[i].elements.length; j++)
			if(document.forms[i].elements[j].name == objname)
				return document.forms[i].elements[j];
		//s = s + "\telement="+document.forms[i].elements[j].name + "\n";
	}
}

function testValue(obj, validtn, msg)
{
	obj.value = trim(obj.value);
	if(obj.value != "")
	{
		if(msg == undefined)
			msg = "Please enter a valid value";

		valid= true;
		if(validtn.indexOf("date") > -1)
			valid = validateDate(obj.value,"U","A");
		else
		{
			for(i=0; i<obj.value.length; i++)
			{
				if(validtn.indexOf(obj.value.substr(i,1)) == -1)
					valid = false;
					break;
			}
		}
		
		if(!valid)
		{
			alert(msg);
			obj.value = "";
			obj.focus();
			return false;
		}
	}
	return true;
}

//// U(MDY), J(DMY), or W(YMD) to indicate the date format
function valDateFmt(datefmt) {myOption = -1;
for (i=0; i<datefmt.length; i++) {if (datefmt[i].checked) {myOption = i;}}
if (myOption == -1) {alert("You must select a date format");return ' ';}
return datefmt[myOption].value;}
function valDateRng(daterng) {myOption = -1;
for (i=0; i<daterng.length; i++) {if (daterng[i].checked) {myOption = i;}}
if (myOption == -1) {alert("You must select a date range");return ' ';}
return daterng[myOption].value;}
function stripBlanks(fld) {var result = "";for (i=0; i<fld.length; i++) {
if (fld.charAt(i) != " " || c > 0) {result += fld.charAt(i);
if (fld.charAt(i) != " ") c = result.length;}}return result.substr(0,c);}
var numb = '0123456789';
function isValid(parm,val) {if (parm == "") return true;
for (i=0; i<parm.length; i++) {if (val.indexOf(parm.charAt(i),0) == -1)
return false;}return true;}
function isNum(parm) {return isValid(parm,numb);}
var mth = new Array('','january','february','march','april','may','june','july','august','september','october','november','december');
var day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
function validateDate(fld,fmt,rng) {
var dd, mm, yy;var today = new Date;var t = new Date;fld = stripBlanks(fld);
if (fld == '') return false;var d1 = fld.split('\/');
if (d1.length != 3) d1 = fld.split(' ');
if (d1.length != 3) return false;
if (fmt == 'u' || fmt == 'U') {
  dd = d1[1]; mm = d1[0]; yy = d1[2];}
else if (fmt == 'j' || fmt == 'J') {
  dd = d1[2]; mm = d1[1]; yy = d1[0];}
else if (fmt == 'w' || fmt == 'W'){
  dd = d1[0]; mm = d1[1]; yy = d1[2];}
else return false;
n = dd.lastIndexOf('st');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('nd');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('rd');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('th');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf(',');
if (n > -1) dd = dd.substr(0,n);
n = mm.lastIndexOf(',');
if (n > -1) mm = mm.substr(0,n);
if (!isNum(dd)) return false;
if (!isNum(yy)) return false;
if (!isNum(mm)) {
  var nn = mm.toLowerCase();
  for (var i=1; i < 13; i++) {
    if (nn == mth[i] ||
        nn == mth[i].substr(0,3)) {mm = i; i = 13;}
  }
}
if (!isNum(mm)) return false;
dd = parseFloat(dd); mm = parseFloat(mm); yy = parseFloat(yy);
if (yy < 100) yy += 2000;
if (yy < 1582 || yy > 4881) return false;
if (mm == 2 && (yy%400 == 0 || (yy%4 == 0 && yy%100 != 0))) day[mm-1]++;
if (mm < 1 || mm > 12) return false;
if (dd < 1 || dd > day[mm-1]) return false;
t.setDate(dd); t.setMonth(mm-1); t.setFullYear(yy);
if (rng == 'p' || rng == 'P') {
if (t > today) return false;
}
else if (rng == 'f' || rng == 'F') {
if (t < today) return false;
}
else if (rng != 'a' && rng != 'A') return false;
return true;
}


