// Version       : 3.2
// Last modified : 10.07.2003 (P.Seliger)
// Author        : BBDO InterOne Hamburg
// Copyright     : BMW Group 2002-2003

// Unique scripting solutions that are provided for  BMW Group sites are for use exclusively
// within  BMW Group projects.  No other use of these solutions is permitted.

// See "documentation_bmw_scriptlib.doc" for details!

var nn4                  = document.layers;
var nn6                  = document.documentElement;if(document.all) {nn6 = false;}
var ie4                  = (document.all && !document.getElementById);
var ie5                  = (document.all && document.getElementById);
var mac                  = false; if(navigator.platform.indexOf("Mac") >= 0){mac = true;}
var lyr                  = new Array();
var pictures             = new Array();
var userAgent            = window.navigator.userAgent;
var preLoadIsComplete    = false;
var ToggleStatus         = new Array ();
var oldImg               = "";
var oldCnt;
var loopCounter          = 0;
var CheckAnimationStatus = 0;
var loadImgList;
var loadImgCount;
var LoopAnimation;
var layerLoadingStatus   = new Array();
var query                = new Object();
var parameterArray       = new Array();

function findElement(n,ly) {
  var curDoc = ly ? ly.document : document;
  var elem = curDoc[n];
  if (!elem) {
    for (var i=0;i<curDoc.layers.length;i++) {
      elem = findElement(n,curDoc.layers[i]);
      if (elem) {
        return elem;
      }
    }
  }
  return elem;
}


function NSStyle(s) {
  return findElement(s,0);
}


function IEStyle(s) {
  return document.all.tags("div")[s].style;
}


function activeImageConstructor(aName,aLowlightSrc,aHighlightSrc) {
  this.name          = aName;
  this.lowLight      = new Image();
  this.lowLight.src  = aLowlightSrc;
  this.highLight     = new Image();
  this.highLight.src = aHighlightSrc;
  this.storeLight     = new Image();
  this.storeLight.src = aLowlightSrc;
}

function addImageToPictureList(imageName, imageUrl, activeImageUrl){
  activeImageObj     = new activeImageConstructor(imageName, imageUrl, activeImageUrl);
  activeImageData    = new Array(activeImageObj);
  pictures           = pictures.concat(activeImageData);
}

function addJpgToPictureList(imageName, imageUrl, activeImageUrl){
  activeImageObj     = new activeImageConstructor(imageName, imageUrl, activeImageUrl);
  activeImageData    = new Array(activeImageObj);
  pictures           = pictures.concat(activeImageData);
}

