//Address web services 0.1
//Client side script
//(c) 2009 AS IT Latvija

//Configuration parameters

var url='/js_kuitala/addr.php';

//Common functions

function GetXmlObj() {
  try { 
    var res=new XMLHttpRequest();  
    return res;
  } catch (e) {  
    try {    
      var res=new ActiveXObject('Msxml2.XMLHTTP');    
      return res;
    } catch (e) {
      try {
        var res=new ActiveXObject('Microsoft.XMLHTTP');      
        return res;
      } catch (e) {
        return false;
      }
    }
  }
}

function GetHtmlObj(id) { 
  try {
    if (document.getElementById) 
      var res = document.getElementById(id); 
    else if (document.all) 
      var res = document.all[id]; 
    else if (document.layers) 
      var res = document.layers[id]; 
    return res;
  } catch(e) {
    return false;
  }
}

//Specific functions

var _id;
var _obj;
var _params;

function addr_elem(i,val) {
  var valHtml='';
  var valId = _id+'_elem_'+i.toString();
  var valCustom=_obj[i].custom;
  valCustom=valCustom.replace(/&/g,'').replace(/quot/g,'"').replace(/;/g,'').replace(/amp/g,'');
  if ((_obj[i].type=='select')||(_obj[i].type=='input')) {
    valHtml += '<label for="'+valId+'">'+_obj[i].caption+'</label>';
  }
  if (val=='loading') {
    for (j in _obj) loading=_obj[j].caption;
    if (_obj[i].type=='select') {
      valHtml += '<select id="'+valId+'" name="'+valId+'" disabled="disabled" ><option value="0">'+loading+'</option></select>';
    } else {
      valHtml += '<input id="'+valId+'" name="'+valId+'" disabled="disabled" value="'+loading+'" />';
    }
  } else {
    if (_obj[i].type=='select') {
      if (val==false) {
        valCustom += ' disabled="disabled"';
      } else {
        var c=0;
        for (j in val) {
          c++;
        }
        if (c==1) {
          if (val[j]=='') valCustom += ' disabled="disabled"';
        }
      }
      valHtml += '<select id="'+valId+'" name="'+valId+'" '+valCustom+' onchange="addr_show(\''+i+'\');">';
      if (val!=false) {
        var sel=0;
        var selected='';
        if (val[0]) {
          if (val[0]!='') sel=val[0];
          val[0]='';
        }
        for (j in val) {
          if ((j==sel)) {
            selected='selected="selected"';
          } else {
            selected='';
          }
          valHtml += '<option value="'+j.toString()+'" '+selected+'>'+val[j]+'</option>';
        }
      }
      valHtml += '</select>';
    } else if (_obj[i].type=='input') {
      var value='';
      if (val!=false) {
        for (j in val) {
        value=val[j];
        }
      }
      valHtml += '<input id="'+valId+'" name="'+valId+'" value="'+value+'" '+valCustom+' onkeyup="addr_show(\''+i+'\');"/>';
    }
    var valCustomAfter=_obj[i].custom_after;
    if (valCustomAfter!='') {
      valCustomAfter=valCustomAfter.replace(/&/g,'').replace(/quot/g,'"').replace(/;/g,'').replace(/amp/g,'').replace(/lt/g,'<').replace(/gt/g,'>');
      valHtml += valCustomAfter;
    }
  }
  return valHtml;
}

function addr_init(id,lang,addr_id) {
  var xmlHttp=GetXmlObj();  
  if (!xmlHttp) {
    alert('ERROR: your browser does not support AJAX');      
    return false;
  }
  var objHtml=GetHtmlObj(id);
  if (!objHtml) {
    alert('ERROR: HTML object not found');
    return false; 
  }
  _id=id;  
  xmlHttp.onreadystatechange=function() {
				if(xmlHttp.readyState==4) {
      _obj = eval('(' + xmlHttp.responseText.split('&quot;').join('"') + ')');
      var s='';
      if (_obj.Error) {
        s='<p class="error">'+_obj.Error+'</p>';
        objHtml.innerHTML=s;
      } else {
        var j = 0;
        for (i in _obj) {
          if (_obj[i].type=='input') j=i;
          s+='<div id="'+_id+'_'+i.toString()+'">'+addr_elem(i,false)+'</div>'+"\n";
        }
        objHtml.innerHTML=s;
        if (addr_id.length==10) {
          var objLast=GetHtmlObj(_id+'_elem_'+j.toString());
          objLast.value=addr_id
          addr_show(j);
        } else {
          addr_show_elem(1);    
          addr_show_elem(2);    
          addr_show_elem(3);
        }    
      }
    }
  }
  xmlHttp.open('GET',url + '?action=getObjects&params='+lang,true);
		objHtml.innerHTML='<img src="loading.gif" alt="" />';
  xmlHttp.send(null);  
}

function addr_params() {
  var valParams = new Array();
  for (i in _obj) {
    if ((_obj[i].type=='select')||(_obj[i].type=='input')) {
      var objHtml=GetHtmlObj(_id+'_elem_'+i.toString());
      if (objHtml==false) {
        alert('ERROR: HTML object not found');
        return false; 
      } else {
        valParams[valParams.length]='"'+i.toString()+'":"'+objHtml.value+'"';
     }
    }
  }
  return '{'+valParams.join(',')+'}';
}

function addr_show(i) {
  for(k in _obj[i].change) {
    var objHtml=GetHtmlObj(_id+'_'+_obj[i].change[k].toString());
    objHtml.innerHTML=addr_elem(_obj[i].change[k],false);
  }  
  _params=addr_params();
  for(k in _obj[i].change) {
    addr_show_elem(_obj[i].change[k]);
  }
}

function addr_show_elem(i) {
  var xmlHttp=GetXmlObj();  
  if (!xmlHttp) {
    alert('ERROR: your browser does not support AJAX');      
    return false;
  }
  var objHtml=GetHtmlObj(_id+'_'+i.toString());
  if (!objHtml) {
    alert('ERROR: HTML object not found');
    return false; 
  }
  xmlHttp.onreadystatechange=function() {
    if(xmlHttp.readyState==4) {
      var _val = eval('(' + xmlHttp.responseText.split('&quot;').join('"') + ')');
      objHtml.innerHTML = addr_elem(i,_val);
    }
  }
  xmlHttp.open('GET',url + '?action=getVals&object='+i.toString()+'&params='+_params,true);
  objHtml.innerHTML=addr_elem(i,'loading');
  xmlHttp.send(null);  
}

function addr_check(addr_id) {
  var xmlHttp=GetXmlObj();  
  if (!xmlHttp) {
    alert('ERROR: your browser does not support AJAX');      
    return false;
  }
  xmlHttp.onreadystatechange=function() {
    if(xmlHttp.readyState==4) {
      var _val = xmlHttp.responseText.split('&quot;').join('"');
      alert(_val);
    }
  }
  xmlHttp.open('GET',url + '?action=getAddress&params='+addr_id,true);
  xmlHttp.send(null);  
}
