/*
worldkitRSS: loads and parses RSS feed, creates and manages annotations
*/
import com.brainoff.worldkitMain;
import com.brainoff.worldkitConfig;
import com.brainoff.worldkitImages;
import com.brainoff.worldkitInteraction;
import com.brainoff.worldkitUtil;
import com.brainoff.worldkitAnnotation;
class com.brainoff.worldkitRSS {
private var main:worldkitMain;
private var conf:worldkitConfig;
private var img:worldkitImages;
private var interact:worldkitInteraction;
private var mc:MovieClip;
private var Points:Object;
private var activeAnnotation:worldkitAnnotation;
private var depth:Number;
private var plotCount:Number;
private var prevlat:Object;
private var prevlon:Object;
private var lastRequest:String;
private var intervalId:Number;
function worldkitRSS(main:worldkitMain) {
this.main = main;
Points = new Object();
}
public function createDataLayer() {
main.parent.createEmptyMovieClip("worldkitDatalayer",3);
mc = main.parent.worldkitDatalayer;
mc.lineTo(-1,-1);
mc.origwidth = conf.w;
mc.origheight = conf.h;
mc.layers = new Array();
if (conf.zlevel == 1) {
depth = 1;
} else {
depth = 10000;
}
}
public function start() {
conf = main.getConfig();
img = main.getImages();
interact = main.getInteract();
createDataLayer();
mc.createEmptyMovieClip("rss",20);
mc.rss.origwidth = conf.w;
mc.rss.origheight = conf.h;
mc.layers.push("rss"); //the mc shouldn't be holding this REVISIT
if (conf.accuplot != true) {
interact.scaleAndPosition(mc.rss);
}
if (conf.track && conf.trackcats) {
mc.rss.createEmptyMovieClip("tracks",depth);
depth = depth + conf.zlevel;
mc.rss.tracks.tracklayer = 1;
}
if (conf.dataurl.length > 0) {
loadData(conf.dataurl);
if (conf.updateurl.length == 0) {
conf.updateurl = conf.dataurl;
}
if (conf.update > 0) {
intervalId = setInterval( this, "loadData", conf.update * 1000, conf.updateurl);
}
interact.LoadingDialog(conf.loadrssmsg);
}
if (conf.fade != -1) {
var freq = 60000;
if (conf.fade < 60) {
freq = conf.fade * 1000;
}
setInterval( this, "setAlphaFade", freq);
}
}
public function loadData(urlArray:Array):Void {
for (var i=0; i" + nv + "";
break;
default:
}
}
if (list != undefined) {
list = worldkitUtil.myreplace(list,',',' ');
// list.replace(this.regexws,' '); //REVISIT want to remove all whitespace
}
if (lat != "" && lon != "") {
g = lat + "," + lon;
} else if (list != "") {
var listtmp = list.split(" ");
lat = listtmp[0]; lon = listtmp[1];
g = lat + "," + lon;
}
//reshape annotation structure
//so that it is readdressable in the same feed
//and not dependent on g
if (id == "") {
id = g + ":" + n + ":" + v + ":" + u + ":" + sub.toString();
}
for (var s in sub) { //REVISIT belongs in interact
if (conf.categories[sub[s]] == undefined) {
conf.categories[sub[s]] = true;
}
}
sub.push("_default_");
if ((g != "" && interact.pointOnMap(lat,lon)) || (Points[id] != undefined) || (type != "")) {
if (Points[id] == undefined) {
var plat,plon;
if (conf.trackcats) { //REVISIT -- prevlat not setup to be dynamically object or number
plat = prevlat[ sub[0] ];
plon = prevlon[ sub[0] ];
} else {
plat = prevlat['_default_'];
plon = prevlon['_default_'];
}
Points[id] = new worldkitAnnotation(main,mc.rss,depth,n,u,lat,lon,v,sub,id,photo,plat,plon,list,type,dt,undefined,edt,icon);
if (conf.plotinterval == 0) {
Points[id].plot();
} else {
worldkitUtil.setTimeout(Points[id],"plot",conf.plotinterval * plotCount);
}
depth = depth + conf.zlevel;
plotCount++;
if (conf.maxzoom) {
if (type == "poly" || type == "line") {
var varray = list.split(" ");
for (var i=0; i 0) {
if (intervalId) {
clearInterval(intervalId);
}
intervalId = setInterval( this, "loadData", conf.update * 1000, conf.updateurl);
}
loadData(conf.updateurl);
interact.LoadingDialog(conf.loadrssmsg);
}
}
public function onJRSSComm(xml:String):Void {
var rss:worldkitRSS = this;
var loader:XML = new XML();
loader.ignoreWhite = true;
loader.onLoad = function(success):Void {
rss.onLoad(this,success);
}
loader.parseXML(xml);
loader.onLoad(true);
}
public function onJGetItemComm(id:String):Void {
if (Points[ id ] != undefined) {
Points[id].GetItem();
}
}
}