	function isNumberKey(evt)
    {
       //var charCode = (evt.which) ? evt.which : event.keyCode
       var charCode = evt.which;
       if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;
       return true;
    }
    
    function respondToChange(event) {
  		var element = event.element();
  		test = element.readAttribute('readonly');
  		//if(!test){
  		if(1){
  			param=element.readAttribute('param');
  			idstr = element.id;
  			matches = idstr.match(/_([0-9]+)_/);
  			itemid = matches[1];
  			itemclass='.item_'+itemid;
  			totalid = 'total_'+itemid;
  			allocatedid = 'allocated_'+itemid;
  			remainingid = 'remaining_'+itemid;
  			allocated = 0;
  			if(param.length){
  				totalmatch = param.match(/total:([\d]*)#/);
  				minmatch = param.match(/min:([\d]*)#/);
  				maxmatch = param.match(/max:([\d]*)#/);
  				tmptotal=totalmatch[1];
  				tmpmin= minmatch ? minmatch[1] : false;
  				tmpmax= maxmatch ? maxmatch[1] : false;
  				tmpval = element.value;
  				newval = tmpval;
  				if(parseInt(tmpval) < parseInt(tmpmin)){
  					newval=parseInt(tmpmin);
  				}
  				if(parseInt(tmpval) > parseInt(tmpmax)){
  					newval=parseInt(tmpmax);
  				}
  				if(parseInt(tmpval) > parseInt(tmptotal)){
  					newval=parseInt(tmptotal);
  				}
  				element.setValue(newval);
  			}
  			$$(itemclass).each(function(item){
  				tmpval = parseInt(item.value);
  				valuse = isNaN(tmpval) ? 0 : tmpval ;
  				allocated = parseInt(allocated) + valuse;
  			});
  			total = $(totalid).innerHTML;
  			$(allocatedid).innerHTML=allocated;
  			remaining = parseInt(total) - parseInt(allocated);
  			$(remainingid).innerHTML=remaining;
  		}
	}
	function isdefined( variable)
	{
	    return (typeof(window[variable]) == "undefined")?  false: true;
	}
	
	function isArray(obj) {
	   if (obj.constructor.toString().indexOf("Array") == -1)
	      return false;
	   else
	      return true;
	}
	
	function futureonly(date) {
		today=new Date();
		if(date<today){
			return true;
		} else {
			return false;
		}
	}
	
	function weekdayadmin(date){
		//return true to disable
		//return false to enable
		return false;
	}
	
	function weekdayonly(date) {
		today=new Date();
		if(date<today){
			return true;
		} else {
			if (date.getDay() == 0 || date.getDay() == 6) {
		 	return true; // true says "disable"
		 	} else {
		 	return false; // leave other dates enabled
			}
		}
	}
	
	function forward10(date) {
		today=new Date();
		tmp = today.getTime();
		tendays = 9 * 24 * 60 * 60 * 1000;
		newstamp = tmp + tendays;
		newtoday = new Date(newstamp);
		
		if(date<newtoday){
			return true;
		} else {
			if (date.getDay() == 0 || date.getDay() == 6) {
		 	return true; // true says "disable"
		 	} else {
		 	return false; // leave other dates enabled
			}
		}
	}
	
	function fireEvent(element,event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
    
}

function intval( mixed_var, base ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: stensi
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: intval('Kevin van Zonneveld');
    // *     returns 1: 0
    // *     example 2: intval(4.2);
    // *     returns 2: 4
    // *     example 3: intval(42, 8);
    // *     returns 3: 42
    // *     example 4: intval('09');
    // *     returns 4: 9
 
    var tmp;
 
    var type = typeof( mixed_var );
 
    if(type == 'boolean'){
        if (mixed_var == true) {
            return 1;
        } else {
            return 0;
        }
    } else if(type == 'string'){
        tmp = parseInt(mixed_var * 1, 10);
        if(isNaN(tmp) || !isFinite(tmp)){
            return 0;
        } else{
            return tmp.toString(base || 10);
        }
    } else if(type == 'number' && isFinite(mixed_var) ){
        return Math.floor(mixed_var);
    } else{
        return 0;
    }
}

function boxcheck(classname, flag, downflag)
{
	//1 - turn all to on
	//0 - turn all to off
	//2 - swap
	//dot = skipdot ? '' : '.' ;
	$$('.' + classname).each(function(e2){
		if(downflag)
		{
			e = e2.down('input');
		} else {
			e = e2;
		}
		
		checkval = e.checked;
		switch(flag)
		{
			case 0:
				e.checked=false;
				if(checkval && e.onchange) e.onchange();
				break;
			case 1:
				e.checked=true;
				if(!checkval && e.onchange) e.onchange();
				break;
			case 2:
				newval = e.checked ? false : true ;
				e.checked = newval;
				if(e.onchange) e.onchange();
				break;
		}
	});
}

function checkboxarray(classname, href, listonly){
	list = new Array();
	$$('.'+classname).each(function(e){
			if(e.checked){
				list.push(e.value);
			}
	});
	retval = href ? href : '' ;
	var numlist = '';
	if(list.length)
	{
		numlist = list.join("-");
		var varname = href ? '&checklist=' : '' ; 
		retval += varname + numlist ;
	}
	if(listonly)
	{
		retval = numlist; 
	}
	return retval;
}

function extractvalues(classname)
{
	return checkboxarray(classname, false, true);
}

