/* JS-Library for DSFo.de (c)2007 Martin Bloch, copying strictly prohibited by law */

var IWIDTH=250  // Tip box width
var ns4         // Are we using Netscape4?
var ie4         // Are we using Internet Explorer Version 4?
var ie5         // Are we using Internet Explorer Version 5 and up?
var kon         // Are we using KDE Konqueror?
var x,y,winW,winH  // Current help position and main window size
var idiv=null   // Pointer to infodiv container
var px="px"     // position suffix with "px" in some cases
var axurl;

function initDSFo() {
 ns4=(document.layers)?true:false, ie4=(document.all)?true:false;
 ie5=((ie4)&&((navigator.userAgent.indexOf('MSIE 5')>0)||(navigator.userAgent.indexOf('MSIE 6')>0)||(navigator.userAgent.indexOf('MSIE 7')>0)))?true:false;
 kon=(navigator.userAgent.indexOf('konqueror')>0)?true:false;
 x=0;y=0;winW=800;winH=600;
 idiv=null;
 if(ns4&&document.captureEvents) document.captureEvents(Event.MOUSEMOVE);
 // Workaround for just another netscape bug: Fix browser confusion on resize
 // obviously conqueror has a similar problem :-(
 if(ns4||kon){ nsfix() }
 if(ns4) { px=""; }

 try {
   var ax = document.getElementById("ajaxlink");
   axurl = ax.getAttribute("jrv");
 } catch(ex) {}
 
  addEvent(document,"mousemove",mousemove);
	
  var elms = document.getElementsByTagName('div');
  for ( var i=0; i<elms.length; i++ ) {
    if ( elms[i].id.indexOf("infobox_")!=-1 ) {
      fetchInfobox(elms[i].id);
    } else if ( elms[i].id.indexOf("audioPlayer")!=-1 || elms[i].id.indexOf("flashPlayer")!=-1) {
      initStream(elms[i].id);
    } 
  }
  var elms = document.getElementsByTagName('span');
  for ( var i=0; i<elms.length; i++ ) {
  	if ( elms[i].className=="taggy" ) {
  		var img = elms[i].getAttribute("jrv");
  		var jid = elms[i].getAttribute("jid");
  		maketip(jid,img);  		
  		addEvent(elms[i],"mouseover",tip);
      addEvent(elms[i],"mouseout",untip);
      addEvent(elms[i],"click",cll);
    } else if ( elms[i].id.substr(0,16)=="classified_forum" ) {
      fetchClassifiedForum(elms[i].id);
    } else if ( elms[i].id.substr(0,10)=="classified" ) {
      fetchClassified(elms[i].id);
    }
  }
  initTicker();
}

function goto_da_page(evt) {
  var kc;
  if(evt && evt.which){ 
	kc = evt.which;
  } else { 
    kc = evt.keyCode;
  }
  var elm = window.getElm(evt);
  var user_id = parseInt(elm.getAttribute("user"));

  if ( kc==13 ) {
    evt.cancelBubble=true;
    if ( evt.stopPropagation ) evt.stopPropagation();
    var maxPage = parseInt(elm.getAttribute("maxpage"));
    var pageSize= parseInt(elm.getAttribute("pagesize"));
    
    if ( maxPage<1 ) maxPage=1;
    var url     = elm.getAttribute("url");
    var num = parseInt(elm.value)-1;
    if ( num<0 ) num=0;
    if ( num>(maxPage-1) ) num = maxPage-1;
    //if ( user_id==659 ) alert(url+"&start="+(pageSize*num));
    location.href=url+"&start="+(pageSize*num);
    return false;
  }
  return true;
}

function initStream(id) {
  var v;

  if ( id.indexOf("audioPlayer")!=-1 ) {
    v   = "9.0.28";
  } else {
    v   = "9.0.0";
  }

  swfobject.registerObject(id, v, "expressInstall.swf");
}


function cll(evt) {
  window.location.href='http://www.dsfo.de/fo/viewtopic.php?t=4607';
}

