
/* Algunes variables glovals */

var js_added = false;
var divpopup;
var divgrey;
var XHR = new xHttpRequest();
var SERVER = '/model/services/email.submit.cfm';
var SERVER_ERROR = '/model/services/error.submit.cfm';


	
function showPopUpAndShade(code, cabecera, width, height){
	showShade();
	showPopUp(code,cabecera, width, height);
}
function showShade(){
	divgrey = document.createElement('div');
	divgrey.innerHTML = "<div id='greyLayer' style='position:fixed;_position:absolute;height:100%;width:100%;background-color:#ccc;opacity:0.7;filter:alpha(opacity=70);z-index:990;top:0;left:0;margin:0;'> </div>"; 
	document.body.appendChild(divgrey.firstChild);
}

function showPopUp(code, cabecera, width, height){
	
	divpopup = document.createElement('div');
	
	cw = Math.round(width/2);
	ch = Math.round(height/2);
	// codigo del popup
	var codigo="<div id='popUpDiv' style='border:3px solid #888;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;background-color:white;width:" + width + "px;height:" + height + "px;position:fixed;_position:absolute;z-index:999;top:50%;left:50%;margin-left:-"+ cw +"px;margin-top:-"+ch+"px;'>";
	codigo+="<div style='margin:0 0 10px 0;background-color:#d4e7fa;height:40px;padding:4px 0 0 0;'>";
	codigo+="<div style='float:right;padding-right:5px;display:inline-block;'><a href='/' onClick='hidePopUpAndShade(); return false;'>cerrar X</a></div>";
	codigo+="<h2 style='border:0;padding:0;margin:0;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:22px;text-align:center;font-weight:800'>";
	codigo+=cabecera;
	codigo+="</h2>";
	codigo+="</div>";
	codigo+=code;
	
	divpopup.innerHTML = codigo;
	
	document.body.appendChild(divpopup.firstChild);
}


function hidePopUp(){
	divpopup = document.getElementById('popUpDiv');
	document.body.removeChild(divpopup);
}

function hidePopUpAndShade(){
	divpopup = document.getElementById('popUpDiv');
	divgrey = document.getElementById('greyLayer');
	document.body.removeChild(divpopup);
	document.body.removeChild(divgrey);
	if (typeof(callBackEmailShare) != "undefined") {
		callBackEmailShare();
	}
}

function addJS(){
	if(js_added == false){
		var e = document.createElement("script");
   		e.src = 'http://www.encooche.com/services/js/x.js';
   		e.type="text/javascript";
 		document.getElementsByTagName("head")[0].appendChild(e); 
		js_added = true;
		alert("hola");
	}
}

