var g_save;

function initWebApp() {
    TtFramework.exec(["initMessages",
		      "initHome",
		      "initKnowMore",
		      "initSearch",
		      "initNavigationTools",
		      "initComments",
		      "initHistory",
		      "initMap",
		      "initTimeLine",
		      "initTopic",
		      "initConnectForm",
		      "initLinkForgetPass",
		      "initDirectory",
		      "initForum",
		      "initFooterLink",
		      "initTtL",
		      "initPerspective",
		      "initThemaTabs",
		      "initAgeTabs",
		      "initRegisterForm",
		      "initMyAccount",
		      "initModules",
		      "initUtilsViewLinks",
		      "initValidatedConnectLink"
		      ]);
    if (debug) {
	TtFramework.debug.show();
    }
}

TtFramework.onLogin = function(member) {
    TtFramework.exec(["onLoginComments",
		      "onLoginConnectPopUp"
		      ], member);
}

TtFramework.onLogout = function() {
    TtFramework.exec(["onLogoutComments"
		      ]);
}

function	onLoginConnectPopUp() {
    /*    var popUp = TtFramework.PopUpFactory.getPopUp("connectPopUp", {});
	  popUp.addToContent("");*/
}

function	initValidatedConnectLink() {
    var l = $("connect_link");
    if (!l)
	return ;
    l.onclick = function() {
	if (this.popUp == undefined) {
	    new Loader("login_tpl", function() {
		    this.data.popUp = TtFramework.PopUpFactory.getPopUp("connectPopUp", {
			    title: "Connexion",
			    content: this.req.responseText
			});
		    this.data.popUp.show();
		    TtFramework.exec("initConnectForm");
		    var d = $("connect_form");
		    d.style.position = "static";
		    d.style.backgroundColor = "#9D9287";
		    TtFramework.exec("initLinkForgetPass");
		}, "GET", "", this);
	}
	else
	    this.popUp.show();
    }
}

function	onLogoutComments() {
    var s = $('commentsList');
    if (s == null || s == undefined)
	return ;
    s = s.getElements('span');
    s.each(function(item) {
	    item.innerHTML = "";
	});
    initComments();
}

function	onLoginComments(member) {
    var lis = $('comment_content');
    if (lis == undefined || lis == null)
	return ;
    lis = lis.getElements('li');
    lis.each(function(li) {
	    createLink(li, member);
	});
    initComments();
}

function	initModules() {
    var mf = $('module_forum');
    if (mf != undefined && mf != null)
	TtFramework.exec("initModuleForum");
}

function	initModuleForum() {
    var title = $('module_forum_title');
    var p = title.getElements('span')[0];

    title.p = p;
    title.onmouseover = function() {
        this.p.style.display = "block";
    }
    title.onmouseout = function() {
        this.p.style.display = "none";
    }

    var h = title.getElements('h2')[0].getElements('a')[0];
    if (h.innerHTML.length > 20) {
        var n = h.innerHTML.substr(0, 17) + "...";
        h.innerHTML = n;
    }

    var atl = $('addTopicLink');
    if (atl != undefined && atl != null) {
        atl.onclick = function() {
            if (!(TtFramework.isLoggedIn())) {
                var popUp = TtFramework.PopUpFactory.getPopUp("requiredForumTopic", {
                        title: "Authentification requise",
                        content: messages['AUTHENTIFICATION_REQUIRED_FORUM_TOPIC']
                    });
                popUp.show()
            }
            else {
                window.location.href = "forum/" + this.parentNode.id + "/creer-un-sujet";
            }
            return false;
        }
    }

    var mf = $('module_forum');
    var divs = mf.getElements("div[class=module_forum_post]");
    if (divs == null || divs == undefined || divs.length == 0)
	return ;
    divs.each(function(div) {
            var t = div.getElements("h1");
            if (t == null || t == undefined || t.length == 0)
                return ;
            var a = t[0].getElements("a")[0];
            if (a != null && a != undefined) {
                a.innerHTML = a.innerHTML.substring(0, 32) + "...";
            }
        });
}

function	initKnowMore() {
    var p = $('more_info');
    if (p == null || p == undefined)
	return false;
    var l = p.getElements('a')[0];
    if (l == null || l == undefined)
	return false;
    l.onclick = function() {
	var popUp = TtFramework.PopUpFactory.getPopUp("comingSoon", {
		title : messages['ALERT_COMING_SOON_TITLE'],
		content : messages['ALERT_COMING_SOON']
	    });
	popUp.show();
	return false;
    }
}

