//DynObject Class//DynAPIObject ClassDynObject = function() {	this.setID('DynObject' + (DynObject.Count++));	this.isChild = false;	this.created = false;	this.parent = null;	this.children = [];	this.eventListeners = [];	this.hasEventListeners = false;};DynObject.prototype.getClass = function() {	return this.constructor;};DynObject.prototype.setID = function(id) {	if (this.id)		delete DynObject.all[this.id];	this.id = id;	DynObject.all[this.id] = this;};DynObject.prototype.addChild = function(c) {	if (c.isChild)		c.parent.removeChild(c);	c.isChild = true;	c.parent = this;	if (this.created)		c.create();	this.children[this.children.length] = c; 	return c;};DynObject.prototype.removeChild = function(c) {	var l = this.children.length;	for (var i = 0; i < l && this.children[i] != c; i++);	if (i != l) {		c.invokeEvent('beforeremove');		c.specificRemove();		c.created = false;		c.invokeEvent('remove');		c.isChild = false;		c.parent = null;		this.children[i] = this.children[l-1];		this.children[l-1] = null;		this.children.length--;	};};DynObject.prototype.deleteFromParent = function() {	if (this.parent)		this.parent.deleteChild(this);};DynObject.prototype.removeFromParent = function() {	if (this.parent)		this.parent.removeChild(this);};DynObject.prototype.create = function() {	this.flagPrecreate();	this.specificCreate();	this.created = true;	var l = this.children.length;	for (var i = 0; i < l; i++)		this.children[i].create();	this.invokeEvent('create');};DynObject.prototype.flagPrecreate = function() {	if (this.precreated)		return;	var l = this.children.length;	for (var i = 0; i < l; i++)		this.children[i].flagPrecreate();	this.invokeEvent('precreate');	this.precreated = true;}DynObject.prototype.del = function() {	this.deleteAllChildren();	this.invokeEvent('beforeremove');	this.specificRemove();	this.precreated = this.created = false;	this.invokeEvent('remove');	this.invokeEvent('delete');};DynObject.prototype.deleteChild = function(c) {	var l = this.children.length;	for (var i = 0; i < l && this.children[i] != c; i++);	if (i != l) {		this.children[i] = this.children[l-1];		this.children[l-1] = null;		this.children.length--;		c.del();		c = null;	};	};DynObject.prototype.deleteAllChildren = function() {	var l = this.children.length;	for (var i = 0; i < l; i++) {		this.children[i].del();		delete this.children[i];	};	this.children = [];};DynObject.prototype.toString = function() {	return 'DynObject.all.' + this.id;};DynObject.prototype.getAll = function() {	var ret = [];	var temp;	var l = this.children.length;	for (var i = 0; i < l; i++) {		ret[this.children[i].id] = this.children[i];		temp = this.children[i].getAll();		for (var j in temp)			ret[j] = temp[j];	}	return ret;};DynObject.prototype.isParentOf = function(obj, equality) {	if (!obj)		return false;	return (equality && this == obj) || this.getAll()[obj.id] == obj;};DynObject.prototype.isChildOf = function(obj, equality) {	if (!obj)		return false;	return (equality && this == obj) || this.getAll()[obj.id] == this;};DynObject.prototype.specificCreate = function() {};DynObject.prototype.specificRemove = function() {};DynObject.prototype.invokeEvent    = function() {};DynObject.Count = 0;DynObject.all = [];Methods = {	removeFromArray : function(array, index, id) {		var which = (typeof(index) == 'object') ? index : array[index];		if (id)			delete array[which.id];		else			for (var i = 0; i < array.length; i++)				if (array[i] == which) {					if (array.splice)						array.splice(i,1);					else {						for (var x = i; x < array.length-1; x++)							array[x] = array[x+1];							array.length -= 1;					}				}	},	getContainerLayerOf : function(element) {		if (!element)			return null;		if ((is.def || is.opera) && !is.ie4)			while (!element.lyrobj && element.parentNode && element.parentNode != element)				element = element.parentNode;		else if (is.ie4 )			while (!element.lyrobj && element.parentElement && element.parentElement != element)				element = element.parentElement;		return element.lyrobj	}};DynAPIObject = function() {	this.DynObject = DynObject;	this.DynObject();	this.loaded = false;	this.librarypath = '';	this.packages = [];	this.errorHandLing = true;	this.returnErrors = true;	this.onLoadCodes = [];	this.onUnLoadCodes = [];	this.onResizeCodes = [];};DynAPIObject.prototype = new DynObject();DynAPIObject.prototype.setLibraryPath = function(path) {	if (path.substring(path.length-1) != '/')		path += '/';	this.librarypath = path;};DynAPIObject.prototype.addPackage = function(pckg) {	if (this.packages[pckg])		return;	this.packages[pckg] = { libs : [] };};DynAPIObject.prototype.addLibrary = function(path, files) {	var pckg = path.substring(0,path.indexOf('.'));	if (!pckg) {		alert('DynAPI Error: Incorrect DynAPI.addLibrary usage');		return;	};	var name = path.substring(path.indexOf('.')+1);	if (!this.packages[pckg])		this.addPackage(pckg);	if (this.packages[pckg].libs[name]) {		alert('DynAPI Error: Library ' + name + ' already exists');		return;	};	this.packages[pckg].libs[name] = files;};DynAPIObject.prototype.include = function(src, pth) {	src = src.split('.');	if (src[src.length-1] == 'js')		src.length -= 1;	var path = pth || this.librarypath || '';	if (path.substring(path.length-1) != '/')		path += '/';	var pckg = src[0];	var grp  = src[1];	var file = src[2];	if (file == '*') {		if (this.packages[pckg])			group = this.packages[pckg].libs[grp];		if (group)			for (var i = 0; i < group.length; i++)				document.write('<script language="JavaScript1.2" src="' + path + pckg + '/' + grp + '/' + group[i] +'.js" type="text/JavaScript"></script>');		else			alert('include()\n\nThe following package could not be loaded:\n' + src + '\n\nmake sure you specified the correct path.');	} else			document.write('<script language="JavaScript" src="'+ path + src.join('/') + '.js" type="text/JavaScript"></script>');};DynAPIObject.prototype.errorHandler = function(msg, url, lno) {	if (!this.loaded || this.errorHandling)		return false;	if (is.ie) {		lno -= 1;		alert('DynAPI reported an error\n\nError in project: "' + url + '".\nLine Number: ' + lno + '.\n\nMessage: ' + msg);	} else if (is.ns) {		alert('DynAPI reported an error\n\nError in project: "' + url + '".\nLine Number: ' + lno + '.\n\nMessage: ' + msg);	} else		return false;	return this.returnErrors;};DynAPIObject.prototype.addLoadFunction = function(f) {	this.onLoadCodes[this.onLoadCodes.length] = f;};DynAPIObject.prototype.addUnLoadFunction = function(f) {	this.onUnLoadCodes[this.onUnLoadCodes.length] = f;};DynAPIObject.prototype.addResizeFunction = function(f) {	this.onResizeCodes[this.onResizeCodes.length] = f;};DynAPIObject.prototype.loadHandler = function() {	this.create();	eval(this.onLoadCodes.join(';'));	if (this.onLoad)		this.onLoad();	this.loaded = true;};DynAPIObject.prototype.unloadHandler = function() {
	if (!is.ns4)		this.deleteAllChildren();	eval(this.onUnLoadCodes.join(';'));	if (this.onUnLoad)		this.onUnLoad();};DynAPIObject.prototype.resizeHandler = function() {	eval(this.onResizeCodes.join(';'));	if (this.onResize)		this.onResize();};DynAPI = new DynAPIObject();DynLayer = DynDocument = null;onload = function() {	DynAPI.loadHandler();};onunload = function() {	DynAPI.unloadHandler();};onerror = function(msg, url, lno) {	DynAPI.errorHandler(msg, url, lno);};onresize = function() {	DynAPI.resizeHandler();};DynAPI.addPackage('dynapi');DynAPI.addLibrary('dynapi.api',['browser','dyndocument','dynlayer']);DynAPI.addLibrary('dynapi.event',['listeners','mouse','dragevent','keyboard']);DynAPI.addLibrary('dynapi.ext',['inline','layer','dragdrop','functions']);DynAPI.addLibrary('dynapi.gui',['viewport','dynimage','button','buttonimage','label','list','loadpanel','pushpanel','scrollbar','scrollpabe','sprite']);DynAPI.addLibrary('dynapi.util',['circleanim','cookies','debug','thread','hoveranim','imganim','pathanim','console']);
