
function removespace(s){
   var result;
   result = "";
   for (var i=0; i<s.length; i++){
      if (s.charAt(i) != ' '){
         result += s.charAt(i);
      }
   }
   return result;
}

function isRadioChecked(Opt1){
  if (Opt1.length){
     for (i=0; i<Opt1.length; i++) {
        if (Opt1[i].checked) {
           return true;
        }
     }
  } else {
	  if (Opt1.checked){
		  return true;
	  }
  }
  return false;
}

function isListSelected(Opt1){
	for (i=0;i<Opt1.length;i++){
		if (Opt1[i].selected){
			return true;
		}
	}
  return false;
}

function listSelectedItems(Opt){
   items="";
  if (Opt.length) {
    for (i=0; i<Opt.length; i++) {
      if (Opt[i].checked) {
          items = items + Opt[i].value + "\n";
      }
    }
    return items;
  } else {
    if (Opt.checked) {
        return Opt.value;
    } else {
        return "";
    }
  }
}



function isMultiSelected(Opt){
  n=0;
  for (i=0; i<Opt.length; i++) {
      if (Opt[i].selected) {
        n=n+1;
        if (n>=2){
           return true;
        }
      }
  }
  return false;
}

function getRadioValue(Opt){
  for (i=0; i<Opt.length; i++) {
      if (Opt[i].checked) {
          return Opt[i].value;
      }
  }
  return "";
}

function getCheckValue(Opt){
  result = "";
  for (i=0; i<Opt.length; i++) {
      if (Opt[i].checked) {
          result = result + Opt[i].value + ",";
      }
  }
  if (!(result=="")){
	  result=left(result,result.length-1);
  }
  return result;
}

function getSelectValue(Opt){
  v = "";
  for (i=0; i<Opt.options.length; i++) {
      if (Opt.options[i].selected) {
           v = v + Opt.options[i].value + ", ";
      }
  }
  return left(v,v.length-2);
}

function setSelectValue(Opt,v){
  for (i=0; i<Opt.options.length; i++) {
      if (Opt.options[i].value==v) {
          Opt.selectedIndex =i;
		  break;
      }
  }
}



function round(number,X) {
// rounds number to X decimal places, defaults to 2
    X = (!X ? 2 : X);
    return Math.round(number*Math.pow(10,X))/Math.round(Math.pow(10,X));
}



function isInteger(x) {
 if (parseInt(x) != x) {
    return false;
 } else {
	 return true;
 }
}

function isPositiveInteger(x) {
 if (parseInt(x) != x) {
    return false;
 } else {
	 if (parseInt(x)>0){
		 return true;
	 } else {
		 return false;
	 }
 }
}

function isPositiveNumber(x) {
	if (isNaN(x)){
		return false;
	} else if (parseFloat(x)>0){
		return true;
	} else {
		return false;
	}
}

function isNotNegativeNumber(x) {
	if (isNaN(x)){
		return false;
	} else if (parseFloat(x)>=0){
		return true;
	} else {
		return false;
	}
}

   function maskDecimal(value,decimal_place){
	   var p = value.indexOf(".");
	   var L = value.length;
	   var result = value;
	   if (p<=(L-1-decimal_place) && p>=0){
		  result = left(value,p+decimal_place+1);
	   }
	   return result;
   }

function isValidDate(dtStr){
	var dtCh= "/";
	var minYear=1900;
	var maxYear=2100;
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=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)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false
	}
return true
}

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 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 MonthName2Num(strMonth){
    var MonthName = new Array;
    MonthName[1] = "jan";
    MonthName[2] = "feb";
    MonthName[3] = "mar";
    MonthName[4] = "apr";
    MonthName[5] = "may";
    MonthName[6] = "jun";
    MonthName[7] = "jul";
    MonthName[8] = "aug";
    MonthName[9] = "sep";
    MonthName[10] = "oct";
    MonthName[11] = "nov";
    MonthName[12] = "dec";
    for (i=1;i<13;i++){
       if (strMonth.substring(0,3).toLowerCase()==MonthName[i]){
          return i;
          break;
       }
    }
    return 0;
}


