function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


// ******************************************************************
// This function accepts a string variable and verifies if it is a
// proper date or not. It validates format matching either
// mm-dd-yyyy or mm/dd/yyyy. Then it checks to make sure the month
// has the proper number of days, based on which month it is.

// The function returns true if a valid date, false if not.
// ******************************************************************

function isDateVal(dateStr)
{
     var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
     var matchArray = dateStr.match(datePat); // is the format ok?

     if (matchArray == null){
   //alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
     return false;
    }

        month = matchArray[1]; // p@rse date into variables
        day = matchArray[3];
        year = matchArray[5];

        if (month < 1 || month > 12) { // check month range
        //alert("Month must be between 1 and 12.");
        return false;
       }

        if (day < 1 || day > 31) {
       //alert("Day must be between 1 and 31.");
        return false;
        }

        if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        //alert("Month "+month+" doesn`t have 31 days!")
         return false;
        }
        if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	        if (day > 29 || (day==29 && !isleap)) {
    	    //alert("February " + year + " doesn`t have " + day + " days!");
             return false;
             }
         }
         return true; // date is valid
}

function isTimeVal(strTime) {
   	var strTime1 = /^(\d{1,2})(\:)(\d{2})\2(\d{2})(\ )\w[AM|PM|am|pm]$/;
   	var strTime2 = /^(\d{1,2})(\:)(\d{2})(\ )\w[AM|PM|am|pm]$/;
   	var strTime3 = /^(\d{1,2})(\:)(\d{1,2})$/;
   	
   	var strFormat1 = strTime.match(strTime1);
   	var strFormat2 = strTime.match(strTime2);
   	var strFormat3 = strTime.match(strTime3);
    // Check to see if it matches one of the 3 Format Strings.

   	if (strFormat1 == null && strFormat2 == null && strFormat3 == null) {
		return false;
   	}
   	else if (strFormat1 != null) {
	   		// Validate for this format: 3:48:01 PM
	   		if (strFormat1[1] > 12 || strFormat1[1] < 00) {
       			return false;
       		}
       		if (strFormat1[3] > 59 || strFormat1[3] < 00) {
           		return false;	
       		}
			if (strFormat1[4] > 59 || strFormat1[4] < 00) {
 				return false;	
            }
    }
	else if (strFormat2 != null) {
           	// Validate for this format: 3:48 PM
			if (strFormat2[1] > 12 || strFormat2[1] < 00) {
                return false;
            }
			if (strFormat2[3] > 59 || strFormat2[3] < 00) {
                return false;	
            }
    }
	else if (strFormat3 != null) {
         	// Validate for this format: 15:48
			if (strFormat3[1] > 23 || strFormat3[1] < 00) {
                return false;
            }
			if (strFormat3[3] > 59 || strFormat3[3] < 00) {
                return false;	
            }
     }
     return true;
}

<!--
// Kaosweaver Calendar Settings - do not remove
// by Paul Davis - http://www.kaosweaver.com
// KW_lang[English]
// KW_order[0,1,2]
// KW_del1[/]
// KW_del2[/]
// KW_dd[true]

var sDate = new Array();
var mName = new Array("January","February","March","April","May","June","July","August","September","October","November","December")
var wName = new Array("Su","Mo","Tu","We","Th","Fr","Sa")
var cFontName = "Arial, Helvetica, sans-serif;"
var KW_color = new Array("#ffffff","#ffcccc","#999999","#ffffff","#ccffcc","#cccccc","#000000","#000000")
var KW_cl=0;
var KW_od=-1;
var KW_tmo=0;
function m_class(m,d,y) { 
	this.month=m;this.day=d;this.year=y;this.output=this.month+"/"+this.day+"/"+this.year;
	var kd=new Date();this.special=checkDates(this.month,this.day,this.year)
	this.today=((kd.getMonth()+1)==this.month && kd.getDate()==this.day && kd.getFullYear()==this.year)
	var td=new Date(this.year, (this.month-1), this.day+KW_od);this.past=(KW_od==-1)?0:(kd>td)
}

// Kaosweaver End of Calendar Settings - do not remove

function checkDates(m1,d1,y1) {
	var rStr=false;for(var i=0;i<sDate.length;i++) {var tDate=sDate[i].split(",");
		if (tDate[2]=="*" || tDate[2]==y1) {if (tDate[1]==d1 && tDate[0]==m1)	rStr=true;
		}}return rStr;
}

