var dataStorage = new Array();

function XMLHTTPHaku(action,hakukentta,obj,param1,param2,param3,param4)
{
    var hakusana = eval('document.'+hakukentta+'.value');   
    
     if(!eval('document.'+obj+'.options[1]'))  
     {
      	eval('document.'+obj+'.options.length=1');
     }
        
    string = "search('" + hakusana + "','" + hakukentta + "','"+obj+"','"+action+"','"+param1+"','"+param2+"','"+param3+"','"+param4+"')";
    setTimeout(string,500);
}

function TulostaHaetaanTekstiPudotusvalikkoon(formi, kentta)
{
    var opt = new Option;
    opt.text = "Haetaan......";
    opt.value = 0;
    document.forms[formi].elements[kentta].options[0] = opt;
    document.forms[formi].elements[kentta].options.length=1;
}

function search (hakusana,hakukentta,obj,action,param1,param2,param3,param4)
{
    var opt = new Option;
    opt.text = "Haetaan...";
    opt.value = 0;
    
    if ( hakusana != eval('document.'+hakukentta+'.value')) return false;
   
    if((hakusana != "") && (hakusana != null))
    {
    	eval('document.'+obj+'.options[0] = opt');
    	eval('document.'+obj+'.options.length=1');    
    }
    
    obj = eval('document.'+obj);
    
    url = '/ajax/?action='+action+'&term='+hakusana+'&param1='+param1+'&param2='+param2+'&param3='+param3+'&param4='+param4;
    
    return xjsObjDataRead(url, obj, 1);
}



/**
 * Separate data items.
 */
function xjsSplit(data, delim) {
       if (( delim == null ) || ( delim == '' )) delim = "\n";
       var ds = new String(data);
       return ds.split(delim);
}

/**
 * Parse option list.
 */
function xjsParseOptionList(obj, items) 
{
    if ( items == '' ) 
    {    
    	// Tämä lisätty ettei IE:llä tule pitkää tyhjää laatikkoa, jos ei yhtään hakutulosta.
        obj.options[0].text = '';
        obj.options[0].value = '';
        obj.options.length = 1;
        return true;
    }
    var itemRows = xjsSplit(items);
    added = 0;
    sel_id = 0;
    if ( obj.options == null ) 
    {
        return;
    }
    obj.options.length = 0;
    
    for ( i=0; i< itemRows.length; i++ ) 
    {
        if ((itemRows[i] != null) && (itemRows[i] != '') ) 
        {
            var parts = xjsSplit(itemRows[i], "~~");
            if (( parts != null ) && (parts.length==3)) 
            {
                var opt = new Option;
                title = '';
                

                for ( j = 2; j < parts.length; j++ ) 
                {
                    if ( title != '' ) title += "~~";
                    if (parts[j]!=null) title += parts[j];
                }
               
		title = title.replace(/&nbsp;/gi, String.fromCharCode(160,160)); // Sisennyksiä yrittää tulla tässä

                opt.text = title;

                if ( parts[0] != null ) opt.value = parts[0];
                else opt.value = '';
                if (( parts[1] != null ) && (parts[1] == 1 )) 
                {
                    opt.selected = true;
                    sel_id = added;
                }
                if(parts[1] == 2)
                {
                    opt.disabled = true;	
                }
                obj.options[added] = opt;
                added++;
                obj.options.length=added;
                //obj.options.lenth=added; ?
            }
        }
    }
    if ( added == 0 ) {
    	
        obj.selectedIndex = 0;
        obj.options.length = 1;
    }
}


/**
 * Read object data from server. 
 */
function xjsObjDataRead(url, obj, type, before_action) 
{
    if ( obj == null ) { alert('err'); return false; }
    var xmlhttp = getHTTPObject();
    tme = Date.parse(new Date());
    url += '&z82='+tme;
    xmlhttp.open("GET",url,true);
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4) 
        {
            if (( dataStorage[obj.name+'a'] == null ) || ( dataStorage[obj.name+'a'] != xmlhttp.responseText )) 
            {
                if ( type == 1 )
                { // option list

                    xjsParseOptionList(obj, xmlhttp.responseText);
                }
                else if ( type == 2 ) 
                { // text area or field.
                    obj.value = xmlhttp.responseText;
                }
                else if ( type == 3 ) 
                { // select box 0/1
                    if ( xmlhttp.responseText != '' ) 
                    {
                        for ( i = 0; i < obj.options.length; i++ ) 
                        {
                            if ( obj.options[i].value == xmlhttp.responseText ) obj.options[i].selected = true;
                        }
                    }
                }
               
                if ((before_action != null)&&(before_action != ''))
                {
                    eval(before_action+'');
//                    setTimeout(before_action+'', 0);
                }
            }
        }
    }
    xmlhttp.send(null);
    
    return false;
}

/**
 * Fetch plain HTML data to be replaced for a span element.
 *
 */
function xjsHTMLRead(url, span_id) 
{
      var xmlhttp = getHTTPObject();
      tme = Date.parse(new Date());
      url += '&z82='+tme;
      xmlhttp.open("GET",url,true);
      xmlhttp.onreadystatechange=function() 
      {
          if (xmlhttp.readyState==4) 
          {
              if (( dataStorage[span_id+'a'] == null ) || ( dataStorage[span_id+'a'] != xmlhttp.responseText )) 
              {
                document.getElementById(span_id).innerHTML += xmlhttp.responseText;
                dataStorage[span_id+'a'] = xmlhttp.responseText;
              }
          }
      }
      xmlhttp.send(null);

      return false;
}

/**
 * Asettaa arvot formin kenttiin jotka välitetään arrayssa
 *
 */
function xjsHTMLReadMontakenttaa(url, formi, kentat) 
{
    var xmlhttp = getHTTPObject();
    tme = Date.parse(new Date());
    url += '&z82='+tme;
    xmlhttp.open("GET",url,true);
    xmlhttp.onreadystatechange=function() 
    {
        if (xmlhttp.readyState==4) 
        {
            var arvot = xjsSplit(xmlhttp.responseText, '\n');
            for ( i=0; i<kentat.length; i++ )
            {
                if (( dataStorage[formi.elements[kentat[0]].name+'a'] == null ) || ( dataStorage[formi.elements[kentat[0]].name+'a'] != xmlhttp.responseText )) 
                {
                    formi.elements[kentat[i]].value = arvot[i];
                }
            }
        }
    }
    xmlhttp.send(null);
    
    return false;
}



/**
* Älä muokkaa ao. funktiota tai keskustele asiasta ensin (kas/tila).
*/
function getHTTPObject() {
        var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
        try {
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
                try {
                        xmlhttp = new 
ActiveXObject("Microsoft.XMLHTTP");
                } catch (E) {
                        xmlhttp = false;
                }
        }
@else
        xmlhttp = false;
@end @*/
        if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
                try {
                        xmlhttp = new XMLHttpRequest();
                } catch (e) {
                        xmlhttp = false;
                }
        }
        return xmlhttp;
}