function	initMessages() {
    initMessage('nav_criteria', messages['VIEW_CRITERIAS']);
    initMessage('nav_reset', messages['CANCEL_CRITERIA']);
    initMessage('nav_view', messages['VIEW_VIEW']);
    initMessage('rememberMeLabel', messages['REMEMBER_ME']);
    initMessage('forgetPass', messages['TEXT_FORGET_PASS'] + "?");
    initMessage('createAccount', messages['TEXT_CREATE_ACCOUNT'] + '<a href="/register">' + messages['TEXT_REGISTER_LINK'] + '</a>...');
}

function	initMessage(name, value) {
    var d = $(name);
    if (d != undefined && d != null) {
	d.innerHTML = value;
    }
}

function initComments() {
    var p = $("comment");
    if (p == undefined || p == null)
	return false;
    var commentBtn = p.getElements("a")[0];
    if  (commentBtn == null || commentBtn == undefined)
	return ;
    
    var divComment = $("comment_content");
    extendsDivComment(divComment);
    commentBtn.div = divComment;
    commentBtn.onclick = function() {
	if (this.title == messages["HIDE_COMMENTS"]) {
	    this.div.hide();
	    this.title = messages["SHOW_COMMENTS"];
	    this.innerHTML = messages["SHOW_COMMENTS"];
	}
	else {
	    this.title = messages["HIDE_COMMENTS"];
	    this.innerHTML = messages["HIDE_COMMENTS"];
	    this.div.show();
	    this.init();
	}
	return false;
    }
    commentBtn.init = function() {
	if (TtFramework.isLoggedIn()) {
	    initAddCommentFormLoggedIn(TtFramework.member);
	    initFollowUpLoggedIn();
	}
	else {
	    initAddCommentFormLoggedOut();
	    initFollowUpLoggedOut();
	}
	initCommentFollowUp();
	initFormAddComment(this.div);
	initUserActions(this.div, TtFramework.member);
    }
    commentBtn.init();
}

function initFollowUpLoggedIn() {
    var p = $('startFollowUp');
    if (p != undefined && p != null) {
	var sful = p.getElements('a')[0];
	sful.p = p; 
	new Loader("checkIfFollowed_" + navigation.id_entity_bean,
		   externOnLoadStartFollowUp, "GET", "", sful);
    }
    return false;
}

function initFollowUpLoggedOut() {
    var p = $('cancelFollowUp');
    if (p != undefined && p != null) {
	var cful = p.getElements('a')[0];
	cful.innerHTML = messages['START_FOLLOWUP_MSG'];
	p.id = "startFollowUp";
	initComments();
    }
    return false;
}

function createLink(curLi, member) {
    var ids = curLi.id.split("_");
    var idC = ids[1];
    var idM = ids[2];

    var pabuse = new Element('p', {
	    'class':"btn_comment_abus"}
	);

    var labuse = new Element('a', {
	    'id': "abusereport_" + idC, 
	    'href': "#",
	    'title': messages['TEXT_ABUSE_REPORT'],
	    'text': messages['TEXT_ABUSE_REPORT']
	});
    pabuse.adopt(labuse);
    if (member.id == idM) {
	
	var pdel = new Element('p', {
		'class':"btn_comment_delete"});
	var ldel = new Element('a', {
		'id': "delete_" + idC, 
		'href': "#",
		'title': messages['TEXT_DELETE'],
		'text': messages['TEXT_DELETE']
	    });
	pdel.adopt(ldel);
	
	var pmodify = new Element('p', {
		'class':"btn_comment_edit"});
	var lmodify = new Element('a', {
		'id': "modify_" + idC, 
		'href': "#",
		'title': messages['TEXT_MODIFY'],
		'text': messages['TEXT_MODIFY']
	    });
	pmodify.adopt(lmodify);
    }
    
    var s = curLi.getElementsByTagName('span')[0];
    s.adopt(pabuse);
    if (pmodify != undefined)
	s.adopt(pmodify);
    if (pdel != undefined)
	s.adopt(pdel);
    return idC;
}

function initCommentFollowUp() {
    var sfu = $('startFollowUp');
    if (sfu != undefined && sfu != null)
	startFollowUp(sfu);
    var cfu = $('cancelFollowUp');
    if (cfu != undefined && cfu != null)
	cancelFollowUp(cfu);
}

function startFollowUp(sfu) {
    sful = sfu.getElements('a')[0];
    sful.p = sfu;
    sful.onclick = function() {
	if (TtFramework.isLoggedIn()) {
	    new Loader("startFollowUp_" + navigation.id_entity_bean,
		       externOnLoadStartFollowUp, "GET", "", this);
	    return false;
	}
	else {	
	    this.popUp = TtFramework.PopUpFactory.getPopUp("notLoggedComment", {
		    content : messages['AUTHENTIFICATION_REQUIRED_COMMENTS'],
		    isDraggable : true,
		    title : messages['AUTHENTIFICATION_REQUIRED']
		});
	    this.popUp.show();
	    return false;
	}
    }
}