function Num2Monthname(iMonth){
    var MonthName = new Array;
    MonthName[1] = "January";
    MonthName[2] = "February";
    MonthName[3] = "March";
    MonthName[4] = "April";
    MonthName[5] = "May";
    MonthName[6] = "June";
    MonthName[7] = "July";
    MonthName[8] = "August";
    MonthName[9] = "September";
    MonthName[10] = "October";
    MonthName[11] = "November";
    MonthName[12] = "December";
    return MonthName[iMonth];
}


function BeforeToday(Y,M,D){

    Now = new Date();
    yT = Now.getUTCFullYear();
    mT = Now.getUTCMonth() + 1;
    dT = Now.getUTCDate();

    Today = yT + right("0"+mT,2) + right("0"+dT,2);
    InDate1 = Y + right("0"+M,2)+right("0"+D,2);

    if (Number(InDate1)<Number(Today)){
       return true;
    }else {
       return false;
    }
}

function padout(number) { return (number < 10) ? '0' + number : number; }

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function DateDiff(start, end,  interval, wholedays ) {
    var iOut = 0;
	var dateArrayA = start.split('-');
	var dateArrayB = end.split('-');
    startdate = new Date(dateArrayA[2],dateArrayA[1]-1,dateArrayA[0]);
    enddate = new Date(dateArrayB[2],dateArrayB[1]-1,dateArrayB[0]);

	 bufferA  = Date.UTC(y2k(startdate.getYear()),startdate.getMonth(),startdate.getDate(),0,0,0);
	 bufferB  = Date.UTC(y2k(enddate.getYear()),enddate.getMonth(),enddate.getDate(),0,0,0);

   // var bufferA = Date.parse( start ) ;
    //var bufferB = Date.parse( end ) ;
    	
    // check that the start parameter is a valid Date. 
    if ( isNaN (bufferA) || isNaN (bufferB) ) {
        return null ;
    }
	
    // check that an interval parameter was not numeric. 
    if ( interval.charAt == 'undefined' ) {
        // the user specified an incorrect interval, handle the error. 
        return null ;
    }
    var number = bufferB-bufferA ;
    // what kind of add to do? 
    switch (interval.charAt(0))
    {
        case 'd': case 'D': 
            iOut = parseInt(number / 86400000) ;
            if(wholedays) iOut += parseInt((number % 86400000)/43200001) ;
            break ;
        case 'h': case 'H':
            iOut = parseInt(number / 3600000 ) ;
            if(wholedays) iOut += parseInt((number % 3600000)/1800001) ;
            break ;
        case 'm': case 'M':
            iOut = parseInt(number / 60000 ) ;
            if(wholedays) iOut += parseInt((number % 60000)/30001) ;
            break ;
        case 's': case 'S':
            iOut = parseInt(number / 1000 ) ;
            if(wholedays) iOut += parseInt((number % 1000)/501) ;
            break ;
        default:
        return null ;
    }
    
    return iOut ;
}


function right(inString,iLength){
   return (inString.substr(inString.length-iLength,iLength));
}

function left(inString,iLength){
   return (inString.substr(0,iLength));
}


function openwin(url,w,h){
 window.open(url,'win','width='+w+',height='+h+',scrollbars=no,menubar=no,resizable=no');
}

function openwin1(url,w,h){
 window.open(url,'win1','width='+w+',height='+h+',scrollbars=no,menubar=no,resizable=no');
}

function openwin2(url,w,h){
	window.open(url,'win2','width='+w+',height='+h+',scrollbars=yes,menubar=no,resizable=yes');
}

function openwin21(url,w,h){
	window.open(url,'win21','width='+w+',height='+h+',scrollbars=yes,menubar=no,resizable=yes');
}

function openwin3(url,w,h){
	window.open(url,'win3','width='+w+',height='+h+',toolbar=yes,scrollbars=yes,menubar=yes,resizable=yes');
}

