
// These are global variables and funcitons used to keep the demos simple. 
//  This is NOT a good exmple of JavaScript programming.

var logger, code, displaySource, runDemoBtn;

function log(message) {
    logger.style.display = 'block';
 
     var div = document.createElement("div");
     div.setAttribute('class', 'line');
     if(arguments.length === 1) 
        div.appendChild(document.createTextNode(message));
        
     logger.appendChild(div);
}

function clearLog() {
    Core.Web.DOM.removeAllChildren(logger);
}


function hideLog() {
    logger.style.display = 'none';
}

function assert(sb, is) {
    log('Should be ' + sb + ' is ' + is + '; ' + (sb === is));
}

function toggleDemo() {
    
    if( (logger.style.display === 'block')) {
        logger.style.display = 'none';
        runDemoBtn.value = "Run Demo";
    } else {
        clearLog(); 
        logger.style.display = 'block';
        runDemoBtn.value = "Hide Demo";
        runDemo();
    }
}


function toggleSource() {

    if( (code.style.display === 'block')) {
        code.style.display = 'none';
        displaySource.value = "Show Source";
    } else {
        code.style.display = 'block';
        displaySource.value = "Hide Source";
    }
}

function initDemo(path) {
    logger = document.getElementById('logger');
    code = document.getElementById('code');
    displaySource = document.getElementById('displaySource');
    runDemoBtn = document.getElementById('runDemo');

    // Echo Core.Web AJAX invocation
    new LoadSource().load(path);
}



LoadSource = Core.extend({

    load : function(path) {

        if (path) {
            var connection = new Core.Web.HttpConnection(path, 'GET');
            connection.addResponseListener(Core.method(this, this.responseListener));
            try {
             connection.connect();
            } catch (ex) {
                this.addLine('Source code load error: ' + path);
            }
        }
    },

    responseListener : function(event) {
        var text = event.source.getResponseText();
        var lines = text.split('\n');

        for ( i in lines ) 
            this.addLine(lines[i]);

    },

    addLine : function(line) {
        var div = document.createElement("div");
        div.setAttribute('class', 'line');
        div.appendChild(document.createTextNode(line));
        code.appendChild(div);
    }


});



