// Author: Diego Perini <dperini@nwbox.com>
/*var sb = new Array(
	'leftbox', 'rightbox', 'scrollLeft', 'scrollRight', 
	'caretPos', 'maxLength', 'textLength', 'availLength',
	'beforeCaret', 'afterCaret', 'selectedText'
);

for (var i in sb) eval('var ' + sb[i] + ' = {}');

var os = 0;
var oe = 0;*/
function update_(o, baseURL, type ) {
/*    var oldValue=o.value;
    sleep(250);*/

    if(type==-2)
        type=FGtype;
	var t = o.value, s = getSelectionStart(o), e = getSelectionEnd(o);
/*    if(oldValue==t)
    {*/
        var begTag;
        var endTag;
        begTag=s;
        if(t.substr(begTag, 1)==",")
            begTag--;
        for(begTag;begTag>=0 && t.substr(begTag, 1)!=",";begTag--);
        for(endTag=s;endTag<o.value.length && t.substr(endTag, 1)!=",";endTag++);
        begTag++;
        var tag =t.slice(begTag, endTag);
        for(begTag;begTag<t.length && t.substr(begTag, 1)==" ";begTag++);
        for(endTag;endTag>0 && t.substr(endTag-1, 1)==" ";endTag--);
        tag =t.slice(begTag, endTag);
        tag = tag.replace(/^\s+/g,'').replace(/\s+$/g,'');
        //alert(baseURL+"webservices/searchForTag.ws.php?strSearch="+tag+"&type="+type);
        if(tag.length>0)
        {
            new Ajax.Request(baseURL+"webservices/searchForTag.ws.php?strSearch="+tag+"&type="+type, 
            { 
                method: 'get', 
                onSuccess: function(transport) 
                {
         //           $(villesControlId).innerHTML=decodeURI(transport.responseText);
                    var str=(transport.responseText);
                    //str = str.replace(/'/g,"\\'");
                    if(str.length>tag.length && t == $(o).value)
                    {    
                        $(o).value = t.slice(0, begTag) + str + t.slice(endTag, t.length);
                        setSelection(o, s, s+str.length-tag.length);
                     }
                  //o.value=new_o;
    //alert(new_o);

                    //$(villesControlId).innerHTML=str;
                    }

                }
           );
/*    }*/
}
/*	if (s == os && e == oe) return
	caretPos.firstChild.nodeValue = s
	maxLength.firstChild.nodeValue = o.getAttribute('maxLength')
	textLength.firstChild.nodeValue = t.length
	availLength.firstChild.nodeValue = o.getAttribute('maxLength') - t.length
	afterCaret.firstChild.nodeValue = t.substring(s).replace(/ /g, '\xa0') || '\xa0'
	beforeCaret.firstChild.nodeValue = t.substring(0, s).replace(/ /g, '\xa0') || '\xa0'
	selectedText.firstChild.nodeValue = t.substring(s, e).replace(/ /g, '\xa0') || '\xa0'
	rightbox.value = scrollRight.firstChild.nodeValue = t.substring(s).replace(/ /g, '\xa0') || '\xa0'
	leftbox.value = scrollLeft.firstChild.nodeValue = t.substring(0, s).replace(/ /g, '\xa0') || '\xa0'
	os = s
	oe = e
	return true*/
}

function setup_() {
	for (var i in sb) eval(sb[i] + ' = document.getElementById(sb[i])')
	update(document.getElementById('textbox'))
}

function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

function getSelectionEnd(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveStart('character', -o.value.length)
		return r.text.length
	} else return o.selectionEnd
}
function setSelection(o, startPos, endPos) {
	if (o.createTextRange) {
          var range = o.createTextRange();
          range.collapse(true);
          range.moveStart('character', startPos);
          range.moveEnd('character', endPos-startPos);
          range.select();
	} else 
    {
        o.selectionStart=startPos;
        o.selectionEnd=endPos;
    }
}
function sleep_(millis, o, baseURL, evt, old, type) {
evt = (evt) ? evt : ((event) ? event : null);
var evver = (evt.target) ? evt.target : ((evt.srcElement)?evt.srcElement : null );
var keynumber = evt.keyCode;
if(keynumber>=65 && keynumber<=90 || keynumber==50 || keynumber==55 || keynumber==57 || keynumber==58 || keynumber>=96 && keynumber<=105 || keynumber==111 || keynumber==191)
{
    var old_o=$(o).value;
    setTimeout("tryUpdate('"+o+"','"+baseURL+"','"+old_o+"','"+type+"')", millis);
}
}
function tryUpdate(o, baseURL, old, type)
{
    if($(o).value==old)
        update_($(o), baseURL, type);
}