function openwin4(url,w,h){
	window.open(url,'win4','width='+w+',height='+h+',scrollbars=yes,menubar=yes,resizable=yes,status=yes');
}


function openwin5(url,w,h){
	window.open(url,'win5','width='+w+',height='+h+',toolbar=yes,scrollbars=yes,location=yes,menubar=yes,resizable=yes,status=yes');
}

function openwin14(url,w,h){
	window.open(url,'win14','width='+w+',height='+h+',scrollbars=yes,menubar=yes,resizable=yes,status=yes');
}

function isValidEmail(emailStr) {
         emailStr=emailStr.toLowerCase();
		/* The following variable tells the rest of the function whether or not
		to verify that the address ends in a two-letter country or well-known
		TLD.  1 means check it, 0 means don't. */

		var checkTLD=1;

		/* The following is the list of known TLDs that an e-mail address must end with. */

		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

		/* The following pattern is used to check if the entered e-mail address
		fits the user@domain format.  It also is used to separate the username
		from the domain. */

		var emailPat=/^(.+)@(.+)$/;

		/* The following string represents the pattern for matching all special
		characters.  We don't want to allow special characters in the address. 
		These characters include ( ) < > @ , ; : \ " . [ ] */

		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

		/* The following string represents the range of characters allowed in a 
		username or domainname.  It really states which chars aren't allowed.*/

		var validChars="\[^\\s" + specialChars + "\]";

		/* The following pattern applies if the "user" is a quoted string (in
		which case, there are no rules about which characters are allowed
		and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
		is a legal e-mail address. */

		var quotedUser="(\"[^\"]*\")";

		/* The following pattern applies for domains that are IP addresses,
		rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
		e-mail address. NOTE: The square brackets are required. */

		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

		/* The following string represents an atom (basically a series of non-special characters.) */

		var atom=validChars + '+';

		/* The following string represents one word in the typical username.
		For example, in john.doe@somewhere.com, john and doe are words.
		Basically, a word is either an atom or quoted string. */

		var word="(" + atom + "|" + quotedUser + ")";

		// The following pattern describes the structure of the user

		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

		/* The following pattern describes the structure of a normal symbolic
		domain, as opposed to ipDomainPat, shown above. */

		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

		/* Finally, let's start trying to figure out if the supplied address is valid. */

		/* 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("Email address seems incorrect (check @ and .'s)");
		return false;
		}
		var user=matchArray[1];
		var domain=matchArray[2];

		// Start by checking that only basic ASCII characters are in the strings (0-127).

		for (i=0; i<user.length; i++) {
			if (user.charCodeAt(i)>127) {
				//alert("Ths username contains invalid characters.");
				return false;
			}
		}
		for (i=0; i<domain.length; i++) {
			if (domain.charCodeAt(i)>127) {
				//alert("Ths domain name contains invalid characters.");
				return false;
			}
		}

		// See if "user" is valid 

		if (user.match(userPat)==null) {
			// user is not valid
			//alert("The username does not 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("Destination IP address is invalid!");
					return false;
				}
			}
			return true;
		}

		// Domain is symbolic name.  Check if it's valid.
 
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) {
			if (domArr[i].search(atomPat)==-1) {
				//alert("The domain name does not seem to be valid.");
				return false;
			}
		}

		/* domain name seems valid, but now make sure that it ends in a
		known top-level domain (like com, edu, gov) or a two-letter word,
		representing country (uk, nl), and that there's a hostname preceding 
		the domain or country. */

		if (checkTLD && domArr[domArr.length-1].length!=2 && 
			domArr[domArr.length-1].search(knownDomsPat)==-1) {
			//alert("The address must end in a well-known domain or two letter " + "country.");
			return false;
		}

		// Make sure there's a host name preceding the domain.

		if (len<2) {
			//alert("This e-mail address is missing a hostname!");
			return false;
		}

		// If we have gotten this far, everything's valid!
		return true;
}
