/**************************
 Ansteuerung Inline-Threads
***********************/

function ft_send_message(id) {
  var textField = idn("ft-" + id);
  if (textField != undefined) {
    if (20 < textField.value.length) {
    	var contC = myEncode(textField.value);
    	var value = "newEntry~,~" + id + "~,~~,~" + contC + "~.~";
    	
    	value = "userID=" + getUserID() + "&sessionID=" + getSessionID() + "&bef=" + value;
    
    	ajaxSend("./forum3A.php", value, ft_call_back,1);
    }
  } 
}

function ft_call_back() {
  var response = ajaxResponse();
  if (response) {
  	//alert (response);
  }
}

function init_eft() {
  //formatieren der inline Threads 
  
  var re=/iPanel\-(\w)\-(\d+)/gi;
  var alp = document.getElementsByTagName("div");
  for (var i=0; i < alp.length; i++) {
    if (alp[i].className == "ft_text") {
      node2HTML(alp[i], 300, 0);
      //alp[i].style.background = "#ff0";
    } 
  }
}

function ft_call_thread(thread,id) { 
  var ref = getServerFromLoc() + "/forum3.php?userID="+getUserID()+"&sessionID="+getSessionID()+"&gstyle="+getGstyle()+"&thread="+thread+"&entry="+id ;
  if (1 < window.parent.frames.length)
  {
    window.parent.frames[1].location=ref;
  }
  else {
    window.location=ref;
  }  
}

/**************************
 Verwaltung Inline-Threads
***********************/
var inlineThreads = new Array();

function readThreads_inline() {
  init_eft();
  var erg = new Array();
  var alp = document.getElementsByTagName('div');
  jscmdWrite("readThreads_inline: " + alp.length + " (start)",10,0);
  for (var i=0; i < alp.length; i++) {
    var node = alp[i];
    if (node.className == 'ft_wrap') { 
      erg.push(node);
    }
  }
  
  var myUserID = getUserID();
  for (var i=0; i < erg.length; i++) {
	var nid = erg[i].id;
    if (1 == 1) {
	  var elem = explode(nid,':');
	  var threadID = elem[0];
	  
	  var notUser = explode(elem[1],',');
	  var addElem = true;
      //jscmdWrite("readThreads_inline " + nid + " " + myUserID + " " + elem[1],0,1);
	  for (var j=0; j<notUser.length; j++) {
	    addElem &= (notUser[j] != myUserID);
	  }

	  if (addElem) {
    	var ft = new Object();
    	ft.id = threadID;
    	ft.used = false;
    	ft.elem = erg[i];
        inlineThreads.push(ft);
	  }
	}
  }
  jscmdWrite("readThreads_inline (ende)",10,0);
}

function getnextThread_inline(target_elem) {

  jscmdWrite("getnextThread_inline (start) ",1,2);
  
  var erg = null;
  
  var aktuell_elements = inlineThreads;
  if (1 < window.parent.frames.length) {
    if (window.parent.frames[0].inlineThreads != undefined) {
      aktuell_elements = window.parent.frames[0].inlineThreads;
    }
  }
  
  //jscmdWrite("inlineThreads " + inlineThreads.length,10,2);
  jscmdWrite("aktuell_elements " + aktuell_elements.length,10,2);
      
  if (0 < aktuell_elements.length) {
  
    // Erstmal feststellen, ob es noch offene Threads gibt
    var openThreads = 0;
    for (var i=0; i < aktuell_elements.length; i++) {
      if (!aktuell_elements[i].used) {
        openThreads += 1;
      }
    }
  
    // es gibt keinen offenen Thread mehr, also alle Threads zurücksetzen
    if (openThreads == 0) {
	  for (var i=0; i < aktuell_elements.length; i++) {
        aktuell_elements[i].used = false;
      }
    }
  
    var k = Math.floor(aktuell_elements.length * Math.random());
    var i = -1;
    var isolve = 1000;
    while (0 < k && 0 < isolve) {
      isolve -= 1;
      i = (i+1) % aktuell_elements.length;
      if (!aktuell_elements[i].used) k -= 1;
      jscmdWrite("getnextThread_inline " + i + ", " + k,10,2);
    }
  
    erg = aktuell_elements[i].elem; 
    aktuell_elements[i].used = true;
  
    if (target_elem != undefined) {
      var t = idf(target_elem);
      if (t != null && t != undefined) {
  	    var n = document.createElement("div");
        n.style.display = "inline";
        n.innerHTML = erg;
        removeAllChildren(t);
        t.appendChild(n);
      }
    }
  }
  jscmdWrite("getnextThread_inline (ende) ",1,2);
  
  return erg;
}