function externOnLoadStartFollowUp() {
    if (this.req.responseText.trim() != "failed") {
	this.data.innerHTML = messages['CANCEL_FOLLOWUP_MSG'];
	this.data.p.id = "cancelFollowUp";
	initComments();
    }
    return false;
}


function cancelFollowUp(cfu) {
    var cful = cfu.getElements('a')[0];
    cful.p = cfu;
    cful.onclick = function() {
	new Loader("cancelFollowUp_" + navigation.id_entity_bean,
		   externOnLoadCancelFollowUp, "GET", "", this);
	return false;
    }
}

function externOnLoadCancelFollowUp() {
    if (this.req.responseText.trim() != "failed") {
	this.data.innerHTML = messages['START_FOLLOWUP_MSG'];
	this.data.p.id = "startFollowUp";
	initComments();
    }
    return false;
}

function initUserActions(div, member) {
    var li = div.getElements("li");
    if (li == null || li.length == 0)
	return false;
    for (var i = 0; i < li.length; i++) {
	var curLi = li[i];
	var a = curLi.getElementsByTagName("a")[0];
	if (a == undefined || a == null){
	    if (member.isLogged())
		var id = createLink(curLi, member);
	    else
		return false;
	}
	else
	    var id = a.id.split("_")[1];
	this.btnAbuseReport = $("abusereport_" + id);
	if (this.btnAbuseReport != undefined && this.btnAbuseReport != null) {
	    this.btnAbuseReport.idComment = id;
	    this.btnAbuseReport.idMember = member.id;
	    this.btnAbuseReport.busy = false;
	    this.btnAbuseReport.onclick = function() {
		if (this.busy)
		    return false;
		this.busy = true;
		new SyncLoader("/getTpl_abuse_report", function() {
			this.data.tpl = this.req.responseText;
		    }, "GET", "", this);
		this.popUp = new TtFramework.PopUp({
			content : this.tpl,
			isDraggable : true,
			title : messages['TEXT_ABUSE_REPORT']
		    });
		this.popUp.show();
		
		var btnSend = this.popUp.getElements('input')[0];
		if (btnSend == undefined || btnSend == null)
		    return false;
		btnSend.idComment = this.idComment;
		btnSend.idMember = this.idMember;
		btnSend.popUp = this.popUp;
		btnSend.disabled = false;
		btnSend.onclick = function() {
		    if (this.disabled)
			return ;
		    this.disabled = true;
		    new Loader("/sendMailAbuseReportComment", this.onLoadSendMail, "POST",
			       "idMember=" + this.idMember + "&emailTo=spiricoool@hotmail.com&idContent=" + this.idComment
			       , this);
		    return false;
		}
		
		btnSend.onLoadSendMail = function() {
		    this.data.parentNode.style.marginTop = "10px";
		    this.data.parentNode.innerHTML = this.req.responseText;
		    var data = this.data;
		    setTimeout(function () { data.popUp.hide(); }, 4000);
		    this.disabled = false;
		}
		this.busy = false;
		return false;
	    }
	}

	this.btnDelete = $("delete_" + id);
	if (this.btnDelete != undefined && btnDelete != null) {
	    this.btnDelete.idComment = id;
	    this.btnDelete.onclick = function() {
		new SyncLoader("deleteComment_" + this.idComment + "_" + navigation.id_entity_bean, externOnLoadDeleteComment, "GET", "", this);
		return false;
	    }
	}
	this.btnModify = $("modify_" + id);
	if (this.btnModify != undefined && this.btnModify != null) {
	    this.btnModify.idComment = id;
	    this.btnModify.onclick = function() {
		this.modifyComment();
		return false;
	    }
	    
	    this.btnModify.modifyComment = function() {
		this.link = $("modify_" + this.idComment);
		this.p = $('commentText_' + this.idComment);
		this.sComment = this.p.innerHTML;
		this.sDiv = this.link.getParent("div");
		g_save = this.link.getParent("div").innerHTML;
		
		if (this.tpl == undefined) {
		    new Loader("/getTpl_edit_comment", function() {
			    this.data.tpl = this.req.responseText;
			    this.data.sDiv.innerHTML = this.data.tpl;
			    this.data.sComment = replaceChar(this.data.sComment, "<br>", "\n");
			    this.data.sDiv.getElements("textarea")[0].value = this.data.sComment;
			    this.data.initEditComment(this.data);
		    }, "GET", "", this);
		}
		else {
		    this.sDiv.innerHTML = this.tpl;
		    this.sDiv.getElements("textarea")[0].value = this.sComment;
		    this.initEditComment(this);
		}
		return false;
	    }
	    
	    this.btnModify.initEditComment = function(obj) {
		var btns = obj.sDiv.getElements("input");
		var btnValidate = btns[0];
		var btnCancel = btns[1];
		
		btnValidate.obj = obj;
		btnValidate.onclick = function() {
		    this.obj.newText = this.obj.sDiv.getElements("textarea")[0].value;
		    new Loader("modifyComment_" + this.obj.idComment, externOnLoadModifyComment
			       , "POST", "commentContent=" + this.obj.newText, this.obj);
		    return false;
		}
		btnCancel.obj = obj
		btnCancel.onclick = function() {
		    this.obj.sDiv.innerHTML = g_save;
		    var d = $("comment_content");
		    initUserActions(d, TtFramework.member);
		    return false;
		}
	    }
	}
    }
}

