function checkField(checkElement, valueLength, title) {
    var str = $.trim(checkElement.value);

    if (str == "") {
        alert(title + ": " + "Ce champ ne peut pas etre laisse vide");
        return false;
    }

    if (str.length > valueLength) {
        if(!confirm(title + ": " + "contient plus de " +  valueLength + " caracteres! Continuer?")) {
            return false;
        }
    }
    return str;
}

function checkString(checkValue, valueLength, title) {
    var str = $.trim(checkValue);

    if (str == "") {
        alert(title + ": " + "Ce champ ne peut pas etre laisse vide");
        return false;
    }

    if (str.length > valueLength) {
        if(!confirm(title + ": " + "contient plus de " +  valueLength + " caracteres! Continuer?")) {
            return false;
        }
    }
    return str;
}

function getPost(groupCategoryId, page, type){
    x_getpost(groupCategoryId, page, type, getPost_cb);
}

function getPost_cb(result) {
    if (result.error == 0) {
        if (result.type == "null") {
            writeContent("postContent", result.content);
            $_("categoryName").innerHTML = "Derniers sujets modifi&eacute;s";
        } else {
            $_("postContent").style.position = "relative";
            $("#" + "postContent").slideUp(700, function() {$_("postContent").style.position = "static";});
            if (result.category != "null") {
                var catName = $_("category-name-" + result.category).innerHTML;
                $_("categoryName").innerHTML = "Messages dans la cat&eacute;gorie" + "&nbsp;" + '"' + catName + '"';
                $_("category-count-" + result.category).innerHTML = result.countPost;
            }
            setTimeout(function() {writeContent("postContent", result.content);}, 1000);
        }
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function writeContent(id, content) {
	destroyAllTinyMCEInstance();
	$_(id).style.position = "relative";
    $_(id).innerHTML = content;
    initUpload();
    initHovers();
    initAddPost();
    initEditPost();
    initComments();
    initVideoPlayer();
    initAddPostClick();
    initDeletePostClick();
    initPager("GroupPost");
    initTinyMce("new-message", null);
    $("#" + id).slideDown(1000, function() {$_(id).style.position = "static";});
}

function initComments() {
	$('a.showComment').click(function() {
        var r = this.className.match(/id-comments-([0-9]+)/i);
        if (/state-collapsed/.test(this.className)) {
            getComments(r[1]);
        } else {
            $("#" + "div-comments-" + r[1]).slideUp(700, function() {setCollapsed(r[1]);});
        }
	});
}

function getComments(postId) {
    x_getcomments(postId, getComments_cb);
}

function getComments_cb(result) {
    if (result.error == 0) {
        $_("countComments-" + result.postId).innerHTML = result.countComment;
        if (/state-collapsed/.test($("a.id-comments-" + result.postId).attr("class"))) {
            writeComment(result.postId, result.content);
        } else {
            $("#" + "div-comments-" + result.postId).slideUp(700, function() {
                setCollapsed(result.postId);
                writeComment(result.postId, result.content);
            });
        }
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function saveComment(commentId, comment) {
    x_savecomment(commentId, comment, saveComment_cb);
}

function saveComment_cb(result) {
    if (result.error == 0) {
        getComments(result.postId);
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function deleteComment(commentId) {
    x_deletecomment(commentId, deleteComment_cb);
}

function deleteComment_cb(result) {
    if (result.error == 0) {
        getComments(result.postId);
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function writeComment(id, content) {
    $_("div-comments-" + id).innerHTML = content;
    initAddComment(id);
    initAddCommentClick(id);
    initEditCommnets();
    initDeleteCommnetsClick();
    $("#" + "comments-" + id).removeClass("hide");
    $("#" + "div-comments-" + id).slideDown(700, function() {setExpanded(id);});
}

function setCollapsed(id) {
     var jqCommentsLink = $("a.id-comments-" + id);
     jqCommentsLink.removeClass('state-expanded');
     jqCommentsLink.addClass('state-collapsed');
     $("#" + "comments-" + id).addClass("hide");
}

function setExpanded(id) {
     var jqCommentsLink = $("a.id-comments-" + id);
     jqCommentsLink.removeClass('state-collapsed');
     jqCommentsLink.addClass('state-expanded');
}

function initAddComment(id) {
	$("#" + "id-commentsadd-" + id).click(function(){
        var r = this.id.match(/id-([a-z0-9\-]+)/i);
        if (r && r.length && r[1]) {
            var o = $('#' + r[1]);
            if (!o.length) {
                return false;
            }
            if (/state-collapsed/.test(this.className)) {
                $(this).removeClass('state-collapsed');
                o.removeClass('hide');
                o.slideDown(700, function() {
                    $(this).fadeTo(250, 1.00);
                });
                $(this).addClass('state-expanded');
            } else {
                $(this).removeClass('state-expanded');
                o.slideUp(700).addClass('hide');
                $(this).addClass('state-collapsed');
            }
        }
        return false;
	});
}

function initEditCommnets() {
	$('a.edit-comment').click(function(){
        var jqThis = $(this);
        var commentId = this.id.match(/edit-([0-9]+)/i);
        var jqCommentsDiv = $("#" + "edit-comment-" + commentId[1]);
        if (/state-collapsed/.test(this.className)) {
            jqThis.removeClass("state-collapsed");
            jqCommentsDiv.slideDown(700);
            jqCommentsDiv.removeClass("hide");
            jqThis.addClass("state-expanded");
            initEditCommentClick(commentId[1]);
        } else {
            jqThis.removeClass("state-expanded");
            jqCommentsDiv.addClass("hide");
            jqCommentsDiv.slideUp(700);
            jqThis.addClass("state-collapsed");
        }
	});
}

function initEditCommentClick(id) {
	$("#" + 'edit-comment-button-' + id).click(function(){
        saveComment(id, $_("edit-comment-text-" + id).value);
	});
}

function initDeleteCommnetsClick() {
	$('a.delete-comment').click(function(){
        var commentId = this.id.match(/delete-([0-9]+)/i);
        deleteComment(commentId[1]);
	});
}

function initAddCommentClick(id) {
    var button = $("#" + "commentsadd-button-" + id);
    var text = $_("commentsadd-text-" + id);
    button.click(function(){
        if ($.trim(text.value) == "") {
            alert("Merci d'ins&eacute;rer une valeur");
        } else {
             x_addcomment(id, $.trim(text.value), addComment_cb);
        }
    });
}

function addComment_cb(result) {
    if (result.error == 0) {
        $_("countComments-" + result.postId).innerHTML = result.countComment;
        x_getcomments(result.postId, getComments_cb);
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function initAddPost() {
	$('a.id-newMessage').click(function(){
    var o = $('#' + "newMessage");
    if (/state-collapsed/.test(this.className)) {
        $(this).removeClass('state-collapsed');
        o.removeClass('hide');
        o.slideDown(700, function() {
            $(this).fadeTo(250, 1.00);
        });
        $(this).addClass('state-expanded');
    }  else  {
        $(this).removeClass('state-expanded');
        o.slideUp(700).addClass('hide');
        $(this).addClass('state-collapsed');
    }
    return false;
	});
}

function initAddPostClick() {
    $("#" + "postadd-button").click(function(){
        var message = getTinyMceContent("new-message");
		
        /* textarea 
        var message = checkField($_("new-message"), 4096, "Message ");
        var r = /\n/g;
        message = message.replace(r, "<br>");
         textarea */
        var title = checkField($_("new-title"), 255, "Titre");
       // var message = checkString(message, 4096, "Message ");
        if (title && message) {
            x_addpost(title, message, $_("saveFileName-add").value, $_("new-category").value, addpost_cb);
        }
    });
}

function addpost_cb(result) {
    if (result.error == 0) {
        getPost(result.categoryId, null, 1);
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function initEditPost() {
	$('a.edit-post').click(function() {
        var jqThis = $(this);
        var commentId = this.id.match(/edit-post-([0-9]+)/i);
        var jqCommentsDiv = $("#" + "edit-postContent-" + commentId[1]);
        if (/state-collapsed/.test(this.className)) {
            jqThis.removeClass("state-collapsed");
            jqCommentsDiv.slideDown(700);
            jqCommentsDiv.removeClass("hide");
            jqThis.addClass("state-expanded");
            initTinyMce("edit-post-text-" + commentId[1], $_("view-post-text-" + commentId[1]).innerHTML);
            /* textarea 
            var msg = $_("view-post-text-" + commentId[1]).innerHTML;
            var r = /<br>/ig;
            msg = msg.replace(r, "\n");
            $_("edit-post-text-" + commentId[1]).value = msg;
             textarea */
            initEditPostClick(commentId[1]);
        } else {
            jqThis.removeClass("state-expanded");
            jqCommentsDiv.addClass("hide");
            jqCommentsDiv.slideUp(700);
            jqThis.addClass("state-collapsed");
        }
	});
}

function initEditPostClick(id) {
	$("#" + 'edit-post-button-' + id).click(function() {
        var title = checkField($_("edit-title-" + id), 255, "Titre");
        var message = getTinyMceContent("edit-title-" + id);
      //  var message = checkString(message, 4096, "Message ");
        /* textarea 
        var message = checkField($_("edit-post-text-" + id), 4096, "Message ");
        var r = /\n/g;
        message = message.replace(r, "<br>");
         textarea */
        if (title && message) {
			/*var obj = $_("edit-post-" + id);
			var jqThis = $(obj);
			var commentId = obj.id.match(/edit-post-([0-9]+)/i);
			var jqCommentsDiv = $("#" + "edit-postContent-" + commentId[1]);
			jqThis.removeClass("state-expanded");
            jqCommentsDiv.addClass("hide");
            jqCommentsDiv.slideUp(700, function() {
				destroyTinyMce("edit-post-text-" + id);
				*/
				x_editpost(id, title, message, $_("saveFileName-edit-" + id).value, $_("edit-category-" + id).value, editpost_cb);
			/*});
            jqThis.addClass("state-collapsed");*/
        }
	});
}

function editpost_cb(result) {
    if (result.error == 0) {
        if (result.oldCategory) {
           $_("category-count-" + result.oldCategory).innerHTML = result.countOldCategory;
        }
        getPost(result.categoryId, null, 1);
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function initDeletePostClick() {
	$('a.delete-post').click(function(){
        var postId = this.id.match(/delete-post-([0-9]+)/i);
        x_deletepost(postId[1], deletepost_cb);
	});
}

function deletepost_cb(result) {
    if (result.error == 0) {
        getPost(result.categoryId, null, 1);
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}


function initCategory() {
	$('a.category').click(function() {
        if (r = this.id.match(/category-([0-9]+)/i)) {
            getPost(r[1], null, 1);
        }
        if (this.id.match(/category-all/i)) {
            getPost(null, null, 1);
        }

	});
}

function getPageGroupPost(page, categoryId) {
    getPost(categoryId, page, 1);
}

function getLoadVideo(suffix) {
    x_getloadvideo(suffix, getLoadVideo_cb);
}

function getLoadVideo_cb(result) {
    if (result.error == 0) {
        var uploadForm = $_("uploadFile-form-" + result.suffix);
        var saveFile = $_("saveFileName-" + result.suffix);
        uploadForm.action = result.url;
        saveFile.value = "video";
        uploadForm.submit();
    } else {
        alert("Error code: " + result.error + " \nError Message: " + result.msg);
    }
}

function initVideoPlayer() {
    $('a.videoFile').click(function() {
        groupVideoPlayer(this.id);
	});
}

function groupPostInit(groupId, categoryId) {
  	if (typeof($) == 'undefined') {
		return false;
	}
    initCategory();
    initSearchBar_v2("Group");
    getPost(categoryId, null, 1);
}        // Showing Sajax Status
        AST_load = "Loading...";
        AST_save = "Saving...";
        AST_clear = "";
        
        function setAjaxStatus(str) {
            if (document.getElementById("ajaxStatus")) {
                var div = document.getElementById("ajaxStatus");
            } else {
                var div  = document.createElement("DIV");
                div.className = "ajaxStatus";
                div.id = "ajaxStatus";
                div.setAttribute("id", "ajaxStatus");
                document.body.appendChild(div);
            }
            div.innerHTML = str;
            if (str == AST_clear) {
                div.style.visibility = "hidden";
                return;
            }
            
            var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
            var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
            var width = document.documentElement.clientWidth || document.body.clientWidth;
            
            div.style.left = width - div.clientWidth + scrollX +"px";
            div.style.top = scrollY+"px";
            div.style.visibility = "visible";
        }
		// remote scripting library
		// (c) copyright 2005 modernmethod, inc
		var sajax_debug_mode = false;
		var sajax_request_type = "GET";
		var sajax_target_id = "";
		var sajax_failure_redirect = "";

		function sajax_debug(text) {
			if (sajax_debug_mode)
				alert(text);
		}

 		function sajax_init_object() {
 			sajax_debug("sajax_init_object() called..")

 			var A;

 			var msxmlhttp = new Array(
				'Msxml2.XMLHTTP.5.0',
				'Msxml2.XMLHTTP.4.0',
				'Msxml2.XMLHTTP.3.0',
				'Msxml2.XMLHTTP',
				'Microsoft.XMLHTTP');
			for (var i = 0; i < msxmlhttp.length; i++) {
				try {
					A = new ActiveXObject(msxmlhttp[i]);
				} catch (e) {
					A = null;
				}
			}

			if(!A && typeof XMLHttpRequest != "undefined")
				A = new XMLHttpRequest();
			if (!A)
				sajax_debug("Could not create connection object.");
			return A;
		}

		var sajax_requests = new Array();

		function sajax_cancel() {
			for (var i = 0; i < sajax_requests.length; i++)
				sajax_requests[i].abort();
		}

		function sajax_do_call(func_name, args) {
			var i, x, n;
			var uri;
			var post_data;
			var target_id;
            setAjaxStatus(AST_load);
			sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id);
			target_id = sajax_target_id;
			if (typeof(sajax_request_type) == "undefined" || sajax_request_type == "")
				sajax_request_type = "GET";

			uri = "http://www.jobmeeters.com/talents/index.php?view=GroupPost%2FIndex";
			if (sajax_request_type == "GET") {

				if (uri.indexOf("?") == -1)
					uri += "?rs=" + encodeURIComponent(func_name);
				else
					uri += "&rs=" + encodeURIComponent(func_name);
				uri += "&rst=" + encodeURIComponent(sajax_target_id);
				uri += "&rsrnd=" + new Date().getTime();

				for (i = 0; i < args.length-1; i++)
					uri += "&rsargs[]=" + encodeURIComponent(args[i]);

				post_data = null;
			}
			else if (sajax_request_type == "POST") {
				post_data = "rs=" + encodeURIComponent(func_name);
				post_data += "&rst=" + encodeURIComponent(sajax_target_id);
				post_data += "&rsrnd=" + new Date().getTime();

				for (i = 0; i < args.length-1; i++)
					post_data = post_data + "&rsargs[]=" + encodeURIComponent(args[i]);
			}
			else {
				alert("Illegal request type: " + sajax_request_type);
			}

			x = sajax_init_object();
			if (x == null) {
				if (sajax_failure_redirect != "") {
					location.href = sajax_failure_redirect;
					return false;
				} else {
					sajax_debug("NULL sajax object for user agent:\n" + navigator.userAgent);
					return false;
				}
			} else {
				x.open(sajax_request_type, uri, true);
				// window.open(uri);

				sajax_requests[sajax_requests.length] = x;

				if (sajax_request_type == "POST") {
					x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
					x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				}

				x.onreadystatechange = function() {
					if (x.readyState != 4)
						return;

					sajax_debug("received " + x.responseText);

					var status;
					var data;
					var txt = x.responseText.replace(/^\s*|\s*$/g,"");
					status = txt.charAt(0);
					data = txt.substring(2);

					if (status == "") {
						// lets just assume this is a pre-response bailout and let it slide for now
					} else if (status == "-")
						alert("Error: " + data);
					else {
                        setAjaxStatus(AST_clear);
						if (target_id != "")
							document.getElementById(target_id).innerHTML = eval(data);
						else {
							try {
								var callback;
								var extra_data = false;
								if (typeof args[args.length-1] == "object") {
									callback = args[args.length-1].callback;
									extra_data = args[args.length-1].extra_data;
								} else {
									callback = args[args.length-1];
								}
								callback(eval(data), extra_data);
							} catch (e) {
								sajax_debug("Caught error " + e + ": Could not eval " + data );
							}
						}
					}
				}
			}

			sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
			x.send(post_data);
			sajax_debug(func_name + " waiting..");
			delete x;
			return true;
		}

		
		// wrapper for refreshEnterprise
		function x_refreshEnterprise() {
			sajax_do_call("refreshEnterprise",
				x_refreshEnterprise.arguments);
		}

		
		// wrapper for refreshKnowhow
		function x_refreshKnowhow() {
			sajax_do_call("refreshKnowhow",
				x_refreshKnowhow.arguments);
		}

		
		// wrapper for refreshMyweb
		function x_refreshMyweb() {
			sajax_do_call("refreshMyweb",
				x_refreshMyweb.arguments);
		}

		
		// wrapper for refreshWishList
		function x_refreshWishList() {
			sajax_do_call("refreshWishList",
				x_refreshWishList.arguments);
		}

		
		// wrapper for removeFile
		function x_removeFile() {
			sajax_do_call("removeFile",
				x_removeFile.arguments);
		}

		
		// wrapper for addTag
		function x_addTag() {
			sajax_do_call("addTag",
				x_addTag.arguments);
		}

		
		// wrapper for selectedTag
		function x_selectedTag() {
			sajax_do_call("selectedTag",
				x_selectedTag.arguments);
		}

		
		// wrapper for selectedTagType
		function x_selectedTagType() {
			sajax_do_call("selectedTagType",
				x_selectedTagType.arguments);
		}

		
		// wrapper for searchUser
		function x_searchUser() {
			sajax_do_call("searchUser",
				x_searchUser.arguments);
		}

		
		// wrapper for selectCategory
		function x_selectCategory() {
			sajax_do_call("selectCategory",
				x_selectCategory.arguments);
		}

		
		// wrapper for saveSearch
		function x_saveSearch() {
			sajax_do_call("saveSearch",
				x_saveSearch.arguments);
		}

		
		// wrapper for searching
		function x_searching() {
			sajax_do_call("searching",
				x_searching.arguments);
		}

		
		// wrapper for changeTheme
		function x_changeTheme() {
			sajax_do_call("changeTheme",
				x_changeTheme.arguments);
		}

		
		// wrapper for getpost
		function x_getpost() {
			sajax_do_call("getpost",
				x_getpost.arguments);
		}

		
		// wrapper for getcomments
		function x_getcomments() {
			sajax_do_call("getcomments",
				x_getcomments.arguments);
		}

		
		// wrapper for addcomment
		function x_addcomment() {
			sajax_do_call("addcomment",
				x_addcomment.arguments);
		}

		
		// wrapper for savecomment
		function x_savecomment() {
			sajax_do_call("savecomment",
				x_savecomment.arguments);
		}

		
		// wrapper for deletecomment
		function x_deletecomment() {
			sajax_do_call("deletecomment",
				x_deletecomment.arguments);
		}

		
		// wrapper for addpost
		function x_addpost() {
			sajax_do_call("addpost",
				x_addpost.arguments);
		}

		
		// wrapper for deletepost
		function x_deletepost() {
			sajax_do_call("deletepost",
				x_deletepost.arguments);
		}

		
		// wrapper for editpost
		function x_editpost() {
			sajax_do_call("editpost",
				x_editpost.arguments);
		}

		
		// wrapper for getloadvideo
		function x_getloadvideo() {
			sajax_do_call("getloadvideo",
				x_getloadvideo.arguments);
		}

		