

var dwAvailabilityChecker = new Class({
	
	//implements
	Implements: [Options],

	//options
	options: {
		trigger: 'keyup',
		offset: { x:0, y:0 },
		element: '',
		minLength: 2,
		availableClass: 'available',
		takenClass: 'taken',
		availableImage: '',
		takenImage: '',
		url: 'ajax-username-check.php'
	},
	
	//initialization
	initialize: function(options) {
		//set options
		this.setOptions(options);
		
		//validate it
		this.validate();
	},
	
	//a method that does whatever you want
	validate: function() {
		this.options.element.addEvent(this.options.trigger,function(e) {
			if(this.options.element.value.length >= this.options.minLength) {
				var othis = this;
				var request = new Request({
					url: othis.options.url,
					method: 'post',
					data: {
						username: othis.options.element.value,
						ajax: 1,
						action: 'checkLogin',
					},
					onRequest: function() {
						//remove existing classes
						othis.options.element.removeClass(othis.options.availableClass).removeClass(othis.options.takenClass);
					},
					onComplete: function(response) {
						//add class
						if(response == 1){
							othis.options.element.addClass(othis.options.availableClass);
							if(othis.options.onAvailable) othis.options.onAvailable();
						}else{
							othis.options.element.addClass(othis.options.takenClass);
							if(othis.options.onTaken) othis.options.onTaken();
						}
						//othis.injectImage(response == 1 ? othis.options.availableImage : othis.options.takenImage);
					}
				}).send();
			}
		}.bind(this));
	},
	
	//adds the image
	injectImage: function(image) {
		
		//figure out its position
		var pos = this.options.element.getCoordinates();
		
		var img = new Element('img',{
			src: image,
			styles: {
				'z-index': 100000,
				'position': 'absolute',
				'top': pos.top + this.options.offset.y,
				'left': pos.left + pos.width + this.options.offset.x
			}
		}).inject(document.body);
		
		
	}
	
});


