	// CROSS-BROWSER CHECK
	var bw_is_major=parseInt(navigator.appVersion);
	bw_nver=bw_is_major;
	bw_ver=navigator.appVersion;
	bw_agent=navigator.userAgent;
	bw_dom=document.getElementById?1:0;
	bw_opera=window.opera?1:0;
	bw_ie5=(bw_ver.indexOf("MSIE 5")>-1&&bw_dom&&!bw_opera)?1:0;
	bw_ie6=(bw_ver.indexOf("MSIE 6")>-1&&bw_dom&&!bw_opera)?1:0;
	bw_ie4=(document.all&&!bw_dom&&!bw_opera)?1:0;
	bw_ie=bw_ie4||bw_ie5||bw_ie6;
	bw_mac=bw_agent.indexOf("Mac")>-1;
	bw_ns6=(bw_dom&&parseInt(bw_ver)>=5)?1:0;
	bw_ie3=(bw_ver.indexOf("MSIE")&&(bw_is_major<4));
	bw_hotjava=(bw_agent.toLowerCase().indexOf('hotjava')!=-1)?1:0;
	bw_ns4=(document.layers&&!bw_dom&&!bw_hotjava)?1:0;
	bw_bw=(bw_ie6||bw_ie5||bw_ie4||bw_ns4||bw_ns6||bw_opera);
	bw_ver3=(bw_hotjava||bw_ie3);
	bw_opera7=((bw_agent.toLowerCase().indexOf('opera 7')>-1) || (bw_agent.toLowerCase().indexOf('opera/7')>-1));
	bw_operaOld=bw_opera&&!bw_opera7;
  
	var ns4 = (document.layers) ? true : false;
	var ie4 = (document.all && !document.getElementById) ? true : false;
	var ie5 = (document.all && document.getElementById) ? true : false;
	var ns6 = (!document.all && document.getElementById) ? true : false;

	
	// cross-browser function to get an object's style object given its id
	function getStyleObject(objectId) {
		if(document.getElementById && document.getElementById(objectId)) {
			return document.getElementById(objectId).style;  // W3C DOM
		} else if (document.all && document.all(objectId)) {
			return document.all(objectId).style;  // MSIE 4 DOM
		} else if (document.layers && document.layers[objectId]) {
			return document.layers[objectId];  // NN 4 DOM.. note: this won't find nested layers
		} else {
			return false;
		}
	}

	function getObject(objectId) {
		if(document.getElementById && document.getElementById(objectId)) {
			return document.getElementById(objectId);  // W3C DOM
		} else if (document.all && document.all(objectId)) {
			return document.all(objectId);  // MSIE 4 DOM
		} else if (document.layers && document.layers[objectId]) {
			return document.layers[objectId];  // NN 4 DOM.. note: this won't find nested layers
		} else {
			return false;
		}
	}

	function winStat(msg) {
		window.status=msg;
		if (msg=='') { document.body.style.cursor='default'; } else { document.body.style.cursor='hand'; }
		return true;
	}

	function HighlightRptRow(objRow,alt)   	{ if(alt==undefined) {alt=''}; objRow.className="RptRowSel " + alt; }
	function UnHighlightRptRow(objRow,alt)  { if(alt==undefined) {alt=''}; objRow.className="RptRowUnsel " + alt; }

	function trim(str) { 
	    while (str.substring(0,1)==' ') { str=str.substring(1,str.length) };
    	while (str.substring(str.length-1,str.length)==' ') { str=str.substring(0,str.length-1) };
		return str;
	} 

	function TrimUpper(obj) {
		obj.value=trim(obj.value);
		obj.value=obj.value.toUpperCase();
	}
	
	function IsNumeric(val) {
		if(val=="") { 
			return(false);
		} else {
			if (((val / val) != 1) && (val != 0)) { return(false) } else {return(true) };
		}
	}

	function IsNumeric2(sText) {
		var ValidChars = "0123456789.";
	   	var IsNumber=true;
   		var Char;
		var i;
		if(sText=="") { 
			IsNumber = false; 
		} else {
	   		for(i=0; i<sText.length && IsNumber==true; i++) { 
    	  		Char=sText.charAt(i); 
      			if (ValidChars.indexOf(Char)==-1) { IsNumber = false; }
			}
		}
	  	return IsNumber;
	}

	function IsNumeric3(val) {
		if(val=="") { 
			IsNumber=false
		} else {
			if (((val / val) != 1) && (val != 0)) {IsNumber=false} else {IsNumber=true}
		}
	  	return IsNumber;
	}

