/**
* Gestion des forums
*
* @author PFZone
* @version 20090617
*/

var current_db=0;		// DB_ID de la section de forum courante
var forum_base=0;		// Limiter la structure à un niveau précis
var current_forumid=0;	// ID de l'item de forum
var forum_dispmode=1;	//
var forum_tree=false;	// Afficher l'arbo
var forum_incre=0;      // Position dans la pagination
var forum_fromdate;		//
var forumnavlink_size;  //
var forum_edited;       //
var page_loaded;        // Variables de gestion de l'arbre ...
var tree_toload;
var tree_loading;
var tree_loaded;
var tree_active;
var tree_repos;         // ...

function reinitTree() {
	page_loaded = false;
	tree_toload = new Array();
	tree_loading = false;
	tree_loaded = new Array();
	tree_active = 0;
	tree_repos = 2;
	//forumredraw(false);
}

function forum_startQuery(){  }
function forum_endQuery(){  }

function forumpage(incre)         { loadForum(current_db,current_forumid,incre,{'morepage':'1','fromdate':forum_fromdate}); }
function trie(letrie,lesens)    { loadForum(current_db,current_forumid,-1,{'forums[order]':letrie,'forums[sort]':lesens}); }
function forumct(hid,repos,opt) { if (!repos)tree_repos=1;else tree_repos=2; if (hid==0) hid=forum_base; loadForum(current_db,hid,-2,opt); }
function setTree(index,reloc_mode) {
	if (index==tree_active || index==forum_base) return false;
	if (!reloc_mode) reloc_mode=0;
	if (reloc_mode>0) {
		if ($('ftree'+tree_active+'Label')) $('ftree'+tree_active+'Label').removeClass('forum_tree_leaf_on');
		if ($('ftree'+index+'Label')) $('ftree'+index+'Label').addClass('forum_tree_leaf_on');
		if (reloc_mode==2) {
			forumredraw(true);
		}
		tree_active=index;
	}
	return true;
}
function SeeLast(theform) {
	var thisbase = theform.form;
	var year = Number(thisbase.d0.options[thisbase.d0.selectedIndex].text);
	var month = Number(thisbase.d1.options[thisbase.d1.selectedIndex].value)-1
	var day = Number(thisbase.d2.options[thisbase.d2.selectedIndex].text)
	var date = new Date; date.setFullYear(year,month,day); // Format July 1, 1999
	forum_incre=0;
	loadForum(current_db,-1,-1,{'fromdate':(date.getTime()/1000)});
}
function reloadForum() {
	if(forum_tree) reinitTree();
	loadForum(current_db,current_forumid,-1);
}
/**
 *  Charge un forum
 *  @param int db la db
 *  @param int index l'hid
 *  @param obj opt { incre, fday, fmon, fyea}
 */
function loadForum(db,index,incre,opt) {
	if (forum_tree) {
		$('ftree0').setStyles({'top':'0'});
	}
	document.body.scrollTop ='0px';
	if ($type(opt)=="string") { alert("Forum appelle une opt pas gérée:"+opt); opt={}; }
	if (!opt) {opt={};};
	opt = $merge({'db':db,'base':forum_base,'index':index,'incre':incre,'forum_dispmode':forum_dispmode},opt);
	forum_startQuery();
	pfzapp.script('/index_forum_content.php',opt);
}
function loadNextInTree(db, index, opt) {
	var this_loaded=0;

	if (index>=0) tree_toload.push(index);
	if (index==-1) {
		this_loaded=tree_toload.shift();
		tree_loaded[this_loaded]=opt;
	}
	if (tree_toload.length==0) {
		tree_loading=false;
		end_loading(this_loaded);
	}
	if ((index==-1 && tree_loading) || (index>=0 && !tree_loading)) {
		tree_loading = true;
		var foo = tree_toload[0];
		pfzapp.script('/index_forum_tree.php',{'db':db,'base':forum_base,'index':foo,'opt':page_loaded});
	}
}
function expandTree(db,index){tree_repos=0;loadTree(db,index);}
function loadTree(db,index,force_state) {
	if (!forum_tree) return false;
	var div_id = index==forum_base ? 0:index;
	var thisdiv = $('ftree'+div_id);
	if (!tree_loaded[index]) { loadNextInTree(db, index); }
	else {
		if (div_id==0) return false;
		if (!force_state) force_state = thisdiv.style.display=='none';
		if (tree_loaded[index]) {
			if (force_state || thisdiv.style.display=='none') {
			   thisdiv.style.display='block';
			   $('ftree'+index+'O').removeClass('forum_tree_expand');
			   $('ftree'+index+'O').addClass('forum_tree_expanded');
			} else {
			   thisdiv.style.display='none';
			   $('ftree'+index+'O').removeClass('forum_tree_expanded');
			   $('ftree'+index+'O').addClass('forum_tree_expand');
			}
		}
	}
	return true;
}
function end_loading(dest) {
	if (dest>0 && dest!=forum_base) {
		setTree(dest,tree_repos);
	}
	page_loaded = true;
	tree_repos = true;
	forumredraw(false);
}
function forum_search(index) { loadForum(current_db,current_forumid,-1,{'todo':'search','forums[search_mode]':$('form_forums[search_mode]').value, 'forums[search_content]':$('form_forums[search_content]').value }); }
function forum_cancelSearch(index) { loadForum(current_db,index,-1,{'forums[search_mode]':0,'forums[search_content]':''}); }
function searchHighLight(div, search) {
	if ($(div)) $(div).update($(div).get("html").replace(eval(search), '<span class="overlined">\$1</span>'));
}
function searchHighLight_Complete() {
	var tableb = document.getElementsByTagName('table')[0].tBodies[0];
	var i, s = tableb.childNodes.length;
	for (i = 1; i < s; i++) {
		var r = tableb.childNodes[i];
		if (r.childNodes.length > 1) {
			var a = r.childNodes[2].childNodes[r.childNodes[2].childNodes.length - 1];
			var html = a.innerHTML;
			html = html.replace('/'+search+'/ig', '<span class="overlined">\$1</span>');
			a.innerHTML = html;
		}
	}
}
function forumOpen(db, lvl, his)   { forum_edited=false; popup.main("/user_forum.php",{'db':db,'home':lvl,'id':his},{
		onCloseCheck:function(){if (forum_edited && !confirm('Ignorer les modification ?')) return false; else return true;},
		setFocus:'form_forum[hint]'}); }
