function Communicator() {
    
    this._callBackStack = new Array();
    this._vsearch =  null;
    this._flashExecuter = null; 
    window.wsc_listener = this;    
        
    this.Register = function(){
        
        var allElements = document.getElementsByTagName("*");
        
        for(var c=0;c<allElements.length;c++){
            try {
                if(allElements[c].wsc_executer("register","") == "OK") this._flashExecuter = allElements[c].wsc_executer;
            } catch (e) {}
        }
    }
    
    this.Execute = function(method,parameters,callBack){
        document.getElementsByName("Results_Grid")[0].wsc_executer("execute",method,parameters,this._callBackStack.push(callBack)-1);
        /*if(this._flashExecuter!=null)
            this._flashExecuter("execute",method,parameters,this._callBackStack.push(callBack)-1);
        else
            alert("Error: Cannot locate WSC executer.");*/
    }
    
    this.ExecutionListener = function(resultObj,statusObj,resultId){
        
        if(statusObj!=null){
            alert("Error: A web service error has occured."+statusObj);
            this._callBackStack[resultId].call(this,null,statusObj);
        } else {
            this._callBackStack[resultId].call(this,resultObj);
        }
    }
    
    this.Refresh = function(resultsObject){
        document.getElementsByName("Results_Grid")[0].wsc_executer("refresh",resultsObject);
        //this._flashExecuter("refresh",resultsObject);
    }
    
    this.StartRefresh = function(txt){
        document.getElementsByName("Results_Grid")[0].wsc_executer("startRefresh",txt);
        //alert(executer.call(this,"register"));
        //alert(this._flashExecuter("register",""));
        //this._flashExecuter("startRefresh");
        
    }
    
    this.itemNav = function(dir, flip){
            document.getElementsByName("Results_Grid")[0].wsc_executer("itemNav",dir,flip)
    }
    
    this.pageNavListener = function(page){
        this._vsearch._currentPage = page;
        this._vsearch.CommitSearch();
    }

    
    /*if(window._handler) {
        //alert(window._handler);
        //alert(window._handler.wsc_executer("register","dfdfdf"));
        this._flashExecuter = window._handler.wsc_executer;
        //alert(this._flashExecuter.call(this,"register"));
    }
    else 
        this.Register();*/
        
}