/*
url-loading object and a request queue built on top of it
*/
/* namespacing object */
var net=new Object();
var _isFF=false; var _isIE=false; var _isOpera=false; var _isKHTML=false; var _isMacOS=false;
if (navigator.userAgent.indexOf('Macintosh') != -1) _isMacOS=true;
if ((navigator.userAgent.indexOf('Safari') != -1)||(navigator.userAgent.indexOf('Konqueror')!= -1))
    _isKHTML=true;
else if (navigator.userAgent.indexOf('Opera') != -1){
    _isOpera=true;
    _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6,3));
    }
else if(navigator.appName.indexOf("Microsoft")!=-1)
    _isIE=true;
else {
    _isFF=true;
    var _FFrv=parseFloat(navigator.userAgent.split("rv:")[1])
    }
net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;


/*--- content loader object for cross-browser requests ---*/
net.ContentLoader=function(url,onload,onerror,method,params,contentType){
  this.req=null;
  this.onload=onload;
  this.onerror=(onerror) ? onerror : this.defaultError;
  this.url=url;
  this.method=method;
  this.loadXMLDoc(this.url,this.method,params,contentType);
}

net.ContentLoader.prototype.run_load = function(params){
  this.loadXMLDoc(this.url,this.method,params);
}

net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){
  if (!method){
    method="GET";
  }
  if (!contentType && method=="POST"){
    contentType='application/x-www-form-urlencoded';
  }
  if (window.XMLHttpRequest){
    this.req=new XMLHttpRequest();
  } else if (window.ActiveXObject){
    this.req=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (this.req){
    try{
      var loader=this;
      this.req.onreadystatechange=function(){
        net.ContentLoader.onReadyState.call(loader);
      }
      this.req.open(method,url,true);
      if (contentType){
        this.req.setRequestHeader('Content-Type', contentType);
      }
//	alert(params);
      this.req.send(params);
    }catch (err){
      this.onerror.call(this);
    }
  }
}


net.ContentLoader.onReadyState=function(){
  var req=this.req;
  var ready=req.readyState;
  if (ready==net.READY_STATE_COMPLETE){
    var httpStatus=req.status;
    if (httpStatus==200 || httpStatus==0){
//alert(req.responseXML);
      this.onload.call(this);
    }else{
      this.onerror.call(this);
    }
  }
}

net.ContentLoader.prototype.defaultError=function(){
  alert("error fetching data!"
    +"\n\nreadyState:"+this.req.readyState
    +"\nstatus: "+this.req.status
    +"\nheaders: "+this.req.getAllResponseHeaders());
}

net.ContentLoader.prototype.get_DOM_value = function (node, parent_node, xmlDoc){
    var out= ''; var pn='';
	try{
		if (!xmlDoc) var xmlDoc = this.req.responseXML.documentElement;
		if (parent_node)  pn = xmlDoc.getElementsByTagName(parent_node); 
		if (pn[0]){
			out = pn[0].getElementsByTagName(node)[0].firstChild.nodeValue;
		} else {
			out = xmlDoc.getElementsByTagName(node)[0].firstChild.nodeValue;
		}
	}catch (err){
//		alert (err);
	}
    return out;
}
//position:absolute; top:20px; left:20px;
//-----------------------------------------
   net.ContentLoader.prototype.wait_response = function(oper, message, style){
	this.elevent_mes = document.getElementById("messagebox");
	if (!this.elevent_mes) {
		this.elevent_mes = document.createElement("div");
		this.elevent_mes.id = "messagebox";
		if (!style)
			this.elevent_mes.style.cssText =
			'position:fixed; top:50%; left:50%; width:auto; border:3px outset ; background:#ff00ff; display:none; padding:10px';
		else 	this.elevent_mes.style.cssText = style;
		document.body.appendChild(this.elevent_mes); 
	}
	if (oper){
        this.elevent_mes.innerHTML = message;
        this.elevent_mes.style.display = 'block';
	} else {
//		alert(inspect(this.elevent_mes, 'W1'));
//		alert(pos_y);
		this.elevent_mes.style.display = 'none';
	}
   }
//-----------------------------------------
function inspect(obj, mes){
	var out_str='';
	for (var propertyName in obj)
		out_str += "\n" + propertyName + "=" + obj[propertyName]; 
	alert (mes+out_str);
} 
//-----------------------------------------
function URI_parameters(obj, str_key){			// prepare param for request
  var out_str = '';
  var delimiter='';
  if (typeof obj == 'object') {
      if (obj.elements){	//All element of Form
		for ( i=0; i<obj.elements.length; i++) {
			if (obj.elements[i].type != 'button' && obj.elements[i].type != 'submit') {
				out_str += delimiter + obj.elements[i].name + "=" + encodeURIComponent(obj.elements[i].value);
				delimiter = "&";
			}
		}
	} else {							// Array {obj.key:obj.val}
	  for (var propertyName in obj) {
		out_str += delimiter + propertyName + "=" + encodeURIComponent(obj[propertyName]);
		delimiter='&';
        }
	}
  } else if (str_key != '') {					// пара:   &obj=str
	out_str += str_key+'='+encodeURIComponent(obj);
  }
//  alert (out_str);
  return out_str;
}


