	function initRAJAX(_options) {
		var options = $extend({
			rel: 'RAJAX',
			rewriteURL: false
			
		}, _options || {});
		var elements = $$('a','select').filter(function(el) {
			if ((el.get('rel')) && (el.get('rel').indexOf(options.rel) != -1) || (el.get('title')) && (el.get('title').indexOf(options.rel) != -1)) 
				return true;
			else
				return false;
		});
		
		for (var i = 0; i < elements.length; i++) {
			var el = elements[i];
			var Evt = 'click';
			if(el.get('tag')=="select")Evt='change';
			
			//alert(el+'/'+Evt);
			
			//el.removeEvent(Evt,addRajax);
			if(el.retrieve('rajax')!=true){
				el.addEvent(Evt,addRajax);
			}
			//alert(el.retrieve('rajax'));
			el.store('rajax', true);
		}
		function addRajax(){
				this.blur();
				var sEl = this;
				if (this.getElements("a").length > 0){
					sEl = this.getElements("a")[0];}
				else {img_description = sEl.get('html');} //Custom Greg
				
				
				var urlEl = sEl.get('href');
				
				
				var _options = $extend({
					image: this.get('href'),
					startElement: sEl,
					url:urlEl
				}, options || {});
				_options.image = this.get('href');
				_options.url = urlEl;
				var rajax = new RAJAX(_options);
				//galerie.preloadImage();
				//galerie.show();
				rajax.ReqAJAX(sEl);
				return false;
			}
	}
	
	var RAJAX = function(_options) {		
		var options = $extend({
			rewriteURL: false,
			image: false,
			url:"",
			rel: 'RAJAX'
		}, _options || {});
		
		var instance = this;
		
		this.ReqAJAX = function(sEl){
			
			var rURL = options.rewriteURL;
			
			//links.each(function(test){alert(test)})
			//Récupère le contenu de la balise Rel  ou Title (si "select") entre les []
			var set = false;
			
			if(sEl.get('tag')!="select"){
				if ((sEl.get('href').indexOf(options.image) != -1) && (sEl.get('rel')) && (sEl.get('rel').indexOf(options.rel + '[' != -1))) {
					var rel = sEl.get('rel');
					set = instance.scanRel("after", options.rel + "[", this.scanRel("before", "]", rel));
					setTest = instance.scanRel("before", ",", set);
				}
			}
			else{
				if ((sEl.get('title')) && (sEl.get('title').indexOf(options.rel + '[' != -1))) {
					var rel = sEl.get('title');
					set = instance.scanRel("after", options.rel + "[", this.scanRel("before", "]", rel));
					setTest = instance.scanRel("before", ",", set);
					
				}
			}
			
			
			//insert les argument de la balise Rel dans un tableau
			var arSwitch = new Array();
			arSwitch = set.split(',');
			
			var nGet = arSwitch[0];
			
			var pGet = '';
			for(i=1; i<=nGet*2; i+=2){
				pGet += arSwitch[i]+"="+arSwitch[i+1];
				if(i<=nGet)pGet +='&';
			}
			
			//Condition pour récupérer le href dans les option si "select"
			if(sEl.get('tag')=="select"){
				for(i=1; i<=nGet*2; i+=2){
					if(arSwitch[i]=='html'){
						var urlReq = arSwitch[i+1];
					}
				}
			}
			
			if(rURL==false){
				var urlEnd = options.url.lastIndexOf('.php');
				var urlLength = urlEnd + 4;
				var urlReq = options.url.substr(0,urlLength);
			}
			if(rURL==true){
				for(i=1; i<=nGet*2; i+=2){
					if(arSwitch[i]=='rU'){
						var urlReq = arSwitch[i+1];
					}
				}
			}
			
			var arSuccess = new Array();
			var larSwitch = arSwitch.length;
			for(i=0;i<larSwitch;i++){
				El = arSwitch[i];
				ElExt = El.substr(-1);
				//alert(El);
				if(ElExt==')'){
					arSuccess[i]=El;
					arSwitch.splice(i);
				}
			}
				
			if(sEl.get('tag')=="select"){
				var selectValue = sEl.getSelected()[0].getProperty('value');
				if(nGet>0)pGet += '&';
				pGet += sEl.get('id')+'Value='+selectValue;
			}
			
			//Requête vers la page de modele
			var req = new Request.HTML({
				url: urlReq,
				data : pGet,
				method: 'get',
				evalResponse:false,
				evalScripts:false,
				
				onSuccess: function(rNodes,rElement,rHTML,rJS ){
					var arSwitchL = arSwitch.length;
					for (i=2; i<arSwitchL;i++){
						//alert(rElement);
						var  element = rElement.filter('#'+arSwitch[i]);
						
						if(element){
							
							element.replaces($(arSwitch[i]));
						
						}
						else{
							alert("L'élément n'existe pas");
							
						}
						
					}
					
					initRAJAX({rewriteURL:rURL});
					
					initDOM();
					for(i=0;i<larSwitch;i++){
						eval(arSuccess[i]);
					}

				},
				// Our request will most likely succeed, but just in case, we'll add an
				// onFailure method which will let the user know what happened.
				onFailure: function(){
					alert('Erreur du serveur');
				}
			}).send();
			
		}
		
		this.scanRel = function(where, needle, string) {
			var newstring = '';
			if (where == "after") {
				var startpos = string.indexOf(needle) + needle.length;
				var endpos = string.length;
			} else if (where == "before") {
				var startpos = 0;
				var endpos = string.indexOf(needle);
			}
			for (var i = startpos; i < endpos; i++) {
				newstring += string.charAt(i);
			}
			return newstring;
		}
		
		
	}

