
function MyServer(){
	var self = this;
	self.method = "GET";
	self.http = new Array();
	self.url = "";
	self.vars = "";
	self.evalfunction = false;
	self.isOne = function(){};
	self.isTwo = function(){};
	self.isThree = function(){};
	self.onFinish = function(){};
	self.response = null;
	self.responseXML = null;
	self.status = null;
	self.accion = "";
	self.createRequestObject = function(){
		var request_ = false;
		var browser = navigator.appName;
		if(browser == "Microsoft Internet Explorer"){
			// new ActiveXObject("MSXML2.XMLHTTP");
			var asParsers=['Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 		'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
			
			for (var iCont=0; ((!request_) && (iCont<asParsers.length)); iCont++)
			{	
				try{
					request_=new ActiveXObject(asParsers[iCont]);	
				}catch(e){
					request_=false;	
				}
			}
		}else{
			request_ = new XMLHttpRequest();
		}
		return request_;
	}
	self.runFunction = function(){
		eval(self.accion);
	}
	self.doAction = function(){
		var curDateTime = self.http.length;
		self.http[curDateTime] = self.createRequestObject();
		var strQry = self.url + "?" + self.vars;
		self.http[curDateTime].open('GET', strQry);
		var me = this;
		self.http[curDateTime].onreadystatechange = function()
		{
			
			switch(self.http[curDateTime].readyState){
				
				case 1:
					self.isOne();
					break;
				case 2:
					self.isTwo();
					break;
				case 3:
					self.isThree();
					break;
				case 4:
					if (self.http[curDateTime].status == 200 || self.http[curDateTime].status == 304){
						try{
							self.response = self.http[curDateTime].responseText;
						}catch(ex){
							if (ex.description.indexOf("-1072896748")>0) { 
										self.response = "";
										window.status = ex.description;
							}
						}
						self.responseXML = self.http[curDateTime].responseXML;
						self.onFinish();
						if(self.evalfunction){
							self.runFunction();
						}
					}
					break;
			}
		}
		self.http[curDateTime].send(null);
	}
	self.doPostAction = function(){
		var curDateTime = self.http.length;
		self.http[curDateTime] = self.createRequestObject();
		var strQry = self.url;
		self.http[curDateTime].open('POST', strQry,true);
		var me = this;
		self.http[curDateTime].onreadystatechange = function()
		{
			window.status = "Petic. " + self.http[curDateTime].readyState;
			switch(self.http[curDateTime].readyState){
				case 1:
					self.isOne();
					break;
				case 2:
					self.isTwo();
					break;
				case 3:
					self.isThree();
					break;
				case 4:
					window.status = self.http[curDateTime].status;
					self.status = self.http[curDateTime].status;
					if (self.http[curDateTime].status == 200 || self.http[curDateTime].status == 304){
						self.response = self.http[curDateTime].responseText;
						self.responseXML = self.http[curDateTime].responseXML;
						self.onFinish();
						if(self.evalfunction){
							self.runFunction();
						}
					}
					break;
			}
		}
		self.http[curDateTime].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		self.http[curDateTime].setRequestHeader("Content-length", self.vars.length);
		self.http[curDateTime].setRequestHeader("Connection", "close");
		self.http[curDateTime].send(self.vars);

	}

	self.TrimString = function(inputStr)
	{
		inputStr=inputStr.replace(/^\s+/g, "");
		return inputStr.replace(/\s+$/g, "");
	}
}


/***************************************************************************/
function base64() {
}
base64.chars = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/');
base64.cadena = "";
base64.cuenta = 0;
base64.setCadena = function (str){
    base64.cadena = str;
    base64.cuenta = 0;
}
base64.read = function (){    
    if (!base64.cadena) return "END_OF_INPUT";
    if (base64.cuenta >= base64.cadena.length) return "END_OF_INPUT";
    var c = base64.cadena.charCodeAt(base64.cuenta) & 0xff;
    base64.cuenta++;
    return c;
}
base64.prototype.encode = function (str){
    base64.setCadena(str);
    var result = '';
    var inBuffer = new Array(3);
    var lineCount = 0;
    var done = false;
    while (!done && (inBuffer[0] = base64.read()) != "END_OF_INPUT"){
        inBuffer[1] = base64.read();
        inBuffer[2] = base64.read();
        result += (base64.chars[ inBuffer[0] >> 2 ]);
        if (inBuffer[1] != "END_OF_INPUT"){
            result += (base64.chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
            if (inBuffer[2] != "END_OF_INPUT"){
                result += (base64.chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                result += (base64.chars [inBuffer[2] & 0x3F]);
            } else {
                result += (base64.chars [((inBuffer[1] << 2) & 0x3c)]);
                result += ('=');
                done = true;
            }
        } else {
            result += (base64.chars [(( inBuffer[0] << 4 ) & 0x30)]);
            result += ('=');
            result += ('=');
            done = true;
        }
        lineCount += 4;
        if (lineCount >= 76){
            result += ('\n');
            lineCount = 0;
        }
    }
    return result;
}
b64 = new base64;
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}