function preLoad() {
  var preLoadedImgs = "";
  if (document.all) {
    for (i=0; i < document.all.tags("img")[i].length; i++) {
      if (document.all.tags("img")[i].name) {
        if (preLoadedImgs.indexOf(document.all.tags("img")[i].name) < 0) {
          var imgSrc = document.all.tags("img")[i].src;
          var tmpPrefix = imgSrc.substr(0,imgSrc.length-4);
          var tmpSuffix = imgSrc.substr(imgSrc.length-4,imgSrc.length-1);
          if (tmpSuffix == ".gif") {
            var tmpActiveSrc = tmpPrefix + "-a" + tmpSuffix;
            var IEFix = new activeImageConstructor(document.all.tags("img")[i].name,document.all.tags("img")[i].src,tmpActiveSrc);
            var tmpData = new Array(IEFix);
            pictures = pictures.concat(tmpData);
            preLoadedImgs = preLoadedImgs.concat(document.all.tags("img")[i].name);
          }
        }
      }
    }
  } else if (document.getElementsByTagName) {
    for (i=0; i<document.getElementsByTagName("img")[i].length; i++) {
      if (document.getElementsByTagName("img")[i].name) {
        if (preLoadedImgs.indexOf(document.getElementsByTagName("img")[i].name) < 0) {
          var imgSrc = document.getElementsByTagName("img")[i].src;
          var tmpPrefix = imgSrc.substr(0,imgSrc.length-4);
          var tmpSuffix = imgSrc.substr(imgSrc.length-4,imgSrc.length-1);
          if (tmpSuffix == ".gif") {
            var tmpActiveSrc = tmpPrefix + "-a" + tmpSuffix;
            var IEFix = new activeImageConstructor(document.getElementsByTagName("img")[i].name,document.getElementsByTagName("img")[i].src,tmpActiveSrc);
            var tmpData = new Array(IEFix);
            pictures = pictures.concat(tmpData);
            preLoadedImgs = preLoadedImgs.concat(document.getElementsByTagName("img")[i].name);
          }
        }
      }
    }
  } else if (document.layers) {
    for (i=0; i<document.layers.length; i++) {
      for (j=0; j<document.layers[i].document.images.length; j++)  {
        if (document.layers[i].document.images[j].name) {
          if (preLoadedImgs.indexOf(document.layers[i].document.images[j].name) < 0) {
            var imgSrc = document.layers[i].document.images[j].src;
            var tmpPrefix = imgSrc.substr(0,imgSrc.length-4);
            var tmpSuffix = imgSrc.substr(imgSrc.length-4,imgSrc.length-1);
            if (tmpSuffix == ".gif") {
              var tmpActiveSrc = tmpPrefix + "-a" + tmpSuffix;
              var IEFix = new activeImageConstructor(document.layers[i].document.images[j].name,document.layers[i].document.images[j].src,tmpActiveSrc);
              var tmpData = new Array(IEFix);
              pictures = pictures.concat(tmpData);
              preLoadedImgs = preLoadedImgs.concat(document.layers[i].document.images[j].name);
            }
          }
        }
      }
    }
  }
  for (i=0; i<document.images.length; i++) {
    if (document.images[i].name) {
      if ( preLoadedImgs.indexOf(document.images[i].name) < 0) {
        var imgSrc = document.images[i].src;
        var tmpPrefix = imgSrc.substr(0,imgSrc.length-4);
        var tmpSuffix = imgSrc.substr(imgSrc.length-4,imgSrc.length-1);
        if (tmpSuffix == ".gif") {
          var tmpActiveSrc = tmpPrefix + "-a" + tmpSuffix;
          var IEFix = new activeImageConstructor(document.images[i].name,document.images[i].src,tmpActiveSrc);
          var tmpData = new Array(IEFix);
          pictures = pictures.concat(tmpData);
          preLoadedImgs = preLoadedImgs.concat(document.images[i].name);
        }
      }
    }
  }
  preLoadIsComplete = true;
}


function chgclass(tagname,css) {
  if (!nn4) {
    if (ie4){eval("document.all."+tagname+".className='"+css+"'");}
    else    {eval("document.getElementById('"+tagname+"')"+".className='"+css+"'");}
  }
}


function changeImage(imageName,imageSource,layerName) {
  if(nn4 && layerName) {
    NSStyle(layerName).document.images[imageName].src = imageSource;
  }
  else {
    document.images[imageName].src = imageSource;
  }
}


function mouseOver(aPic,aLayer) {
  if (preLoadIsComplete) {
    for (i=0; i<pictures.length; i++) {
      if (pictures[i].name == aPic) {
        if(nn4 && aLayer) {
          NSStyle(aLayer).document.images[aPic].src = pictures[i].highLight.src;
        }
        else {
          document.images[aPic].src = pictures[i].highLight.src;
        }
      }
    }
  }
  else {
    preLoad();
  }
}


function mouseOut(aPic,aLayer) {
  oldImg = "";
  if (preLoadIsComplete) {
    for (i=0; i<pictures.length; i++) {
      if (pictures[i].name == aPic) {
        if(nn4 && aLayer) {
          NSStyle(aLayer).document.images[aPic].src = pictures[i].lowLight.src;
        }
        else {
          document.images[aPic].src = pictures[i].lowLight.src;
        }
      }
    }
  }
  else {
    preLoad();
  }
}


