function IsNumeric(sText){
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
	var i;
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
	Char = sText.charAt(i); 
	if (ValidChars.indexOf(Char) == -1) 
	{IsNumber = false;}
	}
	return IsNumber;
}

// ********************************************************
// 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 IsDate(dateStr) {

  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
  var matchArray = dateStr.match(datePat); // is format OK?
  if (dateStr.length = 2) {
    return true;
  }
  if (matchArray == null) {
    return false;
  }
  // parse date into variables
  day = matchArray[1];
  month = matchArray[3];
  year = matchArray[5];

  if (month < 1 || month > 12) { // check month range
    return false;
  }

  if (day < 1 || day > 31) {
    return false;
  }

  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    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)) {
      return false;
    }
  }
  return true;  // date is valid
}

function IsDate2(dateStr) {

  //var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
  //var matchArray = dateStr.match(datePat); // is format OK?

  if (dateStr.length != 8) {
    return false;
  }

  // parse date into variables
  //day = parseInt(dateStr.substring(6,8));
  day = dateStr.substring(6,8);
  //month = parseInt(dateStr.substring(4,6));
  month = dateStr.substring(4,6);
  //year = parseInt(dateStr.substring(0,4));
  year = dateStr.substring(0,4);
  if (month < 1 || month > 12) { // check month range
    return false;
  }

  if (day < 1 || day > 31) {
    return false;
  }

  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    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)) {
      return false;
    }
  }
  return true;  // date is valid
}

function checkemail(emailadress){
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	return filter.test(emailadress);
}

function openpopup(url){
	var myHeight = 580;
	var myWidth = 780;
	var NScorrection = (document.layers) ? 35 : 0
	var centerTop  = (screen.availHeight - myHeight)/2 ;
	var centerLeft = (screen.availWidth - myWidth)/2 - NScorrection ;		
	var lookParam  = 'top='+centerTop+',screenY='+centerTop+',left='+centerLeft+',screenX='+centerTop+',width='+myWidth+',innerWidth='+myWidth+',height='+myHeight+',innerHeight='+myHeight+',scrollbars=no,toolbar=no,location=no,status=no,resizable=yes' ;
	window.open(url,'popupwindow',lookParam);
}

function openpopup2(url){
	var myHeight = 580;
	var myWidth = 780;
	var NScorrection = (document.layers) ? 35 : 0
	var centerTop  = (screen.availHeight - myHeight)/2 ;
	var centerLeft = (screen.availWidth - myWidth)/2 - NScorrection ;		
	var lookParam  = 'top='+centerTop+',screenY='+centerTop+',left='+centerLeft+',screenX='+centerTop+',width='+myWidth+',innerWidth='+myWidth+',height='+myHeight+',innerHeight='+myHeight+',scrollbars=yes,toolbar=no,location=no,status=no,resizable=yes' ;
	window.open(url,'popupwindow',lookParam);
}

function UrlExec(sUrl){
opener.location.href = sUrl;
window.close();
}

function microsoftEscapeCloseWindow() {
	if (window.event.keyCode == 27) {window.close();}
		
}

function simpleDateCompare(dayPA,monthPA,yearPA,dayT,monthT,yearT){
	var days = 0;
	var difference = 0;
	
	_datePA = new Date();
	_datePA.setMonth(monthPA);
	_datePA.setDate(dayPA);
	_datePA.setYear(yearPA);
	
	today = new Date();
	today.setMonth(monthT);
	today.setDate(dayT);
	today.setYear(yearT);
	
	difference = _datePA - today;
	days = Math.round(difference/(1000*60*60*24));
	//alert(days);
	return days;
}
function checkcontrol(myControl){
		var retvalue = false;
		for (counter = 0; counter < myControl.length; counter++){
			if (myControl[counter].checked){
				retvalue = true;
			}
		}
		return retvalue;
}

function IsFloat (s)

{   var i;
    var seenDecimalPoint = false;
	var decimalPointDelimiter = '.';
	var decimalPointDelimiter2 = ',';

    if (s == decimalPointDelimiter || s == decimalPointDelimiter2 ) return false;

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter || c == decimalPointDelimiter2) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!IsNumeric(c)) return false;
    }

    // All characters are numbers.
    return true;
}

function AreYouSure(sMessage,URL) {
   if(confirm(sMessage)) {location.href=URL;}
}