function KW_doCalendar(obj,E,m,y) {
  var d=new Date();f=0;d.setDate(1);if (!m && m!=0) {m=d.getMonth();f=KW_cl}
  if (f==1 && MM_findObj('KW_selectedMonth').value!=-1) 
  m=MM_findObj('KW_selectedMonth').value-1;d.setMonth(m);	
  if (!y) y=d.getFullYear();if (f==1 && MM_findObj('KW_selectedYear').value!=-1) 
  y=MM_findObj('KW_selectedYear').value;d.setFullYear(y);dy=d.getDay();if (!E) E=0;
  if(E==1)dy=(dy==0)?6:dy-1;dP=new Date();dP.setMonth(m);dP.setDate(0);
  pStart=dP.getDate()-dy+1;dStr=new Array();for (i=pStart;i<dP.getDate()+1;i++) { tmo=(KW_tmo)?"":i;
  tMonth=(m==0)?"12":m;tYear=(m==0)?y-1:y;dStr[dStr.length]=new m_class(tMonth,tmo,tYear);
  }EOM=false;for (i=1;!EOM;i++){d.setDate(i);if (m!=d.getMonth()) EOM=true; else { 
  dStr[dStr.length]=new m_class((Number(m)+1),i,y);}}cnt=1;si=0;
  if(E==1)si=(d.getDay()==0)?6:d.getDay()-1;else si=d.getDay();	for (i=si;i<7;i++) {
  tMonth=(m==11)?"1":Number(m)+2;tYear=(m==11)?Number(y)+1:y; tmo=(KW_tmo)?"":cnt;
  dStr[dStr.length]=new m_class(tMonth,tmo,tYear); cnt++;}pM=(m==0)?11:m-1;
  pY=(m==0)?y-1:y;nM=(m==11)?0:Number(m)+1;nY=(m==11)?Number(y)+1:y;
  wStr="<html><head><style type=\"text/css\"><!--td {  font-family: "+cFontName+" font-size: 12px; }\n.tblHdr { font-weight: bold; color: "+KW_color[0]+"; background-color: "+KW_color[6]+" }\n.subTbl{ color: "+KW_color[0]+"; background-color: #666666;  text-align: center}-->\n</style>\n<title>"+mName[m]+", "+y+"</title>\n</head>\n<body  topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" leftmargin=\"0\" onLoad=\"window.focus()\">\n<table width=\"100%\" border=\"0\" cellspacing=\"0\">\n<tr>\n<td bgcolor=\""+KW_color[6]+"\">\n<table width=\"100%\" border=0>\n"
  wStr+="<tr>\n<td align=center bgcolor=\""+KW_color[6]+"\" class=\"tblHdr\" colspan=\"4\"><a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+pM+"','"+pY+"');\" class=\"tblHdr\">&laquo</a>&nbsp;&nbsp;"+mName[m]+"&nbsp;&nbsp;<a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+nM+"','"+nY+"');\"  class=\"tblHdr\">&raquo</a></td>\n<td colspan=3 align=center class=\"tblHdr\"><a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+m+"','"+(y-1)+"');\" class=\"tblHdr\">&laquo</a>&nbsp;&nbsp;"+y+"&nbsp;&nbsp;<a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+m+"','"+(Number(y)+1)+"');\"  class=\"tblHdr\">&raquo</a></td>\n</tr>\n"
  wStr+="<tr>\n<td class=\"subTbl\">"+wName[0]+"</td><td class=\"subTbl\">"+wName[1]+"</td><td class=\"subTbl\">"+wName[2]+"</td><td class=\"subTbl\">"+wName[3]+"</td><td class=\"subTbl\">"+wName[4]+"</td><td class=\"subTbl\">"+wName[5]+"</td><td class=\"subTbl\">"+wName[6]+"</td>\n</tr>\n"
  for (x=0;x<parseInt(dStr.length/7);x++) {	wStr+="<tr>\n";	for (y=0;y<7;y++) {
  yT=(E==1)?5:0;bC=(y==yT||y==6)?KW_color[2]:KW_color[3];
  if ((Number(m)+1)!=dStr[x*7+y].month) bC=KW_color[5]; if (dStr[x*7+y].special) 
  bC=KW_color[4];if (dStr[x*7+y].today) bC=KW_color[1];
  a0=(KW_cl!=1)?"":"window.opener.MM_findObj('KW_selectedMonth',window.opener.document).value='"+dStr[x*7+y].month+"';window.opener.MM_findObj('KW_selectedYear',window.opener.document).value='"+dStr[x*7+y].year+"'; "  
  a1=(dStr[x*7+y].past)?"":"<a href=\"javascript:window.opener.MM_findObj('"+obj+"',window.opener.document).value='"+dStr[x*7+y].output+"';"+a0+" window.close();\" >";
  a2=(dStr[x*7+y].past)?"":"</a>";
  wStr+="<td align=\"center\" bgcolor="+bC+">"+a1+dStr[x*7+y].day+a2+"</td>\n";

	}	wStr+="</tr>\n";}	wStr+="<tr><td colspan=7></td></tr></table></td></tr></table></body></html>";
	var w = parseInt(screen.width/2-75); var h=parseInt(screen.height/2-75);
	var look='width=170,height=155,left='+w+',top='+h;	popwin=window.open('','calendar',look);
	popwin.document.open();	popwin.document.write(wStr);	popwin.document.close();
}

