/*
   DynAPI Distribution
   Main DynAPI class
   Modified: 2000.11.05

   The DynAPI Distribution is distributed under the terms of the GNU LGPL license.  
*/
DynAPI = {
	loaded : false,
	documents : [],
	documentsID : [],
	loadimages : [],
	plugins : [],
	wasDraging : false,
	librarypath : '',
	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("Incorrect DynAPI.addLibrary usage:\n\nExample: DynAPI.addLibrary('dynapi.ext',['inline.js'])"); return }
		var name = path.substring(path.indexOf('.')+1)
		if (!DynAPI.packages[pckg]) DynAPI.addPackage(pckg)
		if (DynAPI.packages[pckg].libs[name]) {alert("DynAPI Error: Library "+name+" already exists");return}
		DynAPI.packages[pckg].libs[name] = files
	},
	packages : {
		dynapi : {
			libs: {
			api : ["dynlayer.js","browser.js","dyndocument.js","events.js","dragevent.js"],
			ext : ["inline.js","layer.js","cookies.js","slide.js","dragdrop.js","images.js","functions.js","debug.js"]
			}
		}
	},
	toString : function() { return "DynAPI" },
	getDocument : function(id) {
		if (id) return DynDocument.dyndocsID[id]
		else return DynAPI.document
	},
	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)
	        DynAPI.document.findDimensions()
	        if (DynAPI.findLayers) DynAPI.findLayers(DynAPI.document)
    		if (DynAPI.document.captureMouseEvents) DynAPI.document.captureMouseEvents()
    		DynAPI.loaded=false;
    		if (DynAPI.document.invokeEvent) DynAPI.document.invokeEvent('beforeload')
    		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()
	},
	removeFromArray : function(array, index, id) {
		var which = typeof index == "object" ? index : array[index]
		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]
				if (id) delete array[array[i].id]
				array.length -= 1
				break 
			}
		}
		return array
	},
	unloadHandler : function() { 
		for (var i=0;i<DynAPI.plugins.length; i++) if (DynAPI.plugins[i].onUnload) DynAPI.plugins[i].onUnload()
		if (DynAPI.onUnload) DynAPI.onUnload() 
	},
	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) {
		if(src.substring(src.length-3)!=".js") src+=".js"
		if (!path) var path=DynAPI.librarypath
		var pckg=src.substring(0,src.indexOf('.'))
		var groupname=src.substring(src.indexOf('.')+1)
		var realsrc=groupname.substring(groupname.indexOf('.')+1)
		groupname=groupname.substring(0,groupname.indexOf('.'))
		if (src.indexOf('.*')>0) {
			src=src.substring(0,src.indexOf('.*'))
			if (DynAPI.packages[pckg]) group=DynAPI.packages[pckg].libs[groupname]
			if (group) for (var i in group)	document.write('<script language="Javascript1.2" src="'+path+pckg+'/'+groupname+'/'+group[i]+'"><\/script>')
			else alert(DynAPI.toString()+'\n\nError occured\nThe following package could not be loaded:\n'+src+'\n\nmake sure you specified the correct path.')
		} else 
			document.write('<script language="Javascript1.2" src="'+path+pckg+'/'+groupname+'/'+realsrc+'"><\/script>') 
	}
}
onload = DynAPI.loadHandler
onunload = DynAPI.unloadHandler
onresize = DynAPI.resizeHandler
DynAPI.document=false