/**
  * ----------------------------------------------------------------------------------------
  * TITLE       : Berliner Akzente JavaScript
  * AUTHOR      : Frank Boës <mailto:fboes@berlinonline.de>
  * COMPANY     : BerlinOnline Stadtportal GmbH &amp; Co. KG &lt;http://www.berlinonline.de&gt;
  * CREATED     : 2005-10-12
  * UPDATED     : 2011-04-26
  * DESCRIPTION : 
  * IMPERIA     : <meta name="X-Imperia-Live-Info" content="c9014314-4573-55c5-b087-5ddc8f775df7/11535/11803/1046220" />
  * ------------------------------------------------------------------------------------------
  */

/* --- =Add Event= --- */
addEvent(window, "load", init);
function init() {
  cp_init();
  if ($('artikel') || $('rubriken')) {
    pages_init();
    layer_init();
    resize_init();
  }
  if ($('kurzmeldungen')) {
    selector_init();
    layer_init();
  }
  if ($('fotostrecke')) foto_init();
  if (document.getElementsByTagName('form')) reqform_init();
}
/* --- =ReqForm= --- */
function reqform_init($el) {
}

function reqform($el) {
  // search all input-fields and return reqform_status
  var $sl_inputs = $el.elements;
  var $a = true;
 	for (var $i=0; $i<$sl_inputs.length; $i++) {
    $a &= reqform_check($sl_inputs[$i]);
  }
  return ($a ? true : false);
}

function reqform_check($el) {
  if ($el && $el.className && $el.className.indexOf('required') != -1) {
    if ($el.type == 'checkbox') {
      if ($el.checked != true)
        {if ($el.parentNode.className.indexOf('still_required') == -1) {addClassName($el.parentNode,'still_required');} return false;}
      else 
        {removeClassName($el.parentNode,'still_required'); return true;}
    }
    else if($el.nodeName.indexOf('SELECT') != -1) {
      if (!$el.value)
        {if ($el.parentNode.className.indexOf('still_required') == -1) {addClassName($el.parentNode,'still_required');} return false;}
      else 
        {removeClassName($el.parentNode,'still_required'); return true;}
    }
    else {
      if (!$el.value) 
        {if ($el.className.indexOf('still_required') == -1) {addClassName($el,'still_required');} return false;}
      else 
        {removeClassName($el,'still_required'); return true;}
    }
  }
  return true;
}
/* --- =Pages= --- */
document.writeln('<style type="text/css">/*<![CDATA[*/@media screen{.realpage{margin-top:0px;display:none;}.first{display:block;}.noscreen{display:none !important;}}@media print{.noprint{display:none;}}/*]]>*/</style>');
var $book;
var $current_page = 1;

function pages_init($el) {
  //return false;
  $book = $('book');
  if ($book && $book.childNodes.length > 1 && $book.childNodes[1].className.indexOf('real') != -1) {
    //$('header').innerHTML += '<style type="text/css">/*<![CDATA[*/@media screen{.realpage{display:block;}}/*]]>*/</style>' ;
    var $page = $book.firstChild;
    var $j = 1;
    var $ins = document.getElementsByTagName('ins');
    while ($page) {
      $page.id = 'page_'+$j
      if ($pager) addClassName($page,'noscreen');
      $page.style.display = 'block';
      var $pager = document.createElement("div");
      $pager.className = 'noprint pager';
      $pager.innerHTML += ($page.previousSibling)
        ? '<a href="#" class="prev marker list_clear_toc" onclick="pages('+($j-1)+')" title="Vorhergehende Seite"> Zurück</a>'
        : ''
      ;
      $pager.innerHTML += ($page.nextSibling)
        ? '<a href="#" class="next marker list_clear_toc" onclick="pages('+($j+1)+')" title="Nächste Seite"> '+(($ins[$j-1]) ? 'Weiter' : 'Lesen Sie weiter: '+pages_headline($page.nextSibling))+'</a>'
        : ''
      ;
      if (!$page.nextSibling && $('submit_button')) {
        $pager.appendChild($('submit_button'));
      }
      if ($ins[$j-1]) {
        //$page.insertBefore($pager,$ins[$j-1]);
        $ins[$j-1].appendChild($pager);
      }
      else {
        $page.appendChild($pager);
      }
      $j++;
      $page = $page.nextSibling;
    }
  }
  else {
    return false;
  }
  var $id = (window.location.hash) ? window.location.hash : '#page_1';
  $id  = $id.substr($id.search('page_')+5,$id.length);
  if ($id) pages ($id);
}