function showNotifyPopUp(title, contingut){
	var codigo="<span style='padding:0 20px 0 20px;display:block;'>";
	codigo+=contingut;
	codigo+="</span>";
	codigo+="<div style='width:100%;margin: 10px 0 0 0;text-align:center;'><input style='width:100px;border:2px solid #aaa;background-color:#ccc;font-size:18px;margin: 0 20px 0 0;' type='button' name='Enviar' value='Cerrar' onClick='hidePopUpAndShade();'/></li>";

	
	showPopUp(codigo, title, 520, 150);
	
}
function showEmailShare(email_enviant, nom_enviant, url, contingut, visible){
	if (typeof(url) == "undefined") {
		url = window.location.href;
	}
	if (typeof(contingut) == "undefined") {
		contingut = "Hola, creo que esto te puede interesar. Échale un vistazo.";
	}
	if (typeof(visible) == "undefined") {
		visible = false;
	}
	if (typeof(nom_enviant) == "undefined") {
		nom_enviant = "";
	}
	if (typeof(email_enviant) == "undefined") {
		email_enviant = "";
	}
	var width=520;
	var height=390;
	var codigo="<div id='popUpMail'>";
	codigo+="<div id='notificacioError' style='font-size:15px; padding:0 10px 0 60px; color:red; text-align:left; display:none;'></div>";
	codigo+="<ul style='list-style:none;margin:5px 0 5px 0;padding:0;'>";
	codigo+="<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:190px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='nom_receptor'>Nombre de tu amigo:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='nom_receptor' name='nom_receptor'/></li>";
	codigo+="<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:190px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='email_receptor'>Email de tu amigo:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='email_receptor' name='email_receptor'/></li>";
	if((nom_enviant == "")||(visible == true)){
		codigo += "<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:190px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='nom_enviant'>Tu nombre:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='nom_enviant' name='nom_enviant' value='"+ nom_enviant +"'/></li>";
	}else{
		codigo += "<input type='hidden' id='nom_enviant' name='nom_enviant' value='" + nom_enviant + "'/>";
		height-=40;
	}
	if((email_enviant == "")||(visible == true)){
		codigo += "<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:190px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='email_enviant'>Tu email:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='email_enviant' name='email_enviant' value='" + email_enviant + "'/></li>";
	}else{
		codigo += "<input type='hidden' id='email_enviant' name='email_enviant' value='" + email_enviant + "'/>";
		height-=40;
	}
	codigo+="<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:190px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='contingut'>Mensaje:</label><textarea style='width:250px;height:100px;font-size:18px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;border:1px solid #aaa;overflow:auto;padding:0;color:#777;' id='contingut' name='contingut'>";
	codigo+=contingut;
	codigo+="</textarea></li>";
	codigo+="<li style='width:100%;margin: 10px 0 0 0;text-align:center;'><input style='width:100px;border:2px solid #aaa;background-color:#ccc;font-size:18px;margin: 0 20px 0 0;' type='button' name='Enviar' value='Enviar' onClick='submitEmailShare();'/></li>";
	codigo+="</ul>";
	codigo+="<input type='hidden' id='url' name='url' value='"+url+"'/>";
	codigo+="</div>";
	
	//Ensenyem el popUp
	showPopUpAndShade(codigo, "Enviar a un amigo", width, height);
	
;
}

