function go2URL(address,target)
{
	window.open(address,target);
}
function newWindow(address)
{
	var maxW = screen.width;
	var maxH = screen.height;
	var w = 800;
	var h = 600;
	var _top = Math.floor((maxH - h) / 2);
	var _left = Math.floor((maxW - w) / 2);
	
	var win = window.open(address,'doiW',"toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width="+w+",height="+h);
	win.moveTo(_left,_top);
	win.focus();
}
function delConfirmed(myworld)
{
	var is_confirmed = confirm(myworld);
	return is_confirmed;
}
function isDate(mydate){
	var dateArray = new Array(21);       			// will received parsed output
	for (var i=0; i<dateArray.length; i++){
	 	dateArray[i]="";							// insurance
	}
	a=mydate.value;          					// document.frm.dat.value
	i=0;            							// index for output array
	for (var j=0; j<a.length; j++){
		if ((isNaN(a.charAt(j)))){       		// test jth input char
	  	i++;          												// step past possible numerics
	  	dateArray[i]= a.charAt(j);     			// deposit non-numeric separator
	  	i++;
	  }         							 		// step past
	 	else {           						// numeric
	  	dateArray[i]=dateArray[i]+a.charAt(j);	// concatenate
	  }
	}
	var err=0;
	b = dateArray[0]; 								//a.substring(0, 2) month
	c = dateArray[1]; 								//a.substring(2, 3) '/'
	d = dateArray[2]; 								//a.substring(3, 5) day'
	e = dateArray[3]; 								//a.substring(5, 6) '/'
	f = dateArray[4]; 								//a.substring(6, 10) year
	g = dateArray[5];
 //basic error checking
	if (isNaN(b)) err=1;
 	if (b<1 || b>12) err = 2;
 	if (c != '/') err = 3;
 	if (isNaN(d)) err=4;
 	if (d<1 || d>31) err = 5;
 	if (e != '/') err = 6;
 	if (isNaN(f)) err=7;
 	if (f<10 || f>3000) err = 8;
 	if (g != '')  err=9;
 //advanced error checking
 	if (b==4 || b==6 || b==9 || b==11){  		// months with 30 days
	 	if (d>30) err=10;
  }
	// february, leap year
	if (b==2){        							// feb
		var g=parseInt(f/4);
	  if (isNaN(g)){
			err=11;
	  }
	  if (d>29) err=12;
		 if (d==29 && ((f/4)!=parseInt(f/4))) err=13; // test remainder > 0
	}
	if (err>0 && a.length > 0){
		alert(mydate.value+' is not a valid date.');
		mydate.value='';
		mydate.focus();
	  return (false);
	}
	else{return (true);}
}

// Expects any single character, and returns true if it's a number and false if not.
function isDigit(n){
  if( (n < "0") || ("9" < n) ){
	return false
  } else {
	return true
  }
}

// Expects any single character, and returns true if it's valid input
// for a dollar amount and false if not.
function isDollar(n){
  if( ((n < "0") || ("9" < n)) && (n!=".") && (n!=",") && (n!="$") ) {
	return false
  } else {
	return true
  }
}

function isNumeral(n){
  if (n.length <= 0) return false;
  // Makes sure that only numbers or '$' or '.' or ',' are present.
  for (i = 0; i < n.length; i++) {
	ch = n.substring(i, i + 1)
	if(!isDigit(ch)){
	  return false;
	}
  }
  return true;
}

