﻿// Define root package namespace
if (typeof(WUNDER) == "undefined") {
	WUNDER = {
    	version: 0.03,
	    date: "17/11/2008"
	};
}

/*===== Core objects =====*/

// Define ResultObject Constructor
WUNDER.ResultObject = {
    valid: true,
    errors: [],
    warnings: []
};

// Namespace registration function
WUNDER.registerNameSpace = function(sNameSpace)
{
    var __nsParts = sNameSpace.split(".");
    var __root = WUNDER;

    for( var i=1; i<__nsParts.length; i++) {
        if(typeof __root[__nsParts[i]] == "undefined")
        __root[__nsParts[i]] = new Object();
        __root = __root[__nsParts[i]];
    }
}

WUNDER.registerRequirements = function(sScriptName, aRequirements) {
    var __sErrors = "";
    var __root = window;
    var __nsParts;
    var __exists;
    
    for (var i=0; i<aRequirements.length; i++) {
        __exists = WUNDER.exists(aRequirements[i])
        if (!__exists) {
            __sErrors += "\"" + aRequirements[i] + "\"\n";
        }
    }
    if (__sErrors != "") {
        alert("Error: " + sScriptName + " requires:\n" + __sErrors)
        return false;
    }
    return true;
}

WUNDER.exists = function(sObjectName) {
    __nsParts = sObjectName.split(".");
    __objTree = WUNDER;
    for (var i=1; i<__nsParts.length; i++) {
        if (!__objTree[__nsParts[i]]) { return false; }
        __objTree = __objTree[__nsParts[i]]
    }
    return true;
}

WUNDER.window = window;