function ChangeDateVal(idval,dayval,monthval,yearval){
	setInputValue(document.getElementById(idval.substr(0,idval.length - '_CALENDAR'.length)+'_DD'),dayval);
	setInputValue(document.getElementById(idval.substr(0,idval.length - '_CALENDAR'.length)+'_MM'),monthval);
	setInputValue(document.getElementById(idval.substr(0,idval.length - '_CALENDAR'.length)+'_YY'),yearval);
}

function ChangeDateCalendar(idval){
	if(document.getElementById(idval + '_YY').value == '' || document.getElementById(idval + '_MM').value == '' || document.getElementById(idval + '_DD').value == '' || !IsDate(document.getElementById(idval + '_YY').value+document.getElementById(idval + '_MM').value+document.getElementById(idval + '_DD').value)){
		setInputValue(document.getElementById(idval +'_CALENDAR'),'');
	}else{
		setInputValue(document.getElementById(idval +'_CALENDAR'),document.getElementById(idval + '_DD').value + '/' + document.getElementById(idval + '_MM').value + '/' + document.getElementById(idval + '_YY').value);
	}   
}

function removeUpload(selItem) {
        document.getElementById(selItem + 'div').innerHTML = '';
        document.getElementById(selItem).value = '';
        if(document.getElementById(selItem + 'add')){document.getElementById(selItem + 'add').style.display = '';}
        if(document.getElementById(selItem + 'replace')){document.getElementById(selItem + 'replace').style.display = 'none';}
        if(document.getElementById(selItem + 'delete')){document.getElementById(selItem + 'delete').style.display = 'none';}
 }
 
function getEditorValue( instanceName ) {
    var returnValue = 0;
    try {
        // Get the editor instance that we want to interact with.
        var oEditor = FCKeditorAPI.GetInstance( instanceName ) ;

        // Get the editor contents as XHTML.
        var oEditorValue = oEditor.GetXHTML( true ) ; // "true" means you want it formatted.
        
        // get length
        returnValue = oEditorValue;
    } catch(e) {
        //do nothing
    }
    
    return returnValue;
}

function setFocus(object) {
    try {
        var objtype = '';        
        if (object[0] && object.type != 'select-one' && object.type != 'select-multiple') { objtype = object[0].type; } else { objtype = object.type; }
        switch(objtype){
	        case 'radio': case 'checkbox':
        	    if (object[0]) {
                    if (object[0].disabled != true) {
                        object[0].focus();
                    }        
                }
                break;
	        case 'text': case 'textarea': case 'password': 
	            if (object) {
                    if (object.disabled != true) {
                        object.select();
                        object.focus();
                    }
                }
                break;
	        case 'select-one': case 'select-multiple': 
	            if (object) {
                    if (object.disabled != true) {
                        object.focus();
                    }
                }
		        break;
            default:
                if (object) {
                    if (object.disabled != true) {
                        object.focus();
                    }
                }
        }
    } catch(e) {
        //alert(e);// do nothing
    }
}

function isValidPhone(sText) {
    var stripped = sText.replace(/[\(\)\.\-\ ]/g, '');    
    if (stripped == '') {
        return false;        //error = 'You didn't enter a phone number.\n';
    }    
    if (isNaN(parseInt(stripped))) {
        return false;        //error = 'The phone number contains illegal characters.\n';
    }
    if (!(stripped.length == 10)) {
        return false;        //error = 'The phone number is the wrong length. Make sure you included an area code.\n';
    }
    return true;
}

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 == 0) { return true; }
  if (dateStr.length != 8) { return false; }

  // parse date into variables
  day = dateStr.substring(6,8);
  month = dateStr.substring(4,6);
  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 microsoftEscapeCloseWindow(event) { 
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 27) {
	window.close();
}
 }

function checkemail(emailadress){
	if(emailadress != ''){
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		return filter.test(emailadress);
	}else{
		return true;
	}
}