function externOnLoadModifyComment() {
    if (this.req.responseText != "failed") {
	this.data.sDiv.innerHTML = g_save;
	var text = this.data.newText;
	text = replaceChar(text, "\n", "<br>");
	this.data.sDiv.getElementsByTagName("p")[0].innerHTML = text;
	var d = $("comment_content");
	initComments(d, TtFramework.member);
    }
}

function externOnLoadDeleteComment() {
    var res = this.req.responseText;
    var reg = new RegExp("<li","g");

    if (res.match(reg)) {
	$("commentsList").innerHTML = res;
    }
    else {
	$("comment_content").innerHTML = res;
    }
    initComments();
}

function replaceChar(text, char, replace) {
    var reg = new RegExp("(" + char + ")", "g");
    text = text.replace(reg, replace);
    text = trim(text);
    return text;
}

function initPager() {    
    var o = $("num");
    if (o == undefined || o == null)
	return false;
    var np = o.value.split("-")[1];
    new CommentsPager("comment_content", "/getTpl_comments", np);
}

function initAddCommentFormLoggedIn(member) {
    var fieldName = $("name");
    var fieldEmail = $("email");
    var content = $("commentContent");
    content.value = "";
    content.disabled = false;
    fieldName.value = member.firstname;
    fieldEmail.value = member.mail;
    fieldName.disabled = "disabled";
    fieldEmail.disabled = "disabled";
}

function initAddCommentFormLoggedOut() {
    var fieldName = $("name");
    var fieldEmail = $("email");
    var content = $("commentContent");
    content.value = messages['NOT_LOGGED_COMMENT_CONTENT'];
    content.disabled = "disabled";
    fieldName.value = fieldEmail.value = ""
    fieldName.disabled = fieldEmail.disabled = "false";

}


function initFormAddComment(div) {
    var btn = $("btn_add_comment");

    var t = btn.form.parentNode.getElementsByTagName("ol");
    if (t != undefined && t.length == 1)
	btn.ol = t[0];
    initPager();
    
    btn.onclick = function() {
	try {
	    if (TtFramework.isLoggedIn())
		this.addComment();
	    else
		this.initConnectFormPopUp();
	}
	catch (e) {
	    alert(e);
	}
	return false;
    }
    
    btn.onLoadAddComment = function() {
	var text = this.req.responseText;
	if (text.match("CANT_POST_AGAIN")) {
	    alert(messages["ALERT_DONT_ABUSE"]);
	    return false;
	}
	else {
	    if (this.data.ol == undefined || this.data.ol == null)
		$("comment_content").innerHTML = text;
	    else
		this.data.ol.innerHTML = text;
	    initComments();
	}
    }
    
    btn.addComment = function() {
	var fieldName = $("name").value;
	var fieldEmail = $("email").value;
	var fieldContent = $("commentContent").value;
	
	if (fieldContent.length == 0) {
	    alert(messages["ALERT_EMPTY_TEXT"]);
	    return false;
	}
	new Loader("getTpl_comments_" + navigation.id_entity_bean + "_" + navigation.view, this.onLoadAddComment, "POST",
			  "commentContent=" + fieldContent, this);
    }
    btn.initConnectFormPopUp = function() {
	this.popUp = TtFramework.PopUpFactory.getPopUp("notLoggedComment", {
		content : messages['AUTHENTIFICATION_REQUIRED_COMMENTS'],
		isDraggable : true,
		title : messages['AUTHENTIFICATION_REQUIRED']
	    });
	this.popUp.show();
	return false;
    }
}

function extendsDivComment(div) {
    div.id = "comment_content";
    div.show = function() {
	this.style.display = "block";
    }
    div.hide = function() {
	this.style.display = "none";
    }
}

