/*
string_utils.js.php

String and Array Util Functions

Copyright (c) Gareth Hadfield 2008
*/

function head(aString, aLength){
  return(aString.substr(0, aLength));
}

function head_is(aString, aHead){
  return((aString != undefined) && (aHead != undefined) && (head(aString, aHead.length)==aHead));
}

function tail(aString, aLength){
  // substr(-aLength) doesn't work on ie
  return((aString != undefined) && (aString.substr(aString.length-aLength, aLength)));
}

function tail_is(aString, aTail){
  return(tail(aString, aTail.length)==aTail);
}

function left_pad(text, fill, alength){
	while(String(text).length < alength){
		text = fill + text;
	}
	return(text);
}

function zero_pad(text, alength){
	return left_pad(text, "0", alength);
}

function in_array(aNeedle, aArray){
  assert(aArray != undefined, "in_array: aArray != undefined");
  var result = false;
  for(var i=0; i<aArray.length; i++){
    if(typeof(aArray)=="string"){
      aElement = aArray.substr(i, 1);
    }
    else{
      aElement = aArray[i];
    }
    result = (aElement == aNeedle);
    if(result){
      break;
    }
  }
  return(result);
}

function remove_duplicates(aArray){
  var aNewArray = new Array();
  for(var i=0; i<aArray.length; i++){
    if(!in_array(aArray[i], aNewArray)){
      aNewArray.push(aArray[i]);
    }
  }
  return(aNewArray);
}

function trim_char(aString, aChar){
  if((aString!=undefined) && (aString.length > 0)){
    while(aString.charAt(0)==aChar){
      aString=aString.substr(1);
    }
    while(aString.charAt(aString.length-1)==aChar){
      aString=aString.substr(0, aString.length-1);
    }
  }
  return(aString);
}

function trim(aString){
  return(trim_char(aString, " "));
}

function capitalise_first_letter(aString){
  if(aString.length > 0){
    aString = aString.substr(0,1).toUpperCase() + aString.substr(1, aString.length);
  }
  return(aString);
}

function nbsp(aString){
  // convert spaces to &nbsp;
  return(aString.replace(/ /g, '&nbsp;'));
}

function nlbr(aString){
  // convert \n to <br>;
  return(aString.replace(/\n/g, '<br>'));
}

function strip_nl(aString){
  return(aString.replace(/\n/g, ''));
}

function encodehtmlspecialchars(aText){
  aText=String(aText);

  aText = aText.replace(/\&/g, '&amp;');

  aText = aText.replace(/\"/g, '&quot;');

  aText = aText.replace(/\</g, '&lt;');
  aText = aText.replace(/\>/g, '&gt;');

  return aText;
}

function decodehtmlspecialchars(aText){
  aText = aText.replace(/\&lt\;/g, '<');
  aText = aText.replace(/\&gt\;/g, '>');

  aText = aText.replace(/\&quot\;/g, '"');

  aText = aText.replace(/\&amp\;/g, '&');

  return aText;
}

function find_number(aString){
  var result = aString.search(/[0-9]/);
  if(result!=-1){
    result = parseInt(aString.substr(result), 10);
  }
  return(result)
}

function phpurldecode(aString){
  return(unescape(aString.replace(/\+/g, ' ')).replace(/%2B/g, '+'));
}

function pud(aString){
  // shorthand for phpurldecode
  return(phpurldecode(aString));
}