function setPermanentHigh(picName,layerName) {
  if (preLoadIsComplete) {
    for (i=0; i<pictures.length; i++) {
      if (pictures[i].name == picName) {
        pictures[i].lowLight.src = pictures[i].highLight.src;
        if(nn4 && layerName) {
          NSStyle(layerName).document.images[picName].src = pictures[i].highLight.src;
        }
        else {
          document.images[picName].src = pictures[i].highLight.src;
        }
      }
    }
  }
  else {
    preLoad();
  }
}


function dropPermanentHigh(picName,layerName) {
  if (preLoadIsComplete) {
    for (i=0; i<pictures.length; i++) {
      if (pictures[i].name == picName) {
        pictures[i].lowLight.src = pictures[i].storeLight.src;
        if(nn4 && layerName) {
          NSStyle(layerName).document.images[picName].src = pictures[i].lowLight.src;
        }
        else {
          document.images[picName].src = pictures[i].lowLight.src;
        }
      }
    }
  }
  else {
    preLoad();
  }
}


function vSwitch(aLayer,aBool) {
  if (preLoadIsComplete) {
    if (document.all) {
      IEStyle(aLayer).visibility = (aBool == 0) ? "hidden" : "visible";
    }
    else {
      if (nn4) {
        NSStyle(aLayer).visibility = (aBool == 0) ? 'hide' : 'show';
      }
      else if (nn6) {
        document.getElementById(aLayer).style.visibility= (aBool == 0) ? "hidden" : "visible";
      }
    }
  }
  else {
    preLoad();
  }
}


function toggleLayer(Layer) {
  if (ToggleStatus[Layer]) {
    vSwitch(Layer,0);
    ToggleStatus[Layer] = 0;
  }
  else {
    vSwitch(Layer,1);
    ToggleStatus[Layer] = 1;
  }
}


function centerPopup(popup_name,popup_url,popup_with,popup_height,myWidth,myHeight,myScrollbar) {
  if(!myWidth) {myWidth = 10;}
  if(!myHeight){myHeight = 50;}
  if(!myScrollbar){myScrollbar = 0;}
  var popup_left = (window.screen.width/2)  - (popup_with/2 + myWidth);
  var popup_top  = (window.screen.height/2) - (popup_height/2 + myHeight);
  if (popup_left < 0) popup_left = 0;
  if (popup_top < 0) popup_top = 0;
  window.open(popup_url ,popup_name,"toolbar=no,location=no,status=no,menubar=no,scrollbars=" + myScrollbar + ",resizable=no,width=" + popup_with + ",height=" + popup_height + ",left=" + popup_left + ",top=" + popup_top + ",screenX=" + popup_left + ",screenY=" + popup_top);
}



function loadPage(layerName,sourcePath,layerWidth) {
  if(!layerWidth) {layerWidth = 0;}
  iFrameName = layerName + "I";
  if (nn4) {
    NSStyle(layerName).load(sourcePath,layerWidth);
  }
  else if (ie4) {
    parent[iFrameName].location = sourcePath;
  }
  else {
    document.getElementById(iFrameName).src = sourcePath;
  }
}


function loadAllLayers(layerName,layerURL,thisLayerNumber) {
  loadPage(layerName,layerURL);
  thisLayerNumber++;
  checkLoading(layerName,thisLayerNumber);
}


function checkLoading(layerName,thisLayerNumber) {
  if(layerLoadingStatus[thisLayerNumber]) {
    initLayerLoad(thisLayerNumber);
  }
  else {
    setTimeout("checkLoading('"+layerName+"',"+thisLayerNumber+")",10);
  }
}


function initLayerLoad(thisLayerNumber) {
  numberOfLayers = layerNames.length;
  if(thisLayerNumber <= (numberOfLayers-1)) {
    loadAllLayers(layerNames[thisLayerNumber],layerURLs[thisLayerNumber],thisLayerNumber);
  }
}


function setLayerPosition(thisLayer,positionLeft,positionTop) {
  var unit = "";
  thisLayer = document.all ? document.all[thisLayer] : document.getElementById ? document.getElementById(thisLayer) : NSStyle(thisLayer);
  thisLayer = document.layers ? thisLayer : thisLayer.style;
  if(document.getElementById) {unit = "px";}
  thisLayer.left = positionLeft + unit;
  thisLayer.top  = positionTop + unit;
  return;
}


