// form fieldsvalidators
var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
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);}
function isLower(parm) {return isValid(parm,lwr);}
function isUpper(parm) {return isValid(parm,upr);}
function isAlpha(parm) {return isValid(parm,lwr+upr);}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb);}

// removes all leading and trailing spaces from a field
function _removeSpaces(v){
	// remove all spaces
	while( v.indexOf(" ") > -1 ) v = v.substring( 0, v.indexOf(" ") ) + v.substring( v.indexOf(" ")+1 );
	return v;
}

// date input checker
function validateUKDate( strValue ) {
  var objRegExp = /^\d{1,2}(\/)\d{1,2}\1\d{4}$/
  var strSeparator="/";

  //check to see if in correct format
  if(!objRegExp.test(strValue))
    return false; //doesn't match pattern, bad date
  else{
   //split date into 0 - day, 1 - month, 2 - year
    var arrayDate = strValue.split(strSeparator); 
    //create a lookup for months not equal to Feb.
    var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
                        '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
    var intDay = parseInt(arrayDate[0]);

    //check if month value and day value agree
    if(arrayLookup[arrayDate[1]] != null) {
      if(intDay <= arrayLookup[arrayDate[1]] && intDay != 0)
        return true; //found in lookup table, good date
    }

    //check for February (bugfix 20050322)
    var intMonth = parseInt(arrayDate[1]);
    if (intMonth == 2) { 
       var intYear = parseInt(arrayDate[2]);
       if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
          return true; //Feb. had valid number of days
       }
  }
  return false; //any other values, bad date
}

// trims off leading and trailing spaces
function trimAll( strValue ) {
 var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}


// checks an email address for validity
function emailCheck (emailStr) 
{
	//var emailStr=ofield.value
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	// Begin with the coarse pattern to simply break up user@domain into different pieces that are easy to analyze.
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
	  // Too many/few @'s or something; basically, this address doesn't even fit the general mould of a valid e-mail address.
		alert("The Email address seems incorrect (check for @ and .'s problems)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	// See if "user" is valid 
	if (user.match(userPat)==null) {
		// user is not valid
		alert("The Email username doesn't seem to be valid.")
		return false
	}
	// if the e-mail address is at an IP address (as opposed to a symbolic host name) make sure the IP address is valid. 
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("The Email Destination IP address is invalid!")
			return false
			}
		}
		return true
	}
	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("The Email domain name doesn't seem to be valid.")
		return false
	}
	/* Now we need to break up the domain to get a count of how many atoms it consists of. */
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>4) {
	   // the address must end in a two letter or three letter word.
	   alert("The email address must end in a three-letter domain, or two letter country.")
	   return false
	}
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="The Email address is missing a hostname!"
	   alert(errStr)
	   return false
	}
	return true;
}

function toggleDiv(divid){
	if(document.getElementById(divid).style.display == 'none'){
		document.getElementById(divid).style.display = 'block';
	}else{
		document.getElementById(divid).style.display = 'none';
	}
}

function outliner()
	{
		var child = document.all[event.srcElement.getAttribute("child", false)];
		if (null != child)
		{
			var childlen = child.id.length-1
			var ident = child.id.substring(childlen)
			var pagemark = "p" + ident +""
			var idtest = ""
			for (i = 0; i < document.all.length; i++)
			{
				idtest = ""
				idtest = document.all[i].id.substring(0,4)
				if (idtest=="info")
					{
						//alert("Yes");
						document.all[i].setAttribute("className","collapsed");
					}
			}
		}
		
		if (null != child)
			{child.className = child.className == "collapsed" ? "expanded" : "collapsed";}

		document.location.hash = pagemark
	}

function MyWin(piclocn,picname,w,h)
{
	mymsg=window.open("", "", "menubar=no,location=no,resizable=yes,top=50,left=50");
	mymsg.resizeTo(w,h);
	if (navigator.appName == 'Netscape')
	{
		mymsg.resizeBy(60,170);
	}
	else if (navigator.appName.indexOf("Microsoft" != -1))
	{
		mymsg.resizeBy(30,120);
	}
	mymsg.document.write("<html>\r\n<head>\r\n<title>");
	mymsg.document.write(picname);
	mymsg.document.write("<\/title>\r\n");
	mymsg.document.write("<\/head>\r\n");	
	mymsg.document.write("<body>\r\n");
	mymsg.document.write("<table border='0' width='100%' cellspacing='1' cellpadding='1'>\r\n");
	mymsg.document.write("<tr>\r\n<td width='100%'>\r\n");
	mymsg.document.write("<p align='center'>\r\n");
	mymsg.document.write("<img border='0' src='images/" + piclocn + "'>\r\n");
	mymsg.document.write("<\/td>\r\n<\/tr>\r\n<tr>\r\n<td width='100%' align='center'>");
	mymsg.document.write("<form name='form2'>");
	mymsg.document.write("<p align='center'>\r\n<input type='button' name='b2' value='Close Window'onclick='window.close();'\r\n>");
	mymsg.document.write("<\/form>\r\n<\/td>\r\n<\/tr>\r\n<\/table>\r\n");
	mymsg.document.write("<\/body>\r\n<\/html>\r\n");
	mymsg.document.close();
	mymsg = null
	// mymsg.document.write("<tr>\r\n<td width='100%'>\r\n");
	// mymsg.document.write("<p align='center'><font face='Comic Sans MS'color='#000080' size='3'>Retrieving Picture<\/font><\/td><\/tr><tr><td>&nbsp<\/td><\/tr>\r\n");
}
