﻿function formatDate(date,notime) {
    var dateFormated;
    var d2 = new Date(parseInt(date.substr(6)));
    dateFormated = d2.getFullYear();
    var month = d2.getMonth() + 1;
    if (month < 10) {
        dateFormated += '-0' + month;
    } else {
        dateFormated += '-' + month;
    }
    var day = d2.getDate();
    if (day < 10) {
        dateFormated += '-0' + day;
    } else {
        dateFormated += '-' + day;
    }
    if (notime !== false) {
        dateFormated += ' ';
        dateFormated += (d2.getHours() < 10) ? '0' + d2.getHours() : d2.getHours();
        dateFormated += ':'
        dateFormated += (d2.getMinutes() < 10) ? '0' + d2.getMinutes() : d2.getMinutes();
    }
    return dateFormated;
}
/**
* Fills a select list on a given id with data.
* @data - a json object:
*     Selected: false
*     Text: "Test"
*     Value: "2"
* @id id of the slectlist
*/
function fillSelect(data, id) {
    for (i = 0; i < data.length; i++) {
        if (data[i].Selected) {
            $(id).
            append($("<option></option>").
            attr({ value: data[i].Value, selected: "selected" }).
            text(data[i].Text));
        } else {
            $(id).
            append($("<option></option>").
            attr("value", data[i].Value).
            text(data[i].Text));
        }
    }
}

/**
* Fills a select list on a given id with data recived as CommonListItem.
**/
function fillCommonList(data, id) {
    $(id)
    .find('option')
    .remove()
    .end();

    for (i = 0; i < data.length; i++) {
        if (data[i].Selected) {
            $(id).
            append($("<option></option>").
            attr({ value: data[i].ID, selected: "selected" }).
            text(data[i].Name));
        } else {
            $(id).
            append($("<option></option>").
            attr("value", data[i].ID).
            text(data[i].Name));
        }
    }
}

/*
Add a new table row to the bottom of the table
* ex. addTableRow($('#myTable'), data, props);
*/
function addTableRow(jQtable,id, rowattr, props) {
    jQtable.each(function() {
        var $table = $(this);
        // Number of td's in the last table row
        var n = $('tr:last td', this).length;
        var tds = '<tr id="' + rowattr + id + '">';
        for (var i = 0; i < n; i++) {
            tds += '\t<td id="' + props[i] + id + '">&nbsp;</td>\n';
        }
        tds += '</tr>';
        if ($('tbody', this).length > 0) {
            $('tbody', this).append(tds);
        } else {
            $(this).append(tds);
        }
    });
}


/**
* Skapar sidbläddraren
* @data - a json object; 
*    Active: true
*    Page: 1
*    Name: "1"
**/
buildPager = function(data) {
    $.pager = ""
    for (i = 0; i < data.length; ++i) {
        if (data[i].Active) {
            $.pager += "\t<span class=\"activePage\">" + data[i].Name + "</span>\n"
            currentPage = data[i].Page;
        } else {
            $.pager += "\t<a href=\"javascript:changePage(" + data[i].Page + ")\">" + data[i].Name + "</a>\n"
        }
    }
    var $tabs = $('#tabs').tabs();
    var selected = $tabs.tabs('option', 'selected'); // => 0
    $('#pager' + selected).html($.pager);
}


/**
* Concatenates the values of a variable into an easily readable string
* by Matt Hackett [scriptnode.com]
* @param {Object} x The variable to debug
* @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10]
* @param {String} sep The separator to use between [default: a single space ' ']
* @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use
*/
function print_r(x, max, sep, l) {

    l = l || 0;
    max = max || 10;
    sep = sep || ' ';

    if (l > max) {
        return "[WARNING: Too much recursion]\n";
    }

    var 
		i,
		r = '',
		t = typeof x,
		tab = '';

    if (x === null) {
        r += "(null)\n";
    } else if (t == 'object') {

        l++;

        for (i = 0; i < l; i++) {
            tab += sep;
        }

        if (x && x.length) {
            t = 'array';
        }

        r += '(' + t + ") :\n";

        for (i in x) {
            try {
                r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
            } catch (e) {
                return "[ERROR: " + e + "]\n";
            }
        }

    } else {

        if (t == 'string') {
            if (x == '') {
                x = '(empty)';
            }
        }

        r += '(' + t + ') ' + x + "\n";

    }

    return r;

};

//    Toggles depending on its current visibility
function toggleLayer(name, fadeTime) {
    if ($('#' + name).is(":visible")) {
        $('#' + name).fadeOut(fadeTime);
    }
//    else if ($('#' + name).is(":hidden")) {
//        $('#' + name).fadeOut(fadeTime);
//    }
    else {
        $('#' + name).fadeIn(fadeTime);
    }
}
// Sets according to the forced visibility value, 0 = hide, else show.
function toggleLayerByForce(name, visibility, fadeTime) {
    if (visibility == '0') {
        $('#' + name).fadeOut(fadeTime);
    }
    else {
        $('#' + name).fadeIn(fadeTime);
    }
}

// Sets according to the forced visibility value, 0 = hide, else show.
function toggleTableRow(name, fadeTime) {
    var elem = $('#' + name)[0];
    var rs = false;
    if (elem.style.display == 'none') {
        $('#' + name).fadeIn(fadeTime);
        rs = true;
    }
    else {
        $('#' + name).fadeOut(fadeTime);
        rs = false;
    }

    return rs;
}

function addErrorMessage(msg) {
    $('#ErrorMessage').html(msg);
    $('#ErrorMessage').fadeIn();
}

function populateErrorMessage(error)
{
    var message = '<ul id="errors">';
    for (var prop in error) {
        var i;
        for (i = 0; i < error[prop].length; i++) {
            message += '<li>' + error[prop][i].ErrorMessage + '</li>';
        }
    }
    message += '</ul>';
    return message;
}
