﻿// JScript File

createDelegate = function Function$createDelegate(instance, method) {
    return function() {
        return method.apply(instance, arguments);
    }
}

function addEvent(obj, ename, func)
{
    var oldfunc = obj['on' + ename];
    if(typeof oldfunc != 'function')
    {
        obj['on' + ename] = func;
    } else {
        obj['on' + ename] = function()
            {
                if(oldfunc)
                {
                    oldfunc.apply(obj, arguments);
                }
                func.apply(obj, arguments);
            };
    }
}

window.isloaded = false;

addEvent(window, 'load', function()
{
    window.isloaded = true;
});

function LoginHandler() {
    var btn = arguments[0];
    var formsauthurl = btn.params.formsauthurl;
    if(formsauthurl === undefined)
        throw "Missing parameter formsauthurl";
    
    if( (typeof Tops != 'undefined') && Tops.AjaxLogin.LoginWindow.getInstance()) {
        Tops.AjaxLogin.LoginWindow.getInstance().show();
    } else {
        document.location = formsauthurl + '?ReturnUrl=' + escape(document.location);
    }
    return false;
}


              var XMLHttpFactories = [
             function () {return new XMLHttpRequest()},
             function () {return new ActiveXObject("Msxml2.XMLHTTP")},
             function () {return new ActiveXObject("Msxml3.XMLHTTP")},
             function () {return new ActiveXObject("Microsoft.XMLHTTP")}
        ];

        function createXMLHTTPObject() {
          var xmlhttp = false;
          for (var i=0;i<XMLHttpFactories.length;i++) {
            try {
                    xmlhttp = XMLHttpFactories[i]();
            }
            catch (e) {
                    continue;
            }
            break;
          }
          return xmlhttp;
        }

    function HttpRequest(url, write)
    {
        var req = false;
        if(window.XMLHttpRequest && !(window.ActiveXObject)) {
                try {
                                req = new XMLHttpRequest();
                } catch(e) {
                                req = false;
                }
            // branch for IE/Windows ActiveX version
            } else if(window.ActiveXObject) {
                try {
                        req = new ActiveXObject("Msxml2.XMLHTTP");
                       
                } catch(e) {
                        try {
                                req = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch(e) {
                                req = false;
                        }
                        }
            }
            
            try {
              req.open('GET', url, false); 
              req.send(null); 
              if (write)
                document.write(req.responseText); 
              return req.responseText;
             
            } 
            catch (e) { 
              return ""; 
              
            }
    }

















// TOPLET *****************************************************************************

var Toplet = function(elementid, params)
{
    this.element = document.getElementById(elementid);
    this.element.control = this;
    
    this.params = {};
    this.params.clearcache = false;
    
    this.params.urlparams = {};
    
    if(params !== undefined)
    {
        for ( var name in params)
        {
            this.params[name] = params[name];
        }
    }
}

Toplet.prototype = {
    update : function()
    {
        var urlparams = {};
        
        for ( var name in this.params.urlparams)
        {
            urlparams[name] = this.params.urlparams[name];
        }
        
        if(arguments.length > 2)
        {
            var lparams = arguments[2];
            for ( var name in lparams)
            {
                urlparams[name] = lparams[name];
            }
        }
        
        if(arguments.length > 0)
        {
            urlparams['__EVENTTARGET'] = arguments[0];
            urlparams['__EVENTARGUMENT'] = arguments[1];
            
            this.params.clearcache = true;
        }
        
        var cmd = this.element.id.replace(/_ContentArea$/i, '');
        var cmd = 'update' + cmd;
        var urlparamstring = '';
        
        var separator = '';
        for ( var name in urlparams)
        {
            urlparamstring = urlparamstring + separator + name + '=' + escape(urlparams[name]);
            separator = '&';
        }
        cmd = cmd + "('" + urlparamstring + "', " + this.params.clearcache + ");";
        eval( cmd);
    }
}



Toplet.Button = function(elementid, topletid, params )
{
    this.element = document.getElementById(elementid);
    this.element.control = this;
    
    this.toplet = document.getElementById(topletid);
    this.topletcontrol = this.toplet.control;
    
    this.params = {};
    this.params.eventarg = '';
    
    if(params !== undefined)
    {
        for ( var name in params)
        {
            this.params[name] = params[name];
        }
    }
    
    this.element.onclick = createDelegate(this, this._onclick);
}

Toplet.Button.prototype = {

    _onclick : function( obj, ev )
    {
        var cancontinue = true;
        
        if(this.params['clickhandlers'] !== undefined)
        {
            var handlers = this.params['clickhandlers'];
            for (var ca=0; handlers.length > ca; ca++ )
            {
                cancontinue = handlers[ca].apply(this, [ this ] );
                if(cancontinue == false)
                    break;
            }
        }
        
        if(cancontinue == true)
        {
            this.topletcontrol.update(this.element.id, this.params.eventarg);
        }
    }
}