//	IsDate

	/**
	 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	 */
	// Declaring valid date character, minimum year and maximum year
	var dtCh1= "/";  //accept: 2/5/70
	var dtCh2= "-";  //accept: 2-5-70
	var dtCh3= ".";  //accept: 2.5.70
	var minYear=1900;
	var maxYear=2100;
	
	function isInteger(s){
		var i;
	    for (i = 0; i < s.length; i++){   
	        // Check that current character is number.
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    // All characters are numbers.
	    return true;
	}
	
	function stripCharsInBag(s, bag){
		var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not in bag, append to returnString.
	    for (i = 0; i < s.length; i++){   
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}
	
	function daysInFebruary (year){
		// February has 29 days in any year evenly divisible by four,
	    // EXCEPT for centurial years which are not also divisible by 400.
	    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}
	
	function DaysArray(n) {
		for (var i = 1; i <= n; i++) {
			this[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
			if (i==2) {this[i] = 29}
	   } 
	   return this
	}
	
	function isDate(dtStr,opt){
		var d = new Date();
		var curr_date = d.getDate();
		var curr_year = d.getFullYear();
		var daysInMonth = DaysArray(12)
		var pos1=dtStr.indexOf(dtCh1)
		var pos2=dtStr.indexOf(dtCh1,pos1+1)

		pos1=dtStr.indexOf(dtCh1);
		if (pos1==-1){ pos1=dtStr.indexOf(dtCh2) };
		if (pos1==-1){ pos1=dtStr.indexOf(dtCh3) };
		if (pos1==-1){ 
			alert("The date format should be: \n\n m/d/yyyy \n\n month/day/year");
			return false;
		}
		pos2=dtStr.indexOf(dtCh1,pos1+1);
		if (pos2==-1){ pos2=dtStr.indexOf(dtCh2,pos1+1) };
		if (pos2==-1){ pos2=dtStr.indexOf(dtCh3,pos1+1) };
		
		if (pos2==-1){ // if no 2nd date seperator, then assume this year's year.
			dtStr = dtStr+'/'+curr_year;
			pos2=dtStr.indexOf(dtCh1,pos1+1);
			if (pos2==-1){ pos2=dtStr.indexOf(dtCh2,pos1+1) };
			if (pos2==-1){ pos2=dtStr.indexOf(dtCh3,pos1+1) };
			if (pos2==-1){ // if still no 2nd date seperator, then bad date
				alert("The date format should be: \n\n m/d/yyyy \n\n month/day/year");
				return false;
			}
		}
		
		var strMonth=dtStr.substring(0,pos1)
		var strDay=dtStr.substring(pos1+1,pos2)
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
		if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
		if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
		for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		year=parseInt(strYr)
		month=parseInt(strMonth)
		day=parseInt(strDay)
		if (strYr.length==1){  //if year is 0 to 9 (always 1 char length), assume 2000 to 2009
			strYr='200'+strYr
			year=parseInt(strYr);
		}
		if (strYr.length==2){  //if year is 10-30 (alway 2 char length), assume 2010-2030; else assume 1931-1999
			if (year>30) {strYr='19'+strYr} else {strYr='20'+strYr};
			year=parseInt(strYr);
		}
		if (strYr.length!=4 || year==0 || year<minYear || year>maxYear){
			alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
			return false
		}
		if (strMonth.length<1 || month<1 || month>12){
			alert("Please enter a valid month")
			return false
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
			alert("Please enter a valid day")
			return false
		}
		if ( (dtStr.indexOf(dtCh1,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh1))==false) &&
				 (dtStr.indexOf(dtCh2,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh2))==false) &&
				 (dtStr.indexOf(dtCh3,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh3))==false) )	{
			alert("Please enter a valid date")
			return false
		}

		if (opt == 1) {
			var rtn = new Date(year, month-1, day);  // Date: year, month, day (month start at 0 for January)
			return rtn;
		} else {
			return month+'/'+day+'/'+year
		}
	}

	function ChangeImage(obj,imagepath) { obj.src=imagepath }
	
	function trShowHide(ojbName,show) {
		var sDisplay;
		var e = document.getElementsByName(ojbName);
		if(e != null) {
			if(show==1) {sDisplay="block"} else {sDisplay="none"};
			for(i=0;i<e.length;i++) {
				e[i].style.display = sDisplay;
			}
		}
	}
	
	function showObj(sw,obj) {
		// show/hide the objects {table};  sw: 0=hide, 1=show
		var so = document.getElementById(obj);
		if(so) {
			if (sw) { so.style.display = 'block'; }  //'inline'
			if (!sw) { so.style.display = 'none'; }
		}
	}
	
	//function HideContent(d) {
	//	if(d.length < 1) { return; }
	//	document.getElementById(d).style.display = "none";
	//}
	function ShowContent(d) {
		if(d.length < 1) { return; }
		document.getElementById(d).style.display = "block";
	}
	//function ReverseContentDisplay(d) {
	//	if(d.length < 1) { return; }
	//	if(document.getElementById(d).style.display == "none") { document.getElementById(d).style.display = "block"; }
	//	else { document.getElementById(d).style.display = "none"; }
	//}
	

	function OpenPopup(URL) { 
		var winoptions;
		var rtn;
		winoptions="toolbar=no, directories=no, location=no, status=no, menubar=no, resizable=no, scrollbars=yes, width=400, height=400, left=10, top=10, dependent";
		rtn=window.open(URL,"POPUP",winoptions);
		if(window.focus) {rtn.focus()};
		return false;
	}


	/*
		***	DHTML Email Validation script. 
	 		Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	*/
	function ValidateEmail(str) {
		var at='@';
		var dot='.';
		
		var lstr=str.length;
		var lat=str.indexOf(at);
		var ldot=str.indexOf(dot);
		

		// check length ( "a@b.c"   should be the shortest an address could be)
		if (lstr<5) { 
			return false; 
		}

		// should not have any spaces
		if (str.indexOf(" ")!=-1){
		    return false;
		}

		// check position of {@ at}. should exist, and not be first, nor last
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
		   return false;
		}

		// check position of {. dot}. should exist, and not be first, nor last
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
		    return false;
		}

		// should only have one @
		if (str.indexOf(at,(lat+1))!=-1) {
		    return false;
		}

		// should not have {dot} one-character-before, -nor after @
		if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false;
		}

		// should have at-least one {dot} after @, (but not directly after @)
		if (str.indexOf(dot,(lat+2))==-1){
			return false;
		}


		//      ' chk each char for validity
		//      for i = 1 to len(eMail)
		//        if  not isnumeric(mid(eMail,i,1)) and _
		//		(lcase(mid(eMail,i,1)) < "a" or _
		//		lcase(mid(eMail,i,1)) > "z") and _
		//	mid(eMail,i,1) <> "_" and _
		//		mid(eMail,i,1) <> "." and _
		//		mid(eMail,i,1) <> "@" and _
		//		mid(eMail,i,1) <> "-" then
		//            chkEmail = 1
		//        end if
		//      next
		
 		return true;
	}

	
	
