DynAPI={
	loaded : false,
	children : [],
	elements : [],
	unassigned : [],
	packages : [],
	plugins : [],
	wasDragging : false,
	librarypath : '',
	toString : function() { return "DynAPI" },
	version : function() { return DynAPI.toString()+"2001.01.13" },
	addChild : function() {
		for (var a=0;a<arguments.length;a++) {
			var child=arguments[a]
			child.isChild=true
			child.dyndoc=child
			child.created=true
			child.parent=this
			DynAPI.elements[child.id]=child
			DynAPI.children[DynAPI.children.length]=child
			child.createElement()
		}
		return arguments[arguments.length-1]
	},
	addPackage : function(pckg) {
		if (this.packages[pckg]) return
		DynAPI.packages[pckg]=[]
		DynAPI.packages[pckg].libs=[]
	},
	addLibrary : function(path,files){
		var pckg=path.substring(0,path.indexOf('.'))
		if (!pckg) { alert('addLibrary()\n\nIncorrect syntax call'); return }
		var name=path.substring(path.indexOf('.')+1)
		if (!DynAPI.packages[pckg]) DynAPI.addPackage(pckg)
		if (DynAPI.packages[pckg].libs[name]) { alert('addLibrary()\n\nLibrary: '+name+' already exists'); return }
		DynAPI.packages[pckg].libs[name]=files
	},
	_getElementById:function(parent,id) {
		var object=null
		for (var i in parent.elements) {
			if (parent.elements[i].id==id) object=parent.elements[i]
			else object=DynAPI._getElementById(parent.elements[i],id)
			if (object) break;
		}
		return object
	},
	getElementById : function(id) { return DynAPI._getElementById(DynAPI,id) },
	resizeHandler : function() {
		var doc=this.dyndoc
		var w=doc.getWidth()
		var h=doc.getHeight()
		doc.findDimensions()
		if (is.ns4 && (w!=doc.getWidth() || h!=doc.getHeight())) doc.recreateAll()
		if (DynAPI.onResize) DynAPI.onResize()
		for (var i=0;i<DynAPI.plugins.length; i++) if (DynAPI.plugins[i].onResize) DynAPI.plugins[i].onResize()
	},
	loadHandler : function() {
	        DynAPI.document=new DynDocument(self,'document')
	        DynAPI.addChild(DynAPI.document)
    		if (DynAPI.document.captureMouseEvents) DynAPI.document.captureMouseEvents()
    		if (DynAPI.document.captureKeyEvents) DynAPI.document.captureKeyEvents()
    		if (DynAPI.document.invokeEvent) DynAPI.document.invokeEvent('load')
    		if (DynAPI.onLoad) DynAPI.onLoad()
    		for (var i=0;i<DynAPI.plugins.length; i++) if (DynAPI.plugins[i].onLoad) DynAPI.plugins[i].onLoad()
    		DynAPI.loaded=true
    		if (DynAPI.document.invokeEvent) DynAPI.document.invokeEvent('afterload')
    		if (DynAPI.loaderStart) DynAPI.loaderStart()
	},
	unloadHandler : function() { 
		for (var i=0;i<DynAPI.plugins.length; i++) if (DynAPI.plugins[i].onUnload) DynAPI.plugins[i].onUnload()
		for (var i=0;i<DynAPI.children.length; i++) DynAPI.children[i].deleteAllChildren()
		if (DynAPI.onUnload) DynAPI.onUnload() 
	},
	removeFromArray : function(array, index, id) {
		var which=(typeof(index)=="object")?index:array[index]
		if (id) { delete array[which.id]; return }
		for (var i=0; i<array.length; i++) {
			if (array[i]==which) {
				for(var x=i; x<array.length-1; x++) array[x]=array[x+1]
				array.length-=1
				break 
			}
		}
		return array
	},
	setLibraryPath : function(path) { 
		if (path.substring(path.length-1)!='/') path+='/'
		DynAPI.librarypath=path 
	},
	mountplugin : function (plugin) { 
		if (!plugin.pluginName) alert(DynAPI.toString()+'\n\nError occured\nAn invalid plugin was added to the DynApi code:\n\n'+plugin.constructor.toString());
		else DynAPI.plugins[DynAPI.plugins.length] = plugin;
	},
	include : function(src,path) { 
  		srcArray=src.split('.')
  		if (srcArray.length>3) srcArray.length-=1
  		if (!path) {
  			var path=DynAPI.librarypath
  			var pckg=srcArray[0]
  			var grp=srcArray[1]
  			var file=srcArray[2]
  			if (file=='*') { 
    				if (DynAPI.packages[pckg]) group=DynAPI.packages[pckg].libs[grp]
    				if (group) for (var i in group) document.write('<script language="Javascript1.2" src="'+path+pckg+'/'+grp+'/'+group[i]+'.js"><\/script>')
    				else alert('include()\n\nThe following package could not be loaded:\n'+src+'\n\nmake sure you specified the correct path.')
  			} else { 
     				if (path[path.length-1] != "/") path += "/"
     				document.write('<script language="Javascript1.2" src="'+path+srcArray.join('/')+'.js"><\/script>')
  			}
  		} else {
			document.write('<script language="Javascript1.2" src="'+path+'/'+src+'"><\/script>') 
  		}
	} 
}
// DynAPIBrowserDetectionObject --------------------------------------------------------------------
function BrowserDetection() {
	var b=navigator.appName
	if (b=="Netscape") this.b="ns"
	else if (navigator.userAgent.indexOf("Opera")>0) this.b = "opera"
	else if (b=="Microsoft Internet Explorer") this.b="ie"
	if (!b) {
		alert('Unidentified browser./nThis browser is not supported,')
	}
	this.version=navigator.appVersion
	this.v=parseInt(this.version)
	this.ns=(this.b=="ns" && this.v>=4)
	this.ns4=(this.b=="ns" && this.v==4)
	this.ns5=(this.b=="ns" && this.v==5)
	this.ie=(this.b=="ie" && this.v>=4)
	this.ie4=(this.version.indexOf('MSIE 4')>0)
	this.ie5=(this.version.indexOf('MSIE 5')>0)
	this.ie55=(this.version.indexOf('MSIE 5.5')>0)
	this.opera=(this.b=="opera")
	this.dom=((document.createRange&&(document.createRange().createContextualFragment))?true:false)
	var ua=navigator.userAgent.toLowerCase()
	if (ua.indexOf("win")>-1) this.platform="win32"
	else if (ua.indexOf("mac")>-1) this.platform="mac"
	else this.platform="other"
}
DynAPI.document=false
onload=DynAPI.loadHandler
onunload=DynAPI.unloadHandler
onresize=DynAPI.resizeHandler
is=DynAPI.browser=new BrowserDetection()
// Include default packages ----------------------------------------------------------------------
DynAPI.addLibrary('dynacore.api',['object','layer','document','events','dragevent'])
