function isValid(parm,val){
    if(parm =="") return false;
    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,'0123456789'); }
function hasQuestion(parm) { return (parm.indexOf("?",0) > -1); }

function isLeapYear(year) {
    if ((year % 4) == 0){
	if ((year % 100) == 0){
	    if ((year % 400) == 0){
		return true;
	    }else {
		return false;
	    }
	}
	return true;
    }
    else {
	return false;
    }
}

/* validDate - pass three integers */
function validDate(month,day,year){
    if ((month < 1) || (month > 12)){
	alert("Invalid date. Month must be 1 through 12");
	return false;
    }
    var ndays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    if (isLeapYear(year)) {ndays[1] = 29;}
    if ((day < 1) || (day > ndays[month - 1])){
	alert("Invalid date. Day must be 1 through " + ndays[month - 1]);
	return false;
    }
    return true;       
}

function formatDate(date){
    var d = new Array();
    d = date.split('/');
    if (d[0].length == 1){
	d[0] = '0'+d[0];
    }
    if (d[0].length != 2){
	alert("Invalid date. Month not 2 digits.");
	return null;
    }
    if (d[1].length == 1){
	d[1] = '0'+d[1];
    }
    if (d[1].length != 2){
	alert("Invalid date. Day not 2 digits");
	return null;
    }
  if (d[2].length != 4){
      alert("Invalid date. Year not 4 digits");
      return null;
  }
  
  if (isNum(d[2] + d[0] + d[1])) {
      if (valid_date(parseInt(d[0]),
		     parseInt(d[1]),
		     parseInt(d[2]))) {
	  var fd = d[2] + d[0] + d[1];
	  return fd;
      }
    else{
	return null;
    }
  }
  else {
      alert("Invalid Date. Not numeric.");
      return null;
  }
}

function uniqueUrl(url){
    return hasQuestion(url) ? url + "&" + Date() : url + "?" + Date();
}

function filter(ar, func){
    var tmp = new Array();
    for (var i = 0; i < ar.length; i++){
	if (func(ar[i])){
	    tmp.push(ar[i]);
	}
    }
    return tmp;
}

function some(ar, func){
    var res = false;
    for (var i = 0; i < ar.length; i++){
	if (func(ar[i])){
	    res = true;
	    break;
	}
    }
    return res;
}

function forEach(ar, func){
    for (var i = 0; i < ar.length; i++){
	func(ar[i]);
    }
    return ar;
}


// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}

function string_blank ( s ) { return (trim(s) == ''); }