function trim(s)
{
  while (s.substring(0,1) == ' ') 
  {
    s = s.substring(1,s.length);
  }

  while (s.substring(s.length-1,s.length) == ' ')
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function openPopUp(url, i_hi, i_wi, p_top) {
	
	var i_screenWidth, i_screenHeight
	
	i_screenWidth = screen.width;
	i_screenHeight = screen.height;

	if((i_hi == '') || (i_hi == 0) || (i_hi == 'undefined')) {
		i_winHeight = 570;
	}else {i_winHeight = i_hi;}
	
	if((i_wi == '') || (i_wi == 0) || (i_wi == 'undefined')) {
		i_winWidth = 760;
	}else {i_winWidth = i_wi;}
	
	if((p_top == '') || (p_top == 0) || (p_top == 'undefined')) {
		i_top = 1;
	}else{i_top = p_top;}
	
	i_top = 4;
	i_left = (i_screenWidth-i_winWidth)/2;			
		
	window.open(url, "_blank", "status,scrollbars,height=" + i_winHeight + ",width=" + i_winWidth + ",top=" + i_top + ",left=" + i_left); 

	return;
}

function populateStates(f_form, t_default)
{	
	a_States = new Array("NONE", "AL","AK","AZ","AR","CA","CO","CT","DC","DE","FL","GA",
						 "HI","ID","IL","IN","IA","KS","KY","LA","ME","MD",
						 "MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ",
						 "NM","NY","NC","ND","OH","OK","OR","PA","RI","SC",
						 "SD","TN","TX","UT","VT","VA","WA","WV","WI","WY");

	for(count=0; count < a_States.length; count++){
   		f_form.options[count] = new Option(a_States[count]);
		f_form.options[count].value = a_States[count];
 	}
	
	f_form.value = t_default;
	
	return;
}

//isNumeric function
function IsNumeric(sText)
{
   var ValidChars = "0123456789.,";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}

function runConfirm(t_url, msg_error)
{
	if(confirm(msg_error)) {
		window.location.href = t_url
	}
	
	return;
}

function runClose()
{
	window.opener.location.reload();
	window.close();
	
	return;
}


function formatCurrency(num) {
	num = num.toString();
	
	if(isNaN(num)) {
		num = "0";
	}
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	
	if(cents<10) {
		cents = "0" + cents;
	}
	
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
		num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3)); 
	}
	num.substring(num.length-(4*i+3));
	
	return (num + '.' + cents);
}
function openPopUpMax(url, i_hi, i_wi, i_top) {
	i_screenWidth = screen.width;
	i_screenHeight = screen.height;
	if((i_hi == '') || (i_hi == 0) || (i_hi == 'undefined')) {
		i_winHeight = 570;
	}
	else {
		i_winHeight = i_hi;
	}	
	if((i_wi == '') || (i_wi == 0) || (i_wi == 'undefined')) {
		i_winWidth = 770;
	}
	else {
		i_winWidth = i_wi;
	}	
	if((i_top == '') || (i_top == 0) || (i_top == 'undefined')) {
		i_top = 1;
	}
	else {
		i_top = i_top;
	}	
	i_left = (i_screenWidth-i_winWidth)/2;				
	w_child = window.open(url, "_blank", "scrollbars,height=" + i_winHeight + ",width=" + i_winWidth + ",top=" + i_top + ",left=" + i_left + ",resizable=1");
	//w_child.focus;
	return;
}
function checkemail(str){
//var str=document.validation.emailcheck.value
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(str)){
		testresults=true;
	}
	else{
	
		testresults=false;
	}
	return testresults;
}
