function isEmpty(s) {
	return ((s == null) || (s.length == 0)); 
}

var whitespace = " \t\n\r";
function isWhitespace (s) {
  var i;
  if (isEmpty(s)) return true;
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (whitespace.indexOf(c) == -1) return false;
  }
  return true;
}

function isAnyWhitespace (s) {
  if (isEmpty(s)) return false;
  if ( s.indexOf(" ") == -1 && s.indexOf("\t") == -1 && s.indexOf("\n") == -1 && s.indexOf("\r") == -1 ) { return false };  
  return true;
}

function IsExist (s) { return ( ! isEmpty(s) && ! isWhitespace (s) ); }

// added by mms using reg exp
// checks for invalid characters eg *&^%#!@(), _ is valid
function IsValidChar (s) {
	var regxp = /^[\w ]+$/;

	if (regxp.test(s)) 
  		return (true);
  	else 
  		return (false);
}

function IsAlphanumeric (s) {
	var validchars = "abcdefghijklmnopqrstuvwxyz0123456789";
	  for (var c=0; c < s.length; c++) {
		var letter = s.charAt(c);
		if (validchars.indexOf(letter) == -1)
		  return ( false );
	  }
	return ( true );
}

function IsValidAplhanumeric (s) {
	var validchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.- ";
	  for (var c=0; c < s.length; c++) {
		var letter = s.charAt(c);
		if (validchars.indexOf(letter) == -1)
		  return ( false );
	  }
	return ( true );
}

// revamped by mms using reg exp, check domain oso ;-)
function IsEmail (s) 
{
	if(isEmpty(s)) 
		return (true);

  //check whether this field just the space
	if(isWhitespace(s)) 
		return (false);

	if(isAnyWhitespace(s))
		return (false);

	var regxp  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+((com)|(edu)|(gov)|(int)|(mil)|(net)|(org)|(info)|(biz)|(name)|(pro)|(museum)|(coop)|(aero)|(.[a-z]{2,2}))+$/;
	if (regxp.test(s)) 
  		return (true);
  	else 
  		return (false);
}


function IsOptSel (s) {
	//for multiple select validation
    if (s.type == "select-multiple"){
		if(s.selectedIndex == -1){
			return false;
		}
		return true;
	}	
	//for single select validation
	if (s.type == "select-one"){
        if(s.selectedIndex == 0)
        	return false;
	}
/*        var i = 0;
		while (i < s.length) {
            if (s.options[i].selected == 1) { return true; }
			i++;
		}
*/			
        return true; 
}


function IsRChk(s) {
	var i=0;
    while(i<s.length) {
        if (s[i].checked) {
			return true;
		}
		i++;
	}
	return false;
}

function IsNumeric(s) {
	var validchars = "0123456789";
	  for (var c=0; c < s.length; c++) {
		var letter = s.charAt(c);
		if (validchars.indexOf(letter) == -1)
		  return ( false );
	  }
	return ( true );
}

// added by mms 
// check malaysian phone number 999-99999999-999
function IsPhone(s) 
{ 
	var regxp = /(^\d{2,3}-\d{7,8}-\d{3}$)|(^\d{2,3}-\d{7,8}$)/
	if (regxp.test(s)) 
  		return (true);
  	else 
  		return (false);
}

// added by mms
// checks url
function IsUrl(s) 
{
	if (isEmpty(s)) return true;	// url is optional
	
	var regxp = /^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'<>()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'<>()\[\]{}\s\x7f-\xff]+)*)?/;
	if (regxp.test(s)) 
  		return (true);
  	else 
  		return (false);
}

// added by mams
// checks date
function IsDate(s)
{
	var pos1 = s.indexOf('/');
	var pos2 = s.indexOf('/',pos1+1);
	var dd = parseInt(s.substring(0,pos1));
	var mm = parseInt(s.substring(pos1+1,pos2));
	var yyyy = parseInt(s.substring(pos2+1));
	
	if (yyyy>999 && yyyy<=9999)
	{
		if(mm==1 || mm==3 || mm==5 || mm==7 || mm==8 || mm==10 || mm==12)
			if (dd <= 31)
				return (true);
		if(mm==4 || mm==6 || mm==9 || mm==11)
			if (dd <=30)
				return (true);
		if(mm==2)
			if(dd<=((yyyy % 4 == 0) && ((!(yyyy % 100 == 0)) || (yyyy % 400 == 0)) ? 29 : 28 ))
				return (true);
		if(mm>12)
			return (false);
	}
	return (false);
}