function showErrorShare(email_enviant, nom_enviant, url, contingut, visible){
	if (typeof(url) == "undefined") {
		url = window.location.href;
	}
	if (typeof(contingut) == "undefined") {
		contingut = "";
	}
	if (typeof(visible) == "undefined") {
		visible = false;
	}
	if (typeof(nom_enviant) == "undefined") {
		nom_enviant = "";
	}
	if (typeof(email_enviant) == "undefined") {
		email_enviant = "";
	}
	var width=470;
	var height=300;
	var codigo="<div id='popUpMail'>";
	codigo+="<div id='notificacioError' style='font-size:15px; padding:0 10px 0 60px; color:red; text-align:left; display:none;'></div>";
	codigo+="<ul style='list-style:none;margin:5px 0 5px 0;padding:0;'>";
	
	if((nom_enviant == "")||(visible == true)){
		codigo += "<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:150px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='nom_enviant'>Tu nombre:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='nom_enviant' name='nom_enviant' value='"+ nom_enviant +"'/></li>";
	}else{
		codigo += "<input type='hidden' id='nom_enviant' name='nom_enviant' value='" + nom_enviant + "'/>";
		height-=40;
	}
	if((email_enviant == "")||(visible == true)){
		codigo += "<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:150px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='email_enviant'>Tu email:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='email_enviant' name='email_enviant' value='" + email_enviant + "'/></li>";
	}else{
		codigo += "<input type='hidden' id='email_enviant' name='email_enviant' value='" + email_enviant + "'/>";
		height-=40;
	}
	codigo+="<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:150px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='contingut'>Mensaje:</label><textarea style='width:250px;height:100px;font-size:18px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;border:1px solid #aaa;overflow:auto;padding:0;color:#777;' id='contingut' name='contingut'>";
	codigo+=contingut;
	codigo+="</textarea></li>";
	codigo+="<li style='width:100%;margin: 10px 0 0 0;text-align:center;'><input style='width:100px;border:2px solid #aaa;background-color:#ccc;font-size:18px;margin: 0 20px 0 0;' type='button' name='Enviar' value='Enviar' onClick='submitErrorShare();'/></li>";
	codigo+="</ul>";
	codigo+="<input type='hidden' id='url' name='url' value='"+url+"'/>";
	codigo+="</div>";
	
	//Ensenyem el popUp
	showPopUpAndShade(codigo, "Reportar un error", width, height);
	
;
}
function showContactShare(email_enviant, nom_enviant, url, contingut, visible){
	if (typeof(url) == "undefined") {
		url = window.location.href;
	}
	if (typeof(contingut) == "undefined") {
		contingut = "";
	}
	if (typeof(visible) == "undefined") {
		visible = false;
	}
	if (typeof(nom_enviant) == "undefined") {
		nom_enviant = "";
	}
	if (typeof(email_enviant) == "undefined") {
		email_enviant = "";
	}
	var width=470;
	var height=300;
	var codigo="<div id='popUpMail'>";
	codigo+="<div id='notificacioError' style='font-size:15px; padding:0 10px 0 60px; color:red; text-align:left; display:none;'></div>";
	codigo+="<ul style='list-style:none;margin:5px 0 5px 0;padding:0;'>";
	
	if((nom_enviant == "")||(visible == true)){
		codigo += "<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:150px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='nom_enviant'>Tu nombre:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='nom_enviant' name='nom_enviant' value='"+ nom_enviant +"'/></li>";
	}else{
		codigo += "<input type='hidden' id='nom_enviant' name='nom_enviant' value='" + nom_enviant + "'/>";
		height-=40;
	}
	if((email_enviant == "")||(visible == true)){
		codigo += "<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:150px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='email_enviant'>Tu email:</label><input style='width:250px;font-size:18px;color:#777;border:1px solid #aaa;' type='text' id='email_enviant' name='email_enviant' value='" + email_enviant + "'/></li>";
	}else{
		codigo += "<input type='hidden' id='email_enviant' name='email_enviant' value='" + email_enviant + "'/>";
		height-=40;
	}
	codigo+="<li style='width:100%;margin:0 0 10px 0;'><label style='font-weight:bolder;text-align:right;display:inline-block;width:150px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;margin: 0 20px 0 0;vertical-align:top;font-size:15px;float:left;' for='contingut'>Mensaje:</label><textarea style='width:250px;height:100px;font-size:18px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;border:1px solid #aaa;overflow:auto;padding:0;color:#777;' id='contingut' name='contingut'>";
	codigo+=contingut;
	codigo+="</textarea></li>";
	codigo+="<li style='width:100%;margin: 10px 0 0 0;text-align:center;'><input style='width:100px;border:2px solid #aaa;background-color:#ccc;font-size:18px;margin: 0 20px 0 0;' type='button' name='Enviar' value='Enviar' onClick='submitContactShare();'/></li>";
	codigo+="</ul>";
	codigo+="<input type='hidden' id='url' name='url' value='"+url+"'/>";
	codigo+="</div>";
	
	//Ensenyem el popUp
	showPopUpAndShade(codigo, "Contactar", width, height);
	
;
}

function submitContactShare(){
  if (validateErrorShareForm()) {
  	if (XHR.busy) {
  		setTimeout(submitErrorShare, 125);
  	}
  	else {
  		var nom_enviant = document.getElementById('nom_enviant').value;
   		var email_enviant = document.getElementById('email_enviant').value;
 		var url = document.getElementById('url').value;
  		var contingut = document.getElementById('contingut').value;
  		
  		var s = "nom_enviant=" + escape(encodeURIComponent(nom_enviant));
  		s += "&email_enviant=" + escape(encodeURIComponent(email_enviant));
  		s += "&contingut=" + escape(encodeURIComponent(contingut));
  		s += "&url=" + escape(url);
  		
  		if (!XHR.send('POST', SERVER_ERROR, s, 2000, 'rnd', false, "envio1", responseContactShare)) {
  			alert("error");
  		}
  	}
	}
}