function pages($p) {
  addClassName($book.childNodes[($current_page-1)],'noscreen');
  $current_page = $p;
  removeClassName($book.childNodes[($current_page-1)],'noscreen');
  cp_reload();
}

function pages_headline($el) {
  if ($el && $el.getElementsByTagName('h4')[0]) {
    return ($el.getElementsByTagName('h4')[0].innerHTML);
  }
  else if ($el && $el.getElementsByTagName('h3')[0]) {
    return ($el.getElementsByTagName('h3')[0].innerHTML);
  }
  else {
    return '';
  }
}
/* --- =Layer= --- */
document.writeln('<style type="text/css">/*<![CDATA[*/@media screen{.layer_start{position:relative;}.layer{background:#FFFFCC;padding:15px;border:3px solid white;width:200px;position:absolute;left:-2em;z-index:55;}}/*]]>*/</style>');

function layer_init($el) {
  var $anchors = document.getElementsByTagName('h5');
  if ($anchors) {
    for (var $i=0; $i<$anchors.length; $i++) {
      if ($anchors[$i].className && $anchors[$i].className.indexOf('layerbox')!= -1) {
        $anchors[$i].nextSibling.innerHTML = '<h4>'+$anchors[$i].innerHTML+'</h4>'+$anchors[$i].nextSibling.innerHTML;
        // open button
        $anchors[$i].innerHTML='<a href="#more" class="marker noprint" onclick="layer(this);return false;">'+$anchors[$i].innerHTML+'</a>';
        $anchors[$i].nextSibling.className='layer noscreen';
        // close button
        var $footer = document.createElement('div');
        $footer.className = 'layerfooter noprint';
        $footer.innerHTML='<a class="marker close noprint" href="#less" onclick="layer(this);return false;">Schließen</a>';
        $anchors[$i].nextSibling.appendChild($footer);
      }
    }
  }
}

function layer($el) {
  // if h5 open next element, else close parent element
  if ($el.parentNode.nodeName == 'H5') {
    if (1) {
      $el.parentNode.nextSibling.style.bottom = '35px';
    }
    if ($el.parentNode.nextSibling.className.indexOf('noscreen') != -1) {
      removeClassName($el.parentNode.nextSibling,'noscreen');
    }
    else {
      addClassName($el.parentNode.nextSibling,'noscreen');
    }
    //$el.parentNode.nextSibling.style.display = ($el.parentNode.nextSibling.style.display == 'none' || $el.parentNode.nextSibling.style.display != 'block' ) ? 'block' : 'none';
  }
  else {
    addClassName($el.parentNode.parentNode,'noscreen');
    //$el.parentNode.parentNode.style.display = 'none';
  }
}
/* --- =Selector= --- */
var $toc ;

function selector_init($el) {
  selector((window.location.hash) ? window.location.hash: '#page_1');
}

function selector($id) {
  $id  = $id.substr($id.search('#')+1,$id.length);
  $toc = $('toc');
  if ($toc) $toc = $toc.lastChild;
  if ($id && $toc && $toc.childNodes.length > 1) {
    var $t = $toc.firstChild;
    while ($t) {
      // find link matching url-fraction-identifier
      $t.firstChild.className = ($t.firstChild.href.indexOf($id) != -1) ? 'active' : '';
      $t = $t.nextSibling;
    }
  }
}
/* --- =Gallery= --- */
var $fotos;
var $foto_aktuell;