function addZero(vNumber){ 
    return ((vNumber < 10) ? "0" : "") + vNumber 
} 
function formatDate(vDate, vFormat){ 
  	var vDay		= addZero(vDate.getDate()); 
	if (isNaN(vDay)) { return ''; }
	var vMonth		= addZero(vDate.getMonth()+1); 
	var vYearLong	= addZero(vDate.getFullYear()); 
	var vYearShort	= addZero(vDate.getFullYear().toString().substring(3,4)); 
	var vYear	= (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
	var vHour	= addZero(vDate.getHours()); 
	var vMinute	= addZero(vDate.getMinutes()); 
	var vSecond	= addZero(vDate.getSeconds()); 
	var vDateString	= vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
	vDateString	= vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
	return vDateString;
} 
function simpleDateCompare(dayPA,monthPA,yearPA,dayT,monthT,yearT){
	var days = 0;
	d1 = new Date(yearPA,monthPA,dayPA);
	d2 = new Date(yearT,monthT,dayT);
	if (d1.getTime()<=d2.getTime()) {
  		days = -1;
	}
	else {
		days = 1;
	}
	return days;
}


function openpopup(url){
	var myHeight = 800;
	var myWidth = 1100;
	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' ;
	var win = window.open(url,'popupwindow',lookParam);
	win.focus();
}

function openpopupwithdimensions(url,myWidth,myHeight){
	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+',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no' ;
	var win = window.open(url,'popupwindow',lookParam);
	win.focus();
}

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=no,toolbar=no,location=no,status=no,resizable=yes' ;
	var win = window.open(url,'popupwindow2',lookParam);
	win.focus();
}

function openpopupinpopup(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' ;
	var win = window.open(url,'popupwindowinpopup',lookParam);
	win.focus();
}
function openpopuporg(url){
	var myHeight = 300;
	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' ;
	var win = window.open(url,'popupwindoworg',lookParam);
	win.focus();
}
function closeandnewpage(url){
	opener.location.href = url;
	self.close();
}


function checkcontrol(myControl){
		alert('do not use checkcontrol, use getInputValue instead');
		var retvalue = false;
		for (counter = 0; counter < myControl.length; counter++){
			if (myControl[counter].checked){
				retvalue = true;
			}
		}
		return retvalue;
}

function checkselect(myControl) {
    var retvalue = false;
    if (myControl) {
        if (myControl.options[myControl.selectedIndex].value != '') {
            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;
}

//checkmaxfloatvalue
function largerthanmaxfloatvalue (sMyVal, sMaxVal) 
{
    if(IsFloat(sMyVal)){
        if ( parseFloat(sMyVal) > parseFloat(sMaxVal) ) {
            return true;
        }
    }
    return false;
}

//hide select on page
function showhideSelects(status){
    if(navigator.appName == 'Microsoft Internet Explorer'){
        version=0
        if (navigator.appVersion.indexOf("MSIE")!=-1){
        temp=navigator.appVersion.split("MSIE")
        version=parseFloat(temp[1])
        }
        if (version<=6.9){
            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';
              }
           }
        }
    }
}

//freezePane javascript
function FreezeScreen (msg) 
{
  showhideSelects(false);
  scroll(0,0);
  var outerPane = document.getElementById('FreezePane');
  var innerPane = document.getElementById('InnerFreezePane');
  if (outerPane) outerPane.className = 'FreezePaneOn';
  if (innerPane) innerPane.innerHTML = msg;
}
//UNfreezePane javascript
function UnFreezeScreen () 
{
  showhideSelects(true);
  var outerPane = document.getElementById('FreezePane');
  var innerPane = document.getElementById('InnerFreezePane');
  if (outerPane) outerPane.className = 'FreezePaneOff';  
}

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';
				}
				
			}
		}
	}
}
//clear (multiple) radio buttons
function clearRadioButtons (buttonGroup) {					            
    for (i=0; i < buttonGroup.length; i++) {
        if (buttonGroup[i].checked == true) {
            buttonGroup[i].checked = false
        }
    } 
}

function controlcheckboxhasvalueselected(myControl,mySearchValue){
	var retvalue = '';
	for (counter = 0; counter < myControl.length; counter++){
		if (myControl[counter].checked && myControl[counter].value == mySearchValue) {
		  return true;  
		}
	}
	return false;
}
//syntax use: inArray(array, 'value');
function inArray(haystack,needle) 
{
    for (var i in haystack) { if (haystack[i] == needle) return true; }
    return false;
}

