/*****************
Created 24.04.2007
*****************/

var timerID = 0;
var timerFreq = 15000;
var url = '';
var server = '';
var lang = '';
var report = '';
var gps_ids = '';
var complete = true;
var loading_img = '<img src="../images/mozilla_blu.gif">';
var updated_time = '';

/**************
on window load
***************/
function loadAjax() {
	updateTimer();
}

/***************
on window unload
***************/
function unloadData(){
	window.clearTimeout(timerID);
}

/*************************
update timer and if last 
ajax request was complete, 
make a new one
*************************/
function updateTimer(){
	if ( complete ){
		updateData();   
	};
	timerID = setTimeout("updateTimer()", timerFreq);
}

/************************
make a new ajax requst 
to update cars flags
************************/
function updateData(){
	complete = false;
	document.getElementById("ajax_loading").innerHTML = loading_img;
	var myDate = new Date();

    var httpRequest;

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            httpRequest.overrideMimeType('text/xml');
        }
    } 
    else if (window.ActiveXObject) { // IE
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } 
            catch (e) {
                       try {
                            httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                           } 
                         catch (e) {}
                      }
            }

    if (!httpRequest) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        complete = true; 
        return true;
    }
    httpRequest.onreadystatechange = function(){refreshFlags(httpRequest);};
    httpRequest.open('GET', url + '&gps_ids='+ gps_ids + '&rand=' + myDate.getTime(), true);
    httpRequest.send(null);
    myDate=null;
}

/*************************
if request was completed 
succesfully redraw the flags
*************************/
function refreshFlags(response){
    if ( response.readyState == 4 ){
        if ( response.status == 200 ){
            drawFlags(eval('(' + response.responseText + ')'));
        };
        complete = true;
        return true;
    };
}

/***************
redraw the flags
***************/
function drawFlags(data){
    var flags = data.fleet;
    var updated_text = data.text.last_updated;
    var user_name = data.user_name;
    
    for ( var i=0; i<flags.length; i++ ){
        var alias_content = document.getElementById('alias_' + flags[i].id);
        if (alias_content) {
            var text_node = document.createTextNode(flags[i].vehicle + ' / ' + flags[i].psn + ' / ' + flags[i].imei + ' / ' + flags[i].swv);
            alias_content.removeChild(alias_content.lastChild);
            alias_content.appendChild(text_node);
            text_node = null;
        };
        alias_content = null;

        var gps_content = document.getElementById(flags[i].id);
        var children = gps_content.childNodes;

        var j=0;
        while ( j<children.length ) {
            if ( children[j].tagName != "A" && children[j].tagName != "a" ) {
                gps_content.removeChild(children[j]);
            }
            else {
                j++;
            };
        };
        
        gps_content.innerHTML = flags[i].position.date + flags[i].flags;
        
        var a = document.createElement('a');
        a.target = 'map';
        a.border = 0;
        a.href = server + '/main/mapctrl.cgi?focus_gps_id=' + flags[i].id + '&latitude=' + flags[i].position.lat + 
            '&longitude=' + flags[i].position.lon + '&alias=' + flags[i].vehicle + '&date=' + flags[i].position.date + '&lang=' + lang + '&user_name=' + user_name;
        if ( flags[i].position.invalid != 1 ) { 
            a.innerHTML = flags[i].gis_link;
        }
        else {
            a.innerHTML = '';
        };
        gps_content.appendChild(a);
        
        a = document.createElement('a');
        a.href = 'index.cgi?content_name=gps_detailed_report&lang=' + lang + '&search_by=psn&to_date=' + flags[i].position.date +
            '&search_text=' + flags[i].psn + '&submit=Search';
        a.innerHTML = '<img border="0" title="' + report + '" src="../images/folder.gif"/>';
        gps_content.appendChild(a);

        var alerts = gps_content.nextSibling;
        if ( alerts.tagName != 'TD' ) {alerts = alerts.nextSibling};
        if ( flags[i].alerts ) {
            alerts.innerHTML = flags[i].alerts;
        }
        else {
            alerts.innerHTML = "";
        };

        gps_content = null;
        children = null;
        alerts = null;
        a = null;
        
    };
    
    var mydate = new Date();
    updated_time = updated_text + ": " + compute(mydate.getHours()) + ":" + compute(mydate.getMinutes()) + ":" + compute(mydate.getSeconds()) +
                    '<BR>GMT: ' + compute(mydate.getUTCHours()) + ":" + compute(mydate.getUTCMinutes()) + ":" + compute(mydate.getUTCSeconds());
    document.getElementById("ajax_loading").innerHTML = updated_time;
    date = null;
}

function compute(nr){
    if ( nr>=10 ) {return nr;};
    return '0' + nr;
}

//window.load = load();
window.unload = unloadData();