window.addEvent('domready', function() {
	
	function navLog() {
		if ($('retourMenuLien')) {
			$('retourMenuLien').addEvent('click', function() {
								   
				$('ajaxLogW').empty();
				$('menuLogW').setStyle('display', 'block');
				//scr.changeSteps();
			
			});	
		}
	}
	
	if ($('logM')) {
		//var scr = new MakeScrollbar({content:$('logM'),ignoreMouse:false,id:'scrollbarTchat', top:140});
		//scr.changeSteps();
		if($$('.sessions-item').length > 0) 
		{
			$$('.sessions-item').each(function(el, index)
			{
				var lien = el.getElement('a');
				var itemUid = lien.get('rel');
				var nomSession = el.getElement('.titre').get('text');
				var dateSession = el.getElement('.date').get('text');
				
				lien.addEvents(
				{
					'click':function(e)
					{
						if(e) {e.stop()};
						new Request.HTML({
							method: 'post',
							url: AJAXurl,
							data: { 'action' : 'getLog', 'itemUid' : itemUid }, 
							onRequest: function()
							{
								//div.addClass('loading');
							},
							onSuccess: function(responseText, responseHTML, responseXML) {
								$('menuLogW').setStyle('display','none');
								//$('logM').adopt(responseHTML);
								$('ajaxLogW').set('html', responseXML);
								//div.removeClass('loading');
								$('nomSession').set('text', nomSession);
								$('dateSession').set('text', dateSession);
								navLog();
								//scr.changeSteps();
							},
							onFailure: function(responseText, responseXML) {
								// Nothing
							}
						}).send();
					}
				});
			});
		}
		
	}
	
	var AJAXurl = 'http://www.michaelguigou.com/index.php?id=54';
	
	var canSubmit = false;
	
	if ($('loginInput')) {
		var validator = new dwAvailabilityChecker({
			trigger: 'keyup',
			element: $('loginInput'),
			availableImage: 'fileadmin/templates/images/circle_green.png',
			takenImage: 'fileadmin/templates/images/circle_red.png',
			offset: { x: 4, y: 4 },
			minLength: 3,
			url: AJAXurl,
			onAvailable:function()
			{
				canSubmit = true;
				$('pseudoSubmit').erase('disabled');
			},
			onTaken:function()
			{
				canSubmit = false;
				$('pseudoSubmit').set('disabled','disabled');
			}
		});
	}

	if ($('messagesUl') || $('listeUl')) {
	new Request({
			method: 'post',
			url: AJAXurl,
			data: { 'action' : 'eraseTime' }, 
			onSuccess: function(responseTree, responseElements, responseHTML) {
				
			},
			onFailure: function(responseText, responseXML) {
				
			}
		}).send();
	
	}
	
	function getNewElements( ) {
		
		if($$('.item').length > 0) 
		{
			$$('.item').each(function(el, index)
			{
				if(!el.isPassed)
				{
					el.isPassed = 1;
					var accept = el.getElement('a.accept');
					var refus = el.getElement('a.refus');
					var texte = '<p>'+el.getElement('.item-texte').get('html')+'</p>';
					var itemUid = accept.get('rel');
					
					accept.addEvents(
					{
						'click':function(e)
						{
							if(e) {e.stop()};
							$('responseTo').set('html', texte);
							$('resultAJAX').set('html', '');
							new Request({
								method: 'post',
								url: AJAXurl,
								data: { 'action' : 'acceptMsg', 'itemUid' : itemUid }, 
								onSuccess: function(responseText, responseXML) {
									el.setStyle('overflow','hidden');
									new Fx.Morph(el, {duration:300,onComplete: function(){
											el.dispose();
										}}).start({height:0, margin:0, padding:0});
								},
								onFailure: function(responseText, responseXML) {
									$('resultAJAX').set('html', '');
								}
							}).send();
						}
					});
					
					refus.addEvents(
					{
						'click':function(e)
						{
							if(e) {e.stop()};
							$('resultAJAX').set('html', '');
							new Request({
								method: 'post',
								url: AJAXurl,
								data: { 'action' : 'refusMsg', 'itemUid' : itemUid }, 
								onSuccess: function(responseText, responseXML) {
									el.setStyle('overflow','hidden');
									new Fx.Morph(el, {duration:300,onComplete: function(){
											el.dispose();
										}}).start({height:0, margin:0, padding:0});
								},
								onFailure: function(responseText, responseXML) {
									$('resultAJAX').set('html', '');
								}
							}).send();
						}
					});
				}
			});
		}
	}
	
	// Update les questions coté admin
	if ($('messagesUl')) {
		
		var messagesUl = $('messagesUl');
		var requestM = new Request.HTML({
			method: 'post',
			url: AJAXurl,
			data: { 'action' : 'getNewUserMsgs' }, 
			onSuccess: function(responseTree, responseElements, responseHTML) {
				$$(responseTree).inject('messagesUl','top');
				document.getElementById('messagesW').scrollTop = document.getElementById('messagesW').scrollHeight;
				getNewElements();
			},
			onFailure: function(responseText, responseXML) {
				messagesUl.set('html', '');
			}
		});
		
		var requestConnected = new Request.HTML({
			method: 'post',
			url: AJAXurl,
			data: { 'action' : 'getNbConnected' }, 
			onSuccess: function(responseTree, responseText, responseHTML) {
				$$('#spanCount').set('text',responseHTML);
			},
			onFailure: function(responseText, responseXML) {
				$$('#spanCount').set('text',responseText);
			}
		});
		
		var updateMTchat = function() {
			requestM.send();
			requestConnected.send();
		}
		
		updateMTchat.periodical(6000);
		
	}
	
	
	// Messages de Micha
	if ($('responseForm')) {
		$('responseForm').addEvent('submit', function(e) {
			new Event(e).stop();
			new Request({
				method: "post",
				url: AJAXurl,
				onSuccess: function(responseText, responseXML) {
					$('reponseTxt').set('value', '');
					$('resultAJAX').set('html', responseText);
				},
				onFailure: function(responseText, responseXML) {
					$('resultAJAX').set('html', '');
				}
			}).send(this.toQueryString());
		});
	}
	
	// Messages d'utilisateurs
	function sendQuestion() {
		if ($('questionForm')) {
			$('questionForm').addEvent('submit', function(e) {
				new Event(e).stop();
				new Request({
					method: "post",
					url: AJAXurl,
					onSuccess: function(responseText, responseXML) {
						$('question').set('value', '');
						$('resultAJAX').set('html', responseText);
						clearResult.delay(5000);
					},
					onFailure: function(responseText, responseXML) {
						$('resultAJAX').set('html', '');
					}
				}).send(this.toQueryString());
			});
		}
	}
	
	function clearResult()
	{
		$('resultAJAX').set('html','');
	}
	
	sendQuestion();
	
	
	// Connexion utilisateurs
	if ($('connexionSC')) {
		$('connexionSC').addEvent('submit', function(e) {
			new Event(e).stop();
			if(canSubmit)
			{
				new Request({
					method: "post",
					url: AJAXurl,
					onSuccess: function(responseText, responseXML) {
						//$('question').set('value', '');
						$('tchat').set('html', responseText);
						// Update les questions reponses coté client
						setTimer();
						sendQuestion();
					},
					onFailure: function(responseText, responseXML) {
						$('resultAJAX').set('html', '');
					}
				}).send(this.toQueryString());
			}
		});
	}else{
		setTimer();
	}
	
	function setTimer()
	{
		// Update les questions reponses coté client
		if ($('listeUl')) {
			
			var listeUl = $('listeUl');
			
			var requestU = new Request.HTML({
				method: 'post',
				url: AJAXurl,
				data: { 'action' : 'getNewMsgs' }, 
				onSuccess: function(responseTree, responseElements, responseHTML) {
					$$(responseTree).inject('listeUl');
					document.getElementById('listeW').scrollTop = document.getElementById('listeW').scrollHeight;
				},
				onFailure: function(responseText, responseXML) {
					listeUl.set('html', '');
				}
			});
			
			var updateUTchat = function() {
				requestU.send();
			}
			
			updateUTchat();
			updateUTchat.periodical(6000);
			
		}
	}
	

});