function fetchClassifiedForum(elm_id) {
  var elm = document.getElementById(elm_id);
  var jid = elm.getAttribute("jid");
  var url = axurl;
  var url_a = url.split("?");
  var pars = "f="+jid+"&elm_id="+elm_id+"&action=showclassifiedforum";
  if ( url_a.length > 1 ) {
    pars += "&"+url_a[1];
    url = url_a[0];
  }
  var http = getHTTPObject();
  elm.innerHTML = '<img src="http://www.dsfo.de/fo/images/ajax-loader.gif" border="0"> loading...';
  http.open("GET",url + '?' + pars,true);
  http.onreadystatechange = function () {
    if (http.readyState == 4) {
      var results = http.responseText;
      elm.innerHTML = decode_utf8(results);
    }
  }
  http.send(null);
}

function changeClassifiedForum(elm_id) {
  var elm = document.getElementById(elm_id);
  var jid = elm.getAttribute("jid");
  var url = axurl;
  var url_a = url.split("?");
  var pars = "f="+jid+"&elm_id="+elm_id+"&action=editclassifiedforum";
  if ( url_a.length > 1 ) {
    pars += "&"+url_a[1];
    url = url_a[0];
  }

  ecl_win = window.open(url + '?' + pars, '_phpbbeditclassified', 'HEIGHT=440,resizable=yes,scrollbars=yes,WIDTH=300');;
  ecl_win.focus();
}

function clearClassifiedForum(elm_id) {
  var elm = document.getElementById(elm_id);
  var jid = elm.getAttribute("jid");
  var url = axurl;
  var url_a = url.split("?");
  var pars = "f="+jid+"&elm_id="+elm_id+"&action=clearclassifiedforum2";
  if ( url_a.length > 1 ) {
    pars += "&"+url_a[1];
    url = url_a[0];
  }

  var http = getHTTPObject();
  http.open("GET",url + '?' + pars,true);
  http.onreadystatechange = function () {
    if (http.readyState == 4) {
      location.reload();
    }
  }
  http.send(null); 
}

function fetchClassified(elm_id) {
  var elm = document.getElementById(elm_id);
  var jid = elm.getAttribute("jid");
  var url = axurl;
  var url_a = url.split("?");
  var pars = "t="+jid+"&elm_id="+elm_id+"&action=showclassified";
  if ( url_a.length > 1 ) {
    pars += "&"+url_a[1];
    url = url_a[0];
  }
  var http = getHTTPObject();
  elm.innerHTML = '<img src="http://www.dsfo.de/fo/images/ajax-loader.gif" border="0"> loading...';
  http.open("GET",url + '?' + pars,true);
  http.onreadystatechange = function () {
    if (http.readyState == 4) {
      var results = http.responseText;
      elm.innerHTML = decode_utf8(results);
    }
  }
  http.send(null);
}

function changeClassified(elm_id) {
  var elm = document.getElementById(elm_id);
  var jid = elm.getAttribute("jid");
  var url = axurl;
  var url_a = url.split("?");
  var pars = "t="+jid+"&elm_id="+elm_id+"&action=editclassified";
  if ( url_a.length > 1 ) {
    pars += "&"+url_a[1];
    url = url_a[0];
  }
 
  ecl_win = window.open(url + '?' + pars, '_phpbbeditclassified', 'HEIGHT=440,resizable=yes,scrollbars=yes,WIDTH=300');;
  ecl_win.focus();
}

function fetchInfobox(elm_id) {
  var elm = document.getElementById(elm_id);
  var url = elm.getAttribute("jrv");
  var http = getHTTPObject();
  elm.innerHTML = '<img src="http://www.dsfo.de/fo/images/ajax-loader.gif" border="0"> loading...';
  http.open("GET",url+'&rand='+Math.floor(Math.random() * 1000000),true);
  http.onreadystatechange = function () {
    if (http.readyState == 4) {
      var results = http.responseText;
      elm.innerHTML = decode_utf8(results);
    }
  }
  http.send(null);
}

