    //<![CDATA[
    
// (c) Mikael Högqvist, ZIB 2006-2007

// Timeline showing gridjobs

var tl;
var model = new Model();

Timeline.DefaultEventSource.prototype.timelineJSON = function(data, url) {
    var base = this._getBaseURL(url);
    var added = false;
    if (data && data.results.bindings){
//        var wikiURL = ("wikiURL" in data) ? data.wikiURL : null;
//        var wikiSection = ("wikiSection" in data) ? data.wikiSection : null;
    
//        var dateTimeFormat = ("dateTimeFormat" in data) ? data.dateTimeFormat : null;
        // let timeline handle the format
        var dateTimeFormat = 'iso8601';
        var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat);
        //alert(this._events.getUnit().getParser(''));
        for (var i=0; i < data.results.bindings.length; i++){
            var event = data.results.bindings[i];
            var name = "";
            if(undefined!=event.name) {
                name=event.name.value.replace
                    ('http://www.gac-grid.org/jobs/', '') }
            //if (document.getElementById("user").innerHTML == 'ALL')
            var userid = ""; if(undefined!=event.user) {
                userid = event.user.value.replace(/OU=.*/,'OU=*/CN=*'); };
            var title = event.jobid.value;
            var description = "<b>Executable: </b>" + name + '<br/>';
            description += "<b>User: </b>" + userid + '<br/>';
            description += "<b>Host: </b>" + 
                event.host.value.replace('http://', '') + '<br/>';
            description += "<b>Status: </b>"+event.state.value + '<br/><br/>';

            var color = "#C0C0C0";
            
            var state = event.state.value.toLowerCase();
            if(0) { //old timeline
                        if(state == 'stagein')
                            color = "#FFFF00";
                        else if(state == 'active')
                            color = "#FF8C00";
                        else if(state == 'stageout')
                            color = "#FFFF00";
                        else if(state == 'cleanup')
                            color = "#4682B4";
                        else if(state == 'done')
                            color = "#008000";
                        else if(state == 'failed')
                            color = "#FF0000";
                        else if(state == 'error')
                            color = "#8B0000";
            }

            if(state == 'completed')
                color = "#008000";
            else if(state == 'queued')
                color = "#FFFF00";
            else if(state == 'failed')
                color = "#FF0000";
            else color = "#8B0000";

            var stop; //var date = new Date(); stop = isodate(date);
            if( event.stop == undefined ) { stop = null; }
            else { stop = event.stop.value; }
            var start = event.start.value;
            if(stop.replace(/-|T|:/g,"")-start.replace(/-|T|:/g,"") < 0) {
                start=stop; }

            var evt = new Timeline.DefaultEventSource.Event(
                //parseDateTimeFunction('Wed, Jan 17 2007 0' + i.toString() + ':00:00 +0100'), //start
                //parseDateTimeFunction('Wed, Jan 17 2007 0' + (1+i).toString() + ':00:00 +0100'), // end
                parseDateTimeFunction(start),
                parseDateTimeFunction(stop),
                null, // latestStart
                null, // earliestEnd
                false, // false:event-bar, true:event-dot
                title, // text
                description, // description
                null, // image
                null, // link
                null, // icon
                color, // color
                null // textColor
//                parseDateTimeFunction(event.end.value),
//                parseDateTimeFunction(event.latestStart.value),
//                parseDateTimeFunction(event.earliestEnd.value),
//                event.isDuration.value || false,
//                event.title.value,
//                event.description.value
//                this._resolveRelativeURL(event.image.value, base),
//                this._resolveRelativeURL(event.link.value, base),
//                this._resolveRelativeURL(event.icon.value, base),
//                event.color.value,
//                event.textColor.value
            );
            // 
//            var blub = event.start.value;
//            blub = 'Wed, Jan 17 2007 09:00:00 +0100';
//            alert(event.start.value instanceOf Date);
//            alert(blub);
//            evt = new Timeline.DefaultEventSource.Event(parseDateTimeFunction(blub));
            evt._obj = event;
            evt.getProperty = function(name) {
                return this._obj[name];
            };
//            evt.setWikiInfo(wikiURL, wikiSection);

            this._events.add(evt);
            added = true;
        }
    }
   
    if (added) {
        this._fire("onAddMany", []);
    }
};

function onLoad() {
  var theme = Timeline.ClassicTheme.create();
  var eventSource = new Timeline.DefaultEventSource(0);

  theme.event.bubble.width = 320;
  theme.event.bubble.height = 220;
  theme.ether.backgroundColors[1] = theme.ether.backgroundColors[0];

  var date = document.getElementById("date").innerHTML;
  var user = document.getElementById("user").innerHTML;
  if ( user == "ALL" ) user = '';
  var host = document.getElementById("host").innerHTML;
  var ressource = "computer";
  var limit = document.getElementById("limit").innerHTML;

  var fixdate = Timeline.DateTime.parseIso8601DateTime(date);
  //var fixdate =Timeline.DateTime.parseIso8601DateTime('2004-10-10T10:00:00');
  //  var timezone=-0;

  var bandInfos = [
    Timeline.createBandInfo({
        date:           fixdate,
        eventSource:    eventSource,
        width:          "70%", 
                            //        timeZone:       timezone,
        intervalUnit:   Timeline.DateTime.MINUTE, 
        intervalPixels: 50,
        theme:          theme
    }),
    Timeline.createBandInfo({
        date:           fixdate,
        showEventText:  false,
        eventSource:    eventSource,
                            //        timeZone:       timezone,        
        trackHeight:    0.5,
        trackGap:       0.2,    
        width:          "20%", 
        intervalUnit:   Timeline.DateTime.HOUR, 
        intervalPixels: 50
    }),
    Timeline.createBandInfo({
        date:           fixdate,
        showEventText:  false,
        eventSource:    eventSource,
                            //        timeZone:       timezone,        
        trackHeight:    0.5,
        trackGap:       0.2,    
        width:          "10%", 
        intervalUnit:   Timeline.DateTime.DAY, 
        intervalPixels: 50
    })
    
  ];
  
  bandInfos[1].syncWith = 0;
  bandInfos[1].highlight = true;

  bandInfos[2].syncWith = 0;
  bandInfos[2].highlight = true;

  tl = Timeline.create(document.getElementById("timeline"), bandInfos);
//  try{
  tl.loadJSON("/query/query?query=" + model.timeline(date, user, host, ressource, limit) + "&format=json", function(json, url) { eventSource.timelineJSON(json, url); });  
//  } catch(error) {
//    alert(error);
//  }
  
//  tl.loadJSON("/timeline", function(json, url) { eventSource.loadSPARQLJSON(json, url); });
//  Timeline.loadXML("example1.xml", function(xml, url) { eventSource.loadXML(xml, url); });  
}

var resizeTimerID = null;
function onResize() {
    if (resizeTimerID == null) {
        resizeTimerID = window.setTimeout(function() {
            resizeTimerID = null;
            tl.layout();
        }, 500);
    }
}

    //]]

