/* simple ajax object */
function my_ajax()
{
	this.request_state = function (http_request,
	                   id,
				       success_callback,
				       error_callback)
	{
		try {
			if (http_request.readyState == 4) {
				if (http_request.status == 200) {
					success_callback(http_request, id);
				} else {
					error_callback(id);
				}
			}
		}
		catch (e) {
			error_callback(id);
		}
	}

	this.make_request = function (url,
	                  id,
				      success_callback,
				      error_callback)
	{
		var http_request = false;

		if (window.XMLHttpRequest) {
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				http_request.overrideMimeType('text/xml');
			}
		} else if (window.ActiveXObject) {
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}

		if (!http_request) {
			error_callback(id);
			return (false);
		}
		request_ptr = this.request_state;
		http_request.onreadystatechange = function() {
			request_ptr(http_request,
			        id,
				    success_callback,
				    error_callback);
		};
		try {
			http_request.open('GET', url, true);
			http_request.send(null);
		} catch (e) {
			error_callback(id);
			return (false);
		}
		return (true);
	}

	this.extract_xml = function (http_request)
	{
		return (this.clean(http_request.responseXML.documentElement));
	}

	this.clean = function (doc_elem)
	{
		var bal = doc_elem.getElementsByTagName('*');

		for(i = 0; i < bal.length; i++){
			a = bal[i].previousSibling;
			if(a && a.nodeType==3) {
				if(!a.data.replace(/\s/g,'')) {
					a.parentNode.removeChild(a);
				}
			}
			b = bal[i].nextSibling;
			if(b && b.nodeType==3) {
				if(!b.data.replace(/\s/g,'')) {
					b.parentNode.removeChild(b);
				}
			}
		}
		return (doc_elem);
	}
}
var myajax = new my_ajax();
/* nick for quick answer */
function insUN(nick) {
	var d = document.frmpost1;
	d.req_message.focus();
	if (d.req_message.value.length > 0)
		d.req_message.value = "" + d.req_message.value + "\n" + nick + " ";
	else
		d.req_message.value = "" + d.req_message.value + nick + " ";
}
/* nav menu */
function show_menu(id) {
    if ($('#' + id).css("display") == 'block') {
        return;
    }
    $('#brdmenu>dl>dd').css("display","none");
    $('#brdmenu>dl>dt').removeClass("menudthover");
    $('#base_' + id).addClass("menudthover");
	var d = document.getElementById(id);
	if (d) d.style.display = 'block';
	return;
}
/* empty function */
function empty()
{
    ;
}
/* notation system */
/* moving hover elems, change the bar */
function move_notation(id, target)
{
    for (var i = 1; i <= 10; i++) {
        var d = document.getElementById('note_' + id + '_' + i);
        d.className = (i <= target ? 'active' : 'inactive');
        if (i == target) {
            d.innerHTML = (target == 10 ? 'A' : target);
        } else {
            d.innerHTML = '&nbsp;&nbsp;';
        }
    }
}
/* we vote, make a request and check it */
function do_vote(tid, id, note, url)
{
    var d = document.getElementById('vote_status_' + id);
    d.innerHTML = '';
    d.style.display = 'none';
    myajax.make_request(
        url + 'votes.php?id=' + id + '&note=' + note + '&tid=' + tid,
        id,
        function (res, id)
        {
            var r = eval("(" + res.responseText + ")");
            var d = document.getElementById('vote_status_' + id);
            d.style.display = 'block';
            d.innerHTML = r.msg;
            if (r.status == 0) {
                d.className = 'error';
            } else {
                d.className = 'success';
                setTimeout("redraw_votes(" + id + ", " + r.moyenne + ")", 1500);
            }
        },
        function (id)
        {
            var d = document.getElementById('vote_status_' + id);
            d.innerHTML = 'Erreur lors du vote, réessayez';
            d.className = 'error';
            d.style.display = 'block';
        }
        );
}
/* we voted, redraw the notations bar with the final value */
function redraw_votes(id, moyenne)
{
    var td_note = document.getElementById('td_note_' + id);
    var notation = document.getElementById('notation_' + id);
    var bar = document.getElementById('bar_' + id);
    var status = document.getElementById('vote_status_' + id);
    td_note.removeChild(status);
    notation.removeChild(bar);
    for (var i = 1; i <= 10; i++) {
        var d = document.getElementById('note_' + id + '_' + i);
        d.onmouseover = null;
        d.href = 'javascript:empty();';
        d.style.cursor = 'default';
        if (i <= Math.floor(moyenne)) {
            d.className = 'active';
        } else {
            d.className = 'inactive';
        }
        if (i == Math.floor(moyenne)) {
            if (i == 10) {
                d.innerHTML = 'A';
            } else {
                if (i == moyenne) {
                    d.innerHTML = i;
                } else {
                    d.innerHTML = i + '+';
                }
            }
        } else {
            d.innerHTML = '&nbsp;&nbsp;';
        }
    }
}

function show_tourneys(category)
{
    var href_tourneys = document.getElementById('tourney_next_' + category);
    var span_tourney = document.getElementById('tourney_next_content_' + category);
    href_tourneys.style.display = 'none';
    span_tourney.style.display = 'inline';
    return (false);
}

(function($) {
	/**
	 * equalizes the heights of all elements in a jQuery collection
	 * thanks to John Resig for optimizing this!
	 * usage: $("#col1, #col2, #col3").equalizeCols();
	 */

	$.fn.equalizeCols = function(){
		var height = 0,
			reset = $.browser.msie ? "1%" : "auto";

		return this
			.css("height", reset)
			.each(function() {
				height = Math.max(height, this.offsetHeight);
			})
			.css("height", height)
			.each(function() {
				var h = this.offsetHeight;
				if (h > height) {
					$(this).css("height", height - (h - height));
				};
			});

	};

})(jQuery);

/* events binding */
$(document).ready(function() {
	/* hide menu when hovering in/out */
	$('#brdmenu>dl>dd').hover(function() {empty();}, function () {show_menu('null');});
	$('#brdtitle').hover(function() {show_menu('null');}, function () {empty();});
	$('#brdwelcome').hover(function() {show_menu('null');}, function () {empty();});
	$('.hide_me_message').click(function (event) {
		event.preventDefault();
		$('.hide_me_' + $(this).attr("name")).show();
		$('#hide_me_' + $(this).attr("name")).hide();
	    });
	// hides links in the footer
	$('#related_links').hide();
	// give some time to analytics
	setTimeout('startGA();', 500);
});