// yyyy-mm-dd zu dd.mm.yyyy
function formatDate(datestring) {
	var d = datestring.split('-');
	return d[2]+'.'+d[1]+'.'+d[0];
}
//Minuten zu Stunden
function min2h(zeit, mitSec)
{
	var zeit_min = padLeft0(zeit % 60);
	var zeit_std = (zeit - zeit_min) / 60;
    zeit_std = padLeft0(zeit_std);
	return zeit_std + ':' + zeit_min +(mitSec ? ':00' : '');
}

// rechnet ein Stundendarstellung wie 10:30 in Minuten um
function h2min(h)
{
	h = h.split(':');
	var endMinute = 60 * h[0];
	endMinute  += (h[1]*1);
	
	return endMinute;
}

function from_timestamp(timestamp)
{
	var d = new Date(timestamp * 1000);
	return padLeft0(d.getDate()) + '.' + padLeft0(d.getMonth() + 1) + '.' + d.getFullYear() + ', ' + padLeft0(d.getHours()) + ':' + padLeft0(d.getMinutes());
}
Date.prototype.getSqlDateTime = function()
{
	var d = this;
	return d.getFullYear() + '-' + padLeft0(d.getMonth() + 1) + '-' + padLeft0(d.getDate()) + ' ' + padLeft0(d.getHours()) + ':' + padLeft0(d.getMinutes()) + ':' + padLeft0(d.getSeconds());
};
Date.getFromSqlDateTime = function(sqlDateTime)
{
	var year = sqlDateTime.substr(0,4);
	var month = sqlDateTime.substr(5,2);
	var day = sqlDateTime.substr(8,2);
	var hours = sqlDateTime.substr(11,2);
	var minutes = sqlDateTime.substr(14,2);
	var seconds = sqlDateTime.substr(17,2);
	return new Date(year, month - 1, day, hours, minutes, seconds);
};

//timestamp auf volle Minute aufrunden
function round_minute($timestamp)
{
	return ceil($timestamp/60)*60;
}
function padLeft0(str)
{
	str = str + '';
	return str.length == 1 ? '0' + str : str;
}

function str_pad (input, pad_length, pad_string, pad_type) {

    var half = '', pad_to_go;

    var str_pad_repeater = function (s, len) {
        var collect = '', i;

        while (collect.length < len) {collect += s;}
        collect = collect.substr(0,len);

        return collect;
    };

    input += '';
    pad_string = pad_string !== undefined ? pad_string : ' ';
    
    if (pad_type != 'STR_PAD_LEFT' && pad_type != 'STR_PAD_RIGHT' && pad_type != 'STR_PAD_BOTH') { pad_type = 'STR_PAD_RIGHT'; }
    if ((pad_to_go = pad_length - input.length) > 0) {
        if (pad_type == 'STR_PAD_LEFT') { input = str_pad_repeater(pad_string, pad_to_go) + input; }
        else if (pad_type == 'STR_PAD_RIGHT') { input = input + str_pad_repeater(pad_string, pad_to_go); }
        else if (pad_type == 'STR_PAD_BOTH') {
            half = str_pad_repeater(pad_string, Math.ceil(pad_to_go/2));
            input = half + input + half;
            input = input.substr(0, pad_length);
        }
    }

    return input;
}

function setCookie(c_name, value, expiredays)
{
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) +
    ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function getCookie(c_name)
{
    if (document.cookie.length > 0) 
	{
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) 
		{
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) 
                c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

function addClickAction (el,action, arg)
{
	$(el).click(function(){action(arg)});
}

function rand (min, max) {

    var argc = arguments.length;
    if (argc === 0) {
        min = 0;
        max = 2147483647;
    } else if (argc === 1) {
        throw new Error('Warning: rand() expects exactly 2 parameters, 1 given');
    }
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

function cloneObject (obj)
{
	if ( !obj )
	{
		return null;
	}

	// check for function and RegExp objects, and non-object types
	if ( typeof obj != 'object' || obj instanceof Function || obj instanceof RegExp || obj instanceof Date )
	{
		newObj = obj; // just copy reference to it
	}
	else
	{
		var newObj = (obj instanceof Array) ? [] : {};
		for ( var n in obj )
		{
			var node = obj[n];
			if ( typeof node == 'object' )
			{
				newObj[n] = cloneObject(node);
			}
			else
			{
				newObj[n] = node;
			}
		}
	}

	return newObj;
};