function foto_init($el) {
  if (!$('fotoliste')) {
    return false;
  }
  $fotos = $('fotoliste').getElementsByTagName('li');
  $foto_aktuell = 0;
  if (window.location.hash) {
    for (var $i=0; $i<$fotos.length; $i++) {
      if ($fotos[$i].firstChild.href.indexOf(window.location.hash) != -1) {
        $foto_aktuell = $i;
        break;
      }
    }
  }
  foto_swap($fotos[$foto_aktuell].firstChild);
}

function foto_swap($el) {
  $foto_aktuell = 0;
  for (var $i=0; $i<$fotos.length; $i++) {
    $fotos[$i].firstChild.className = '';
    if ($fotos[$i].firstChild.href.indexOf($el.getAttribute('href')) != -1) {
      $foto_aktuell = $i;
    }
  }
  var $link = $fotos[$foto_aktuell].firstChild;
  $('foto').src = $link.href.substr($link.href.search('#')+1,$link.href.length);
  var $next_href =  ($fotos[$foto_aktuell].nextSibling) 
    ? $fotos[$foto_aktuell].nextSibling.firstChild.href 
    : $fotos[$foto_aktuell].parentNode.firstChild.firstChild.href
  ;
  var $prev_href =  ($fotos[$foto_aktuell].previousSibling) 
    ? $fotos[$foto_aktuell].previousSibling.firstChild.href 
    : $fotos[$foto_aktuell].parentNode.lastChild.firstChild.href
  ;

  $('foto_description').innerHTML = ($fotos[$foto_aktuell].firstChild.nextSibling.innerHTML)
    ? $fotos[$foto_aktuell].firstChild.nextSibling.innerHTML
    : ''
  ;
  $('foto_title').innerHTML = ($fotos[$foto_aktuell].firstChild.firstChild.getAttribute('alt'))
    ? $fotos[$foto_aktuell].firstChild.firstChild.getAttribute('alt')
    : ''
  ;
  $('foto').setAttribute('alt', $fotos[$foto_aktuell].firstChild.firstChild.getAttribute('alt'));

  $('foto').parentNode.setAttribute('href', $next_href);
  $('next').setAttribute('href', $next_href);
  if ($('next_1')) $('next_1').setAttribute('href', $next_href);
  if ($('next_2')) $('next_2').setAttribute('href', $next_href);
  $('prev').setAttribute('href', $prev_href);
  if ($('prev_1')) $('prev_1').setAttribute('href', $prev_href);
  if ($('prev_2')) $('prev_2').setAttribute('href', $prev_href);
  if ($('pic_no')) {
    $('pic_no').innerHTML = parseInt($link.rel) + 1;
    $('pic_no_1').innerHTML = parseInt($link.rel) + 1;
    $('pic_no_2').innerHTML = parseInt($link.rel) + 1;
  }
  $link.className = 'active';
  while ($('fotoliste').firstChild.firstChild.className.indexOf('active') == -1) {
    $('fotoliste').appendChild($('fotoliste').firstChild);
  }
  cp_reload();
  return false;
}
/* --- =Resize= --- */
function resize_init() {
  if (GetCookie('resize')) resize();
}

function resize() {
  var $book = $('book');
  if ($book.className && $book.className.indexOf('resize') != -1) {
    removeClassName ($book, 'resize');
    RemoveCookie ('resize');
    $('text_zoom').innerHTML = 'Text vergrößern';
  }
  else {
    addClassName ($book, 'resize');
    SetCookie('resize','large',2);
    $('text_zoom').innerHTML = 'Text verkleinern';
  }
}
/* --- =Zählpixel= --- */
function cp_init() {
  return;
  var $cp = document.createElement("div");
  $cp.id = 'cp';
    var date = new Date();
  $cp.innerHTML = '<img src="http://boss.berlinonline.de/cp.php?ts='+date.getTime()+'&amp;a=berlin&amp;ref='+encodeURI(document.referrer)+'" width="1" height="1" alt="" style="border:none" />';
  if ($('footer'))  {
    $('footer').appendChild($cp);
  }
  else {
    document.getElementsByTagName('body')[0].appendChild($cp);
  }
}

