﻿//-------------------- livePanel.js

function LivePanel( panelName, formName, url, options ) {
   this.form       = document.getElementsByName(formName)[0];
   this.panel      = document.getElementById(panelName);
   this.options    = options;
   this.url        = url;
}

LivePanel.prototype = {

    update: function(query, callback) {

        // call LivePanel_onUpdate "event" in calling page
        if (typeof (window.LivePanel_onUpdate) == 'function') {
            window.LivePanel_onUpdate(this);
        }

        query = (!this.options.requestParameters ? '' : this.options.requestParameters.join('&') + '&') +
                (!query || query == '' ? '' : query + '&') +
                jQuery(this.form).serialize();

        var thisObj = this;
        if (typeof (callback) == 'function') {
            fn = function(data, textStatus) { thisObj.ajaxUpdate(data, textStatus); callback(this, data, textStatus); };
        } else {
            fn = function(data, textStatus) { thisObj.ajaxUpdate(data, textStatus); };
        }

        jQuery.post(this.url, query, fn, "html");

    },

    ajaxUpdate: function(data, textStatus) {
        this.panel.innerHTML = data;
        var x = this.panel.getElementsByTagName("script");
        for (var i = 0; i < x.length; i++) {
            eval(x[i].text);
        }

        // call LivePanel_onUpdate "event" in calling page
        if (typeof (window.LivePanel_onUpdateComplete) == 'function') {
            window.LivePanel_onUpdateComplete(this, data);
        }
    }

};