function isInteger(n){
  if (n.value.length <= 0) return false;
  // Makes sure that only numbers or '$' or '.' or ',' are present.
  for (i = 0; i < n.value.length; i++) {
	ch = n.value.substring(i, i + 1)
	if(!isDigit(ch)){
	  return false;
	}
  }
  return true;
}
// Expects to receive the name or the identifier for a form object (id)
// and a string (name) with the label of the form field being verified.
// Works in conjunction with two more functions included below, isDollar
// and isDigit.
function checkDollarFormat(id,name) {

  // makes sure a dollar sign is the first character (you can delete this check if you don't want it)
  if( 0 < id.value.indexOf('$') ) {
	alert("The dollar sign must be the first character in " + name);
	return false;
  }
  // makes sure that if there's a decimal point, it's followed by two digits
  dot=id.value.indexOf('.')
  lastdot=id.value.lastIndexOf('.')
  if((dot!=-1) && ((dot!=(id.value.length-3)) || (dot!=lastdot))) {
	alert("Decimal points must be followed by two digits in " + name + ".");
	return false;
  }
  // Makes sure that only numbers or '$' or '.' or ',' are present.
  for (i = 0; i < id.value.length; i++) {
	ch = id.value.substring(i, i + 1)
	if(!isDollar(ch)){
	  alert(name + " must only contain a dollar value.");
	  return false;
	} else {
	  if(ch==","){
		// Makes sure that if there's a comma, it only occurs to divide groups of 1000s
		// (i.e. 1,000 or 10,000 or 100,000 or 1,000,000 but NOT 10,00,00)
		if((!isDigit(id.value.substring(i-1,i))) || (!isDigit(id.value.substring(i+1,i+2))) ||(!isDigit(id.value.substring(i+2,i+3))) ||(!isDigit(id.value.substring(i+3,i+4)))) {
		  alert("Commas in " + name + " must be followed by three digits and preceeded by at least one digit.");
		  return false;
		}
	  }
	}
  }
  return true;
}

//Split the argument string into an array of strings.
function customSplit(strvalue, separator, arrayName) {
  var n = 0;
  if (separator.length != 0) {
    while (strvalue.indexOf(separator) != -1) {
      eval("arr"+n+" = strvalue.substring(0, strvalue.indexOf(separator));");
      strvalue = strvalue.substring(strvalue.indexOf(separator)+separator.length,
          strvalue.length+1);
      n++;
    }
    eval("arr" + n + " = strvalue;");
    arraySize = n+1;
  }
  else {
    for (var x = 0; x < strvalue.length; x++) {
      eval("arr"+n+" = \"" + strvalue.substring(x, x+1) + "\";");
      n++;
    }
    arraySize = n;
  }

  eval(arrayName + " = new makeArray(arraySize);");

  for (var i = 0; i < arraySize; i++)
    eval(arrayName + "[" + i + "] = arr" + i + ";");

  return arraySize;
}

//Create an array object.Some browser does not support latest javascript which has Array object. This function can be used in those browser.
function makeArray(IntarrSize) {
  for (var n = 0; n < IntarrSize; n++)
    this[n] = "";
  return this;
}

//Determine an argument if it is an email address format.
function isEmail(argvalue) {
  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("@") == -1)
    return false;
  else if (argvalue.indexOf("@") == 0)
    return false;
  else if (argvalue.indexOf("@") == (argvalue.length-1))
    return false;
  // arrayString = argvalue.split("@"); (works only in netscape3 and above.)
  var retSize = customSplit(argvalue, "@", "arrayString");
  if (arrayString[1].indexOf(".") == -1)
    return false;
  else if (arrayString[1].indexOf(".") == 0)
    return false;
  else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
    return false;
  }
  return true;
}

function isAlnumhyphen(objValue){
  var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 
  if(objValue.value.length > 0 &&  charpos >= 0) 
  { 
    return false; 
  }
  return true;
}
//Determine an argument if it is a URL.
function isURL(argvalue) {
  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("http://") == -1)
    return false;
  else if (argvalue == "http://")
    return false;
  else if (argvalue.indexOf("http://") > 0)
    return false;
  argvalue = argvalue.substring(7, argvalue.length);
  if (argvalue.indexOf(".") == -1)
    return false;
  else if (argvalue.indexOf(".") == 0)
    return false;
  else if (argvalue.charAt(argvalue.length - 1) == ".")
    return false;
  if (argvalue.indexOf("/") != -1) {
    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  if (argvalue.indexOf(":") != -1) {
    if (argvalue.indexOf(":") == (argvalue.length - 1))
      return false;
    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
      return false;
    argvalue = argvalue.substring(0, argvalue.indexOf(":"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }
  return true;
}