function dd_class (object,ddwidth,url,varname,invalid,assigneval,flags) {

	var dd_div=0;
	var dd_div_active=-1;
	var retvals=new Array();
		retvals['value']=new Array();
		retvals['display']=new Array();
		retvals['return']=new Array();
		retvals['overflow']=0;
		retvals['page']=0;
	var ovalues=new Array();
		ovalues['onCreation']=object.value; // value at the time of creation
		ovalues['initval']='';				// value when control is activated
		ovalues['cval']='';					// holds value before change
		ovalues['searchval']='';			// what was searched to produce list displayed 
		ovalues['valid']='';				// valid entry in the event of subsequent failure
		ovalues['charselect']=-1;			// value that was selected using typed characters
		ovalues['kbselect']=-1;				// value that was selected via arrow keys
		ovalues['mselect']=-1;				// value that was selected using mouse click
	var ie=document.all
	var ns6=document.getElementById && !document.all;
	var xmlHttpReq=new CXMLReq();
	var returndata;
	var opts = new Array();
	var ndiv=new Array();
	var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var timerid;
	var disabled=false;

	opts['altdisplay']=(flags.indexOf('altdisplay')>=0) ? 1 : 0;
	opts['picklist']=(flags.indexOf('picklist')>=0) ? 1 : 0;
	opts['validate']=(flags.indexOf('validate')>=0) ? 1 : 0;
	opts['calendar']=(flags.indexOf('calendar')>=0) ? 1 : 0;
	opts['nomatch']=(flags.indexOf('nomatch')>=0) ? 1 : 0;

	if (opts['validate']) { dd_prevalidate(); }

	if (window.addEventListener) {
		object.addEventListener('keydown',function(event) { return dd_event(event); },false);
		object.addEventListener('keyup',dd_event,false);
		object.addEventListener('click',dd_click,false);
		object.addEventListener('blur',dddiv_kill,false);
		object.addEventListener('focus',dddiv_initval,false);
	}
	else {
		object.attachEvent('onkeydown',function(event) { return dd_event(event); } );
		object.attachEvent('onkeyup',dd_event);
		object.attachEvent('onclick',dd_click);
		object.attachEvent('onblur',dddiv_kill);
		object.attachEvent('onfocus',dddiv_initval);
	}

	function achange() {
		alert(object.value);
	}

	function dd_event(event) {
		ikey = event.keyCode;
		refresh=0;
		if (event.type =="keydown") {
			clearTimeout(timerid);
			ovalues['cval']=object.value;
			if (ikey == 13) { dddiv_setactive("enter"); dddiv_kill(event); return false; }
			if (ikey == 27) { dddiv_esc(); return false; }
			if (ikey == 37) { dddiv_setactive("left"); if (dd_div) { return false; } }
			if (ikey == 38) { dddiv_setactive("up"); }
			if (ikey == 39) { dddiv_setactive("right"); if (dd_div) { return false; } }
			if (ikey == 40) { dddiv_setactive("dn"); }
			if (opts['calendar']) { 
				if (ikey == 9) { return ikey; }
				else { return false; }
			}
			if ((disabled)&&(disabled != "esc")) { disabled=false; }
			return true;
			// return !(event && event.keyCode == 13);
		}
		if (event.type =="keyup") {
			if (ikey == 27) { 
				object.value=ovalues['valid'];
				return false;
			}
		}
		upreq=((ikey==33)||((ikey==38)&&(dd_div_active == 0))) ? true : false;
		dnreq=(ikey==34) ? true : false;
		if ((upreq)&&(retvals['page'] > 0)) { retvals['page']--; refresh=1; }
		if ((dnreq)&&(retvals['overflow'])) { retvals['page']++; refresh=1; }
		// document.getElementById("debugo").innerHTML+="<BR>"+event.type+" "+object.value;
		if ((disabled)||(opts['calendar'])) { 
			return; 
		}
		if (ovalues['cval'] != object.value) {
			retvals['page']=0;
		}
		if ((ovalues['cval'] != object.value)||(refresh)) { 
			dd_event_srch(); 
		}
	}

	function dd_click() {
		// document.getElementById("debugo").innerHTML+="<BR>click";
		if (! dd_div) { 
			disabled=false;
			if (opts['calendar']) { dd_event_showlist(""); }
			else { dd_event_srch(); }
		}
	}

	function dd_event_srch(event) {
		ival=object.value;
		ovalues['searchval']=ival;
		// document.getElementById("debugo").innerHTML+="<BR>search : "+ival;
		watchval();
		hval=ival;
		// document.getElementById("debugo").innerHTML="Key "+ikey;
		// document.getElementById("debugo").innerHTML="";
		if (! opts['nomatch']) {
			for (i=0;i<retvals['value'].length;i++) {
				tval=retvals['value'][i].toUpperCase();
				if (tval == ival.toUpperCase()) { 
					dddiv_setactive(i);
					clearselects();
					ovalues['charselect']=i;
					dddiv_kill(event); 
					return;
				}
			}
		}
		srch=((ival)||(opts['picklist'])||(opts['validate'])) ? true : false;
		clearselects();
		if ((srch)&&(isArray(url))) {
			dd_event_showlist(ival);
		}
		else if (srch) {
			if (typeof(url) == "function") { 
				iurl=url(object); 
				iurl+="&nolog=1&page="+retvals['page'];
			}
			else { iurl=url + "?nolog=1&" + varname + "=" + ival + "&page=" + retvals['page']; }
			xmlHttpReq=new CXMLReq();
			xmlHttpReq.xmlhttp.onreadystatechange=dd_event_resp;
			xmlHttpReq.xmlhttp.open("GET",iurl,true);
			xmlHttpReq.xmlhttp.send(null);
		}
		else if (dd_div) {
			dd_div.style.visibility="hidden";
			dd_div_active=-1;
		}
	}

	function dd_prevalidate () {
		invalid=(invalid) ? invalid : "Invalid Entry"; 
		isvalid=false;
		if (isArray(url)) { 
			for (i=0;i<url.length;i++) {
				if (url[i][0] == object.value) { 
					isvalid=true;
					ovalues['valid']=url[i][0];
					break;
				}
			}
			if (! isvalid) { 
				ovalues['valid']=url[0][0];
				dddiv_showerror(); 
			}
		}
		else { 
			if (typeof(url) == "function") { iurl=url(object); }
			else { iurl=url + "?" + varname + "=" + object.value; }
			iurl+="&nolog=1&validate=1";
			xmlHttpReq=new CXMLReq();
			xmlHttpReq.xmlhttp.onreadystatechange=dd_prevalidate_resp;
			xmlHttpReq.xmlhttp.open("GET",iurl,true);
			xmlHttpReq.xmlhttp.send(null);
		}
	}

	function dd_prevalidate_resp() {
		if (xmlHttpReq.xmlhttp.readyState==4 || xmlHttpReq.xmlhttp.readyState=="complete") { 
			iresp=xmlHttpReq.xmlhttp.responseText;
			foo=iresp.split("=");
			if (foo[0] == varname) { 
				ovalues['valid']=foo[1]; 
				if (foo[1] != object.value) { dddiv_showerror(); }
			}
			// document.getElementById("debugo").innerHTML+="valid is "+ovalues['valid'];
		}
	}
	
	function dd_event_resp() {
		if (xmlHttpReq.xmlhttp.readyState==4 || xmlHttpReq.xmlhttp.readyState=="complete") { 
			iresp=xmlHttpReq.xmlhttp.responseText;
			if (! disabled) { dd_event_showlist(iresp); }
		}
	}
	
	function dd_event_showlist(ilist) {
		
		if (! dd_div) { dddiv_init(); }
		dd_div.style.visibility="hidden";

		if (opts['calendar']) {
			dd_event_showcal();
			return;
		}
	
		while(dd_div.childNodes[0]) {
			dd_div.removeChild(dd_div.childNodes[0]);
		}

		dd_div_active=-1;
		dddiv_getretvals(ilist);
		
		// document.getElementById("debugo").innerHTML=istr;
		ndiv=new Array();
		for (i=0;i<retvals['value'].length;i++) {
			ndiv[i]=dddiv_newdiv(retvals['display'][i],i);
			if (window.addEventListener) { ndiv[i].addEventListener('mousedown',cdiv_click,false); }
			else { ndiv[i].attachEvent('onmousedown',cdiv_click); }
			if (i < retvals['value'].length -1) {
				ndiv[i].style.borderBottom="1px solid lightgrey";
			}
			dd_div.appendChild(ndiv[i]);
		}
		
		if (retvals['value'].length < 1) {
			// document.getElementById("debugo").innerHTML+="<BR>"+object.id+" retvals "+retvals['value'].length+" "+invalid;
			if (invalid) {
				dddiv_showerror();
			}
			else {
				dd_div_active=-1;
				dd_div.style.visibility="hidden";
				return;
			}
		}
		// else if ((retvals['value'].length == 1)&&(retvals['value'][0] == object.value)) {
			// ovalues['charselect']=0;
			// dddiv_kill();
		// }
		else {
			if ((retvals['overflow'])||(retvals['page'] > 0)) {
				msg="Click Page Down/Up to see more results";
				idiv=document.createElement('div');
				idiv.style.width=ddwidth;
				idiv.style.height=14;
				idiv.style.fontWeight="bold";
				idiv.style.textAlign="center";
				idiv.style.whiteSpace="nowrap";
				idiv.style.cursor="default";
				idiv.innerHTML=msg;
				idiv.style.overflow="hidden";
				dd_div.appendChild(idiv);
			}
			dd_div.style.backgroundColor="white";
			dd_div.style.color="black";
			dd_div.style.fontWeight="normal";
			iset=(dd_div_active < 0) ? 0 : dd_div_active;
			ovalues['charselect']=iset;
			dddiv_setactive(iset);
			dddiv_display();
		}
	}


	function dddiv_newdiv(ival,ipos) {
		idiv=document.createElement('div');
		iwidth = (opts['calendar']) ? 12 : ddwidth;
		idiv.style.width=iwidth;
		idiv.style.height=12;
		idiv.style.whiteSpace="nowrap";
		idiv.style.cursor="pointer";
		idiv.style.cursor="hand";
		idiv.innerHTML=ival;
		idiv.style.overflow="hidden";
		idiv.position=ipos;
		if (opts['calendar']) {
			idiv.style.textAlign="center";
			idiv.style.padding=1;
		}
		if (window.addEventListener) {
			idiv.addEventListener('mouseover',dddiv_mouse,false);
		}
		else {
			idiv.attachEvent('onmouseover',dddiv_mouse);
		}
		return(idiv);
	}

	function watchval(event) {
		// This function is necessary to make sure the value of the field isn't changed some other way
		// which would cause the list to not reflect the current value
		// We just need to assume that the value is valid
		clearTimeout(timerid);

		if (object.value != ovalues['searchval']) {
			ovalues['valid']=object.value;
			dd_event_srch(event);
			return;
		}
		timerid=setTimeout(watchval,100);
	}

	function dd_event_showcal() {
		dddiv_display();
	}

	function dddiv_getretvals(ilist) {
		retvals['value']=new Array(); 
		retvals['display']=new Array(); 
		retvals['return']=new Array(); 
		retvals['overflow']=0;
		if (isArray(url)) {
			ilen=ilist.length;
			sval=ilist.toUpperCase();
			ihits=0;
			istr="";
			for (i=0;i<url.length;i++) {
				tval=url[i][0].toUpperCase();
				imatch=((ilen)&&(tval.substr(0,ilen)==sval)) ? true : false;
				if ((imatch)||((! ilen)&&(opts['validate']))||(opts['picklist'])) {
					retvals['value'][ihits]=url[i][0];
					if ((opts['altdisplay'])&&(url[i][1])) { retvals['display'][ihits]=url[i][1]; }
					else { retvals['display'][ihits]=url[i][0]; }
					retvals['return'][ihits]=(url[i].length > 1)?url[i][2]:url[i][0];
					if ((imatch)&&(dd_div_active < 0)) { dd_div_active=ihits; }
					ihits++;
				}
				if (ihits == 10) { break; }
				istr+=" "+url[i][0];
			}
		}
		else {
			foo=ilist.split("=");
			istr="";
			if (foo[0] == varname) { 
				ifoo=foo[1].split(":"); 
				for (i=0;i<ifoo.length;i++) {
					if (i > 14) { 
						retvals['overflow']=1; 
						break;
					}
					foo=ifoo[i].split("|");
					retvals['value'][i]=foo[0];
					if ((opts['altdisplay'])&&(foo[1])) { retvals['display'][i]=foo[1]; }
					else { retvals['display'][i]=foo[0]; }
					retvals['return'][i]=(foo.length > 1)?foo[2]:foo[0];
					istr+=" "+foo[0]+" "+foo[1];
				}
			}
			// document.getElementById("debugo").innerHTML=ilist+" --> "+istr;
		}
	}

	function dddiv_display() {

		if (window.innerWidth) {
			win_width =window.innerWidth;
			win_height=window.innerHeight;
		}
		else if (document.all) {
			win_width =document.body.clientWidth;
			win_height=+document.body.clientHeight;
		}
		iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body
		dsoc_width =document.all? iebody.scrollLeft : pageXOffset
		dsoc_height=document.all? iebody.scrollTop : pageYOffset

		// document.getElementById("debugo").innerHTML=win_width+" "+dsoc_width+" "+win_height+" "+dsoc_height;

		iobj=object;
		it=iobj.offsetTop;
		il=iobj.offsetLeft;
		while (iobj.offsetParent) {
			it+=iobj.offsetParent.offsetTop;
			il+=iobj.offsetParent.offsetLeft;
			iobj=iobj.offsetParent;
		}

		avail_width = win_width + dsoc_width - il;
		avail_height= win_height + dsoc_height - it;

		// document.getElementById("debugo").innerHTML=win_width+" "+dsoc_width+" "+win_height+" "+dsoc_height+" "+il+" "+it+" "+avail_width+" "+avail_height;

		imaxheight=(isArray(url)) ? ((url.length > 10) ? 150 : url.length * 15 ) : 150;
		imaxheight+=20; 
		if ((imaxheight > avail_height) && (dd_div.offsetWidth > avail_width)) {
			dd_div.style.top=it - dd_div.offsetHeight;
			dd_div.style.left=il + object.offsetWidth - dd_div.offsetWidth;
		}
		else if (imaxheight > avail_height) {
			dd_div.style.top=it - dd_div.offsetHeight;
			dd_div.style.left=il;
		}
		else if (dd_div.offsetWidth > avail_width) {
			dd_div.style.top=it + object.offsetHeight;
			dd_div.style.left=il + object.offsetWidth - dd_div.offsetWidth;
		}
		else {
			dd_div.style.top=it + object.offsetHeight;
			dd_div.style.left=il;
		}
		dd_div.style.visibility="visible";
	}

	function dddiv_showerror() {
		if (! dd_div) { dddiv_init(); }
		dd_div_active=-1;
		dd_div.innerHTML=invalid;
		dd_div.style.backgroundColor="red";
		dd_div.style.color="white";
		dd_div.style.fontWeight="bold";
		dddiv_display();
	}

	function dddiv_init() {
		dd_div = document.createElement('div');
		dd_div.style.visible="hidden";
		dd_div.style.position="absolute";
		dd_div.style.border="1px solid black";
		dd_div.style.backgroundColor="white";
		dd_div.style.fontFamily="Arial, Helvetica, sans-serif";
		dd_div.style.fontSize="10px";
		dd_div.style.whiteSpace="nowrap";
		document.body.appendChild(dd_div);
		if (opts['calendar']) { dddiv_init_cal(); }
	}

	function dddiv_init_cal() {
		ndiv=new Array();

		params=url.split(":");
		date_st=params[1];
		date_end=params[2];
		foo=date_st.split("-");
		idate_st=new Date();
		idate_st.setYear(foo[0]);
		idate_st.setMonth(foo[1] -1);
		idate_st.setDate(foo[2]);
		foo=date_end.split("-");
		idate_end=new Date();
		idate_end.setYear(foo[0]);
		idate_end.setMonth(foo[1] -1);
		idate_end.setDate(foo[2]);
	
		itable=document.createElement("table");
		itable.style.fontFamily="Arial, Helvetica, sans-serif";
		itable.style.fontSize="10px";
		itable.cellPadding=1;
		itable.cellSpacing=0;
		itbody=document.createElement("tbody");
		if (params[0]) {
			itr=document.createElement("tr");
			itd=document.createElement("td");
			itd.colSpan=7;
			idiv=document.createElement("div");
			idiv.style.backgroundColor="black";
			idiv.style.fontFamily="Arial, Helvetica, sans-serif";
			idiv.style.fontSize="10px";
			idiv.style.fontWeight="bold";
			idiv.style.color="white";
			idiv.style.width="100%";
			idiv.style.textAlign="center";
			idiv.innerHTML=params[0];
			itd.appendChild(idiv);
			itr.appendChild(itd);
			itbody.appendChild(itr);
			// document.getElementById("debugo").innerHTML=idiv.innerHTML+" "+itd.colSpan;
		}
		itr=document.createElement("tr");
		// pad front
		idate=new Date(idate_st);
		// idate=idate_st;
		while (idate.getDay() != 1) {
			itd=document.createElement("td");
			itr.appendChild(itd);
			idate.setDate(idate.getDate() - 1);
		}
		// calendar table 
		idate=idate_st;
		i=0;
		retvals['value']=new Array(); 
		retvals['display']=new Array(); 
		retvals['return']=new Array(); 
		iactive=0;
		while (idate <= idate_end) {
			if (idate.getDay() == 1) { itr=document.createElement("tr"); }
			imo=idate.getMonth()+1;
			iday=idate.getDate();
			iday = (iday < 10) ? "0"+iday : iday;
			retvals['return'][i]=idate.getFullYear()+"-"+imo+"-"+iday;
			retvals['display'][i]=idate.getDate();
			retvals['value'][i]=months[idate.getMonth()]+" "+iday;
			if (retvals['value'][i] == object.value) { 
				iactive=i; 
				ovalues['valid']=object.value;
			}
			ndiv[i]=dddiv_newdiv(retvals['display'][i],i);
			if (window.addEventListener) { ndiv[i].addEventListener('mousedown',cdiv_click,false); }
			else { ndiv[i].attachEvent('onmousedown',cdiv_click); }
			itd=document.createElement("td");
			itd.appendChild(ndiv[i]);
			itr.appendChild(itd);
			if (idate.getDay() == 0) { itbody.appendChild(itr); }
			idate.setDate(idate.getDate() + 1);
			i++;
		}
		dddiv_setactive(iactive);
		// pad end
		while (idate.getDay() != 0) {
			itd=document.createElement("td");
			itr.appendChild(itd);
			idate.setDate(idate.getDate() + 1);
		}	
		itbody.appendChild(itr);
		itable.appendChild(itbody);
		dd_div.appendChild(itable);
	}

	function cdiv_click() {
		ovalues['mselect']=dd_div_active;
	}

	function dddiv_initval(event) {
		// document.getElementById("debugo").innerHTML+="<BR>initval";
		ovalues['initval']=object.value;
		getdata=false;
		disabled=false;
		page=0;
		clearselects();
		if (opts['calendar']) {
			dd_event_showlist("");
			return;
		}
		// This is in case the original value isn't valid
		if ((opts['validate'])&&(object.value != ovalues['valid'])&&(ovalues['valid'])&&(object.value==ovalues['onCreation'])) { 
			// document.getElementById("debugo").innerHTML+="<BR> here";
			object.value="";
		}
		else {
			// if we get to here, we need to assume that however a value got into the control, it's valid
			ovalues['valid']=object.value;
		}
		if ((opts['picklist'])||(opts['validate'])) {
			if (isArray(url)) { dd_event_showlist(object.value); }
			else { getdata=true; }
		}
		if (getdata) {
			ovalues['searchval']=object.value;
			watchval(event);
			if (typeof(url) == "function") { iurl=url(object); }
			else { iurl=url + "?nolog=1&" + varname + "=" + object.value; }
			xmlHttpReq=new CXMLReq();
			xmlHttpReq.xmlhttp.onreadystatechange=dd_event_resp;
			xmlHttpReq.xmlhttp.open("GET",iurl,true);
			xmlHttpReq.xmlhttp.send(null);
		}
	}

	function dddiv_mouse(e) {
		if (window.event) {
			i=window.event.srcElement;
		}
		else {
			i=e.target;
		}
		dddiv_setactive(i.position);
	}

	function dddiv_setactive(ioffset) {
		udval=(opts['calendar']) ? 7 : 1;
		setkb=false;
		if (ioffset=="dn") { noffset=dd_div_active + udval; setkb=true; }
		else if (ioffset=="up") { noffset=dd_div_active - udval; setkb=true; }
		else if (ioffset=="left") { noffset=dd_div_active - 1; setkb=true; }
		else if (ioffset=="right") { noffset=dd_div_active + 1; setkb=true; }
		else if (ioffset=="enter") { noffset=dd_div_active; return; }
		else { noffset=ioffset; }
		if (! dd_div) { return; }
		if (noffset >= ndiv.length) { return; }
		if (noffset < 0) { return; }
		if (setkb) { ovalues['kbselect']=noffset; }
		if (dd_div_active >= 0) {
			ndiv[dd_div_active].style.backgroundColor="white";
		}
		ndiv[noffset].style.backgroundColor="lightgrey";
		dd_div_active=noffset;
		// ovalues['valid']= retvals['value'][dd_div_active];
		// document.getElementById("debugo").innerHTML+="<BR> -> "+dd_div_active+" "+retvals['value'][dd_div_active];
	}
	
	function dddiv_esc() {
		if (opts['validate']) { 
			object.value=ovalues['valid']; 
			// document.getElementById("debugo").innerHTML+="<BR>esc set to -> "+ovalues['valid'];
		}
		else {
			ovalues['valid']=object.value; 
		}
		if (dd_div) {
			document.body.removeChild(dd_div);
		}
		dd_div=0;
		dd_div_active=-1;
		disabled="esc";
		clearselects();
		clearTimeout(timerid);
	}

	function dddiv_kill(event) {
		disabled="kill";
		iselected=-1;
		if (ovalues['charselect'] >= 0) {
			irv = retvals['value'][ovalues['charselect']].toUpperCase();
			iov= object.value.toUpperCase();
			if (irv.indexOf(iov)>=0) { iselected=ovalues['charselect']; }
		}
		if (ovalues['kbselect'] >= 0) { iselected=ovalues['kbselect']; }
		if (ovalues['mselect'] >= 0) { iselected=ovalues['mselect']; }
		activeselect=0;
		if (opts['nomatch']) {
			if (ovalues['kbselect'] > -1) { activeselect=1; }
			if (ovalues['mselect'] > -1) { activeselect=1; }
		}	
		if (0) {
			document.getElementById("debugo").innerHTML+="<BR> selected="+iselected+" "+ovalues['valid']+
			" char:"+ovalues['charselect']+
			" kb:"+ovalues['kbselect']+
			" m:"+ovalues['mselect'];
		}
		iactive=0;
		returnvalue=0;
		clearTimeout(timerid);
		if (dd_div) {
			iactive=1;
			document.body.removeChild(dd_div);
		}
		if (iselected >= 0) { 
			object.value=retvals['value'][iselected];
			returnvalue=retvals['return'][iselected];
			ovalues['valid']=object.value;
		}
		else if ((opts['validate'])&&(iselected < 0)) {
			object.value=ovalues['valid']; 
		}
		else if (! opts['validate']) {
			ovalues['valid']=object.value;
		}
		else if ((invalid)&&(iactive)) { 
			object.value=""; 
		}
		dd_div=0;
		dd_div_active=-1;
		clearselects();
		ovalues['onCreation']="";
		if ((assigneval)&&(ovalues['initval'] != object.value)&&(iactive)) {
			assigneval(object,returnvalue);
		}
		else if ((opts['nomatch'])&&(iactive)) {
			if (activeselect) { assigneval(object,returnvalue); }
		}
		else if ((! invalid)&&(ovalues['initval'] != object.value)) {
			assigneval(object,0);
		}
		if (! opts['calendar']) {
			retvals['value']=new Array(); 
			retvals['display']=new Array(); 
			retvals['return']=new Array(); 
			retvals['overflow']=0;
			retvals['page']=0;
		}
	}

	function clearselects() {
		ovalues['mselect']=-1;
		ovalues['kbselect']=-1;
		ovalues['charselect']=-1;
	}

	function CXMLReq() {
		this.xmlhttp = false;
		if (window.XMLHttpRequest) {
			this.xmlhttp = new XMLHttpRequest();
		} 
		else if (window.ActiveXObject) {
			this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	function isArray(obj) {
		if (obj.constructor.toString().indexOf("Array") == -1) { return false; }
		else { return true; }
	}

}

function inherit(subclass, superclass) {
    var c = function() {};
    c.prototype = superclass.prototype;
    subclass.prototype = new c();
}

inherit(dd_object,dd_class);
function dd_object (object,ddwidth,url,varname,invalid,assigneval,flags) {
	dd_class.call(this,object,ddwidth,url,varname,invalid,assigneval,flags);
	this.object=object;
	this.url=url;
	this.varname=varname;
	this.ddwidth=ddwidth;
}