function getLayerInformation(thisLayer) {
  thisLayerPosition = new Array();
  thisLayer = document.all ? document.all[thisLayer] : document.getElementById ? document.getElementById(thisLayer) : NSStyle(thisLayer);
  thisLayerPosition[0] = document.layers ? thisLayer.top : thisLayer.offsetTop;
  thisLayerPosition[1] = document.layers ? thisLayer.left : thisLayer.offsetLeft;
  thisLayerPosition[2] = document.layers ? thisLayer.document.width : thisLayer.offsetWidth;
  thisLayerPosition[3] = document.layers ? thisLayer.document.height : thisLayer.offsetHeight;
  return(thisLayerPosition);
}


function getScreenInformation() {
  thisScreenInformation = new Array();
  thisScreenInformation[0] = screen.width;
  thisScreenInformation[1] = screen.height;
  thisScreenInformation[2] = screen.colorDepth;
  thisScreenInformation[3] = document.all ? document.body.offsetWidth  : window.innerWidth; //Innerer Anzeigebereich
  thisScreenInformation[4] = document.all ? document.body.offsetHeight : window.innerHeight; //Innerer Anzeigebereich
  return(thisScreenInformation);
}


function getMouseInformation(myEvent) {
  thisMousePosition = new Array();
  if(nn4 || nn6) {
    thisMousePosition[0] = myEvent.pageX;
    thisMousePosition[1] = myEvent.pageY;
  }
  else {
    thisMousePosition[0] = window.event.clientX;
    thisMousePosition[1] = window.event.clientY;
  }
  return(thisMousePosition);
}

function disableEventHandlers() {
  document.releaseEvents(Event.MOUSEMOVE);
}

function enableEventHandlers() {
  document.captureEvents(Event.MOUSEMOVE);
  document.onmousemove = getMouseInformation;
}


function loadStart(srcList) {
  loadImgCount = 0;
  loadImgList = new Array();
  for (i = 0; i < srcList.length; i++) {
    loadImgList[i]          = new Image();
    loadImgList[i].onabort  = loadUpdate;
    loadImgList[i].onerror  = loadUpdate;
    loadImgList[i].onload   = loadUpdate;
    loadImgList[i].src      = ImagePath + srcList[i];
  }
}

function loadUpdate() {
  loadImgCount++;
  if (loadImgCount == loadImgList.length) {
    loadImgCount = 0;
    startAnimation();
  }
}

function startAnimation() {
  ImageAmount = animationImages.length;
  if (animationImages[loopCounter] == "") {loopCounter++;}
  if (loopCounter >= ImageAmount) {loopCounter = 0;}
   if(aniLayerName && nn4) {
     NSStyle(aniLayerName).document.images[imageName].src = loadImgList[loopCounter].src;
   }
   else {
    document.images[imageName].src = loadImgList[loopCounter].src;
  }
  loopCounter++;
  LoopAnimation = setTimeout("startAnimation()",loopTime[loopCounter-1]);
}

function ToggleAnimation () {
  if (CheckAnimationStatus == 0) {
    clearTimeout(LoopAnimation);
    CheckAnimationStatus = 1;
  }
  else {
    startAnimation();
    CheckAnimationStatus = 0;
  }
}


function setZIndex(thisLayer,thisIndex) {
  if(nn4) {
      NSStyle(thisLayer).zIndex=thisIndex;
  }
  else if (ie4) {
    document.all[thisLayer].style.zIndex=thisIndex;
  }
  else {
    document.getElementById(thisLayer).style.zIndex=thisIndex;
  }
  return;
}


function writeIntoLayer(thisLayer,layerContent) {
  if(ie4) {
    document.all.tags("div")[thisLayer].innerHTML = layerContent;
  }
  else if(nn4) {
    NSStyle(thisLayer).document.open("text/html");
    NSStyle(thisLayer).document.write(layerContent);
    NSStyle(thisLayer).document.close();
  }
  else {
    document.getElementById(thisLayer).innerHTML = layerContent;
  }
}

