Вход Регистрация
Файл: ajax/ajax.js
Строк: 227
<?php
/* 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() {
        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(namevalue){
        
this.vars[name] = Array(valuefalse);
    };

    
this.encVar = function(namevaluereturnvars) {
        if (
true == returnvars) {
            return Array(
encodeURIComponent(name), encodeURIComponent(value));
        } else {
            
this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
        }
    }

    
this.processURLString = function(stringencode) {
        
encoded encodeURIComponent(this.argumentSeparator);
        
regexp = new RegExp(this.argumentSeparator "|" encoded);
        
varArray string.split(regexp);
        for (
0varArray.lengthi++){
            
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.URLStringtrue);
        }

        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(keythis.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.methodtotalurlstringtrue);
                } else {
                    
this.xmlhttp.open(this.methodthis.requestFiletrue);
                    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 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();
                            }
                            
/* These lines were added by Alf Magne Kalleland ref. info on the sack home page. It prevents memory leakage in IE */
                            
self.URLString "";
                            
delete self.xmlhttp['onreadystatechange'];
                            
self.xmlhttp=null;
                            
self.responseStatus=null;
                            
self.response=null;
                            
self.responseXML=null;
                            
                            break;
                    }
                };

                
this.xmlhttp.send(this.URLString);
            }
        }
    };

    
this.reset();
    
this.createAJAX();
}
?>
Онлайн: 1
Реклама