﻿// create a namespace if it does not exist
if (!window.Ninemsn) {
    window.Ninemsn = {};
}

// instantiate the trace framework
// neat interface for client application to interact with
Ninemsn.Trace = new function(){
    // record UI state change, need to customise Test page to handle custom test automation
    this.UpdateState = function(){
        if (parent && parent.updateState)
            parent.updateState();
    };
    
    // log any event / action
    this.Event = function(category, message, datetime){
        if (parent && parent.LeftFrame && parent.LeftFrame.traceEvent)
            parent.LeftFrame.traceEvent(category, message, datetime);
    };
    
    // log any error message
    this.ErrorMessage = function(exception, message, datetime){
        if (parent && parent.LeftFrame && parent.LeftFrame.traceError)
            parent.LeftFrame.traceError(exception, message, datetime);
    };
    
    // log any error message
    this.Mark = function(id, datetime){
        if (parent && parent.LeftFrame && parent.LeftFrame.traceMark)
            parent.LeftFrame.traceMark(id, datetime);
    };
    
    // get querystring paramter values
    this.GetQueryValue = function(key, url) 
    {
        var param = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regexS = "[\\?&]" + key + "=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(url);
        if (results === null) 
        {
            return '';
        }
        else 
        {
            return results[1];
        }
    };
};

// if debug is not switched on then disable the framework
//if (Ninemsn.Trace.GetQueryValue("debug", window.location) != "true")
//    Ninemsn.Trace = null;