/* $Id: linkjax.js 887 2009-11-03 15:16:45Z mike007.devpwsphp $ */
/*
 * LinkJax 1.0 - Jeff Minard ( http://jrm.cc/ )
 * Heavily inspired by AJFORM - 'World's Easiest JavaScript AJAX ToolKit'
 *  - http://www.redredmusic.com/brendon/ajform/
 */

var linkjax_xmlhttp;
var userFunc;

function linkjax()
{

	if (window.XMLHttpRequest)
	{
		linkjax_xmlhttp = new XMLHttpRequest()
	}

	var everyLink = getElementsByClass(document, 'linkjax', 'a');
	for(var linkID in everyLink)
	{
		everyLink[linkID].onclick = fetchjax;
	}

}


function fetchjax() {

	userFuncName = this.getAttribute('rel');
	val = this.getAttribute('id');
	if( userFuncName == null || userFuncName == '' ) // no function defined, process link normally
		return true;

	userFunc = userFuncName;

	if(window.ActiveXObject)
		linkjax_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

	if(linkjax_xmlhttp && linkjax_xmlhttp.readyState < 4)
		linkjax_xmlhttp.abort();

	linkjax_xmlhttp.onreadystatechange = processjax;
	linkjax_xmlhttp.open("GET", this.href+"&linkjax="+(Math.random()*99999)); // random for IE to stop caching...stupid ie
	linkjax_xmlhttp.send(null);

	return false; // AJAX called, tell browser to stop the follow through on the link

}

function processjax() {


	if(linkjax_xmlhttp.readyState == 4 && linkjax_xmlhttp.status == 200)
	{
		callThisFunc = userFunc+"(linkjax_xmlhttp.responseText, 1,val)";
		eval(callThisFunc); // success!
	}

	if(linkjax_xmlhttp.readyState == 4 && linkjax_xmlhttp.status != 200)
	{
		callThisFunc = userFunc+"('', 0)";
		eval(callThisFunc); // failed
	}

}

addLoadEvent(linkjax);



// addLoadEvent(): care of Simon Willison ( http://simon.incutio.com/ )
function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			oldonload();
			func();
		}
	}
}

// getElementsByClass() care of Dustin Diaz ( http://www.dustindiaz.com/getelementsbyclass )
function getElementsByClass(node,searchClass,tag)
{
	var classElements = new Array();
	if ( node == null ) node = 'document';
	if ( tag == null ) tag = 'a';
	var els = node.getElementsByTagName(tag); // use "*" for all elements
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++)
	{
		if ( pattern.test(els[i].className) )
		{
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function callBackFunction(data, success, val)
{
	try
	{
		if(val != nbr)
		{
			document.getElementById("replaceMyContents_"+nbr).style.display="none";
		}
	}
	catch(erreur)	{}

	document.getElementById("replaceMyContents_"+val).innerHTML = data;
	nbr = val;

	var el= document.getElementById("replaceMyContents_"+val);
	if(el.style.display=="block")	el.style.display="none";
	else							el.style.display="block";
}