function submitErrorShare(){
  if (validateErrorShareForm()) {
  	if (XHR.busy) {
  		setTimeout(submitErrorShare, 125);
  	}
  	else {
  		var nom_enviant = document.getElementById('nom_enviant').value;
   		var email_enviant = document.getElementById('email_enviant').value;
 		var url = document.getElementById('url').value;
  		var contingut = document.getElementById('contingut').value;
  		
  		var s = "nom_enviant=" + escape(encodeURIComponent(nom_enviant));
  		s += "&email_enviant=" + escape(encodeURIComponent(email_enviant));
  		s += "&contingut=" + escape(encodeURIComponent(contingut));
  		s += "&url=" + escape(url);
  		
  		if (!XHR.send('POST', SERVER_ERROR, s, 2000, 'rnd', false, "envio1", responseErrorShare)) {
  			alert("error");
  		}
  	}
	}
}
function validateErrorShareForm(){
	var nom_enviant = document.getElementById('nom_enviant').value;
  	var email_enviant = document.getElementById('email_enviant').value;
  	var contingut = document.getElementById('contingut').value;
	
	clearNotifications();
	if (nom_enviant.length < 2) {
		notifyError("nom_enviant", "Por favor, especifica tu nombre.");
		return false;
	}else if(email_enviant.length < 2){
		notifyError("email_enviant", "Por favor, especifica tu email.");
		return false;
	}else if((email_enviant.indexOf('@') == -1)||(email_enviant.indexOf('.') == -1)||(email_enviant.indexOf(' ') != -1)){
		notifyError("email_enviant", "Tu email es incorrecto.");
		return false;
	}else if(contingut.length < 2){
		notifyError("contingut", "El campo mensaje no puede estar vac&iacute;o.");
		return false;
	}
	return true;
}

