
if (!document.getElementById && document.all)
{
document.getElementById = function(id) {
return document.all[id];
};
}
if (typeof Array.prototype.push == "undefined")
{
Array.prototype.push = function ()
{
for (var i=0; i<arguments.length; i++)
{
this[this.length] = arguments[i];
}
return this.length;
};
}
function $()
{
var elements = new Array();
for (var i = 0; i < arguments.length; i++)
{
var element = arguments[i];
if (typeof element == 'string') element = document.getElementById(element);
if (arguments.length == 1) return element;
elements.push(element);
}
return elements;
}
Object.extend = function(destination, source)
{
for (property in source)
{
destination[property] = source[property];
}
return destination;
};
var CONST = CONST || {};
var GLOB = GLOB || {};
var bbcjs = {};
bbcjs.version = 1;

bbcjs.page = location.href.split("/")[location.href.split("/").length-1];
bbcjs.onLoadArr = [];
bbcjs.dhtml = (document.getElementById) ? true : false;
bbcjs.defaultTraceLevel = 3;
bbcjs.quietMode = false;
bbcjs.activex = (typeof(window.ActiveXObject)!="undefined" && navigator.userAgent.indexOf("Mac") == -1);
bbcjs.qs = location.search.substr(1,location.search.length);
bbcjs.lib = {};
bbcjs.documentLoaded = false;
bbcjs.trace = function (str,lvl)
{
if (typeof(lvl)=="undefined") lvl = bbcjs.defaultTraceLevel;
if (window.self != window.top)
{
if (typeof(window.top.harness)!="undefined")
{
window.top.harness.trace.update(str,lvl);
}
else if ((typeof(window.top.frames.tools)!="undefined") && typeof(window.top.frames.tools.jsh_debug)!="undefined" )
{
window.top.frames.tools.jsh_debug(str,lvl);
}
}
else if ( (!bbcjs.quietMode) && (lvl == 1) && (location.href.match(/wc\.bbc/)))
{
str = str.replace(/\<br ?\/?\>/g,"\n");
str = str.replace(/\<[a-zA-Z0-9\=\"_\-\' \/]+\>/g,"");
alert("JSTools error (this will not appear on live):\n\n"+str);
}
};
bbcjs.clearTraceWindow = function ()
{
if (window.self != window.top)
{
if (typeof(window.top.harness)!="undefined")
{
window.top.harness.trace.clear();
}
else if ((typeof(window.top.frames.tools)!="undefined") && typeof(window.top.frames.tools.jsh_debug)!="undefined")
{
window.top.frames.tools.jsh_reset();
}
}
};
bbcjs.clearTraceWindow();
bbcjs.explore = function (object, name)
{
if (window.self != window.top )
{
if (typeof(window.top.harness)!="undefined")
{
window.top.harness.explorer.add(object, name);
}
}
};
bbcjs.trace("<b>Loaded url: "+bbcjs.page+"</b>",2);
bbcjs.trace('<b><font color="green">jst_core.js</font> was included.</b>',2);
bbcjs.addOnLoadItem = function (item)
{
bbcjs.onLoadArr.push(item);
window.onload = bbcjs.loadedHandler;
};
bbcjs.loadedHandler = function ()
{
var onLoadItem;
for (var i=0; i<bbcjs.onLoadArr.length; i++)
{
onLoadItem = bbcjs.onLoadArr[i];
if (typeof onLoadItem == 'function') onLoadItem();
else eval(onLoadItem);
}
};
bbcjs.copyObj = function (o)
{
var t = {};
if (typeof(o.length)!="undefined") t = [];
for (var i in o)
{
if (typeof(o[i])=="object") t[i] = bbcjs.copyObj(o[i]);
else t[i] = o[i];
}
return t;
};
GLOB.o2lvl = 0;
GLOB.o2cnt = 0;
bbcjs.obj2list = function(o,name,hide)
{
var str = "";
var c=0;
var display = "none";
if (typeof(hide)!="undefined"){ if (!(hide)) display = "block";}
else hide = true;
if (typeof(name)=="undefined") name = "_root";
if (!GLOB.o2lvl) str+="<ul>\n";
GLOB.o2lvl++;
GLOB.o2cnt++;
str+='<li><a href="javascript:void(0);" onclick="return bbcjs.o2swap('+GLOB.o2cnt+')">'+name+'</a></li>\n';
str+='<ul style="display:'+display+';" id="bbcjsnode_'+GLOB.o2cnt+'">\n';
for (var i in o)
{
if (typeof(o[i])=='function') str+=('<li>'+i.bold()+'()</li>\n');
else if (typeof(o[i])=='object' && o[i] !== null)
{
if ((typeof(o[i].src)!="undefined") && (typeof(o[i].alt)!="undefined"))
{
str+=('<li><b>'+i+"</b>: "+o[i].src+' (image)</li>\n');
}
else if (GLOB.o2lvl<100 && (i!="prototype")) str+=bbcjs.obj2list(o[i],i,hide); 
else if (GLOB.o2lvl>=100) str+="<li>Too much recursion...</li>\n";
}
else if (o[i]!==null) str+=('<li>'+i+' ['+bbcjs.HTMLOut(o[i])+'] ('+typeof(o[i])+')</li>\n');
else str += '<li><b>null item</b></li>';
c++;
}
if (!c) str+=('<li>'+o+'</li>\n'); 
str+="</ul>\n";
GLOB.o2lvl--;
if (!GLOB.o2lvl)str+="</ul>\n";
return str;
};
bbcjs.o2swap = function (nn)
{
var node = document.getElementById("bbcjsnode_"+nn);
if (node.style.display == "block") node.style.display = "none";
else node.style.display = "block";
return false;
};
bbcjs.HTMLOut = function (html)
{
return "<xmp style='display:inline;'>"+html+"</xmp>";
};
bbcjs.Module = function (name, v, cvs, bd)
{
this.name = name;
this.version = v;
this.cvs_version = cvs;
this.build_date = bd;
};
bbcjs.addOnLoadItem(function(){bbcjs.documentLoaded = true;});