var isScrolling;
var baseScrollSpeed = 1;

if(!nn6) {
  var baseScrollStep = 1;
 }
else {
  var baseScrollStep = 3;
 }

function initScroller() {
 for (var i=0; i<initScroller.arguments.length; ++i) {
  parentLayerName = initScroller.arguments[i] + "ScrollParent";
  parentLayerData = new Array();
  parentLayerData = getLayerInformation(parentLayerName);
  childLayerName  = initScroller.arguments[i] + "ScrollChild";
  childLayerData  = new Array();
  childLayerData  = getLayerInformation(childLayerName);
  if(nn4) {
     clipHeight = document.layers[parentLayerName].clip.height;
   }
  else {
     clipHeight = parentLayerData[3];
    }
  if(childLayerData[3] > clipHeight) {
    vSwitch(initScroller.arguments[i]+"ScrollControl",1);
   }
  }
}

function stopScroll() {
 isScrolling = false;
}

function startScroll(scrollStep, layerName) {
 this.scrollStep = scrollStep;
 this.layerName  = layerName;
 isScrolling     = true;
 parentLayerName = layerName + "ScrollParent";
 childLayerName  = layerName + "ScrollChild";
 doScroll(scrollStep);
}

function doScroll(scrollStep) {
 this.scrollStep = scrollStep;

 parentLayerData = new Array();
 parentLayerData = getLayerInformation(parentLayerName);

 childLayerData  = new Array();
 childLayerData  = getLayerInformation(childLayerName);

 if(scrollStep>0) {
   if(nn4) {
     clipHeight = document.layers[parentLayerName].clip.height;
    }
   else {
     clipHeight = parentLayerData[3];
    }

   if(childLayerData[0] > -(childLayerData[3] - clipHeight)) {
     setLayerPosition(childLayerName,0,(childLayerData[0]-scrollStep));
    }
  }
 else {
   if(childLayerData[0] < 0) {
     setLayerPosition(childLayerName,0,(childLayerData[0]-scrollStep));
    }
  }
 if(isScrolling) {
   setTimeout("doScroll(scrollStep)",baseScrollSpeed);
  }
}

function splitSearchstring() {
  parameterArray = unescape(self.location.search).substring(1).split("&");
  if (unescape(self.location.search).indexOf("=") == -1) {return;}
  for (var i=0;i<parameterArray.length;i++) {
    parameterArray[i] = parameterArray[i].split("=");
    eval("query." + parameterArray[i][0] + " = \"" + parameterArray[i][1] + "\"");
  }
}

function emailCheck(emailStr) {
  var emailPat=/^(.+)@(.+)$/;
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
  var validChars="\[^\\s" + specialChars + "\]";
  var quotedUser="(\"[^\"]*\")";
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom=validChars + '+';
  var word="(" + atom + "|" + quotedUser + ")";
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray=emailStr.match(emailPat)
  if (matchArray==null) {
    return false;
  }
  var user=matchArray[1]
  var domain=matchArray[2]
  if (user.match(userPat)==null) {
    return false;
  }
  var IPArray=domain.match(ipDomainPat);
  if (IPArray!=null) {
    for (var i=1;i<=4;i++) {
      if (IPArray[i]>255) {
        return false;
      }
    }
    return true;
  }
  var domainArray=domain.match(domainPat);
  if (domainArray==null) {
    return false;
  }
  var atomPat=new RegExp(atom,"g");
  var domArr=domain.match(atomPat);
  var len=domArr.length;
  if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
    return false;
  }
  if (len<2) {
    return false;
  }
  return true;
}

function focusFormElement() {
  if (focusFormElement.arguments.length < 2) {
    return;
  }
  focussedFormName = focusFormElement.arguments[0];
  focussedFormElementName = focusFormElement.arguments[1];
  if (focusFormElement.arguments.length == 2) {
    focussedFormLayer = 0;
  } else {
    focussedFormLayer = focusFormElement.arguments[2];
  }
  if(nn4) {
    document.layers[focussedFormLayer].document.forms[focussedFormName].elements[focussedFormElementName].focus();
  }
  else {
    document.getElementsByTagName("form")[focussedFormName].elements[focussedFormElementName].focus();
  }
}