function submitEmailShare(){
  if (validateEmailShareForm()) {
  	if (XHR.busy) {
  		setTimeout(submitEmailShare, 125);
  	}
  	else {
  		var nom_enviant = document.getElementById('nom_enviant').value;
  		var nom_receptor = document.getElementById('nom_receptor').value
  		var email_enviant = document.getElementById('email_enviant').value;
  		var email_receptor = document.getElementById('email_receptor').value;
  		var url = document.getElementById('url').value;
  		var contingut = document.getElementById('contingut').value;
  		
  		var s = "nom_enviant=" + escape(encodeURIComponent(nom_enviant));
  		s += "&nom_receptor=" + escape(encodeURIComponent(nom_receptor));
  		s += "&email_receptor=" + escape(encodeURIComponent(email_receptor));
  		s += "&email_enviant=" + escape(encodeURIComponent(email_enviant));
  		s += "&contingut=" + escape(encodeURIComponent(contingut));
  		s += "&url=" + escape(url);
  		
  		if (!XHR.send('POST', SERVER, s, 2000, 'rnd', false, "envio1", responseEmailShare)) {
  			alert("error");
  		}
  	}
	}
}
function validateEmailShareForm(){
	var nom_receptor = document.getElementById('nom_receptor').value
 	var email_receptor = document.getElementById('email_receptor').value;
	var nom_enviant = document.getElementById('nom_enviant').value;
  	var email_enviant = document.getElementById('email_enviant').value;
  	var contingut = document.getElementById('contingut').value;
	
	clearNotifications();
	if (nom_receptor.length < 2) {
		notifyError("nom_receptor", "Por favor, especifica el nombre del destinatario.");
		return false;
	}else if(email_receptor.length < 2){
		notifyError("email_receptor", "Por favor, especifica el email del destinatario.");
		return false;
	}else if((email_receptor.indexOf('@') == -1)||(email_receptor.indexOf('.') == -1)||(email_receptor.indexOf(' ') != -1)){
		notifyError("email_receptor", "El email del destinatario es incorrecto.");
		return false;
	}else if (nom_enviant.length < 2) {
		notifyError("nom_enviant", "Por favor, especifica tu nombre.");
		return false;
	}else if(email_enviant.length < 2){
		notifyError("email_enviant", "Por favor, especifica tu email.");
		return false;
	}else if((email_enviant.indexOf('@') == -1)||(email_enviant.indexOf('.') == -1)||(email_enviant.indexOf(' ') != -1)){
		notifyError("email_enviant", "Tu email es incorrecto.");
		return false;
	}else if(contingut.length < 2){
		notifyError("contingut", "El campo mensaje no puede estar vac&iacute;o.");
		return false;
	}
	return true;
}
function clearNotifications(){
	var element;
	element = document.getElementById("nom_receptor");
	if((typeof(element) != 'undefined')&&(element != null)){
		element.style.border = "1px solid #ccc";
	}
	element = document.getElementById("email_receptor");
	if((typeof(element) != 'undefined')&&(element != null)){
		element.style.border = "1px solid #ccc";
	}
	element = document.getElementById("nom_enviant");
	if((typeof(element) != 'undefined')&&(element != null)){
		element.style.border = "1px solid #ccc";
	}
	element = document.getElementById("email_enviant");
	if((typeof(element) != 'undefined')&&(element != null)){
		element.style.border = "1px solid #ccc";
	}
	element = document.getElementById("contingut");
	if((typeof(element) != 'undefined')&&(element != null)){
		element.style.border = "1px solid #ccc";
	}
	
}
function notifyError(id,message){
	var divmis = document.getElementById('notificacioError');
	divmis.style.display = 'block';
	divmis.innerHTML=message;
	var element = document.getElementById(id);
	element.style.border = "1px solid red";
}
function responseErrorShare(req, status, obj){
  var s = '';
  if (status == XHR.OK) {
   s = req.responseText;
   if (s.indexOf("OK") != -1) {
   	s = "Tu mensaje ha sido enviado correctamente. Muchas gracias por tu colaboración."
   	h = "Mensaje enviado";
   }
   else {
   	s = "Se ha producido un error en el env&iacute;o del mensaje. Por favor, int&eacute;ntalo de nuevo m&aacute;s tarde."
   	h = "Error";
   }
  }
  else {
 	s = "Se ha producido un error en el env&iacute;o del mensaje. Por favor, int&eacute;ntalo de nuevo m&aacute;s tarde.";
	h = "Error";
   }
   hidePopUp();
   showNotifyPopUp(h,s);
}
function responseContactShare(req, status, obj){
  var s = '';
  if (status == XHR.OK) {
   s = req.responseText;
   if (s.indexOf("OK") != -1) {
   	s = "Tu mensaje ha sido enviado correctamente. Muchas gracias por tu colaboración."
   	h = "Mensaje enviado";
   }
   else {
   	s = "Se ha producido un error en el env&iacute;o del mensaje. Por favor, int&eacute;ntalo de nuevo m&aacute;s tarde."
   	h = "Error";
   }
  }
  else {
 	s = "Se ha producido un error en el env&iacute;o del mensaje. Por favor, int&eacute;ntalo de nuevo m&aacute;s tarde.";
	h = "Error";
   }
   hidePopUp();
   showNotifyPopUp(h,s);
}


function responseEmailShare(req, status, obj){
  var s = '';
  if (status == XHR.OK) {
   s = req.responseText;
   if (s.indexOf("OK") != -1) {
   	s = "Tu mensaje ha sido enviado correctamente."
   	h = "Mensaje enviado";
   }
   else {
   	s = "Se ha producido un error en el env&iacute;o del mensaje. Por favor, int&eacute;ntalo de nuevo m&aacute;s tarde."
   	h = "Error";
   }
  }
  else {
 	s = "Se ha producido un error en el env&iacute;o del mensaje. Por favor, int&eacute;ntalo de nuevo m&aacute;s tarde.";
	h = "Error";
   }
   hidePopUp();
   showNotifyPopUp(h,s);
}



// xHttpRequest r9, Copyright 2006-2007 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL

