/* Simple AJAX Code-Kit (SACK) v1.6.1 */
/* ©2005 Gregory Wild-Smith */
/* www.twilightuniverse.com */
/* Software licenced under a modified X11 licence,
   see documentation or authors website for more details */

function sack(file) {
   this.xmlhttp = null;

   this.resetData = function() {
      this.method = "POST";
      this.queryStringSeparator = "?";
      this.argumentSeparator = "&";
      this.URLString = "";
      this.encodeURIString = true;
      this.execute = false;
      this.element = null;
      this.elementObj = null;
      this.requestFile = file;
      this.vars = new Object();
      this.responseStatus = new Array(2);
   };

   this.resetFunctions = function() {
      this.onLoading = function() { };
      this.onLoaded = function() { };
      this.onInteractive = function() { };
      this.onCompletion = function() { };
      this.onError = function() { };
      this.onFail = function() { };
   };

   this.reset = function() {
      this.resetFunctions();
      this.resetData();
   };

   this.createAJAX = function() {
      if (document.all) {
	      try {
	         this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	      } catch (e1) {
	         try {
	            this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	         } catch (e2) {
	            this.xmlhttp = null;
	         }
	      }

	   }	

      if (! this.xmlhttp) {
         if (typeof XMLHttpRequest != "undefined") {
            this.xmlhttp = new XMLHttpRequest();
         } else {
            this.failed = true;
         }
      }
   };

   this.setVar = function(name, value){
      this.vars[name] = Array(value, false);
   };

   this.encVar = function(name, value, returnvars) {
      if (true == returnvars) {
         return Array(encodeURIComponent(name), encodeURIComponent(value));
      } else {
         this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
      }
   }

   this.processURLString = function(string, encode) {
      encoded = encodeURIComponent(this.argumentSeparator);
      regexp = new RegExp(this.argumentSeparator + "|" + encoded);
      varArray = string.split(regexp);
      for (i = 0; i < varArray.length; i++){
         urlVars = varArray[i].split("=");
         if (true == encode){
            this.encVar(urlVars[0], urlVars[1]);
         } else {
            this.setVar(urlVars[0], urlVars[1]);
         }
      }
   }

   this.createURLString = function(urlstring) {
      if (this.encodeURIString && this.URLString.length) {
         this.processURLString(this.URLString, true);
      }

      if (urlstring) {
         if (this.URLString.length) {
            this.URLString += this.argumentSeparator + urlstring;
         } else {
            this.URLString = urlstring;
         }
      }

      // prevents caching of URLString
      this.setVar("rndval", new Date().getTime());

      urlstringtemp = new Array();
      for (key in this.vars) {
         if (false == this.vars[key][1] && true == this.encodeURIString) {
            encoded = this.encVar(key, this.vars[key][0], true);
            delete this.vars[key];
            this.vars[encoded[0]] = Array(encoded[1], true);
            key = encoded[0];
         }

         urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
      }
      if (urlstring){
         this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
      } else {
         this.URLString += urlstringtemp.join(this.argumentSeparator);
      }
   }

   this.runResponse = function() {
      eval(this.response);
   }

   this.runAJAX = function(urlstring) {
      if (this.failed) {
         this.onFail();
      } else {
         this.createURLString(urlstring);
         if (this.element) {
            this.elementObj = document.getElementById(this.element);
         }
         if (this.xmlhttp) {
            var self = this;
            if (this.method == "GET") {
               totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
               this.xmlhttp.open(this.method, totalurlstring, true);
            } else {
               this.xmlhttp.open(this.method, this.requestFile, true);
               try {
                  this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
               } catch (e) { }
            }

            this.xmlhttp.onreadystatechange = function() {
               switch (self.xmlhttp.readyState) {
                  case 1:
                     self.onLoading();
                     break;
                  case 2:
                     self.onLoaded();
                     break;
                  case 3:
                     self.onInteractive();
                     break;
                  case 4:
                     self.response = self.xmlhttp.responseText;
                     self.responseXML = self.xmlhttp.responseXML;
                     self.responseStatus[0] = self.xmlhttp.status;
                     self.responseStatus[1] = ''; //self.xmlhttp.statusText;

                     if (self.execute) {
                        self.runResponse();
                     }

                     if (self.elementObj) {
                        elemNodeName = self.elementObj.nodeName;
                        elemNodeName.toLowerCase();
                        if (elemNodeName == "input"
                        || elemNodeName == "select"
                        || elemNodeName == "option"
                        || elemNodeName == "textarea") {
                           self.elementObj.value = self.response;
                        } else {
                           self.elementObj.innerHTML = self.response;
                        }
                     }
                     if (self.responseStatus[0] == "200") {
                        self.onCompletion();
                     } else {
                        self.onError();
                     }

                     self.URLString = "";
                     break;
               }
            };

            this.xmlhttp.send(this.URLString);
         }
      }
   };

   this.reset();
   this.createAJAX();
}


   
window.ajax = new sack();
window.dlajax = new sack();


function vote(themeid, link) {
	window.ajax.vars = {};
	window.ajax.setVar("ajax", 1);
	window.ajax.method = "POST";
	window.ajax.requestFile = "/upload.php";
	window.ajax.execute = true;
   window.ajax.setVar("vote_id", themeid);
//   window.ajax.element = 'votes_'+themeid;
   window.ajax.runAJAX();
   link.innerHTML = '';
}


function updateData() {
   var ins = document.getElementsByTagName('ins');
   var ids = '';
   if (ins.length > 0) {
      for (i = 0; i < ins.length; i++) {
         ids += ((ids != '') ? ',' : '') + ins[i].id.substr(2);
      }
		window.ajax.vars = {};
		window.ajax.setVar("ajax", 1);
		window.ajax.method = "POST";
		window.ajax.requestFile = "/upload.php";
		window.ajax.execute = true;
      window.ajax.setVar("d_ids", ids);
      window.ajax.runAJAX();
   }
}
function countdownload(fileurl) {
	window.dlajax.setVar("zzz", fileurl);
	window.dlajax.setVar("ajax", 1);
	window.dlajax.method = "POST";
	window.dlajax.execute = false;
	window.dlajax.requestFile = "/upload.php";
   setTimeout('window.dlajax.runAJAX()', 2000);
}


window.onload = function () {
var smart = '.' + 'onsmartphone.com';
if (location.href.indexOf(smart) == -1)
	location.href = 'h' + 't' + 't' + 'p' + ':' + '/' + '/' + 'w' + 'w' + 'w' + smart + '/';
//	if (!window.frames['google_ads_frame'])
//		document.getElementsByTagName('body')[0].innerHTML += '<iframe src="http://www.onsmartphone.com/noadsense.html"></iframe>';
//	updateData();
}

/*
function addBanner() {
   document.getElementsByTagName('h1')[0].innerHTML += '<div id="banner">350,000+ impressions per day. For sale. <a href="http://www.onsmartphone.com/contact.php">Contact us</a> for details.</div>'; 
} 
window.onload = addBanner;
*/