function formSubmit() {
  if (formSubmit.arguments.length == 0) {
    return false;
  } else if (formSubmit.arguments.length == 1) {
    formName  = formSubmit.arguments[0];
    formLayer = 0;
  } else if (formSubmit.arguments.length == 2){
    formName  = formSubmit.arguments[0];
    formLayer = formSubmit.arguments[1];
  }
  if (nn4) {
    inputFormName  = document.layers[formLayer].document.forms[formName];
  }
  else {
    inputFormName  = document.forms[formName];
  }
  inputFormName.submit();
}

String.prototype.removeWhiteSpaces = function(){return(this.replace(/\s+/g,""));};
String.prototype.leftTrim = function(){return(this.replace(/^\s+/,""));};
String.prototype.rightTrim = function(){return(this.replace(/\s+$/,""));};
String.prototype.basicTrim = function(){return(this.replace(/\s+$/,"").replace(/^\s+/,""));};
String.prototype.superTrim = function(){return(this.replace(/\s+/g," ").replace(/\s+$/,"").replace(/^\s+/,""));};

String.prototype.toStatusText = function() {
  var decodeEntities = [["&","&#38;","&amp;"],["\"","&#34;","&quot;"],["<","&#60;","&lt;"],[">","&#62;","&gt;"],["¡","&#161;","&iexcl;"],["¢","&#162;","&cent;"],["£","&#163;","&pound;"],["¤","&#164;","&curren;"],["¥","&#165;","&yen;"],["¦","&#166;","&brvbar;"],["§","&#167;","&sect;"],["¨","&#168;","&uml;"],["©","&#169;","&copy;"],["ª","&#170;","&ordf;"],["«","&#171;","&laquo;"],["¬","&#172;","&not;"],["®","&#174;","&reg;"],["¯","&#175;","&macr;"],["°","&#176;","&deg;"],["±","&#177;","&plusmn;"],["²","&#178;","&sup2;"],["³","&#179;","&sup3;"],["´","&#180;","&acute;"],["µ","&#181;","&micro;"],["¶","&#182;","&para;"],["·","&#183;","&middot;"],["¸","&#184;","&cedil;"],["¹","&#185;","&sup1;"],["º","&#186;","&ordm;"],["»","&#187;","&raquo;"],["¼","&#188;","&frac14;"],["½","&#189;","&frac12;"],["¾","&#190;","&frac34;"],["¿","&#191;","&iquest;"],["À","&#192;","&Agrave;"],["Á","&#193;","&Aacute;"],["Â","&#194;","&Acirc;"],["Ã","&#195;","&Atilde;"],["Ä","&#196;","&Auml;"],["Å","&#197;","&Aring;"],["Æ","&#198;","&AElig;"],["Ç","&#199;","&Ccedil;"],["È","&#200;","&Egrave;"],["É","&#201;","&Eacute;"],["Ê","&#202;","&Ecirc;"],["Ë","&#203;","&Euml;"],["Ì","&#204;","&Igrave;"],["Í","&#205;","&Iacute;"],["Î","&#206;","&Icirc;"],["Ï","&#207;","&Iuml;"],["Ð","&#208;","&ETH;"],["Ñ","&#209;","&Ntilde;"],["Ò","&#210;","&Ograve;"],["Ó","&#211;","&Oacute;"],["Ô","&#212;","&Ocirc;"],["Õ","&#213;","&Otilde;"],["Ö","&#214;","&Ouml;"],["×","&#215;","&times;"],["Ø","&#216;","&Oslash;"],["Ù","&#217;","&Ugrave;"],["Ú","&#218;","&Uacute;"],["Û","&#219;","&Ucirc;"],["Ü","&#220;","&Uuml;"],["Ý","&#221;","&Yacute;"],["Þ","&#222;","&THORN;"],["ß","&#223;","&szlig;"],["à","&#224;","&agrave;"],["á","&#225;","&aacute;"],["â","&#226;","&acirc;"],["ã","&#227;","&atilde;"],["ä","&#228;","&auml;"],["å","&#229;","&aring;"],["æ","&#230;","&aelig;"],["ç","&#231;","&ccedil;"],["è","&#232;","&egrave;"],["é","&#233;","&eacute;"],["ê","&#234;","&ecirc;"],["ë","&#235;","&euml;"],["ì","&#236;","&igrave;"],["í","&#237;","&iacute;"],["î","&#238;","&icirc;"],["ï","&#239;","&iuml;"],["ð","&#240;","&eth;"],["ñ","&#241;","&ntilde;"],["ò","&#242;","&ograve;"],["ó","&#243;","&oacute;"],["ô","&#244;","&ocirc;"],["õ","&#245;","&otilde;"],["ö","&#246;","&ouml;"],["÷","&#247;","&divide;"],["ø","&#248;","&oslash;"],["ù","&#249;","&ugrave;"],["ú","&#250;","&uacute;"],["û","&#251;","&ucirc;"],["ü","&#252;","&uuml;"],["ý","&#253;","&yacute;"],["þ","&#254;","&thorn;"],["ÿ","&#255;","&yuml;"],["—","&#8212;","&mdash;"],["‘","&#8216;","&lsquo;"],["’","&#8217;","&rsquo;"],["“","&#8220;","&ldquo;"],["”","&#8221;","&rdquo;"],["„","&#8222;","&bdquo;"],["†","&#8224;","&dagger;"],["‡","&#8225;","&Dagger;"],["•","&#8226;","&bull;"],["…","&#8230;","&hellip;"],["‰","&#8240;","&permil;"],["‹","&#8249;","&lsaquo;"],["›","&#8250;","&rsaquo;"],["€","&#8364;","&euro;"],["™","&#8482;","&trade;"],["˜","&#8776;","&asymp;"],["-","&#173;","&shy;"],["-","&#8211;","&ndash;"],["-","&#8722;","&minus;"],["*","&#8727;","&lowast;"],["~","&#8764;","&sim;"],["‚","&#8218;","&sbquo;"],["\'","&#8242;","&prime;"],["/","&#8260;","&frasl;"],["µ","&#956;","&mu;"],["Ø","&#8709;","&empty;"],["·","&#8901;","&sdot;"],["<","&#9001;","&lang;"],[">","&#9002;","&rang;"]];
  var regExpression = null;
  var plainText = this;
  plainText = plainText.replace(/[\f\r\v]+/g," ").replace(/<\s*br[^>]*>/gi,"");
  for (var i=0;i<decodeEntities.length;i++) {
    plainText = plainText.replace(new RegExp(decodeEntities[i][1],"g"),decodeEntities[i][0]);
    plainText = plainText.replace(new RegExp(decodeEntities[i][2],"g"),decodeEntities[i][0]);
  }
  regExpression = ((document.layers) ? (new RegExp("([^\\\])'","g")) : (new RegExp("([^\\\\])'","g")));
  if (regExpression.test(plainText)) {
    regExpression.exec(plainText);
    plainText = plainText.replace(regExpression,(RegExp.$1+"\\'"));
  }
  regExpression = ((document.layers) ? (new RegExp('([^\\\])"','g')) : (new RegExp('([^\\\\])"','g')));
  if (regExpression.test(plainText)) {
    regExpression.exec(plainText);
    plainText = plainText.replace(regExpression,(RegExp.$1+'\\"'));
  }
  return plainText;
};

String.prototype.extendedReplace = function(searchValue,replaceValue,behaviour) {
  var regExpMaskArray = new Array(".","+","*","?","^","$","|","(",")","[","]","{","}");
  for (var i=0;i<regExpMaskArray.length;i++) {
    searchValue = searchValue.replace(new RegExp("\\"+regExpMaskArray[i],"g"),("\\"+regExpMaskArray[i]));
  }
  return this.replace(((behaviour == "exactly") ? (new RegExp(searchValue,"g")) : (new RegExp(searchValue.replace(/\s+/g,"\\\s+"),"gi"))),replaceValue);
};