function xHttpRequest() // object prototype
{
  // Private Properties
  var _i = this; // instance object
  var _r = null; // XMLHttpRequest object
  var _t = null; // timer
  var _f = null; // callback function
  var _x = false; // XML response pending
  var _o = null; // user data object passed to _f
  var _c = false; // self-clean after send() completed?
  // Public Properties
  _i.OK = 0;
  _i.NOXMLOBJ = 1;
  _i.REQERR = 2;
  _i.TIMEOUT = 4;
  _i.RSPERR = 8;
  _i.NOXMLCT = 16;
  _i.ABORTED = 32;
  _i.status = _i.OK;
  _i.error = null;
  _i.busy = false;
  // Private Methods
  function _clean()
  {
    _i = null;
    _r = null;
    _t = null;
    _f = null;
    _x = false;
    _o = null;
    _c = false;
  }
  function _clrTimer()
  {
    if (_t) {
      clearTimeout(_t);
    }
    _t = null;
  }
  function _endCall()
  {
    if (_f) {
      _f(_r, _i.status, _o);
    }
    _f = null; _x = false; _o = null;
    _i.busy = false;
    if (_c) {
      _clean();
    }
  }
  function _abort(s)
  {
    _clrTimer();
    try {
      _r.onreadystatechange = function(){};
      _r.abort();
    }
    catch (e) {
      _i.status |= _i.RSPERR;
      _i.error = e;
    }
    _i.status |= s;
    _endCall();
  }
  function _newXHR()
  {
    try { _r = new XMLHttpRequest(); }
    catch (e) { try { _r = new ActiveXObject('Msxml2.XMLHTTP'); }
    catch (e) { try { _r = new ActiveXObject('Microsoft.XMLHTTP'); }
    catch (e) { _r = null; _i.error = e; }}}
    if (!_r) { _i.status |= _i.NOXMLOBJ; }
  }
  // Private Event Listeners
  function _oc() // onReadyStateChange
  {
    var ct;
    if (_r.readyState == 4) {
      _clrTimer();
      try {
        if (_r.status != 200) _i.status |= _i.RSPERR;
        if (_x) {
          ct = _r.getResponseHeader('Content-Type');
          if (ct && ct.indexOf('xml') == -1) { _i.status |= _i.NOXMLCT; }
        }
        delete _r['onreadystatechange']; // _r.onreadystatechange = null;
      }
      catch (e) {
        _i.status |= _i.RSPERR;
        _i.error = e;
      }
      _endCall();
    }
  }
  function _ot() // onTimeout
  {
    _t = null;
    _abort(_i.TIMEOUT);
  }
  // Public Methods
  this.send = function(m, u, d, t, r, x, o, f, c)
  {
    if (!_r || _i.busy) { return false; }
    _c = (c ? true : false);
    m = m.toUpperCase();
    if (m != 'POST') {
      if (d) {
        d = '?' + d;
        if (r) { d += '&' + r + '=' + Math.round(10000*Math.random()); }
      }
      else { d = ''; }
    }
    _x = (x ? true : false);
    _o = o;
    _f = f;
    _i.busy = true;
    _i.status = _i.OK;
    _i.error = null;
    if (t) { _t = setTimeout(_ot, t); }
    try {
      if (m == 'GET') {
        _r.open(m, u + d, true);
        d = null;
        _r.setRequestHeader('Cache-Control', 'no-cache');
        var ct = 'text/' + (_x ? 'xml':'plain');
        if (_r.overrideMimeType) {_r.overrideMimeType(ct);}
        _r.setRequestHeader('Content-Type', ct);
      }
      else if (m == 'POST') {
        _r.open(m, u, true);
        _r.setRequestHeader('Method', 'POST ' + u + ' HTTP/1.1');
        _r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      }
      else {
        _r.open(m, u + d, true);
        d = null;
      }
      _r.onreadystatechange = _oc;
      _r.send(d);
    }
    catch(e) {
      _clrTimer();
      _f = null; _x = false; _o = null;
      _i.busy = false;
      _i.status |= _i.REQERR;
      _i.error = e;
      if (_c) {
        _clean();
      }
      return false;
    }
    return true;
  };
  this.abort = function()
  {
    if (!_r || !_i.busy) { return false; }
    _abort(_i.ABORTED);
    return true;
  };
  this.reinit = function()
  {
    // Halt any HTTP request that may be in progress.
    this.abort();
    // Set all private vars to initial state.
    _clean();
    _i = this;
    // Set all (non-constant) public properties to initial state.
    _i.status = _i.OK;
    _i.error = null;
    _i.busy = false;
    // Create the private XMLHttpRequest object.
    _newXHR();
    return true;
  };
  // Constructor Code
  _newXHR();
}


