﻿
//Trim Functions
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
String.prototype.trimEnd = function() { return this.replace(/\s+$/, ''); };
String.prototype.trimStart = function() { return this.replace(/^\s+/, ''); };


//En ekstra format funktion til String objektet
//Kan bruges med parametre
String.format = function(text) {
  //Tjek om der er mere end 1 argumenter med som parametre
  if (arguments.length <= 1) {
    //Hvis der kun er een parameter med kan vi bare returnere, da der ikke er noget at formatere
    return text;
  }
  //Vi gør klar til at køre argumenterne igennem
  var tokenCount = arguments.length - 2;
  for (var token = 0; token <= tokenCount; token++) {
    //Der itereres igennem tekstens tokens og erstatter deres plads med argumenterne
    text = text.replace(new RegExp("\\{" + token + "\\}", "gi"), arguments[token + 1]);
  }
  return text;
};

String.prototype.reverse = function() {
  return this.split('').reverse().join('');
};

//Returnerer true hvis teksten findes i string'en
String.prototype.contains = function(text, isCaseSensitive) {
  return !!(new RegExp(text, !isCaseSensitive ? "i" : "" + "g").test(this));
};

//Returnerer true hvis teksten findes i slutningen af string'en
String.prototype.endsWidth = function(text, isCaseSensitive) {
  return !!(new RegExp(text + "$", !isCaseSensitive ? "i" : "" + "g").test(this));
};

//Returnerer true hvis teksten findes i starten af string'en
String.prototype.startsWidth = function(text, isCaseSensitive) {
  return !!(new RegExp("^" + text, !isCaseSensitive ? "i" : "" + "g").test(this));
};

//Returnerer string'en, som array
String.prototype.toArray = function() {
  return this.split('');
}

//returnerer string'en, som et array med hver chars unicode integer
String.prototype.toIntArray = function() {
  var returnArray = [];
  for (var i = 0; i < this.length; i++) {
    returnArray.push(this.charCodeAt(i));
  }
  return returnArray;
};

//Fjerner en stump af string'en fra start og length frem
String.prototype.remove = function(start, length) {
  var s = '';
  if (start > 0)
    s = this.substring(0, start);

  if (start + length < this.length)
    s += this.substring(start + length, this.length);
  return s;
};

//returnerer en string uden HTML tags
String.prototype.stripTags = function() {
  return this.replace(/<\/?[^>]+>/gi, '');
};

//
String.prototype.htmlEntities = function() {
  return this.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
};

jQuery(function() {
  //trim ekesmpel
  var trimString = "  Denne string har nogle dumme mellemrum i enderne   ",
          trimTest = jQuery("#TrimTest");
  trimTest.html("'" + trimString + "'");
  trimTest.html(trimTest.html() + "<br />'" + trimString.trim() + "'");
  trimTest.html(trimTest.html() + "<br />'" + trimString.trimEnd() + "'");
  trimTest.html(trimTest.html() + "<br />'" + trimString.trimStart() + "'");

  //format ekesmpel
  var formatString = "Hej {0}, har du en god dag? Hilsen {1}";
  jQuery("#FormatTest").html("'Inden format: '" + formatString + "'<br />Efter format: '" + String.format(formatString, "Besøgende", "Rune") + "'");

  //reverse ekesmpel
  var reverseString = "evian mmh";
  jQuery("#ReverseTest").html("Inden reverse: " + reverseString + "<br />Efter reverse: " + reverseString.reverse());

  //contains ekesmpel
  var containsString = "Den hurtige brune Rune hopper over den dovne hund";
  jQuery("#ContainsTest").html(containsString.contains("Brune") + "<br />" + containsString.contains("Brune", true));

  //endsWidth ekesmpel
  var endsWidthString = "Den hurtige brune Rune hopper over den dovne hund";
  jQuery("#EndsWidthTest").html(endsWidthString.endsWidth("Hund") + "<br />" + endsWidthString.endsWidth("Hund", true));

  //startsWidth ekesmpel
  var startsWidthString = "Den hurtige brune Rune hopper over den dovne hund"
  jQuery("#StartsWidthTest").html(startsWidthString.startsWidth("den") + "<br />" + startsWidthString.startsWidth("den", true));

  //toArray ekesmpel
  var toArrayString = "Den hurtige brune Rune hopper over den dovne hund";
  jQuery("#ToArrayTest").html(toArrayString + "<br />" + toArrayString.toArray());

  //toIntArray ekesmpel
  var toIntArrayString = "Den hurtige brune Rune hopper over den dovne hund",
          intArray = toIntArrayString.toIntArray();
  jQuery("#ToIntArrayTest").html(toIntArrayString + "<br />" + intArray + "<br />intArray[2] * intArray[7] = " + (intArray[2] * intArray[7]));

  //removeString ekesmpel
  var removeString = "Den hurtige brune Rune hopper over den dovne hund";
  jQuery("#RemoveTest").html(removeString + "<br />" + removeString.remove(11, 6));

  //htmlEntitiesString ekesmpel
  var htmlEntitiesString = "<div>Den hurtige brune <strong>Rune</strong> hopper over den dovne hund</div>";
  jQuery("#HtmlEntitiesTest").html(htmlEntitiesString + "<br />" + htmlEntitiesString.htmlEntities());

  //stripTags ekesmpel
  var stripTagsString = "<div>Den hurtige brune <strong>Rune</strong> hopper over den dovne hund</div>";
  jQuery("#StripTagsTest").html(stripTagsString.htmlEntities() + "<br />" + stripTagsString.stripTags().htmlEntities());
});