function setdisplaytrformitem(elementtoswitch,displaystyle){
	if(displaystyle == 'none'){
		var elements = elementtoswitch.getElementsByTagName('input');
		for (var i=0;i< elements.length;i++){
			elements[i].style.display = displaystyle;
			elements[i].disabled = true;
			setInputValue(elements[i],'');
		}
		elements = elementtoswitch.getElementsByTagName('select');
		for (i=0;i< elements.length;i++){
			elements[i].style.display = displaystyle;
			elements[i].disabled = true;
			setInputValue(elements[i],'');
		}
		elementtoswitch.style.display = displaystyle;
		
		elements = elementtoswitch.getElementsByTagName('textarea');
		for (i=0;i< elements.length;i++){
			elements[i].style.display = displaystyle;
			elements[i].disabled = true;
			setInputValue(elements[i],'');
		}
		elementtoswitch.style.display = displaystyle;		
	}else{
		elementtoswitch.style.display = displaystyle;
		var elements = elementtoswitch.getElementsByTagName('input');
		for (var i=0;i< elements.length;i++){
			elements[i].disabled = false;
			elements[i].style.display = displaystyle;
		}
		elements = elementtoswitch.getElementsByTagName('select');
		for (i=0;i< elements.length;i++){
			elements[i].disabled = false;
			elements[i].style.display = displaystyle;
		}
		
		elements = elementtoswitch.getElementsByTagName('textarea');
		for (i=0;i< elements.length;i++){
			elements[i].disabled = false;
			elements[i].style.display = displaystyle;
		}
	}
}

//hide select on page
function showhideSelects(status){
   var elements = document.getElementsByTagName("select");
   for (i=0;i< elements.length;i++){
      if (status) {
        elements[i].style.visibility='visible';
      } else {
        elements[i].style.visibility='hidden';
      }
   }
}

function setselvis(status){
	var i,j,selitem;
	for(i=0;i<document.forms.length;i++){
		for(j=0;j<document.forms[i].elements.length;j++){
			if(document.forms[i].elements[j].type == 'select-one'){
				selitem = document.forms[i].elements[j];
				if(status){
					selitem.style.visibility = '';
				}else{
					selitem.style.visibility = 'hidden';
				}
				
			}
		}
	}
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function showme(targetname) {
    if (document.getElementById(targetname)) { document.getElementById(targetname).style.visibility = ''; }
}
function hideme(targetname) {
    if (document.getElementById(targetname)) { document.getElementById(targetname).style.visibility = 'hidden'; }
}
function sortList(selectBox) {
    var selVal = selectBox.options[selectBox.selectedIndex].value;

    selectArray = new Array();
    for (i = 1; i < selectBox.length; i++) {
        selectArray[i] = new Array();
        selectArray[i][0] = selectBox.options[i].text;
        selectArray[i][1] = selectBox.options[i].value;
    }
    
    
    
    selectArray.sort();

    for (j = 0; j < selectBox.length - 1; j++) {
        selectBox.options[j+1].text = selectArray[j][0];
        selectBox.options[j+1].value = selectArray[j][1];
if (selectBox.options[j+1].value == selVal) { selectBox.options[j+1].selected = true; }
    }
}





//-------------------------------------------------------------------
// isArray(obj)
// Returns true if the object is an array, else false
//-------------------------------------------------------------------
function isArray(obj) { return (typeof (obj.length) == "undefined") ? false : true; }
//-------------------------------------------------------------------
// commifyArray(array[,delimiter])
//   Take an array of values and turn it into a comma-separated string
//   Pass an optional second argument to specify a delimiter other than
//   comma.
//-------------------------------------------------------------------
function commifyArray(obj, delimiter) {
    if (typeof (delimiter) == "undefined" || delimiter == null) { delimiter = ","; }
    var s = "";
    if (obj == null || obj.length <= 0) { return s; }
    for (var i = 0; i < obj.length; i++) { s = s + ((s == "") ? "" : delimiter) + obj[i].toString(); }
    return s;
}

//   GET the value of Date input field(s)
function getInputDate(sObjName) {
    var strDate = '';
    if (document.getElementById(sObjName + '_YY')) {
        if (document.getElementById(sObjName + '_MM')) {
            if (document.getElementById(sObjName + '_DD')) {
                strDate = document.getElementById(sObjName + '_YY').value;
                strDate += document.getElementById(sObjName + '_MM').value;
                strDate += document.getElementById(sObjName + '_DD').value;
                if (document.getElementById(sObjName + '_HH')) {
                    if (document.getElementById(sObjName + '_MIN')) {
                        strDate += ' ' + document.getElementById(sObjName + '_HH').value;
                        strDate += ':' + document.getElementById(sObjName + '_MIN').value;
                    }
                }
            }
        }
    }
    return strDate;
}
//   SET the value of Date input field(s)
function setInputDate(sObjName, dateStr) {
    if (dateStr.length == 0) {
        var sDay = '00';
        var sMonth = '00';
        var sYear = '1900';
        var sHour = '00';
        var sMinute = '00';
    } else {
        var sDay = dateStr.substring(6, 8);
        var sMonth = dateStr.substring(4, 6);
        var sYear = dateStr.substring(0, 4);
        if (dateStr.length == 14) {
            var sHour = dateStr.substring(9, 11);
            var sMinute = dateStr.substring(12, 14);
        }
    }
    //alert(sDay + '/' + sMonth + '/' + sYear + ' ' + sHour + ':' + sMinute);
    if (document.getElementById(sObjName + '_YY')) {
        if (document.getElementById(sObjName + '_MM')) {
            if (document.getElementById(sObjName + '_DD')) {
                setInputValue(document.getElementById(sObjName + '_YY'), sYear);
                setInputValue(document.getElementById(sObjName + '_MM'), sMonth);
                setInputValue(document.getElementById(sObjName + '_DD'), sDay);
                if (document.getElementById(sObjName + '_HH')) {
                    if (document.getElementById(sObjName + '_MIN')) {
                        setInputValue(document.getElementById(sObjName + '_HH'), sHour);
                        setInputValue(document.getElementById(sObjName + '_MIN'), sMinute);
                    }
                }
            }
        }
    }
}

//-------------------------------------------------------------------
// getInputValue(input_object[,delimiter])
//   Get the value of any form input field
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,reset,submit)
//-------------------------------------------------------------------
function getInputValue(obj, delimiter) {
    var use_default = (arguments.length > 2) ? arguments[2] : false;
    if (isArray(obj) && (typeof (obj.type) == "undefined")) {
        var values = new Array();
        for (var i = 0; i < obj.length; i++) {
            var v = getSingleInputValue(obj[i], use_default, delimiter);
            if (v != null) { values[values.length] = v; }
        }
        return commifyArray(values, delimiter);
    }
    return getSingleInputValue(obj, use_default, delimiter);
}
//-------------------------------------------------------------------
// setInputValue(obj,value)
//   Set the value of any form field. In cases where no matching value
//   is available (select, radio, etc) then no option will be selected
//   (Doesn't support input types: button,file,password,reset,submit)
//-------------------------------------------------------------------
function setInputValue(obj, value) {
    var use_default = (arguments.length > 1) ? arguments[1] : false;
    if (isArray(obj) && (typeof (obj.type) == "undefined")) {
        for (var i = 0; i < obj.length; i++) { setSingleInputValue(obj[i], value); }
    }
    else { setSingleInputValue(obj, value); }
}

