 var NS4DOM = document.layers ?true : false;
 var IEDOM  = document.all ?true : false;
 var W3CDOM = ((document.getElementById)&&(!IEDOM))?true:false;
 
 var lf = "<br>"
 var message = "Error: " + lf;

  function checkUser(box)
  {
    if(box.value == "") {
      return("UserID cannot be blank" + lf);
    }
    re = /^\w+$/;
    if(!re.test(box.value)) {
      return("ID must contain only letters, numbers and underscores" + lf);
    }
    return "";
  }

  function checkName(box, name)
  {
    if(box.value == "") {
      return(name + " cannot be blank" + lf);
    }
    re = /^[A-Za-z'`\- \.0-9]+$/;
    if(!re.test(box.value)) {
      return(name + " must contain only letters, numbers, ', ., -,and spaces" + lf);
    }
    re = /[A-Za-z]/;
    if(!re.test(box.value)) {
      return(name + " must contain at least one letter" + lf);
    }
    return "";
  }
  
  function checkPassword(pwd1, pwd2)
  {
    var msg = "";
    var regup = new RegExp("[A-Z]");
    var reglow = new RegExp("[a-z]");
    var regnum = new RegExp("[0-9]");
    if(pwd1.value != "") 
    { 
      if(pwd1.value.length <= 7) 
      {  
        msg += ("Password must contain at least 8 characters" + lf);
      }

      if(! regnum.test(pwd1.value)) 
        msg+="Password must contain at least one number (0-9)" + lf;
      if(! reglow.test(pwd1.value)) 
        msg+="Password must contain at least one lowercase letter (a-z)" + lf;
      if(! regup.test(pwd1.value))
        msg+="Password must contain at least one uppercase letter (A-Z)" + lf;
      if(pwd1.value.indexOf("'") >=0 )
        msg+="Password cannot contain an apostorphe (')" + lf;
      if(pwd1.value.indexOf(" ") >=0 )
        msg+="Password cannot contain a space" + lf;
    } 
    else 
      msg+="You need to enter a <a href='#' onClick=\"HelpWindow=window.open('http://www.ddtrac.com/demo/help.asp?page=Strong+Password','helpWindow','toolbar=no, Location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=600, height=700, left=10, top=10'); return false;\">strong password</a>" + lf;
    
    if (pwd1.value != pwd2.value)
      msg+="Password 1 and password 2 are not the same" + lf;

    return msg;
  }

  function checkDate(dbox)
  {
    var msg = "";
    var regdate = new RegExp("^[1-9]/\\d/[1-2]\\d\\d\\d|^[1-9]/[0-3]\\d/[1-2]\\d\\d\\d|^0[1-9]/\\d/[1-2]\\d\\d\\d|^0[1-9]/[0-3]\\d/[1-2]\\d\\d\\d|^1[0-2]/\\d/[1-2]\\d\\d\\d|1[0-2]/[0-3]\\d/[1-2]\\d\\d\\d");

    if(! regdate.test(dbox.value))
     msg += "Date (" + dbox.value + ") must be in the format mm/dd/yyyy" + lf;
    else
    {
       var matchArray = dbox.value.split("/");     
       month = matchArray[0]; // p@rse date into variables
       day = matchArray[1];
       year = matchArray[2];

       if (month < 1 || month > 12) { // check month range
          msg += ("Month in must be between 1 and 12.");
       }
       else if (day < 1 || day > 31) {
           msg += ("Day must be between 1 and 31.");
       } 
       else if ((month==4 || month==6 || month==9 || month==11) && day==31) {
           msg += ("Month "+month+" doesn`t have " + day + " days!")
       }
       else if (month == 2) { // check for february 29th
           var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
           if (day > 29 || (day==29 && !isleap)) {
                  msg += ("February " + year + " doesn`t have " + day + " days!");
           }
       }
       
    }
    return msg;
  
  }
  
  function checkDateRange(dbox1, dbox2, mons)
  { 
    var msg = "";
    var minutes = 1000 * 60;
    var hours = minutes * 60;
    var days = hours * 24;
    var months = days * 31;
    var t = Date.parse(dbox2.value) - Date.parse(dbox1.value);
    var m = t/months;
    
    if (m < 0) msg = "End date must be after start date" + lf;
    else if (m > mons) msg = "Period cannot be more than " + mons + " months" + lf;
    
    return msg;
  
  }
  
  function checkTime(tbox)
  {
    var msg = "";
    var regtime = new RegExp("^\\d:[0-5]\\d PM|^\\d:[0-5]\\d AM|^1[0-2]:[0-5]\\d PM|^1[0-2]:[0-5]\\d AM|^0[0-9]:[0-5]\\d PM|^0[0-9]:[0-5]\\d AM");

    if(! regtime.test(tbox.value))
        msg += "Time (" + tbox.value + ") must be in the format hh:mm AM or hh:mm PM" + lf;
    return msg;

  }
  
  
  function checkSelect(sbox, txt)
  {
    var msg = "";
    if(sbox.selectedIndex <= 0 )
    { 
       if(sbox[0].value==0 || sbox.value=='' || sbox[0].value=='' )
         msg += "You must select a " + txt + "" + lf;
    }
    return msg;
   
  }
  
  function checkRadio(rbut, txt)
  {
    var msg = "";
    var selected=false;
    for(var i=0; i < rbut.length; i++ )
    { 
       if(rbut[i].checked )
       {
         selected=true;
         break;
       }
    }
    
    if(!selected)
         msg += "You must select a " + txt + "" + lf;
    return msg;
  }

  function checkEmail(ebox)
  {
    var msg = "";
 
    if(ebox.value.indexOf("@") <= 0 )
         msg += "Email must contain an @" + lf;
    if(ebox.value.indexOf("@") >= ebox.value.lastIndexOf(".") )
         msg += "Email must contain an . following the @" + lf;

    return msg;
   
  }
  
  function checkLength(tbox, name, len)
  {
      var msg = "";
      if(tbox.value.length > len)
         msg += name + " is too long.  It must be less than " + len + " characters." + lf;
      return msg;
  }
  
  function checkNumeric(tbox, name, max)
  {
      var msg = "";
      if(isNaN(tbox.value))
         msg += name + " must be a number less than or equal to " + max + lf;
      else if(parseInt(tbox.value) > max)
         msg += name + " is too large.  It must be less than or equal to " + max + lf;
      return msg;
  }
  
  function getObject(id)
  { var obj;
    if(NS4DOM) obj = eval("document." + id);
    else if(IEDOM) obj = eval(id);
    else if(W3CDOM) obj = document.getElementById(id);
    return obj;
  }

  function displayError(msg, form)
  { 
    var obj = getObject('error');
    if(msg.length > 13 )
    { 
      obj.innerHTML = msg + "<br>";
      message = "Error: " + lf;
      
      try
      {
        if(typeof(form) == "object" && form) form.submit.disable = false;
      } catch (e) {}
      window.location.href = "#top"
      return false;
    } 
    return true;
    
  }
  
  function trim(mystring) 
  {
	//return stringToTrim.replace(/^\s+|\s+$/g,"");
	//var str = mystring.replace(/ /,"");
	return mystring;
  }

  function checkDelete(form, dname, cname)
  {
   var del = "false";
   var strA;
   var mes = "";
   //var message="";
      
   for(var i = 0 ; i < form.elements.length ; i ++)
   { // alert(i + ":" + form.elements[i].name + " " + form.elements[i].value);
       for(var j=0; j < dname.length; j++)
       {
         if(form.elements[i].name.indexOf(dname[j])== 0)
         { 
           if(form.elements[i].checked) 
           {  del="true";
              strA = form.elements[i].name.split("del_");
              var str1 ="form." + strA[0] + cname + "_" + strA[1] ;
              //alert(str1 + " " + eval(str1 + ".checked"));
              try {
                if(eval(str1 + ".checked"))
                {
                  mes= "Cannot copy and delete the same goal/objective" + lf;
                  form.elements[i].checked=false;
                }
              } catch(e){}
           }
         }
       }
       
   }

   if (mes.length > 2) return mes;
   else return del;

  }
  
function removeFile(tfileid, altid)
{
  var obj = document.getElementById("tfileid" + tfileid);
  var text = '<input value="0|' + tfileid + '" name="tempfile' + altid + '" type="hidden">'
  obj.innerHTML = "<td colspan=3>" + text + "</td>";
}

function attachFiles()
{
   for(var counter=0; counter < window.frames.length; counter++)
   if(window.frames[counter].document.forms[0].file1.value.length > 0)
   { 
     window.frames[counter].document.forms[0].submit();
   }
}
