if (typeof com == "undefined") var com = {};
if (typeof com.doctorstal == "undefined") com.doctorstal = {};
if (typeof com.doctorstal.lcheck == "undefined") com.doctorstal.lcheck = {};

com.doctorstal.lcheck.AddressEvent=function(type){
	this.type=type;
	this.hash=Checker.getAddr();
}
AddressEvent=com.doctorstal.lcheck.AddressEvent;

com.doctorstal.lcheck.Checker=new function(){
	var UNDEFINED="undefined";

	var CHANGE="addr_change";
	this.CHANGE=CHANGE;
	
	var _listeners=new Array();
	var _dispatchEvent=function(event){

		 if (typeof _listeners[event.type] != UNDEFINED && _listeners[event.type].length) {
            event.target = this;
            for (var i = 0, l; l = _listeners[event.type][i]; i++)
                l(event);
            return true;           
        }
        return false;
	}
	var _addEventListener = function(type, listener) {
        if (typeof _listeners[type] == UNDEFINED)
            _listeners[type] = [];
        _listeners[type].push(listener);
	}
	this.addEventListener = _addEventListener;
	
	this.removeEventListener = function(type, listener) {
        if (typeof _listeners[type] != UNDEFINED) {
            for (var i = 0, l; l = _listeners[type][i]; i++)
                if (l == listener) break;
            _listeners[type].splice(i, 1);
        }
    }
	this.setHash=function(_hash){
		top.location.hash=_hash;
	}
	var _getHash=function(){
		return unescape(top.location.hash);
	}
	this.getHash=_getHash;
	var _curraddr=_getHash();
	var _checkHash=function(){
		var newaddr=_getHash();
		if(newaddr!=_curraddr){
			_curraddr=newaddr;
			_dispatchEvent(new AddressEvent(CHANGE));
		}
	}
	this.getAddr=function(){
		return _curraddr;
	}
	setInterval(_checkHash,5);
}
Checker=com.doctorstal.lcheck.Checker;

com.doctorstal.lcheck.getFlashObject=function(movieName){
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName]
	}
	else {
		return document[movieName]
	}
}
getFlashObject=com.doctorstal.lcheck.getFlashObject;

com.doctorstal.lcheck.SWFListenerCollection=new function(){
	_items=[];
	this.addItem=function(item){
		var nname="item"+_items.length
		_items[nname]=item;
		return nname;
	}
}
SWFListenerCollection=com.doctorstal.lcheck.SWFListenerCollection;

com.doctorstal.lcheck.SWFListener=function(objID){
//	swfurl=unescape(swfurl);
//	swfurl=String(swfurl).replace(/\\/g,"/");
	
	var SWF_METHOD_NAME="onHashChanged";
	this._listener={};
	this.changed=function(event){
		if(typeof this._listener[SWF_METHOD_NAME]=="function"){
			this._listener[SWF_METHOD_NAME](event.hash);
		}
	}
	this.setObject=function(obj){
		if(obj){
			this._listener=obj;
			Checker.addEventListener(Checker.CHANGE,this.changed);
		}
	}
	this.setObject(getFlashObject(objID));
	return SWFListenerCollection.addItem(this);
}
SWFListener=com.doctorstal.lcheck.SWFListener;

com.doctorstal.lcheck.FCall=function(name,method,args){
	return com.doctorstal.lcheck[name][method](args);
}
FCall=com.doctorstal.lcheck.FCall;


/*function hashListner(e){
	alert(e.hash);
}
Checker.addEventListener(Checker.CHANGE,hashListner);
*/