function getcontrolArrayAllValues(myControl){
		var retvalues = new Array();
		for (counter = 0; counter < myControl.length; counter++) { retvalues.push(myControl[counter].value); }
		return retvalues;
}
function getcontrolArrayAllSelectedValues(myControl){
		var retvalues = new Array();
		for (counter = 0; counter < myControl.length; counter++) { 
		    if (myControl[counter].checked){
		        retvalues.push(myControl[counter].value); 
		    }
		}
		return retvalues;
}
function getcontrolselectedvalue(myControl){
		var retvalue = '';
		for (counter = 0; counter < myControl.length; counter++){
			if (myControl[counter].checked){
				retvalue = myControl[counter].value;
			}
		}
		return retvalue;
}

function controlcheckboxhasvalueselected(myControl,mySearchValue){
		var retvalue = '';
		for (counter = 0; counter < myControl.length; counter++){
			if (myControl[counter].checked && myControl[counter].value == mySearchValue) {
			  return true;  
			}
		}
		return false;
}

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 showPanel(tab, name){
    if (selectedTab) {
        selectedTab.style.backgroundColor = '';
        selectedTab.style.paddingTop = '';
        selectedTab.style.paddingBottom = '';
    }
    selectedTab = tab;
    selectedTab.style.backgroundColor = 'black';
    for(i = 0; i < panels.length; i++){
        if( document.getElementById(panels[i])) {
			document.getElementById(panels[i]).style.display = (name == panels[i]) ? 'block':'none';
			document.getElementById('tab'+panels[i]).className = (name == panels[i]) ? 'tab_active':'';
		}
    }
    return false;
}

function showhideelement(myControl){
	myControl.style.visibility == 'hidden' ? myControl.style.visibility = '' : myControl.style.visibility = 'hidden'
}
function selectallmassmail(myCheckbox){

	for(j=0;j<document.forms.length;j++){
		if(document.forms[j].name == 'AspGridFormHeader1'){
			if(myCheckbox.checked){
				document.forms[j].massmailcdkidmultiple.value = listallcdkid;
			}else{
				document.forms[j].massmailcdkidmultiple.value = ';';
			}
			
			//make sure the check is "saved" when the user sorts the grid
			
			for(i=0;i<document.forms.length;i++){
				if(document.forms[i].name == 'AspGridFormHeader1' || document.forms[i].name == 'AspGridFormFooter1' || document.forms[i].name == 'gridnavform'){
					document.forms[i].massmailcdkidmultiple.value = document.forms[j].massmailcdkidmultiple.value;
				}
			}
		}
		if(document.forms[j].massmailcheck){
			document.forms[j].massmailcheck.checked = myCheckbox.checked;
		}
	}
	
}
//look for a place to store the "main" massmailcdkidmultiple variable
function appendcdkid(myForm){    
	for(j=0;j<document.forms.length;j++){
		//add or remove the cdkid from the "massmailcdkidmultiple"-list
		if(document.forms[j].name == 'AspGridFormHeader1'){
			if(myForm.massmailcheck.checked){
				if (document.forms[j].massmailcdkidmultiple.value == ''){
					document.forms[j].massmailcdkidmultiple.value = ';'
				}
				document.forms[j].massmailcdkidmultiple.value += myForm.massmailcdkid.value + ';';
				//make sure the check is "saved" when the user sorts the grid
				for(i =0;i<document.forms.length;i++){
					if(document.forms[j].name == 'AspGridFormHeader1' || document.forms[j].name == 'AspGridFormFooter1' || document.forms[i].name == 'gridnavform'){
						document.forms[i].massmailcdkidmultiple.value = document.forms[j].massmailcdkidmultiple.value;
					}
				}
				if(listallcdkid.length == document.forms[j].massmailcdkidmultiple.value.length){
					document.getElementById('selectallmassmail').checked = true;
				}
			}else{
				document.forms[j].massmailcdkidmultiple.value = document.forms[j].massmailcdkidmultiple.value.replace(';'+myForm.massmailcdkid.value +';',';');
				//make sure the check is "saved" when the user sorts the grid
				for(i=0;i<document.forms.length;i++){
					if(document.forms[i].name == 'AspGridFormHeader1' || document.forms[i].name == 'AspGridFormFooter1' || document.forms[i].name == 'gridnavform'){
						document.forms[i].massmailcdkidmultiple.value = document.forms[j].massmailcdkidmultiple.value;
					}
				}
				document.getElementById('selectallmassmail').checked = false;
			}
			
			j = document.forms.length + 1;
		}
	}
}