CommentsPager = TtFramework.ttClass({
	initialize : function(parentId, urlBase, np) {
	    this.childrenEl = $(parentId);
	    if (this.childrenEl == null || this.childrenEl == undefined)
		return ;
	    this.urlBase = urlBase;
	    this.np = np;
	    this.content = this.childrenEl.getElementsByTagName("ol")[0];
	    this.ps = this.childrenEl.getElementsByTagName("p");
	    this.cp = 1;
	    
	    for (var i = 0; i < this.ps.length; i++) {
		if (this.ps[i].className == "previous")
		    this.previousLink = this.ps[i].childNodes[0];
		if (this.ps[i].className == "next")
		    this.nextLink = this.ps[i].childNodes[0];
	    }
	    if (this.previousLink == undefined || this.nextLink == undefined ||
		this.previousLink.href != "javascript:void(0);" ||
		this.nextLink.href != "javascript:void(0);") {
		return ;
	    }

	    extendsScrollerLink(this.previousLink, false);
	    extendsScrollerLink(this.nextLink, false);

	    if (this.np == null || this.np == "" || this.np == 0) {
		this.np = 1;
	    }

	    if (this.np == 1)
		this.nextLink.hide();
	    else
		this.nextLink.show();
	    this.previousLink.hide();
	    this.previousLink.pager = this;
	    this.nextLink.pager = this;

	    this.previousLink.onUserClick = function() {
		this.pager.onPrevious();
	    }
	    this.nextLink.onUserClick = function() {
		this.pager.onNext();
	    }
	    this.activLink = null;
	},

	onPrevious : function() {
	    this.cp--;
	    this.activLink = this.previousLink;
	    this.doPager(this.cp);
	},
	
	onNext : function() {
	    this.cp++;
	    this.activLink = this.nextLink;
	    this.doPager(this.cp);
	},

	doPager : function(page) {
	    new Loader(this.urlBase + "_" + navigation.id_entity_bean + "_" + navigation.view + "-" + this.cp,
			      this.externOnLoad, "POST", "", this);
	},
	onLoad : function(text) {
	    this.content.innerHTML = "";
	    this.content.innerHTML = text;
	    if (this.cp == 1)
		this.previousLink.hide();
	    if (this.np > this.cp)
		this.nextLink.show();
	    if (this.cp + 1 > this.np)
		this.nextLink.hide();
	    if (this.cp > 1)
		this.previousLink.show();
	    if (this.activLink != null)
		this.activLink.processing = false;
	    
	    initUserActions(this.content, TtFramework.member);
	},
	externOnLoad : function() {
	    if (this.data != undefined) {
		this.data.onLoad(this.req.responseText);
	    }
	}
    });


function	initUtilsViewLinks() {
    var print = $("print");
    if (print != null && print != undefined) {
	print.onclick = function() {
	    window.print();
	    return false;
	}
    }
    var send = $("send");
    if (send != null && send != undefined) {
	send.onclick = function() {
	    if (this.tpl == undefined) {
		new Loader("/getTpl_sendtofriend", function() {
			this.data.tpl = this.req.responseText;
			this.data.popUp = TtFramework.PopUpFactory.getPopUp(this.data.id, {
				content:this.data.tpl,
				title:messages["SEND_TO_FRIEND_BOX_TITLE"]
			    });
			this.data.popUp.show();
			extendSendToFriendDiv(this.data.popUp);
		    }, "GET", "", this);
	    }
	    else {
		this.popUp.show();
		extendSendToFriendDiv(this.popUp);
	    }
	    return false;
	}
    }
}

function	extendSendToFriendDiv(div) {
    var	fieldFrom = $("field_from");
    var fieldName = $("field_name");
    var fieldTo = $("field_to");
    var fieldMessage = $("field_text");
    var fieldLink = $("field_link");

    fieldFrom.value = messages["TEXT_TYPEIT_EMAIL"];
    fieldName.value = messages["TEXT_TYPEIT_NAME"]
    fieldTo.value = messages["TEXT_TYPEIT_EMAIL"];
    fieldMessage = messages["TEXT_TYPEIT_MESSAGE"];
    
    TtFramework.TxtFocusOnField(fieldFrom, messages["TEXT_TYPEIT_EMAIL"]);
    TtFramework.TxtFocusOnField(fieldTo, messages["TEXT_TYPEIT_EMAIL"]);
    TtFramework.TxtFocusOnField(fieldMessage, messages["TEXT_TYPEIT_MESSAGE"]);
    TtFramework.TxtFocusOnField(fieldName, messages["TEXT_TYPEIT_NAME"]);

    fieldLink.value = window.location.href;

    var btnSend = $("send_tofriend");
    btnSend.div = div;
    btnSend.onclick = function() {
	var from = $("field_from").value;
	var to = $("field_to").value;
	var message = $("field_text").value;
	var link = $("field_link").value;
	var name = $("field_name").value;

	if (from.length == 0 || to.length == 0 || message.length == 0 || name.length == 0
	    || from == messages["TEXT_TYPEIT_EMAIL"] || to == messages["TEXT_TYPEIT_EMAIL"] || name == messages["TEXT_TYPEIT_NAME"]) {
	    alert(messages["ERROR_EMPTY_FIELDS"]);
	    return false;
	}
        new Loader("/sendMailToFriend", this.onLoadSendMail, "POST",
                          "emailFrom=" + from + "&emailTo=" + to + "&emailLink=" + link
                          + "&emailText=" + message + "&emailName=" + name, this);
    }

    btnSend.onLoadSendMail = function() {
	this.data.parentNode.style.marginTop = "10px";
	this.data.parentNode.innerHTML = this.req.responseText;
	var data = this.data;
	setTimeout(function () { data.div.hide(); }, 1500);
    }
}