/************************************
* Auslesen der Threads aus den Profildaten
************************************/

var ft_process_array_1 = new Array();

function ft_read_profilDaten() {
  // erste Stufe, zerlegt die Daten nach User
  var pt = idf('threadsUser');
  if (pt != undefined && pt != null) {
    ft_read_profilDaten_1(pt.innerHTML);
  }
}

function ft_read_profilDaten_1(html) {

    var re=/(\d+)\s(.*)/gi;   
    var allUsers = explode(html,'#');
    for (var i1=0; i1 < allUsers.length; i1++) {
      var sUser = allUsers[i1];
      re.lastIndex=0;
      var gto = re.exec(sUser);
      if (gto != null) {
        var userid = parseInt(gto[1]);
        // Suchen, ob schon ein Eintrag existiert
        var index = -1;
        for (var i2=0; i2<ft_process_array_1.length; i2++) {
          if (ft_process_array_1[i2].userid == userid) {
            index = i2
          }
        }
        if (index < 0) {
    		var ft = new Object();
    		ft.userid = userid;
    		ft.translated = false;
    		ft.data = gto[2];
        	ft_process_array_1.push(ft);
        } else {
          if (ft_process_array_1[index].data != gto[2]) {
            // die Daten haben sich verändert, also neu 
            ft_process_array_1[index].data = gto[2];
            ft_process_array_1[index].translated = false;
          }
        }
      }
    }
    window.setTimeout("ft_process_profilDaten_1()", 1500);
}

function ft_process_profilDaten_1() {
  // aufbereiten der Profildaten
  var userIndex = -1;
  try{
  if (usera != undefined) {
  	 var userID = getUserID();
  	 var index = -1;
  	 for (var i=0; i<ft_process_array_1.length; i++) {
   	   if (!ft_process_array_1[i].translated) {
  	      for (var j=0; j<usera.length; j++) {
  	        if (usera[j].id == ft_process_array_1[i].userid) {
    	      index = i;
    	      userIndex = j;
    	      i = ft_process_array_1.length;
   	          break;
   	        }
   	      }
   	   }
  	 }
  
 	 if (0 <= index) {
    	// Für diesen User alle Foreneinträge neu
    	usera[userIndex].forumEntries = new Array();
    	//
    	ft_process_array_1[index].translated = true;
    	// Die einzelnen Threads sind durch , getrennt
    	var entries = explode(ft_process_array_1[index].data,',');
    	for (var ii=0; ii < entries.length; ii++) {
      		var single_entry = explode(entries[ii], ' ');
      	 	// der Eintrag wird aufgeteilt nach 
      		// firstID, id, posted, ids der User, die auf diesen Beitrag bereits geantwortet haben
      		var users_answer = explode(single_entry[3],'~');
      		var canAdd = true;
      
      		for (var j=0; j < users_answer.length; j++) {
        		canAdd &= !(userID == parseInt(users_answer[j]));
      		}
      
      		if (canAdd) {
        		jscmdWrite("forum_infos (start user:" + ft_process_array_1[index].userid + ", " + single_entry[1] + ") ",10,0);
        		
    			var ft = new Object();
    			ft.first = parseInt(single_entry[0]);
    			ft.id = parseInt(single_entry[1]);
    			ft.posted = parseInt(single_entry[2]);
    			ft.used = false;
        		usera[userIndex].forumEntries.push(ft);
      		}
    	}
    	window.setTimeout("ft_process_profilDaten_1()", 100);
  	}
  	else {
  	  // Alle User und Einträge sind durch,
  	  // ab jetzt nur noch alle 5 Sekunden testet, ob es was neues gibt
  	  window.setTimeout("ft_process_profilDaten_1()", 5000);
  	}
  }
  }
  catch(e) {
  }
}


