var CFIMap = Class.create()

CFIMap.prototype = {
	DefaultOptions : {
		element : "map",
		id : "cfimap"
	},
	initialize : function (options) {
		this.options = Object.extend(
			Object.extend({},this.DefaultOptions), options || {}
		);
		
		this.caster = {}
		JSBroadcaster.initialize(this.caster)
		
		this.element = $( this.options.element )
		
		var d = Element.getDimensions( this.element )
		
		this.swfobj = new SWFObject(
			"/map/cfimap.swf",
			this.options.id,
			d.width,
			d.height,
			"9",
			"#ffffff"
		);

		this.swfobj.addVariable("JSInitFunc","CFIMAP_CrazyFuncName")

		this.swfobj.write('map')
		
		this.map = $( this.options.id )
		
		window.CFIMAP_CrazyFuncName  = function () {
			this._attachCallbacks()
		}.bind(this)
		
		//Event.observe(this.map,'load',this._attachCallbacks.bind(this))
		
		
	},

	_attachCallbacks : function () {		
		var events = ['objclick','objmousein','objmouseout']
		
		events.each(function(e) {
			var cback = this.map.getCallback(e)
						
			window[cback] = function (event,key) {
				this.caster.broadcastMessage(event,key)
			}.bind(this,e)
		}.bind(this))
	},
	
	showLayers : function (l) {
		this.map.layerson(l)
	},
	
	hideLayers : function (l) {
		this.map.layersoff(l)
	}
}

/*
======================================================================

JSBroadcaster.js


author:		Timothy Groves
			desk [at] brandspankingnew.net
version:	1.0

tested on:	Safari 2.0 Mac / FF 1.5 Mac

history:	01.01.2006	-	created

======================================================================
*/

var JSBroadcaster = {};
	
JSBroadcaster.initialize = function (obj)
{
	obj._listeners = new Array();
	
	obj.addListener = function (obj)
	{
		for (var i=0;i<this._listeners.length; i++) {
			if ( this._listeners[i] == obj)
				return false;
		}
		this._listeners.push( obj );
		return true;
	}
	
	obj.removeListener = function ( obj )
	{
		// remove obj from _listeners array
		for (var i=0;i<this._listeners.length; i++) {
			if ( this._listeners[i] == obj) {
				this._listeners.splice(i,1);
				return true;
			}
		}
		return false;
	}
	
	obj.broadcastMessage = function (func, str)
	{
		// loop through listeners calling function
		for (var i=0;i<this._listeners.length; i++) {
			if ( typeof this._listeners[i][func] == "function" )
				this._listeners[i][func]( str );
		}
	}
}

1;