function LoadStylesheet(url)
{
  var style = document.createElement('link');
  style.setAttribute('media', 'all');
  style.setAttribute('rel', 'stylesheet');
  style.setAttribute('type', 'text/css');
  style.setAttribute('href', url);

  document.getElementsByTagName('head')[0].appendChild(style);
}

function RoundLogo(selector, corners)
{
  var elements = $(selector);
  if (elements.length != 2)
    return false;
  var element = elements[0];
  var replacement1 = document.createElement('div');
  var replacement2 = document.createElement('div');

  $(replacement1).css('background-image','url(' + element.src + ')');
  $(replacement1).addClass('roundlogo');

  $(replacement2).css('padding-left', element.width + 'px');
  $(replacement2).height(element.height + 'px');
  $(replacement2).addClass('tl');

  replacement1.appendChild(replacement2);

//  $(replacement).float('left');

  element.parentNode.replaceChild(replacement1, element);
  replacement2.appendChild(elements[1]);
  return true;
}

function AddRoundingToElement2(element, corners, sizesclassname, innerelement)
{
  var container = element;

  var innermost = document.createElement(innerelement);

  while (container.hasChildNodes())
  {
//   alert(container.hasChildNodes() + ' ' + container.childNodes.length);
    var remove = container.firstChild;
//    alert(remove);
    var append = container.removeChild(remove);
//    alert(append);
    innermost.appendChild(append);
  }

//  var content = container.innerHTML;

  // padding im Container entfernen und die Höhe um die Paddingwerte vergrößern
//jq  Element.removeClassName(container, sizesclassname);
  if (sizesclassname.length > 0)
    $(container).removeClass(sizesclassname);
//  alert(container.className);

  var m = corners.length;
  innermost.className = corners[m - 1] + ' ' + sizesclassname;

  var child = innermost;

  for (j = 1; j < m; j++)
  {
    var temp = document.createElement(innerelement);
    temp.className = corners[m - 1 - j];
    temp.appendChild(child);
    child = temp;
  //  content = '<' + innerelement + ' class="' + corners[m - 1 - j] + ((j==0) ? ' ' + sizesclassname : '') + '">' + content + '</' + innerelement + '>';
  }

  container.appendChild(child);
//  container.innerHTML = content;
//  alert(container.innerHTML);
}

function AddRoundingToElement(element, corners, sizesclassname, innerelement)
{

  var container = element;
  var content = container.innerHTML;

  // padding im Container entfernen und die Höhe um die Paddingwerte vergrößern
  Element.removeClassName(container, sizesclassname);

   // alle mit width + height = 100%
   // außer der innerste der class =" layoutsizes ";

  // für jede Ecke ein div mit jeweiliger Klasse hinzufügen und umschließen;
  // das innerste div bekommt außerdem die Klasse layoutsizes, diese muss
  // entsprechend definiert sein z.b. in der rounding.css
  for (j = 0, m = corners.length; j < m; j++)
  {
    content = '<' + innerelement + ' class="' + corners[m - 1 - j] + ((j==0) ? ' ' + sizesclassname : '') + '">' + content + '</' + innerelement + '>';
  }

  container.innerHTML = content;
  //alert(container.innerHTML);
}

function AddRoundingToElements(selector, corners, sizesclassname, innerelement)
{
  var elems = $(selector);
/*  try
  {

  }
  catch(e)
  {
    var elems = getElementsBySelector(selector);
    alert(elems.length);
  }

  var elems = document.getElementsBySelector(selector);
  //alert(elems.length);*/

  for (i = 0, n = elems.length; i < n; i++)
  {
    AddRoundingToElement2(elems[i], corners, sizesclassname, innerelement);
  }
}