//-------------------------------------------------------------------
//-- START ----------------------------------------------------------
//-- helper functions for getInputValue & setInputValue -------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// setSingleInputValue(input_object,value)
//   Utility function used by others
//-------------------------------------------------------------------
function setSingleInputValue(obj, value) {
    if (typeof (value) == "undefined" || value == null) {
        var arrValue = '';
    } else {
        var arrValue = value.split(', ');
    }
    switch (obj.type) {
        case 'radio': case 'checkbox':
            if (inArray(arrValue, obj.value)) {
                obj.checked = true; //return true;
            } else {
                obj.checked = false; //return false;
            }
            return true;
        case 'text': case 'hidden': case 'textarea': case 'password': obj.value = value; return true;
        case 'select-one': case 'select-multiple':
            var o = obj.options;
            for (var i = 0; i < o.length; i++) {
                if (inArray(arrValue, o[i].value)) {
                    o[i].selected = true;
                } else {
                    o[i].selected = false;
                }
            }
            return true;
    }

    alert("FATAL ERROR: Field type " + obj.type + " is not supported for this function");
    return false;
}
//-------------------------------------------------------------------
// getSingleInputValue(input_object,use_default,delimiter)
//   Utility function used by others
//-------------------------------------------------------------------
function getSingleInputValue(obj, use_default, delimiter) {
    switch (obj.type) {
        case 'radio': case 'checkbox': return (((use_default) ? obj.defaultChecked : obj.checked) ? obj.value : null);
        case 'text': case 'hidden': case 'textarea': return (use_default) ? obj.defaultValue : obj.value;
        case 'password': return ((use_default) ? null : obj.value);
        case 'select-one':
            if (obj.options == null) { return null; }
            if (use_default) {
                var o = obj.options;
                for (var i = 0; i < o.length; i++) { if (o[i].defaultSelected) { return o[i].value; } }
                return o[0].value;
            }
            if (obj.selectedIndex < 0) { return null; }
            return (obj.options.length > 0) ? obj.options[obj.selectedIndex].value : null;
        case 'select-multiple':
            if (obj.options == null) { return null; }
            var values = new Array();
            for (var i = 0; i < obj.options.length; i++) {
                if ((use_default && obj.options[i].defaultSelected) || (!use_default && obj.options[i].selected)) {
                    values[values.length] = obj.options[i].value;
                }
            }
            return (values.length == 0) ? null : commifyArray(values, delimiter);
    }
    alert("FATAL ERROR: Field type " + obj.type + " is not supported for this function");
    return null;
}
//-------------------------------------------------------------------
//-- /END -----------------------------------------------------------
//-- helper functions for getInputValue & setInputValue -------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------

//syntax use: inArray(array, 'value');
function inArray(haystack, needle) {
    for (var i in haystack) { if (haystack[i] == needle) return true; }
    return false;
}