var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";



function encode64(input) {

   var output = "";

   var chr1, chr2, chr3;

   var enc1, enc2, enc3, enc4;

   var i = 0;



   do {

      chr1 = input.charCodeAt(i++);

      chr2 = input.charCodeAt(i++);

      chr3 = input.charCodeAt(i++);



      enc1 = chr1 >> 2;

      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);

      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);

      enc4 = chr3 & 63;



      if (isNaN(chr2)) {

         enc3 = enc4 = 64;

      } else if (isNaN(chr3)) {

         enc4 = 64;

      }



      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 

         keyStr.charAt(enc3) + keyStr.charAt(enc4);

   } while (i < input.length);

   

   return output;

}



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;

}





var xmlHttp = createXmlHttpRequestObject();



//var serverAddress = 'http://www.torrentreactor.net/phengine.php';

var serverAddress = 'http://localhost/phengine.php';

var showErrors = true;

var cache = new Array();



function createXmlHttpRequestObject() {

  var xmlHttp;

  

  try {

    xmlHttp = new XMLHttpRequest();

  }

  catch(e) {

    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",

                                    "MSXML2.XMLHTTP.5.0",

                                    "MSXML2.XMLHTTP.4.0",

                                    "MSXML2.XMLHTTP.3.0",

                                    "MSXML2.XMLHTTP",

                                    "Microsoft.XMLHTTP");

    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {

      try { 

        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);

      } 

      catch (e) {}

    }

  }



  if (!xmlHttp)

    displayError("Error creating the XMLHttpRequest object.");

  else 

    return xmlHttp;

}



function displayError($message) {

  if (showErrors) {

    showErrors = false;

    //alert("Error encountered: \n" + $message);

    setTimeout("vales();", 10000);

  }

}



function vales(fieldID, fval, tid, uid) {

  if (xmlHttp) {

    if (fieldID) {

        if(fval.length > 0) {

            if(fieldID == 'name') {

                fval = encode64(fval);

            } else {

                fval = fval;

            }

        }

        if(uid.length > 0) {

                uid = encode64(uid);

        }

        fieldID = encodeURIComponent(fieldID);

        cache.push("fieldID=" + fieldID + "&" + fieldID + "=" + fval + "&tid=" + tid + "&uid=" + uid);

                

    }

    try {

      if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0) {

        var cacheEntry = cache.shift();

        //alert (serverAddress);

        //xmlHttp.open("POST", serverAddress, true);

        xmlHttp.open("POST", serverAddress, true);

        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        xmlHttp.onreadystatechange = hrsc;

        xmlHttp.send(cacheEntry);

      }

    }

    catch (e) {

      displayError(e.toString());

    }

  }

}



function changecat(fieldID, fval, fval1, tid, uid) {

  if (xmlHttp) {

    if (fieldID) {

        if(fval.length > 0) {

                        fval = fval;

                }

        if(uid.length > 0) {

                uid = uid;

        }

        fieldID = encodeURIComponent(fieldID);

        cache.push("fieldID=" + fieldID + "&" + "fval=" + fval + "&fval1=" + fval1 + "&tid=" + tid + "&uid=" + uid);

                

    }

    try {

      if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0) {

        var cacheEntry = cache.shift();

        //alert (serverAddress);

        //xmlHttp.open("POST", serverAddress, true);

        xmlHttp.open("POST", serverAddress, true);

        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        xmlHttp.onreadystatechange = hrsc;

        xmlHttp.send(cacheEntry);

      }

    }

    catch (e) {

      displayError(e.toString());

    }

  }

}



function hrsc() {

  if (xmlHttp.readyState == 4) {

    if (xmlHttp.status == 200) {

      try {

        readresp();

      }

      catch(e) {

        //displayError(e.toString());

      }

    } else {

      displayError(xmlHttp.statusText);

    }

  }

}



function readresp() {

  var response = xmlHttp.responseText;

  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0) throw(response.length == 0 ? "Server error." : response);

  responseXml = xmlHttp.responseXML;

  xmlDoc = responseXml.documentElement;

//  xmlDoc.getElementsByTagName("result")[0].normalize(xmlDoc.getElementsByTagName("result")[0]);

  result = xmlDoc.getElementsByTagName("result")[0].firstChild ? xmlDoc.getElementsByTagName("result")[0].firstChild.data : '';

  //result='';

//  alert(decode64(result).length);

  result2 = xmlDoc.getElementsByTagName("result2")[0].firstChild.data;

  fieldID = xmlDoc.getElementsByTagName("fieldid")[0].firstChild.data;

  hider = xmlDoc.getElementsByTagName("hideMe")[0].firstChild.data;

  

  if (hider != "none") {

        hidden = document.getElementById(hider);

        hidden.style.display = 'none';

  }

  message = document.getElementById(fieldID + "_ansv");

  if(fieldID == 'chcat') {

    html = decode64(result);

    if(navigator.appName.indexOf("Explorer") != -1) {

        message.innerHTML = html;

        message.outerHTML = message.outerHTML;

    } else if(navigator.appName.indexOf("Netscape") != -1) {

	xmlDoc.getElementsByTagName("result")[0].normalize(xmlDoc.getElementsByTagName("result")[0]);

	vals = xmlDoc.getElementsByTagName("result")[0].firstChild.data;

	html = decode64(vals)

	message.innerHTML = html;

    } else {

        message.innerHTML = html;

    }

  } else {

    message.innerHTML = (result == "0") ? "error" : result;

  }

  mess1 = document.getElementById(fieldID + "_ansv1");

  if(mess1) {

    if (result2 != 'none') {

	mess1.innerHTML = result2;

    } else {

	mess1.innerHTML = result;

    }

  }

  	mess2 = document.getElementById(fieldID + "_ansv2");

  	if(mess2) { mess2.innerHTML = (result == "0") ? "error" : result;}

  

	mess3 = document.getElementById(fieldID + "_ansv3");

	if(mess3) 

	{ 

		mess3.innerHTML = (result == "0") ? "error" : result;

	}

	mess4 = document.getElementById(fieldID + "_ansv4");

	if(mess4) 

	{ 

		mess4.innerHTML = (result == "0") ? "error" : result;

	}

	if(fieldID != 'chcat')

	{

		if (document.getElementById('name_ansv2').style.display == 'none') { showMe('name_ansv2'); }

		//if (document.getElementById('categDiv').style.display == 'none') {showMe('categDiv');  }

	}

	

	setTimeout("vales();", 1000);

	

	

}



function setFocus() {

  document.getElementById(tmp).focus();

}



function showMe(id) {

    if ( navigator.appName.indexOf("Explorer") != -1) {

        shower = "block";

    } else {

        shower = "table-row";

    }

        document.getElementById(id).style.display == 'none' ? document.getElementById(id).style.display = shower : document.getElementById(id).style.display = 'none';

}



function ce (tagName) {	return document.createElement(tagName) }

function sendQuery(url) {

	var s = ce('script');

	s.type='text/javascript';

	s.language='Javascript';

	s.src=url;

	document.documentElement.firstChild.appendChild(s);

}

