﻿/*innerHTML.js*/

var ZZ_SplitRecordSet_global_html_pool = [];   
var ZZ_SplitRecordSet_global_script_pool = [];   
var ZZ_SplitRecordSet_global_script_src_pool = [];   
var ZZ_SplitRecordSet_global_lock_pool = [];   
var ZZ_SplitRecordSet_set_innerHTML_lock = null;   
var ZZ_SplitRecordSet_document_buffer = "";   
   
function ZZ_SplitRecordSet_set_innerHTML(obj_id, html, time) {   
        if (ZZ_SplitRecordSet_set_innerHTML_lock == null) {   
                ZZ_SplitRecordSet_set_innerHTML_lock = obj_id;   
        }   
        else if (typeof(time) == "undefined") {   
                ZZ_SplitRecordSet_global_lock_pool[obj_id + "_html"] = html;   
                window.setTimeout("ZZ_SplitRecordSet_set_innerHTML('" + obj_id + "', ZZ_SplitRecordSet_global_lock_pool['" + obj_id + "_html']);", 10);   
                return;   
        }   
        else if (ZZ_SplitRecordSet_set_innerHTML_lock != obj_id) {   
                ZZ_SplitRecordSet_global_lock_pool[obj_id + "_html"] = html;   
                window.setTimeout("ZZ_SplitRecordSet_set_innerHTML('" + obj_id + "', ZZ_SplitRecordSet_global_lock_pool['" + obj_id + "_html'], " + time + ");", 10);   
                return;   
        }   
   
        function get_script_id() {   
                return "script_" + (new Date()).getTime().toString(36) + Math.floor(Math.random() * 100000000).toString(36);   
        }   
   
        ZZ_SplitRecordSet_document_buffer = "";   
   
        ZZ_SplitRecordSet_write = function (str) {   
                ZZ_SplitRecordSet_document_buffer += str;   
        }   
        ZZ_SplitRecordSet_writeln = function (str) {   
                ZZ_SplitRecordSet_document_buffer += str + "\n";   
        }   
   
        ZZ_SplitRecordSet_global_html_pool = [];   
   
        var scripts = [];   
        html = html.split(/<\/script>/i);   
        for (var i = 0; i < html.length; i++) {   
                ZZ_SplitRecordSet_global_html_pool[i] = html[i].replace(/<script[\s\S]*$/ig, "");   
                scripts[i] = {text: '', src: '' };   
                scripts[i].text = html[i].substr(ZZ_SplitRecordSet_global_html_pool[i].length);   
                scripts[i].src = scripts[i].text.substr(0, scripts[i].text.indexOf('>') + 1);   
                scripts[i].src = scripts[i].src.match(/src\s*=\s*(\"([^\"]*)\"|\'([^\']*)\'|([^\s]*)[\s>])/i);  
                if (scripts[i].src) {  
                        if (scripts[i].src[2]) {  
                                scripts[i].src = scripts[i].src[2];  
                        }  
                        else if (scripts[i].src[3]) {  
                                scripts[i].src = scripts[i].src[3];  
                        }  
                        else if (scripts[i].src[4]) {  
                                scripts[i].src = scripts[i].src[4];  
                        }  
                        else {  
                                scripts[i].src = "";  
                        }  
                        scripts[i].text = "";  
                }  
                else {  
                        scripts[i].src = "";  
                        scripts[i].text = scripts[i].text.substr(scripts[i].text.indexOf('>') + 1);  
                        scripts[i].text = scripts[i].text.replace(/^\s*<\!--\s*/g, "");   
                }   
        }   
   
        var s;   
        if (typeof(time) == "undefined") {  
                s = 0;  
        }  
        else {  
                s = time;  
        }  
  
        var script, add_script, remove_script;  
  
        for (var i = 0; i < scripts.length; i++) {  
                var add_html = "ZZ_SplitRecordSet_document_buffer += ZZ_SplitRecordSet_global_html_pool[" + i + "];\n";  
                add_html += "document.getElementById('" + obj_id + "').innerHTML = ZZ_SplitRecordSet_document_buffer;\n";  
                script = document.createElement("script");  
                if (scripts[i].src) {  
                        script.src = scripts[i].src;  
                        if (typeof(ZZ_SplitRecordSet_global_script_src_pool[script.src]) == "undefined") {  
                                ZZ_SplitRecordSet_global_script_src_pool[script.src] = true;  
                                s += 2000;  
                        }  
                        else {  
                                s += 10;  
                        }  
                }  
                else {  
                        script.text = scripts[i].text;  
                        s += 10;  
                }  
                script.defer = true;  
                script.type =  "text/javascript";  
                script.id = get_script_id();  
                ZZ_SplitRecordSet_global_script_pool[script.id] = script;  
                add_script = add_html;  
                add_script += "document.getElementsByTagName('head').item(0)";   
                add_script += ".appendChild(ZZ_SplitRecordSet_global_script_pool['" + script.id + "']);\n";  
                window.setTimeout(add_script, s);  
                remove_script = "document.getElementsByTagName('head').item(0)";  
                remove_script += ".removeChild(document.getElementById('" + script.id + "'));\n";  
                remove_script += "delete ZZ_SplitRecordSet_global_script_pool['" + script.id + "'];\n";  
                window.setTimeout(remove_script, s + 10000);  
        }  
  
        var end_script = "if (ZZ_SplitRecordSet_document_buffer.match(/<\\/script>/i)) {\n";  
        end_script += "ZZ_SplitRecordSet_set_innerHTML('" + obj_id + "', ZZ_SplitRecordSet_document_buffer, " + s + ");\n";  
        end_script += "}\n";  
        end_script += "else {\n";  
        end_script += "document.getElementById('" + obj_id + "').innerHTML = ZZ_SplitRecordSet_document_buffer;\n";  
        end_script += "ZZ_SplitRecordSet_set_innerHTML_lock = null;\n";  
        end_script += "}";   
        window.setTimeout(end_script, s);   
}

/*ajax.js*/

function ZZ_SplitRecordSet_Ajax(url ,callback)
{
        try{
                this.HttpRequest = null;
                this.Debug  = false;
                this.Url = url;
                this.ContentType = "text/xml";
                this.HttpRequest = this.createXMLHttpRequest();

                if (this.HttpRequest == null)
                {
                        this._debug("XMLHttpRequest create failure!");
                        return;
                }

                var xhReq = this.HttpRequest;
                xhReq.onreadystatechange = function (){
                        ZZ_SplitRecordSet_Ajax._OnReadyStateChange(xhReq,callback);
                }

        }
        catch(e){
                this._debug("unknow err: " + e.message);
        }
}

ZZ_SplitRecordSet_Ajax.prototype.Get = function()
{
        this.SetContentType("text/html");
        this._get();
}

ZZ_SplitRecordSet_Ajax.prototype.Post = function(arrKey, arrValue)
{
        var data = '';
        this.SetContentType("application/x-www-form-urlencoded");
        for(i = 0; i < arrKey.length; i ++)
        {
                data += "&" + escape(arrKey[i]) + "=" + escape(arrValue[i]);
        }
        data = data.replace(/^&/g, "");
        this._post(data);
}

ZZ_SplitRecordSet_Ajax.prototype.Init = function()
{
        // initialization
}

ZZ_SplitRecordSet_Ajax.prototype.SetUrl = function(url)
{
        this.Url = url;
}

ZZ_SplitRecordSet_Ajax.prototype.SetContentType = function(type)
{
        this.ContentType = type;
}

ZZ_SplitRecordSet_Ajax.prototype.createXMLHttpRequest = function()
{
        try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
        try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
        try { return new XMLHttpRequest(); } catch(e) {}
        return null;
}

ZZ_SplitRecordSet_Ajax.prototype._debug = function(message) {
        if (this.Debug)
        {
                alert(message);
        }
}

ZZ_SplitRecordSet_Ajax._OnReadyStateChange = function(xreq, callback){
        if (xreq == null)
        {
                return;
        }
        if (xreq.readyState == 4)
        {          
                if (xreq.status == 200)
                {
                        callback (this.ArrayValue(xreq.responseXML));                                         
                }
                else{
                        document.write (xreq.responseText);
                }
        }
        else {
        }
}

ZZ_SplitRecordSet_Ajax.prototype._SendRequest = function(HttpMethod, data)
{
        this._debug('Send Request ' + HttpMethod + data);
        if (this.HttpRequest != null)
        {
                this.HttpRequest.open(HttpMethod, this.Url, true);
                if (this.ContentType != null)
                {
                        this.HttpRequest.setRequestHeader("content-type", this.ContentType);
                }
                this.HttpRequest.send(data);
                return true;
        }
        return false;
}

ZZ_SplitRecordSet_Ajax.prototype._get = function ()
{
        this._debug('GET');
        return this._SendRequest("GET", null);
}

ZZ_SplitRecordSet_Ajax.prototype._post = function (data)
{
        this._debug('POST');
        return this._SendRequest("POST", data);
}

ZZ_SplitRecordSet_Ajax.ArrayValue = function (xmlobj)
{
        var array = new Array();
        var i = 0;
        var response = xmlobj.getElementsByTagName('Response')[0];
        var element = response.firstChild;
        array[i] = element.firstChild.nodeValue;
        while (element = element.nextSibling)
        {
                i ++;
                array[i] = element.firstChild.nodeValue;
        }
        return array;
}