function initMyAccount() {
    var formMyAccount = $("myAccount");
    if (formMyAccount == undefined || formMyAccount == null)
	return false;
    var link = $("showChangePwd");
    link.onclick = function() {
	var divToShow = $("changePwdDiv");
	if (divToShow.style.display == "none")
	    divToShow.style.display = "inline";
	else
	    divToShow.style.display = "none";
	return false;
    }
}

function initRegisterForm() {
    var btnReset = $("btnFormReset");
    if (btnReset == undefined || btnReset == null)
	return false;
    btnReset.onclick = function() {
	var fNameField = $("register:firstnameDecorate:firstname");
	var lNameField = $("register:lastnameDecorate:lastname");
	var emailField = $("register:emailDecorate:email");
	var pwdField = $("register:passwordDecorate:password");
	var pwdConfField = $("register:pwdConfirmDecorate:pwdConfirm");
	var nickNameField = $("register:nickNameDecorate:nickName");
	fNameField.value = lNameField.value = emailField.value = pwdField.value = pwdConfField.value = nickNameField.value = "";
	return false;
    }
    btnReset.form.onkeydown = function(event) {
	var c = TtFramework.getKeyCode(event);
	if (c == 13) {
	    $('register:regButton').click();
	    return false;
	}
	return true;
    }
}

function	initThemaTabs() {
    var themaTabs = $("thema_tabs");
    if (themaTabs == null || themaTabs == undefined)
	return ;
    var tabsManager = new TtFramework.TabItemManager();
    var t = themaTabs.getElementsByTagName("div");
    var len = t.length;
    for (var i = 0; i < len; i++) {
	var item = new TtFramework.TabItem(t[i], {
		onTabItemClick : onThemeTabItemClick
	    });
	tabsManager.addItem(item);
    }
    tabsManager.selectItem(0);
}

function	onThemeTabItemClick(item) {
    var id = item.id;
    new Loader("thematabcontent_" + id.substring(4, id.length) + "_" + navigation.id_entity_bean, onThemeTabItemClickOnLoad, "GET", "");
}

function	onThemeTabItemClickOnLoad() {
    var div = $("thema_list");
    if (div != undefined)
	div.innerHTML = this.req.responseText;
    new Loader("resetthema_" + navigation.getCriteriaUrl(), function(){}, "GET", "");
}

function	initAgeTabs() {
    var ageTabs = $("age_tabs");
    if (ageTabs == null || ageTabs == undefined)
	return ;
    var tabsManager = new TtFramework.TabItemManager();
    var t = ageTabs.getElementsByTagName("div");
    var len = t.length;
    for (var i = 0; i < len; i++) {
	var item = new TtFramework.TabItem(t[i], {
		onTabItemClick : onAgeTabItemClick
	    });
	tabsManager.addItem(item);
    }
    tabsManager.selectItem(0);
}

function	onAgeTabItemClick(item) {
    var id = item.id;
    new Loader("agetabcontent_" + id.substring(4, id.length) + "_" + navigation.id_entity_bean, onAgeTabItemClickOnLoad, "GET", "");
}

function	onAgeTabItemClickOnLoad() {
    var div = $("age_list");
    if (div != undefined)
	div.innerHTML = this.req.responseText;
    new Loader("resetage_" + navigation.getCriteriaUrl(), function(){}, null, "GET", "");
}


