smart_text = function (textid, plink, qcallback, minlength)
{
	this.ds = new YAHOO.util.LocalDataSource([]);
	this.cont = YAHOO.util.Dom.get('smart_text_container');
	if(this.cont){
		document.body.removeChild(this.cont)
	}
	this.cont = document.createElement('div');
	this.cont.id = 'smart_text_container';
	document.body.appendChild(this.cont);
	this.autocomp=new YAHOO.widget.AutoComplete(document.getElementById(textid),this.cont,this.ds);
    this.autocomp.minQueryLength = minlength;
	this.plink=null;
	if(plink!==null)
	{
		this.plink=getCustomTag(plink);
	}
	this.qcallback = qcallback;
	this.autocomp._sendQuery = smart_text_sendQuery;
	this.autocomp._smart = this;
    this.setQueryDelay = smart_text_setQueryDelay;
};

smart_text_setQueryDelay = function(delay)
{
    this.autocomp.queryDelay = delay;
};

smart_text_doRequest = function(instance)
{
    clearTimeout(instance.timeout);
    instance.timeout = -1;
    instance._smart.plink.doPost();
};

smart_text_sendQuery = function (sQuery)
{
    if (this.timeout) {
        clearTimeout(this.timeout);
        this.timeout = -1;
    }
    this._smart.plink.cancelRequest();

	result=true;
	if(this._smart.qcallback!==null)
	{
		result=this._smart.qcallback();
	}else{
		result = (sQuery.length >= this._smart.autocomp.minQueryLength || sQuery.length==0)
	}
	if(result && this._smart.plink!==null)
	{
        this.timeout = setTimeout(function(instance) {smart_text_doRequest(instance);}, this.queryDelay * 1000, this);
	}
};
