

var worker={
    _timer:{},//stockID:setTimeInterval
    stop:function(key){
        var me=this;
        if(!key) return;
        if(me._timer[key]){
            clearInterval(me._timer[key]);
            me._timer[key]=null;
        }
    },
    run:function(key,callback,delay){
        var me=this;
        if(!key) return;
        if(me._timer[key]) me.stop(key);
        me._timer[key]=setInterval(callback,delay);
    },
    destroy:function(){
        var me=this,key;
        for(key in me._timer){
            me.stop(key);
        }
        me._timer={};
    }
}
addEventListener('message',function(e){
    var o = e.data,//{cmd:,key:,delay:}
        key=o.key,
        cmd=o.cmd,
        delay=o.delay;
    if(!key) key='';
    if(!delay) delay=30000;//30s
    switch(cmd){
        case 1://run
            worker.run(key,function(){
                postMessage(o);
            },delay);
            break;
        case 0://stop
            worker.stop(key);
            postMessage(o);
            break;
        case -1://destroy
            worker.destroy();
            postMessage(o);
            break;
    }
},false);