function forumEditConf(action)     { if (confirm(label_certain)) forumEdit(action); }
function forumEdit(action)         {
	if (action=='save' && $('form_forum[htxt]').value=='') alert(label_empty);
	else {
		forum_edited=false; popup.main("/user_forum.php",$merge({'action':action},extractForm('forumeditform'))); }
}
function forumMakelink()
{
  link = "";
  deb = $('form_forum[htxt]').selectionStart;
  end = $('form_forum[htxt]').selectionEnd;
  text = $('form_forum[htxt]').value.substring(deb, end);
  head = text.substring(0,5);
  (text.substring(0,7) != "http://")?link = "http://" + text:link=text; 
  text = "<a class='link' target=\"_blank\" href=\"" + link + "\">" + text + "</a>";
  $('form_forum[htxt]').value = $('form_forum[htxt]').value.substring(0, deb) + text + $('form_forum[htxt]').value.substr(end);
}
function forumTypeChange(el) {
	popup.main("/user_forum.php",$merge({action:'typeChange'},extractForm('forumeditform')));
}

function delSurvey(id) { $('forumeditform').survey_thisid.value = id; updHis('survey_del'); }
function moveSurvey(id,way) { $('forumeditform').survey_thisid.value = id; $('forumeditform').survey_exra.value = way; updHis('survey_move'); }
function addSurvey() { updHis('survey_add'); }

function forumredraw(repos) {
	$('forum_treebar').setStyle("display","");
	var forumnavlink_size   = $('forum_navlink').getCoordinates();
	var treelistFullsize    =($('ftree0').getScrollSize()).y;
	var currentPos          = forumnavlink_size.top + forumnavlink_size.height;
	var currentSize         =($('ftree0').getCoordinates()).height;
	var currentScroll       = $('ftree0').scrollTop;
	if (!repos) repos=false;
	if (!tree_loading) {
		var y_win = winsize.y - currentPos + winscroll.y;
		if (y_win<200) y_win=250; if (y_win>winsize.y) y_win=winsize.y;
	} else {
		y_win=250;
	}
	y_win -= 50;
	var diff,sizeDiff = currentSize - y_win ;
	var y_top = currentPos < winscroll.y ? winscroll.y - currentPos : 0;
	$('ftree0').setStyles({'height':y_win+'px','top':y_top+'px'});

	if (repos && $('ftree'+current_forumid+'Label')) {
		var newscroll = ($('ftree'+current_forumid+'Label').getPosition('ftree0')).y;
		diff = newscroll+200>treelistFullsize ? treelistFullsize:newscroll-100;
		$('ftree0').scrollTop=diff;
		//alert('repos de '+diff)
	} else {
		var rescroll = sizeDiff; if (rescroll<0) rescroll=0;
		diff = currentScroll +  rescroll;
		diff = 0;
		//$('ftree0').scrollTop=diff;
		//alert('faux repos de '+diff)
	}

}

