 
// BEGIN INHERITANCE FRAMEWORK
Function.prototype.method=function(name,func)
{this.prototype[name]=func;return this;};Function.method("inherits",function(parent)
{var d={},p=(this.prototype=new parent());this.method("uber",function uber(name)
{if(!(name in d))
{d[name]=0;}
var f,r,t=d[name],v=parent.prototype;if(t)
{while(t)
{v=v.constructor.prototype;t-=1;}
f=v[name];}
else
{f=p[name];if(f==this[name])
{f=v[name];}}
d[name]+=1;r=f.apply(this,Array.prototype.slice.apply(arguments,[1]));d[name]-=1;return r;});return this;});Function.method("swiss",function(parent)
{for(var i=1;i<arguments.length;i+=1)
{var name=arguments[i];this.prototype[name]=parent.prototype[name];}
return this;});function Namespace(names)
{var win=window;var name=names.split(".");var count=name.length;for(var i=0;i<count;i++)
{if(typeof(win[name[i]])=="undefined")
{win[name[i]]=new Object();}
win=win[name[i]];}}
Nbcu = function()
{	
	var _params = new Object();
	this.isStopped = false;
	var THIS = this;
	this.addParam = function(key, value)
	{
		this.setParam(key, value);
	}
	this.setParam = function(key, value)
	{
		_params[key] = value;
	}
	this.getParam = function(key)
	{
		return _params[key];
	}
	this.resetParams = function()
	{
		_params = new Array();
	}
}
Nbcu.method("requireParam", function(param)
{	
	if (!this.getParam(param))
	{
		alert("Integration Error: nbcu...addParam(\"" + param + "\", \"DEVELOPER DEFINED VALUE\"); is missing on page.");
		return false;
	}
});
Namespace("Nbcu.Config");
Nbcu.Config = function(){ this.constructor(); }
Nbcu.Config.inherits(Nbcu);

Namespace("nbcu.config");
nbcu.config = new Nbcu.Config();
Namespace("Nbcu.Util.Common");
Nbcu.Util.Common = function()
{
	this.loadedClasses = "";	
}

Nbcu.Util.Common.method("query", function(param)
{
	a = window.location.search.substring(1);
	b = a.split("&");
	count= b.length;
	
	for (i=0; i < count; i++)
	{
		c = b[i].split("=");
		if (c[0] == param)
		{
			return c[1];
		}
	}
	
	return "";
});

Nbcu.Util.Common.method("encodeHtml", function(theString)
{
	var str = new String(theString);
	str = str.replace(/&/g, '&amp;');
	str = str.replace(/</g, '&lt;');
	str = str.replace(/>/g, '&gt;');
	str = str.replace(/"/g, '&quot;');
	str = str.replace(/\r\n/g, '<br />');
	str = str.replace(/\n/g, '<br />');
	str = str.replace(/\r/g, '<br />');
	
	return str;
});

Nbcu.Util.Common.method("stripHtml", function(theString)
{
	return theString.replace(/(<([^>]+)>)/ig,""); 
});

Nbcu.Util.Common.method("trim", function(theString)
{
	return theString.replace(/^\s+|\s+$/g, '');
});

Nbcu.Util.Common.method("getUrl", function(allowHash)
{
	var url = "http://" + location.hostname + location.pathname + location.search.substring(0, 1);
	var a = window.location.search.substring(1);
	var b = a.split("&");
	var count = b.length;
	var params = "";
	
	for (i=0; i < count; i++)
	{
		c = b[i].split("=");
		
		if (c[0].indexOf("__") != 0 && c[0] != "")
		{
			if (params)
			{
				params += "&"
			}

			params += c[0] + "=" + c[1];
		}
	}

	url += params;
	
	if (!allowHash)
	{
		url += location.hash;
	}
	
	return this.trim(url);
});

Nbcu.Util.Common.method("loadClass", function(className)
{
	if (this.loadedClasses.indexOf(className + "|") < 0)
	{
		if (className.substring(0, 14) != "Nbcu.Template.")
		{
			jsFile = className.replace(/\./g, "/").substring(5) + ".js";
			this.loadJs(nbcu.config.getParam("frameworkUrl") + '/classes/' + jsFile);
		}
		else
		{
			jsFile = className.replace(/\./g, "/").substring(14) + ".js";
			this.loadJs(nbcu.config.getParam("frameworkUrl") + '/templates/' + jsFile);
		}
		
		this.loadedClasses += className + "|";

		return true;
	}
	
	return false;
});

Nbcu.Util.Common.method("loadJs", function(jsUrl)
{
	jqN.ajax(
	{
		type: "GET",
		url: jsUrl,
		dataType: "text",
		async: false,
		success: function(data)
		{
			eval(data);
		}
	});
});

Nbcu.Util.Common.method("loadCss", function(cssUrl, mediaTarget)
{
	var headID = document.getElementsByTagName("head")[0];         
	var cssNode = document.createElement("link");

	media = mediaTarget || "all";
	
	cssNode.type = "text/css";
	cssNode.rel = "stylesheet";
	cssNode.href = cssUrl;
	cssNode.media = media;
	headID.appendChild(cssNode);
});
Nbcu.Util.Common.method("convertData", function(data, currentDataFormat, newDataFormat)
{
	switch(currentDataFormat)
	{
		case "xmlObject":
			switch(newDataFormat)
			{
				case "xmlText":
					return getXmlNodeSerialisation(data);
					break;    
				default:
					return data;
					break;    
			}
			break;
	}	

	function getXmlNodeSerialisation(xmlNode)
	{
		var text = false;
		try {
			var serializer = new XMLSerializer();
			text = serializer.serializeToString(xmlNode);
		}
		catch (e) {
			try {
				text = xmlNode.xml;
			}
			catch (e) {}
		}
		return text;
	}
});

Namespace("nbcu.util.amf");
nbcu.util.amf = new Nbcu.Util.Amf();