function AddRoundings()
{

  AddRoundingToElements('ul.mainnavi > li', ['tl', 'tr'], 'mainnavi_innersizes', 'div')

  RoundLogo('div.header img.mainlogo', ['tl']);

  AddRoundingToElements('div.header div.logo', ['r', 'b', 'br', 'bl', 'tl'], 'logo_innersizes', 'div');

  AddRoundingToElements('div.body', ['t', 'r', 'b', 'l', 'tr', 'br', 'bl', 'tl'], 'body_innersizes', 'div');

  AddRoundingToElements('div.teaserbox', ['tr', 'tl'], '', 'div');
  AddRoundingToElements('div.teaserbox div.teaserbox_sizes', ['br', 'bl'], 'teaserbox_sizes', 'div');
  AddRoundingToElements('div.teaserbox div.teaserbox_fixsize_topimage', ['br', 'bl'], 'teaserbox_fixsize_topimage', 'div');
  AddRoundingToElements('div.teaserbox h1', ['tr', 'tl'], 'headline_innersizes', 'span');

  AddRoundingToElements('div.content h2.seperator', ['tl'], 'headline_innersizes', 'span');

  AddRoundingToElements('div.linkbox', ['tr', 'tl', 'br', 'bl'], 'linkbox_sizes', 'div');
//  AddRoundingToElements('div.linkbox h3', ['tr', 'tl'], 'headline_innersizes', 'span');

  AddRoundingToElements('div.start div.left h1', ['tl'], 'headline_innersizes', 'span');
  AddRoundingToElements('div.start div.right h1', ['tr'], 'headline_innersizes', 'span');

  AddRoundingToElements('div.start', ['r', 'b', 'br', 'bl'], 'start_innersizes', 'div');

  AddRoundingToElements('div.netzplaene', ['br', 'tr'], 'netzplaene_innersizes', 'div');
  AddRoundingToElements('div.netzplaene h2', ['tl', 'tr'], 'headline_innersizes', 'span');

  AddRoundingToElements('div.groupbox', ['tr', 'br', 'bl', 'tl'], 'groupbox_innersizes', 'div');

  AddRoundingToElements('div.sitemap > ul > li:first-child', ['tl'], '', 'div');
  AddRoundingToElements('div.sitemap', ['br', 'bl'], 'sitemap_innersizes', 'div');

  AddRoundingToElements('div.fahrplanbuch h2', ['tl'], 'h2_innersizes', 'span');


  // Tabellenrundung
//  $cell = $$(table.standard tr:first-child *:first-child); $cell.style="border:1px solid;"
//  var tables = $('table.standard');
  var tables = $('table.standard tr:first-child th:first-child').add('table.fahrplan tr:first-child th:first-child');

  if (tables.length > 0)
  {
    for (i = 0; i < tables.length; i++)
    {
      //var cell = tables[i].getElementsByTagName('tr')[0].getElementsByTagName('th')[0]
      var cell = tables[i];

      $(cell).addClass('tl');
    }
  }

  LoadStylesheet('/css/rounding.css');

}

function StartUpTheAction()
{
  AddRoundings();

// for IE only!
/*@cc_on
  @if (@_jscript)
    $('ul.mainnavi li').hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});
  @end
@*/

//  if ($('table.schnellauskunft').length > 0 || $('table.persfahrform').length > 0)
  if ($('table.enableajax').length > 0)
  {
    var boxvar = '';
    if ($('table.persfahrform').length > 0)
      boxvar = '2';

    var oTextbox = Array();

    var name = $('#start')[0];
    var ort = $('#startort')[0];
    var art = $('#startart')[0];
    if (name && art && ort)
      oTextbox[0] = new Vorschlager(name, ort, art, new Vorschlaege(), boxvar);

    name = $('#ziel')[0];
    ort = $('#zielort')[0];
    art = $('#zielart')[0];
    if (name && art && ort)
      oTextbox[2] = new Vorschlager(name, ort, art, new Vorschlaege(), boxvar);
//    oTextbox[2] = new Vorschlager($('#ziel')[0], $('#zielort')[0], $('#zielart')[0], new Vorschlaege());

    if ($('#via').length > 0)
      oTextbox[4] = new Vorschlager($('#via')[0], null, null, new Vorschlaege(), 3);
  }

  $('input.enhanced').each(function(){ new EnhancedTextbox(this); });

  var selects = $('select.submitonchange');
  if (selects.length > 0)
  {
    for (i = 0; i < selects.length; i++)
    {
      var form = selects[i].form;
      selects[i].onchange = function (){ form.submit(); }
    }
  }

  $('.hidewithjs').hide();

}

  try
  {
    // Nach dem Laden die Rundungen durchführen, eigentlich sollte man hier
    // onDOMReady oder ähnliches benutzen = TODO
    //Event.observe(window, 'load', StartUpTheAction, false);
    $(document).ready(StartUpTheAction);

    // IE Hover Flicker Fix zusätzlich zum Serverfix
    document.execCommand("BackgroundImageCache",false,true);
  }
  catch(e)
  {
  }