// libStringExtension 2.0 - UF 2009-05-26

String.prototype.strpad = strpad;

function strpad () {

  var STR_PAD_RIGHT=0, STR_PAD_LEFT=1, STR_PAD_BOTH=2;
  var retValue=new String(this);

  switch (strpad.arguments.length) {
    case 0:	return (retValue);
    		break;
    case 1: strPadChar=' ';
            intPadLength=strpad.arguments[0];
            strPadPosition=STR_PAD_RIGHT;

            break;
    case 2: strPadChar=strpad.arguments[1].substr (0,1);
            intPadLength=strpad.arguments[0];
            strPadPosition=STR_PAD_RIGHT;
            break;
    case 3: strPadChar=strpad.arguments[1].substr (0,1);
            intPadLength=strpad.arguments[0];
            strPadPosition=strpad.arguments[2];
            break;
  }

  switch (strPadPosition) {
    case 0: for (var dummy=this.length; dummy<intPadLength; dummy++) {
              retValue+=strPadChar;
            }
            break;
    case 1: for (var dummy=this.length; dummy<intPadLength; dummy++) {
              retValue=strPadChar+retValue;
            }
            break;
    case 2: for (var dummy=this.length; dummy<intPadLength; dummy+=2) {
              retValue+=strPadChar;
              if (retValue.length==intPadLength) break;
              retValue=strPadChar+retValue;
            }
            break;

  }

  return (retValue);
}

String.prototype.trim=function () {
  return this.replace (/^\s+/, '').replace (/\s+$/, '');
}


String.prototype.explode=function (delimiter, limit ) {
 
    var emptyArray = { 0: '' };
    
    if ( arguments.length < 1 || typeof arguments[0] == 'undefined') return null;
 
    if ( delimiter === '' ||
        delimiter === false ||
        delimiter === null )
    {
        return false;
    }
 
    if ( typeof delimiter == 'function' ||
        typeof delimiter == 'object' ||
        typeof string == 'function' ||
        typeof string == 'object' )
    {
        return emptyArray;
    }
 
    if ( delimiter === true ) {
        delimiter = '1';
    }
    
    if (!limit) {
        return this.toString().split(delimiter.toString());
    } else {
        // support for limit argument
        var splitted = this.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
}

String.randomString = function (paramStringLength) {

  var strLetters='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
  var retValue='';
  
  for (var dummy=0; dummy<paramStringLength; dummy++) retValue+=strLetters.substr (Math.round(Math.random()*strLetters.length),1);
  
  return (retValue);

}