/* --- =Videos= --- */
function videos_tab(el) {
  var tabs = el.parentNode.parentNode.childNodes;
  for (var i=0; i<tabs.length; i++) {
    if (tabs[i].className) {
      removeClassName(tabs[i], (tabs[i] == el.parentNode) ? 'inactive' : 'active');
      addClassName   (tabs[i], (tabs[i] == el.parentNode) ? 'active' : 'inactive');
    }
  }
  var tab_content = $href(el);
  var tabs = tab_content.parentNode.childNodes;
  for (var i=0; i<tabs.length; i++) {
    if (tabs[i].className) {
      removeClassName(tabs[i], (tabs[i] == tab_content) ? 'inactive' : 'active');
      addClassName   (tabs[i], (tabs[i] == tab_content) ? 'active' : 'inactive');
    }
  }
  return true;
}

function videos_page(el, direction) {
  var lis = $href(el).childNodes
  var first = 0;
  var last = 0;
  for (var i=0; i<lis.length; i++) {
    var li = lis[i];
    if (li.className.indexOf('active') != -1 && li.className.indexOf('inactive') == -1) {
      if (first == 0) {
        first = i;
      }
      last = i;
    }
  }
  if (direction == '1') {
    if (last < lis.length-2) {
      // next
      removeClassName(lis[last].nextSibling,'inactive');
      addClassName   (lis[last].nextSibling,'active');
      addClassName   (lis[first],'inactive');
      removeClassName(lis[first],'active');
    }
  }
  else {
    if (first > 1) {
      // prev
      removeClassName(lis[first].previousSibling,'inactive');
      addClassName   (lis[first].previousSibling,'active');
      addClassName   (lis[last],'inactive');
      removeClassName(lis[last],'active');
    }
  }
  return true;
}
/* --- =Misc= --- */
function $(id) {
  return (document.getElementById(id));
}

function $href(el) {
  return $(el.href.replace(/^.*#/,''));
}
 
function addEvent( obj, type, fn )
{
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj.attachEvent( "on"+type, obj["e"+type+fn] );
	}
}

function removeEvent( obj, type, fn )
{
	if (obj.detachEvent)
	{
		obj.detachEvent( "on"+type, obj["e"+type+fn] );
		obj["e"+type+fn] = null;
	}
	else if (obj.removeEventListener)
		obj.removeEventListener( type, fn, false );
}

function addClassName ($el, $cl) {
  if ($el && $el.className.indexOf($cl) == -1) return ($el.className = ($el.className)
    ? $el.className+' '+$cl
    : $cl
  );
}

function removeClassName ($el, $cl) {
  if ($el) return ($el.className = $el.className.replace(new RegExp("\s?"+$cl+"\\b"), ''));
}

/*
function htmlspecialchars($t) {
  $t = $t.replace(/&/g,"&amp;");
  $t = $t.replace(/\"/g,"&quot;");
  $t = $t.replace(/</g,"&lt;");
  $t = $t.replace(/>/g,"&gt;");
  return $t;
}
*/

function GetCookie (name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null; 
}

// OHNE Datum oder days=0, gilt der cookie solange der Browser offen ist
function SetCookie (name,wert,days) {
	var nameEQ = name + "=";
	var expires = "";
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	document.cookie = nameEQ + wert + "; PATH=/" + expires;
}

function RemoveCookie (name) {
	SetCookie (name,"",-1);
}