function	initPerspective() {
    var div = $("nav_view_all");
    if (div == null || div == undefined)
	return ;
    var a = div.getElementsByTagName("a")[0];
    a.onclick = function() {
	if (this.init == undefined) {
	    new Loader("perspective-" + param.get("navigation_tools", "e"), function() {
		    this.data.tpl = this.req.responseText;
		    this.data.popUp = TtFramework.PopUpFactory.getPopUp("perspective", {
			    content:this.data.tpl,
			    position:"absolute",
			    width:"1001px",
			    id:"content_all",
			    title:messages["PUT_IN_PERSPECTIVE"]
			});
		    this.data.popUp.setTop("0px");
		    this.data.popUp.show();
		    extendsDivAll(this.data.popUp.popUp);
		}, "GET", "", this);
	    this.init = true;
	}
	else if (this.popUp != undefined) {
	    this.popUp.show();
	}
	return false;
    }
}

function	extendsDivAll(divAll) {
    try { 
	var timeLine = new TtFramework.TimeLine("timeline_view_all",
						dates,
						{visibleDateTimes: 8,
						 active : false,
						 width : 120,
						 speed : 1000,
						 scrollerButtonHeight : 18,
						 pixelsToKeep : 18,
						 step : 5,
						 cellStyleClass : "dateTimeCell",
						 openCellStyleClass : "openDateTimeCell",
						 buttonStyleClass : "buttonTimeLine"
						});
	    
	var d = $("kronos_view_all");
	var t = d.getElementsByTagName("p");
	var l = t.length;
	for (var i = 0; i < l ; i++) {
	    var p = t[i];
	    if (p.className == "here") {
		var tP = p.id.split("_");
		var date = tP[0];
		var tD = date.split("-");
		if (tD.length == 2) {
		    var name = tP[1];
		    var event = new TtFramework.TimeLine.Event(name, tD[0], name);
		    event.id = tD[0];
		    timeLine.addEvent(event);
		    var event2 = new TtFramework.TimeLine.Event(name, tD[1], name);
		    event2.id = tD[1];
		    timeLine.addEvent(event2);
		    timeLine.joinEvents(event, event2);
		}
		else {
		    var name = tP[1];
		    var event = new TtFramework.TimeLine.Event(name, date, name);
		    event.id = date;
		    timeLine.addEvent(event);
		}
		timeLine.centerOnEvent(event, false);
	    }
	}
    }
    catch (e) {};
}


function	perspectiveExternOnLoad() {
    if (this.data != undefined)
	this.data.onLoad(this.req.responseText);
}

function	initTtL() {
    try {
	var a = $("nav_view_kronos");
	if (a != undefined) {
	    var kl = a.getElementsByTagName("a")[0];
	    a.l = kl;
	    a.onclick = function() {
		this.l.onclick();
	    }
	}
    }
    catch (e) {}

    try {
	a = $("nav_view_age");
	if (a != undefined) {
	    var al = a.getElementsByTagName("a")[0];
	    a.l = al;
	    a.onclick = function() {
		this.l.onclick();
	    }
	}
    }
    catch (e) {}

    try {
	a = $("nav_view_notio");
	if (a != undefined) {
	    var nl = a.getElementsByTagName("a")[0];
	    a.l = nl;
	    a.onclick = function() {
		this.l.onclick();
	    }
	}
    }
    catch (e) {}
    if (kl != undefined) {
	kl.onclick = function() {
	    window.location.href = this.id;
	    return false;
	}
    }
    if (al != undefined) {
	al.onclick = function() {
	    window.location.href = this.id;
	    return false;
	}
    }
    if (nl != undefined) {
	nl.onclick = function() {
	    window.location.href = this.id;
	    return false;
	}
    }
}

function        initSearch() {
    if (typeof(initUserAction) != "undefined")
	initUserAction();
    initSearchField();
}

function initSearchField() {
    var search = $("search");
    if  (search == undefined || search == null)
	return;
    var input = search.getElementsByTagName("input");
    var searchField = input[1];
    searchField.value = messages["SEARCH"];
    TtFramework.TxtFocusOnField(searchField, messages["SEARCH"]);
}

function	bookmark() {
    if (window.sidebar) {
	window.sidebar.addPanel(document.title, window.location.href, "");
    }
    else if (document.all) {
	window.external.AddFavorite(window.location.href, document.title);
    }
}

function extendsLinkToolbar(link, type) {
    if (type == "contact") {
	link.onCreate = function() {
	    initContactDiv(this.popUp);
	}
	link.onShow = function() {
	    initContactDiv(this.popUp);
	}
    }
    if (type == "help") {
	link.onCreate = function() {
	    this.popUp.setTop("0px");
	}
	link.createPopUp = function() {
	    return TtFramework.PopUpFactory.getPopUp(this.type, {
		    content:this.tpl,
		    position:"absolute",
		    goToName:"p_help",
		    title:messages[this.type.toUpperCase() + "_BOX_TITLE"]
		});
	}
    }
    else {
	link.createPopUp = function() {
	    return TtFramework.PopUpFactory.getPopUp(this.type, {
		    content:this.tpl,
		    title:messages[this.type.toUpperCase() + "_BOX_TITLE"]
		});
	}
    }
    link.type = type;
    link.onclick = function() {
	if (this.tpl == undefined) {
	    new Loader("/getTpl_" + this.type, function() {
		    this.data.tpl = this.req.responseText;
		    this.data.popUp = this.data.createPopUp();
		    this.data.popUp.show();
		    if (this.data.onCreate != undefined) {
			this.data.onCreate();
		    }
		}, "GET", "", this);
	}
	else {
	    if (this.popUp.onShow != undefined) {
		this.popUp.onShow();
	    }
	    this.popUp.show();
	}
	return false;
    }
}