// brothercake's generic onload
// http://www.brothercake.com/site/resources/scripts/onload/
function addEvent( obj, type, fn )
{
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { return obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

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


//initiates the XMLHttpRequest object
//as found here: http://www.webpasties.com/xmlHttpRequest
function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

function nsfix(){setTimeout("window.onresize = rebrowse", 2000);}

function rebrowse(){window.location.reload();}

function hascss(name){ return gettip('infodiv')?true:false }

function untip(){
 if(idiv) idiv.visibility=ns4?"hide":"hidden";
 idiv=null;
}
function gettip(name){return (document.layers&&document.layers[name])?document.layers[name]:(document.all&&document.all[name]&&document.all[name].style)?document.all[name].style:document[name]?document[name]:(document.getElementById(name)?document.getElementById(name).style:0);}

// Prepare tip boxes, but don't show them yet
function maketip(name,image_url){
   if(hascss()) {
     var xdiv = document.createElement('div');
     var img  = new Image();
     var dat  = new Date();
     var ch   = ( image_url.indexOf("?") != -1 )? "&":"?";
     img.src = image_url+ch+"tt="+dat.getTime();
     img.border="0";
     document.getElementsByTagName("body")[0].appendChild(xdiv);
     xdiv.id = name;
     xdiv.name=name;
     xdiv.className="gtitle";
     xdiv.style.position="absolute";
     xdiv.style.visibility="hidden";
     xdiv.style.zIndex="20";
     xdiv.style.top="0"+px;
     xdiv.style.left="0"+px;
     xdiv.appendChild(img);
   }
}

function getElm(event) {
	if ( event == undefined ) {
		
	}
 	return event.target || event.srcElement;
}

function tip(evt){
 var elm = getElm(evt);
 var name= elm.getAttribute("jid");
 if(hascss()){
  if(idiv) untip();
  idiv=gettip(name);
  if(idiv){
   winW=(window.innerWidth)? window.innerWidth+window.pageXOffset-16:document.body.offsetWidth-20;
   winH=(window.innerHeight)?window.innerHeight+window.pageYOffset  :document.body.offsetHeight;
   if(x<=0||y<=0){ // konqueror can't get mouse position
    x=(winW-IWIDTH)/2+(window.pageXOffset?window.pageXOffset:0); y=(winH-50)/2+(window.pageYOffset?window.pageYOffset:0); // middle of window
   }
   showtip();
  }
 }
}

function showtip(){
  idiv.left=(((x+2600)<winW)?x+12:x-255)+px; idiv.top=(((y+90)<winH)?y+12:y-90)+px;
  idiv.visibility=ns4?"show":"visible";
//  window.status="idiv="+idiv+"X:"+(idiv.left?idiv.left:"NAN")+", Y:"+(idiv.top?idiv.top:"NAN")+", x:"+x+", y:"+y;
//alert("idiv="+idiv+"X:"+(idiv.left?idiv.left:"NAN")+", Y:"+(idiv.top?idiv.top:"NAN")+", x:"+x+", y:"+y);
}

function mousemove(e){
 if(e)   {x=e.pageX?e.pageX:e.clientX?e.clientX:0; y=e.pageY?e.pageY:e.clientY?e.clientY:0;}
 else if(event) {x=event.clientX; y=event.clientY;}
 else {x=0; y=0;}

 if (typeof window.pageYOffset != 'undefined') {
   //y += window.pageYOffset;
   //x += window.pageXOffset;
 } else if (typeof document.compatMode != 'undefined' &&
     document.compatMode != 'BackCompat') {
   y += document.documentElement.scrollTop; 
   x += document.documentElement.scrollLeft; 
 } else if (typeof document.body != 'undefined') {
   y += document.body.scrollTop;
   x += document.body.scrollLeft;   
 }
 if(idiv) showtip();
}

function tunix(evt) {}

/* Ticker for DSFo.de (c)2007 Martin Bloch, copying strictly prohibited by law */
var ticker,ticker_line,ticker_col,ticker_to,ticker_elm;
var ticker_content = 'Schreibwütig? Literarisch besessen? Schon als kleines Kind in die Buchstabensuppe gefallen und den Hals nicht voll genug gekriegt? Satz-, zeilen-, und strophenfanatisch, wortgewandt, eloquent oder mitteilungsbedürftig? Leseratte, Geschichtenerzähler, Sabbeltasche, Fantast, Poet oder Philosoph? Geboren, um die Menschen zu unterhalten, zum Nachsinnen zu bewegen oder sie einfach nur zu animieren, mal wieder ein Buch aufzuschlagen und es stundenlang nicht mehr aus der Hand zu legen? Schon mal zwischen den Zeilen versunken und die Realität vergessen? Schon mal das ungeschriebene Wort gelesen und seinen Schlupfwinkel zwischen den Zeilen aufgespürt?\n \n{Perfekt!}+++\n \nDiese Plattform ist gleichsam Palast, Heim, Domizil, Talentschmiede und Hobby-Lektorat für Autorinnen und Autoren, Schriftstellerinnen und Schriftsteller. Nicht nur für solche, die es werden wollen, sondern auch für jene, die es bereits sind.';
var ticker_types   = 68;
var ticker_lines   = 6;
var ticker_typospeed = 42;
var ticker_linespeed = 500;
var ticker_commaspeed= 100;
var ticker_endspeed  = 2000;

function runTicker() {
  var s=ticker_line-ticker_lines+1; if (s<0) s=0;
  var txt = '';
  for (var i=s; i<=ticker_line; i++) {
  	txt += (i==ticker_line)? ticker[i].substr(0,ticker_col+1)+'_':ticker[i]+'<br />';
  }
  var lastch = ticker[i-1].substr(ticker_col,1);
  txt=txt.replace(/\+/g,"");
  txt=txt.replace(/{([^}]+)}/g,"<i><b>$1</b></i>");
  txt=txt.replace(/{(.+)/g,"<i><b>$1</b></i>");
  ticker_elm.innerHTML=txt;

  if ( lastch=="{" || lastch=="}") ticker_col++;
  
  if ( ++ticker_col>=ticker[ticker_line].length ) {
  	ticker_col=0; ticker_line++;
  	if ( ticker_line>=ticker.length ) {
    	setTimeout("initTicker()",ticker_endspeed);
  	  return;
  	}
  }  
  var tt = ticker_typospeed;
  if ( lastch=="," || lastch==";" ) tt = ticker_commaspeed;
  else if (lastch=="?" || lastch=="!" || lastch=="." || lastch=="+") tt = ticker_linespeed;
  setTimeout("runTicker()",tt);
}

function initTicker() {
	ticker_elm = document.getElementById('ticker');
	if ( !ticker_elm ) return;
	ticker_elm.innerHTML = '';
	ticker = new Array();
  var lines = ticker_content.split(/\n/);
  for ( var i=0; i<lines.length; i++ ) {
  	var line = lines[i];
  	if ( line.length>0 ) {
  	  while ( line.length>0 ) {
    		if ( line.length>ticker_types ) {
  			  var ix = ticker_types-1;
  			  while ( ix>=0 && line.substr(ix,1)!=' ' ) ix--;
  			  if ( ix==-1 ) { ticker.push(line); line=''; }
  			  else { ticker.push(line.substr(0,ix)); line=line.substr(ix+1); }
  	    } else {
  	    	ticker.push(line); line='';
  	    }
  	  }
  	} else ticker.push("");
  }	
  ticker_col = ticker_line = 0;
  ticker_to=setTimeout("runTicker()",25);
}	

function decode_utf8(utftext) {
  var plaintext = ""; var i=0; var c=c1=c2=0;
  // while-Schleife, weil einige Zeichen uebersprungen werden
  while(i<utftext.length)
  {
    c = utftext.charCodeAt(i);
    if (c<128) {
      plaintext += String.fromCharCode(c);
    i++;}
    else if((c>191) && (c<224)) {
      c2 = utftext.charCodeAt(i+1);
      plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
    i+=2;}
    else {
      c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
      plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
    i+=3;}
  }
  return plaintext;
}

OriginalHeight = new Array(); 
function SlideOut(elmid,dest,direc) { 
    // get height and remove the 'px' 
   h = document.getElementById(elmid).style.height; 
    strip=/[px]/gi; h = h.replace(strip,''); h = parseInt(h); 
    // set sizes and see if we are finished 
    if (direc == 1) { h+=20; keepgoing = (dest >= h) ? true : false; } else { h-=20; keepgoing = (dest < h) ? true : false;    } 
    if (keepgoing) { 
         // not done yet, timeout so we can keep going 
         document.getElementById(elmid).style.height = h + 'px'; 
         setTimeout("SlideOut('" + elmid + "'," + dest + "," + direc + ");",60); 
    } else { 
        // either hide it or return to original size 
        if (direc == 0) { document.getElementById(elmid).style.display = 'none'; } else { document.getElementById(elmid).style.height = OriginalHeight[elmid]+2+'px'; } 
        } 
} 

function ToggleBox(elmid) { 
    // set original height if it's not already set 
    var elm = document.getElementById(elmid);
    if (!OriginalHeight[elmid]) { 
         var h = (elm.clientHeight)? elm.clientHeight:elm.offsetHeight;
         if (h == 0) { 
            // if our element is hidden we need to prepare it.. show it, grab the height, shrink it to 0, and hide it again! 
             elm.style.display = 'block';     
             h = (elm.clientHeight)? elm.clientHeight:elm.offsetHeight;
             elm.style.height = 0; elm.style.display = 'none'; 
         } 
         OriginalHeight[elmid] = h;     
        } 
    // expand or contract 
    if (elm.style.display == 'block') { 
        elm.style.height = OriginalHeight[elmid]; 
        SlideOut(elmid,5,0); 
    } else { 
        elm.style.display = 'block'; 
        SlideOut(elmid,OriginalHeight[elmid],1);     
    } 
}
	
window.addEvent(window,'load',initDSFo);
//window.onload=initDSFo;


function aCountDown(config) {
	this.BackColor = "";
	this.ForeColor = "";
	this.Class = "";
	this.TargetDate = new Date("12/31/2020 5:00 AM").getTime();
	this.DisplayFormat = "%%D%% Tage, %%H%% Stunden, %%M%% Minuten, %%S%% Sekunden.";
	this.CountActive = true;
	this.FinishMessage = "";
	this.CountStepper = -1;
	this.LeadingZero = true;
	this.id = "cntdwn";
	this.SetTimeOutPeriod = 0;
	this.dthen = 0;
	this.dnow = 0;

	this.CalcPre = "<b>";
	this.CalcPost= "</b>";

        this.init(config);

}

aCountDown.prototype = {
	that: "",

	init: function(config) {
		that = this;
	        if ( typeof(config) == "object" ) {
	                for ( var k in config ) {
	                        if (typeof(config[k]) != 'function' && this[k] != undefined ) { this[k] = config[k]; }
	                }
	        }
	        this.CountStepper = Math.ceil(this.CountStepper);
	        if ( this.CountStepper == 0 ) this.CountActive = false;
		this.SetTimeOutPeriod = (Math.abs(this.CountStepper)-1)*1000 + 990;
		this.dthen = parseInt(this.TargetDate)*1000;
		this.dnow  = 0;

                var dat  = new Date();
		this.putspan();

		var http = getHTTPObject();
		http.open("GET","http://www.dsfo.de/fo/time.php?tt="+dat.getTime(),true);
		http.onreadystatechange = function () {
			if (http.readyState == 4) {
				var results = http.responseText;
				that.dnow = parseInt(results)*1000;
				if(that.CountStepper>0)
					ddiff = new Date(that.dnow-that.dthen);
				else
					ddiff = new Date(that.dthen-that.dnow);
				gsecs = Math.floor(ddiff.valueOf()/1000);
				that.CountBack(gsecs);
			}
		}
		http.send(null);
	},

	calcage: function(secs, num1, num2) {
		s = ((Math.floor(secs/num1))%num2).toString();
		if (this.LeadingZero && s.length < 2)
		s = "0" + s;
		return this.CalcPre + s + this.CalcPost;
	},
	
	CountBack: function(secs) {
		if (secs < 0) {
			document.getElementById(this.id).innerHTML = this.FinishMessage;
			return;
		}
		var DisplayStr = this.DisplayFormat.replace(/%%D%%/g, this.calcage(secs,86400,100000));
		DisplayStr = DisplayStr.replace(/%%H%%/g, this.calcage(secs,3600,24));
		DisplayStr = DisplayStr.replace(/%%M%%/g, this.calcage(secs,60,60));
		DisplayStr = DisplayStr.replace(/%%S%%/g, this.calcage(secs,1,60));

		document.getElementById(this.id).innerHTML = DisplayStr;
		if (this.CountActive)
			setTimeout("that.CountBack(" + (secs+this.CountStepper) + ")", this.SetTimeOutPeriod);
	},

	putspan: function() {
		var style = '';
		if ( this.BackColor!='' ) style += "background-color:"+this.BackColor+";";
		if ( this.ForeColor!='' ) style += "color:"+this.ForeColor+";";
		if ( style != '' ) style = " style='"+style+"'";
		if ( this.Class != '' ) style += " class='"+this.Class+"'";
		document.write("<span id='"+this.id+"'"+style+"></span>");
	}
};

