function nop()
{
  return void(0);
}


function addUrl(url,add)
{
 var url_ = url.split('?');
 var result = '';
 if (url_.length==1)
 {
  result = url_[0] + '?' + add;
 } else
 {
  var qs = parseQueryString(url_[1]);
  var addqs = parseQueryString(add);
  for (var name in addqs)
  {
    qs[name] = addqs[name];
  }
  result = url_[0] + '?' + getQueryString(qs);
 }
 return result;
}


function parseQueryString(qs)
{
 if (qs=='') return '';
 var items = new Array();
 var query = new Array();
 var pair = new Array();
 items = qs.split('&');
 for (i=0; i<items.length; i++)
 {
  pair = items[i].split('=');
  query[pair[0]] = pair[1];
  for(j=2; j<pair.length; j++)
  {
   query[pair[0]] = query[pair[0]] + '=' + pair[j];
  }
 } 
 return query;
}


function getQueryString(qs)
{
  var result = '';
  var i = 0;
  for (var name in qs)
  {
    result = result + name + '=' + escape(qs[name]) +'&';
    i++;
  }
  if (result.length>0) result = result.substr(0,result.length-1);
  return result;
}


function padString(value,padstring,padlength,padleft)
{
  stringValue = value + '';
  if (padlength <= stringValue.length)
  {
    return(stringValue)
  }
  result = stringValue; 
  while (result.length<padlength)
  {
    if (padleft)
    {
      result = padstring + result;
    } else
    {
      result = result + padstring;
    }
  } 
  return result;
}


function formatInt(value,padlength,padstring)
{
  if (!padstring) padstring = " ";
  if (!padlength) padlength = 1;
  return padString(value,padstring,padlength,true);
}


// siehe PHP sprintf
function formatNumbers()
{
  if (!arguments || (arguments.length < 1) || (!RegExp))
  {
    return;
  }
  var result = arguments[0];
  var value = 0;
  var items = 0;
  var regexp = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
  while (item = regexp.exec(result))
  {
    //item = regexp.exec(input)
    itemFull = item[0];
    itemLeft = item[1];
    itemPad = item[2];
    itemJustify = item[3];
    itemLength = item[4];
    itemPrecision = item[5];
    itemType = item[6];
    itemRight = item[7];

    items++;
    if (items >= arguments.length)
    {
      return;
    }

    value = arguments[items];

    valuePadString = ' ';
    if (itemPad && itemPad.substr(0,1) == "'")
    {
      valuePadString = itemPad.substr(1,1);
    } else if (itemPad)
    {
      valuePadString = itemPad;
    }

    valueLength = -1;
    if (itemLength)
    {
      valueLength = parseInt(itemLength);
    }

    valueJustifyRight = true;
    if (itemJustify=='-')
    {
      valueJustifyRight = false;
    }
    
    var valuePrecision = 8;
    if (itemPrecision && itemType == 'f')
    {
      valuePrecision = parseInt(itemPrecision.substring(1));
    }

    var valueResult = value;
    switch (itemType)
    {
      case "b":
            //Binary Integer
            valueResult = parseInt(value).toString(2);
            break;
      case "c":
            //Character Integer
            valueResult = String.fromCharCode(parseInt(value));
            break;
      case "d":
            //Signed Integer
            valueInt = parseInt(value) ? parseInt(value) : 0;
            //padding
            if (valueLength!=-1)
            {
              valueResult = formatInt(valueInt,valueLength,valuePadString);
            } else
            {
              valueResult = valueInt;
            }
            break;
      case "u":
            //UnSigned Integer
            valueInt = parseInt(value) ? Math.abs(parseInt(value)) : 0;
            //padding
            if (valueLength!=-1)
            {
              valueResult = formatInt(valueInt,valueLength,valuePadString);
            } else
            {
              valueResult = valueInt;
            }
            
            break;
      case "f":  
            //Float
            valueFloat = Math.round(parseFloat(value) * Math.pow(10, valuePrecision)) / Math.pow(10, valuePrecision);
            valueInt = Math.floor(valueFloat);
            valueKomma = Math.round((valueFloat - valueInt) * Math.pow(10, valuePrecision));
            //padding
            if (valueLength!=-1)
            {
              valueResult = formatInt(valueInt,valueLength,valuePadString) + "," + formatInt(valueKomma,valuePrecision,'0');
            } else
            {
              valueResult = valueFloat;
            }            
            break;
      case "o":
            //Octal Integer
            valueResult = parseInt(value).toString(8);
            break;
      case "x":
            //Hex Integer
            valueResult = parseInt(value).toString(16).toLowerCase();
            break;
      case "X":
            //Hex Integer
            valueResult = parseInt(value).toString(16).toUpperCase();
            break;
    default:
          //Irgendwas
          valueResult = value;
          break;
   }
   result = itemLeft + valueResult + itemRight;
  }
  return result;
}