function initContactDiv(div) {
    
    var fieldSubject = $("field_subject");
    var fieldText = $("field_text");
    var fieldEmail = $("field_email");
    fieldSubject.value = messages["TEXT_TYPEIT_SUBJECT"];
    fieldEmail.value = messages["TEXT_TYPEIT_EMAIL"];
    fieldText.value = messages["TEXT_TYPEIT_MESSAGE"];
    
    TtFramework.TxtFocusOnField(fieldSubject, messages["TEXT_TYPEIT_SUBJECT"]);
    TtFramework.TxtFocusOnField(fieldEmail, messages["TEXT_TYPEIT_EMAIL"]);
    TtFramework.TxtFocusOnField(fieldText, messages["TEXT_TYPEIT_MESSAGE"]);
    

    var suggest = $("contact_suggest");
    suggest.onchange = function() {
	if (suggest.options.selectedIndex == 0)
	    this.style.background = "white";
	else
	    this.style.background = "#D3D3D3";
    }

    var linkSendSuggest = $("send_suggest");
    linkSendSuggest.div = div;
    linkSendSuggest.onclick = function() {
        var fieldSubject = $("field_subject");
        var fieldText = $("field_text");
        var fieldEmail = $("field_email");
        if (fieldSubject == undefined || fieldSubject == null || fieldSubject.length == 0 || fieldSubject.value == messages["TEXT_TYPEIT_SUBJECT"]
            || fieldText == undefined || fieldText == null || fieldText.length == 0 || fieldText.value == messages["TEXT_TYPEIT_MESSAGE"]
            || fieldEmail == undefined || fieldEmail == null || fieldEmail.length == 0 || fieldEmail.value == messages["TEXT_TYPEIT_EMAIL"]) {
            alert("Champs non remplis");
            return false;
        }
        var suggest = $("contact_suggest");
        if (suggest.options.selectedIndex == 0) {
            alert("Choisissez un type de suggestion");
            return false;
        }
	if (typeof(navigation) != "undefined") {
	    new Loader("/sendMailSuggest", this.onLoadSendMail, "POST",
		       "emailFrom=" + fieldEmail.value + "&emailTo=" + suggest.value + "&emailSubject=" + fieldSubject.value
		       + "&emailText=" + fieldText.value + "&entityBean=" + navigation.entity_bean_id, this);
	}
	else {
	    new Loader("/sendMailSuggest", this.onLoadSendMail, "POST",
		       "emailFrom=" + fieldEmail.value + "&emailTo=" + suggest.value + "&emailSubject=" + fieldSubject.value
		       + "&emailText=" + fieldText.value, this);
	}
    }
    linkSendSuggest.onLoadSendMail = function() {
	this.data.parentNode.style.marginTop = "10px";
	this.data.parentNode.innerHTML = this.req.responseText;
	var data = this.data;
	setTimeout(function () { data.popUp.hide(); }, 4000);
    }
}

function initToolBarAction(s) {
    if ($(s) == null)
	return ;
    var toolbarLink = $(s);
    var isHome = false;
    if ($("home_main") != null)
	isHome = true;
    if (toolbarLink == undefined || toolbarLink == null)
	return ;
    var links = toolbarLink.getElements("a");
    if (!isHome)
	var n = 1;
    else
	var n = 0;
    var contactLink = links[n++];
    var whoLink = links[n++];
    var helpLink = links[n];

    extendsLinkToolbar(contactLink, "contact");
    extendsLinkToolbar(whoLink, "who");
    extendsLinkToolbar(helpLink, "help");
}

function initFooterLink() {
    var footerLink = $("footer_corporate");
    if (footerLink == null || footerLink == undefined)
	return false;

    var links = footerLink.getElementsByTagName("a");
    var contactLink = links[0];
    var whoLink = links[1];
    var helpLink = links[2];

    extendsLinkToolbar(contactLink, "contact");
    extendsLinkToolbar(whoLink, "who");
    extendsLinkToolbar(helpLink, "help");
}
