function SaveSL() {
    var user = new PMOUser();
    var tl = new user.External.Timeline

    tl.enabled = document.getElementById("chkTlEnabled").checked ? 1 : 0;
    tl.width = document.getElementById("edtWidth").value;
    tl.height = document.getElementById("edtHeight").value;
    tl.colour = document.getElementById("lstColour").value;

    tl.save();
}


function SparkLineLoad() {
    var user = new PMOUser();
    var tl = new user.External.Timeline
    tl.load();
    
    document.getElementById("chkTlEnabled").checked = tl.enabled;
    document.getElementById("edtWidth").value = tl.width;
    document.getElementById("edtHeight").value = tl.height;
    document.getElementById("edtCode").value = tl.code;

    var lst = document.getElementById("lstColour");

    for (var i = 0; i <= lst.length - 1; i++) {
        if (lst[i].value == tl.colour)
            lst[i].selected = true;
    }

    edtCode
}

function sendGraphError(Message) {
    var d = document.getElementById('usageMessage');
    if (d == null) {
        alert(Message);
        return;
    }
    d.style.visibility = 'visible';
    d.innerHTML = Message;
    setTimeout(function() { d.style.visibility = 'hidden' }, 5000);
}

function meuMainMeterInit() {
    var img = new Image();
    img.src = "/Images/Meter/W.gif";

    for (var i = 0; i <= 9; i++) {
        img.src = "/Images/Meter/" + i.toString() + "pdr.gif";
    }
    meuMainMeter();
}

var isLoggedIn = true; //default to true to try atleast one.

function meuMainMeter() {
    if (_debug)
        return

//    alert(' in here meuMainMeter!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
//    var chartMyPowerGaugeMain = new google.visualization.Gauge(document.getElementById('meuMainDialRoot'));
    var curr = 0;
    var params = new postParam();
    params.addParam("functions", 'powerMPNow');
    var postParams = buildPostParamsNew('myPower', params);

    
    var dataMyPowerGaugeMain = new google.visualization.DataTable();
    with (dataMyPowerGaugeMain) {
        addColumn('string', 'Label');
        addColumn('number', 'Value');
        addRows(1);
        setValue(0, 0, 'My Usage');
        setValue(0, 1, 0);
    };

    var img = new Image();
    img.src = "/Images/Meter/W.gif";

    for (var i = 0; i <= 9; i++) {
        img.src = "/Images/Meter/" + i.toString() + "pdr.gif";
    }

    var oOptions = {
        method: 'post',
        parameters: postParams.paramString,
        onSuccess: function(oXHR, oJSON) {
//            alert(oXHR.responseText);
            var power = 0;
            var logTime = new Date(2000, 1, 1);
            var dtNow = new Date();
            var dtDiff = new Date();

            var oImg1 = document.getElementById("imgdisp1");
            var oImg10 = document.getElementById("imgdisp10");
            var oImg100 = document.getElementById("imgdisp100");
            var oImg1000 = document.getElementById("imgdisp1000");
            var oImg10000 = document.getElementById("imgdisp10000");
            var oDiv = document.getElementById("nifty");

            var xml = CreateXMLStringParser(oXHR.responseXML, postParams.handShake, { ignoreReconnect: true });
            if (xml == null) {
                return false;
            }
            var unit = xml.getElementsByTagName("mpPN");
            isLoggedIn = (!unit.length == 0);
            if (!isLoggedIn) {
                return;
            }

            if (unit.length != 0) {
                power = parseInt(unit[0].getAttribute("p"));
                logTime = new Date(getDateFromFormat(unit[0].getAttribute("l"), "yyyy-MM-dd HH:mm:ss"));
                logTime.ConvertToLocal();
            }
            //            alert(unit[0].getAttribute("l"));
            dtDiff.setTime(Math.abs(logTime.getTime() - dtNow.getTime()));

            var iv = 100;
            var target = power;

            var LastPowerMinutes = dtDiff.getMinutes();
            //alert(LastPowerMinutes)
            oDiv.title = "Your Current Energy Usage";
            //alert(1)
            if (LastPowerMinutes >= 1) {
                oImg1.src = "/Images/Meter/-pdr.gif"
                oImg10.src = "/Images/Meter/-pdr.gif"
                oImg100.src = "/Images/Meter/-pdr.gif"
                oImg1000.src = "/Images/Meter/-pdr.gif"
                oImg10000.src = "/Images/Meter/-pdr.gif"
                oDiv.title = "Have not received any data from Powometer in the last 60 seconds. Your usage is unknown.";
                return true;
            }

            var interval_id = setInterval(function() {

                var step = 0;
                var idist = 10;
                var currDistance = Math.abs(target - curr);

                if (currDistance > 500)
                    step = 101;
                else if (currDistance > 400)
                    step = 75;
                else if (currDistance > 300)
                    step = 50;
                else if (currDistance > 200)
                    step = 30;
                else if (currDistance > 100)
                    step = 10;
                else
                    step = 1;
                if (curr > target) {
                    curr -= step;
                }
                else {
                    curr += step;
                }

                var d1 = curr % 10;
                var d10 = Math.floor(curr / 10) % 10;
                var d100 = Math.floor(curr / 100) % 10;
                var d1000 = Math.floor(curr / 1000) % 10;
                var d10000 = Math.floor(curr / 10000) % 10;
                oImg1.src = "/Images/Meter/" + d1.toString() + "pdr.gif"
                oImg10.src = "/Images/Meter/" + d10.toString() + "pdr.gif"
                oImg100.src = "/Images/Meter/" + d100.toString() + "pdr.gif"
                oImg1000.src = "/Images/Meter/" + d1000.toString() + "pdr.gif"
                oImg10000.src = "/Images/Meter/" + d10000.toString() + "pdr.gif"

                if (currDistance <= idist) {
                    var x = currDistance / idist;
                    var t = 50 - (50 * x);
                    iv += t;
                    clearInterval(interval_id);
                    if (curr != target)
                        interval_id = setInterval(arguments.callee, iv);

                }
                if (!isLoggedIn)
                    clearInterval(interval_id);
            }, 20);
        },
        onFailure: function(oXHR, oJSON) {
            sendGraphError("Failed to obtain data from Server. (error: 2)");
        }
    }
    window.setInterval(function() {
        if (!isLoggedIn)
            return;
        var oReq = new Ajax.Request(bu.XMLHandler, oOptions);
    }, parseInt(1000 * 5 * 1));

    var oReq = new Ajax.Request(bu.XMLHandler, oOptions);
}