//-------------------------------------------------------------------
// 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) {
    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 -------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------


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;
		}
	}
}

function setnamemultipleitems(elementnametosearch,elementnametoset) {
    var elements = document.getElementsByTagName('input');
    
	for (var i=0;i< elements.length;i++){
		if (elements[i].name == elementnametosearch) { 
		    elements[i].name = elementnametoset; 
		}
	}
}

//add option to select
function addOption(selectbox,svalue,stext,sselectedvalue)
{
//    if ( !(inArray(selectbox.options,svalue)) ) {
      if ( !(inArray(getcontrolArrayAllValues(selectbox),svalue)) ) {
        var optn = document.createElement("option");
        optn.text = stext;
        optn.value = svalue;
        if (svalue == sselectedvalue) { optn.selected = true; }
        selectbox.options.add(optn);
    }
}

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();
    
    //empty select
    while (selectBox.length > 1) {
		selectBox.options[selectBox.length-1] = null;
		//selectBox.removeChild(selectBox.childNodes[0])
	}

    var idAddother = 0;
    
    //add options again from array, without OTHER
    for (j = 0; j < selectArray.length - 1; j++) {
        if(selectArray[j][1] != 'OTHER') {
            addOption(selectBox, selectArray[j][1], selectArray[j][0], selVal);
        } else {
            idAddother = j;
        }
    }
    
    //add other?
    if (idAddother != 0){
        addOption(selectBox, selectArray[idAddother][1], selectArray[idAddother][0], selVal);
    }
    
    //IE6 fix
    setInputValue(selectBox,selVal);
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

function needspecify(obj, value){
	var name;
	if(obj.name){
		name = obj.name;
	}else{
		name = obj[0].name;
	}
	var test;
	if(value){
		if(isArray(obj) && (typeof(obj.type)=="undefined")){
			var selValues = getInputValue(document.getElementsByName(name)).split(',');
			test = true;
			for(i=0;i<selValues.length;i++){
				if(selValues[i] == value){test=false;}
			}
		}else{
			test = getInputValue(obj) != value;
		}
	}else{
		test = getInputValue(obj) == '';
	}
	if(test){
		//clearing control(s) that will be hidden
		setdisplaytrformitem(document.getElementById(name + 'ID'), 'none');
	}else{
		setdisplaytrformitem(document.getElementById(name + 'ID'), '');
	}
}//needspecify


function backButtonOverride()
{
  // Work around a Safari bug
  // that sometimes produces a blank page
  setTimeout("backButtonOverrideBody()", 1);

}

function backButtonOverrideBody()
{
  // Works if we backed up to get here
  try {
    history.forward();
  } catch (e) {
    // OK to ignore
  }
  // Every quarter-second, try again. The only
  // guaranteed method for Opera, Firefox,
  // and Safari, which don't always call
  // onLoad but *do* resume any timers when
  // returning to a page
  setTimeout("backButtonOverrideBody()", 0);
}

function numbersonly(myfield, e, dec)
{
	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;
	keychar = String.fromCharCode(key);

	// control keys
	if ((key==null) || (key==0) || (key==8) || 
		(key==9) || (key==13) || (key==27) )
	   return true;

	// numbers
	else if ((("123456789").indexOf(keychar) > -1))
	   return true;

	// decimal point jump
	else if (dec && (keychar == "."))
	   {
	   myfield.form.elements[dec].focus();
	   return false;
	   }
	else
	   return false;
}


