chat_users = new Array();
var user;
var url = '';
var last_get_id;
var sex;
var chat_loading = false;
var chat_room_activity_id = 'false';
var chat_room_history_id = 'false';
var chat_get_msg_timeout_time;
var chat_get_msg_interval_time;
var chat_get_msg_last_time;
var chat_room_get_msg_timeout;
var chat_requests = new Array();

function chat_appendHTML(object, html) {
	var temp = new Element("div");
	temp.set("html", html);
	object.adopt(temp.childNodes);
}

function chat_add_msg(user_from, sex_from, user_window, text, is_new) {
	if (user_from == user_window && is_new) {
			animate_title(translate_speak_to_you, 2);
			sound_play('/sounds/alert.mp3', 15);
	}

	if (chat_users.indexOf(user_window) === -1) {
		chat_create_window(user_window);
	}
		
	user_id = chat_users.indexOf(user_window);
	$("chat_contener_" + user_id).fade("in");
	
	text = text.replace(/</g, '&lt;');
	text = text.replace(/>/g, '&gt;');
	text = text.replace(/\:\)/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/souris.gif">');
	text = text.replace(/\:-\)/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/souris.gif">');
	text = text.replace(/;\)/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/souris2.gif">');
	text = text.replace(/;-\)/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/souris2.gif">');
	text = text.replace(/\:-D/gi, '<img src="http://gif.inter-chat.com/images/blue/smileys/sourire.gif">');
	text = text.replace(/\:D/gi, '<img src="http://gif.inter-chat.com/images/blue/smileys/sourire.gif">');
	text = text.replace(/\:-p/gi, '<img src="http://gif.inter-chat.com/images/blue/smileys/langue.gif">');
	text = text.replace(/\:p/gi, '<img src="http://gif.inter-chat.com/images/blue/smileys/langue.gif">');
	text = text.replace(/;-p/gi, '<img src="http://gif.inter-chat.com/images/blue/smileys/langue.gif">');
	text = text.replace(/;p/gi, '<img src="http://gif.inter-chat.com/images/blue/smileys/langue.gif">');
	text = text.replace(/\:-\(/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/triste2.gif">');
	text = text.replace(/\:\(/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/triste2.gif">');
	text = text.replace(/\:\'\(/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/pleure.gif">');
	text = text.replace(/![!]+/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/pexclam.gif">');
	text = text.replace(/\?[\?]+/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/pinterro.gif">');
	text = text.replace(/8-\)/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/yeux.gif">');
	text = text.replace(/8\)/g, '<img src="http://gif.inter-chat.com/images/blue/smileys/yeux.gif">');
	
	if (text.substr(0, 4) == '/me ') {
		text = text.replace(/\/me /, '');
		text = "<div class='chat_text_me'>* " + user_from + " " + text + "</div>";
	}
	else if (user_from == user) {
		text = "<div class='chat_text'><span class='chat_text_nick_" + sex_from + "'>" + user_from + "&gt; </span><i><font color=\"#555555\">" + text + "</font></i></div>";
	}
	else {
		text = "<div class='chat_text'><span class='chat_text_nick_" + sex_from + "'>" + user_from + "&gt; </span>" + text + "</div>";
	}
	chat_appendHTML($("chat_contener_text_" + user_id), text);
	$("chat_contener_text_" + user_id).scrollTop = $("chat_contener_text_" + user_id).scrollHeight;
	
//	chat_get_msg_interval(1000);
}

function chat_send_msg(input) {
	if (page_loaded === false || !user) {
		alert(translate_wait_loading);
		return;
	}
	
	animate_title(null, 2);

	var user_id = input.id.substr(input.id.lastIndexOf("_") + 1);
	var text = input.value;

	if (!text || text == translate_default_input_text) {
		return;
	}
	
	text = text.clean();

	ajax_request('p=chat&page=send&nick_to=' + encodeURIComponent(chat_users[user_id]) + '&message=' + encodeURIComponent(text));
	//chat_get_msg_interval(1000);

	chat_add_msg(user, sex, chat_users[user_id], text, false);
	input.value = "";
}

function chat_input_text(input, type) {
	animate_title(null, 2);

	if (type == "focus") {
		if (input.value == translate_default_input_text) {
			input.value = "";
		}
	}
	else if (type == "blur") {
		if (input.value == "") {
			input.value = translate_default_input_text;
		}
	}
}

function chat_focus_window(user_id) {
	if ($("chat_contener_" + user_id).getStyle('zIndex') == 600) {
		return;
	}

	len = chat_users.length;
	for (i = 0; i < len; i++) {
		if (i == user_id) {
			$("chat_contener_" + i).setStyle('zIndex', 600);		
		}
		else {
			$("chat_contener_" + i).setStyle('zIndex', 500 + i);
		}
	}
}

function chat_destroy_window(user_id) {
	animate_title(null, 2);

	var user = chat_users[user_id];

	if (chat_users.indexOf(user) === -1) {
		return;
	}
	
	ajax_request("p=chat&page=window_close" + "&user=" + encodeURIComponent(user));
	/*
	chat_requests.push(new Request({
			method: "get",
			url: url + '/ajax.php'
		}).send("p=chat&page=window_close" + "&user=" + encodeURIComponent(user)));
		*/
	$("chat_contener_" + user_id).fade("out");
}

function chat_resize_window(user_id, el) {
	$('chat_contener_tl_' + user_id).style.width = el.style.width; 
	$('chat_contener_tr_' + user_id).style.width = el.style.width; 
	$('chat_contener_t_' + user_id).style.width = (el.style.width.toInt() - 20) + 'px'; 
	$('chat_contener_b_' + user_id).style.width = (el.style.width.toInt() - 20) + 'px'; 
	$('chat_contener_l_' + user_id).style.width = el.style.width; 
	$('chat_contener_r_' + user_id).style.width = el.style.width; 
	$('chat_contener_bl_' + user_id).style.width = el.style.width; 
	$('chat_contener_br_' + user_id).style.width = el.style.width;
	//$('chat_contener_text_' + user_id).style.height = (el.style.height.toInt() - 82) + 'px';
	$('chat_contener_text_' + user_id).style.height = (el.style.height.toInt() - 60) + 'px';
	$('chat_contener_text_' + user_id).scrollTop = $('chat_contener_text_' + user_id).scrollHeight;
}


function chat_create_window_contener() {
	var w_overlay = new Element('div', {
		'id': 'chat_contener',
		'class': 'w_moveable',
		'styles': {
			'width': '400px',
			'opacity': 0,
			'top': '-550px',
			'position': 'absolute'
		}
	});
	w_overlay.inject(document.body);
	
	var w_overlay_t = new Element('div', {
		'id': 'chat_contener_t',
		'class': 'w_moveable_t'
	});
	w_overlay_t.inject(w_overlay);
	
	
	var w_overlay_b = new Element('div', {
		'id': 'chat_contener_b',
		'class': 'w_moveable_b'
	});
	w_overlay_b.inject(w_overlay_t);
	
	
	
	var w_overlay_l = new Element('div', {
		'id': 'chat_contener_l',
		'class': 'w_moveable_l'
	});
	w_overlay_l.inject(w_overlay);
	
	
	var w_overlay_r = new Element('div', {
		'id': 'chat_contener_r',
		'class': 'w_moveable_r'
	});
	w_overlay_r.inject(w_overlay_l);
	
	
	
	var w_overlay_tl = new Element('div', {
		'id': 'chat_contener_tl',
		'class': 'w_moveable_tl'
	});
	w_overlay_tl.inject(w_overlay);
	
	
	var w_overlay_tr = new Element('div', {
		'id': 'chat_contener_tr',
		'class': 'w_moveable_tr'
	});
	w_overlay_tr.inject(w_overlay_tl);
	
	
	
	var w_overlay_bl = new Element('div', {
		'id': 'chat_contener_bl',
		'class': 'w_moveable_bl'
	});
	w_overlay_bl.inject(w_overlay);
	
	
	var w_overlay_br = new Element('div', {
		'id': 'chat_contener_br',
		'class': 'w_moveable_br'
	});
	w_overlay_br.inject(w_overlay_bl);
	
	
	
	var w_overlay_title_bar = new Element('div', {
		'id': 'chat_contener_title_bar',
		'class': 'w_moveable_title'
	});
	w_overlay_title_bar.inject(w_overlay);
	
	
	var w_overlay_title = new Element('span', {
		'id': 'chat_contener_title'
	});
	w_overlay_title.inject(w_overlay_title_bar);
	
	
	var w_overlay_title_r = new Element('div', {
		'id': 'chat_contener_title_r',
		'class': 'w_moveable_title_r'
	});
	w_overlay_title_r.inject(w_overlay_title_bar);
	
	
	
	var w_moveable_fake_contener = new Element('div', {
		'id': 'w_moveable_fake_contener',
		'class': 'w_moveable_fake_contener'
	});
	w_moveable_fake_contener.inject(w_overlay);
	
	
	var w_overlay_contener = new Element('div', {
		'id': 'chat_contener_contener',
		'class': 'w_moveable_contener'
	});
	w_overlay_contener.inject(w_moveable_fake_contener);
	

	var chat_button_close = new Element('div', {
		'id': 'chat_button_close',
		'class': 'chat_button_close'
	});
	chat_button_close.inject(w_overlay_contener);
	chat_button_close.set('title', translate_close);
	
	
	


	var chat_contener_text_contener = new Element('div', {
		'id': 'chat_contener_text_contener',
		'class': 'w_bright'
	});
	chat_contener_text_contener.inject(w_overlay_contener);

	var w_bright_l = new Element('div', {
		'class': 'w_bright_l'
	});
	w_bright_l.inject(chat_contener_text_contener);

	var w_bright_r = new Element('div', {
		'class': 'w_bright_r'
	});
	w_bright_r.inject(w_bright_l);

	var w_bright_t = new Element('div', {
		'class': 'w_bright_t'
	});
	w_bright_t.inject(w_bright_r);

	var w_bright_tl = new Element('div', {
		'class': 'w_bright_tl'
	});
	w_bright_tl.inject(w_bright_t);

	var w_bright_tr = new Element('div', {
		'class': 'w_bright_tr'
	});
	w_bright_tr.inject(w_bright_tl);

	var w_bright_b = new Element('div', {
		'class': 'w_bright_b'
	});
	w_bright_b.inject(w_bright_tr);

	var w_bright_bl = new Element('div', {
		'class': 'w_bright_bl'
	});
	w_bright_bl.inject(w_bright_b);

	var w_bright_br = new Element('div', {
		'class': 'w_bright_br'
	});
	w_bright_br.inject(w_bright_bl);

	var w_bright_contener = new Element('div', {
		'class': 'w_bright_contener'
	});
	w_bright_contener.inject(w_bright_br);

	
	var chat_contener_text = new Element('div', {
		'id': 'chat_contener_text',
		'styles': {
			'textAlign': 'left',
			'overflow': 'auto'
		}
	});
	chat_contener_text.inject(w_bright_contener);





	
	
	var chat_contener_input_contener = new Element('div', {
		'id': 'chat_contener_text_contener',
		'class': 'w_bright'
	});
	chat_contener_input_contener.inject(w_overlay_contener);

	var w_bright_l = new Element('div', {
		'class': 'w_bright_l'
	});
	w_bright_l.inject(chat_contener_input_contener);

	var w_bright_r = new Element('div', {
		'class': 'w_bright_r'
	});
	w_bright_r.inject(w_bright_l);

	var w_bright_t = new Element('div', {
		'class': 'w_bright_t'
	});
	w_bright_t.inject(w_bright_r);

	var w_bright_tl = new Element('div', {
		'class': 'w_bright_tl'
	});
	w_bright_tl.inject(w_bright_t);

	var w_bright_tr = new Element('div', {
		'class': 'w_bright_tr'
	});
	w_bright_tr.inject(w_bright_tl);

	var w_bright_b = new Element('div', {
		'class': 'w_bright_b'
	});
	w_bright_b.inject(w_bright_tr);

	var w_bright_bl = new Element('div', {
		'class': 'w_bright_bl'
	});
	w_bright_bl.inject(w_bright_b);

	var w_bright_br = new Element('div', {
		'class': 'w_bright_br'
	});
	w_bright_br.inject(w_bright_bl);

	var w_bright_contener = new Element('div', {
		'class': 'w_bright_contener'
	});
	w_bright_contener.inject(w_bright_br);

	
	var chat_input = new Element('input', {
		'type': 'text',
		'id': 'chat_input',
		'maxlength': 255,
		'value': translate_default_input_text,
		'styles': {
			'width': '100%',
			'background': 'transparent',
			'marginBottom': '4px'
		}
	});
	chat_input.inject(w_bright_contener);





	var chat_resize = new Element('div', {
		'id': 'chat_resize',
		'styles': {
			'position': 'absolute',
			'bottom': '-10px',
			'right': '-5px',
			'width': '30px',
			'height': '30px',
			'cursor': 'se-resize'
		}
	});
	chat_resize.inject(w_overlay_contener);
	
	return w_overlay;
}

function chat_create_window(user, top, left, height, width, zindex, noeffect) {
	var user_id = chat_users.length;
	
	if (chat_users.indexOf(user) !== -1) {
		$("chat_contener_" + chat_users.indexOf(user)).fade("in");
		chat_focus_window(chat_users.indexOf(user));
		return;
	}

	var newChat = chat_create_window_contener();
	//var newChat = $('chat_contener').clone(true, true);
	
	newChat.inject(document.body);
	newChat.set('id', "chat_contener_" + user_id);

	var divList = newChat.getElementsByTagName("DIV");
	for (var i = 0; i < divList.length; i++) {
		if (divList[i].id) {
			divList[i].id = divList[i].id + "_" + user_id;
		}
	}			
	
	var divList = newChat.getElementsByTagName("SPAN");
	for (var i = 0; i < divList.length; i++) {
		if (divList[i].id) {
			divList[i].id = divList[i].id + "_" + user_id;
		}
	}
	
	var divList = newChat.getElementsByTagName("INPUT");
	for (var i = 0; i < divList.length; i++) {
		if (divList[i].id) {
			divList[i].id = divList[i].id + "_" + user_id;
		}
	}


	$('chat_button_close_' + user_id).addEvent('click', function() { chat_destroy_window(user_id); } );
	$('chat_input_' + user_id).addEvent('blur', function() { chat_input_text($('chat_input_' + user_id), 'blur'); } );
	$('chat_input_' + user_id).addEvent('focus', function() { chat_input_text($('chat_input_' + user_id), 'focus'); } );
	$('chat_input_' + user_id).addEvent('keypress', function(e) { /*e = new Event(e);*/ if (e.key == 'enter') { chat_send_msg($('chat_input_' + user_id)); }} );
	$('chat_contener_' + user_id).addEvent('mouseover', function() { chat_focus_window(user_id); } );



	new Drag("chat_contener_" + user_id, {
		snap: 0,
		handle: "chat_contener_title_bar_" + user_id,
		onComplete: function (el) { chat_save_window(user); },
		limit: { x: [0], y:[0] }
	});
	$('chat_contener_title_bar_' + user_id).setStyle('cursor', 'move');
	
	$("chat_contener_" + user_id).makeResizable({
		snap: 0,
		handle: "chat_resize_" + user_id,
		limit: { x: [400], y: [282] },
		onDrag: function (el) { chat_resize_window(user_id, el); },
		onComplete: function (el) { chat_save_window(user); }
	});

	$('chat_contener_title_' + user_id).set('text', translate_chat_with + ' ' + user);
	$('chat_contener_title_r_' + user_id).set('styles', {
		'width': $('chat_contener_title_r_' + user_id).getParent().getStyle('clientWidth')
	});

	chat_users.push(user);

	if (!top || top > window.getScrollTop() + window.getHeight()) {
		top = 25 + (user_id * 50);
		top += window.getScrollTop();
	}
	
	if (!left) {
		left = 25 + (user_id * 50);
	}
	
	if (width) {
		$("chat_contener_" + user_id).style.width = width + "px";
	}
	
	if (!height) {
		height = 300;
	}
	
	//$("chat_contener_" + user_id).setStyle('height', height);
	
	$('chat_contener_text_' + user_id).set('styles', {
		'height': (height - 82) + 'px'
	});
	

	$("chat_contener_" + user_id).style.top = top + "px";
	$("chat_contener_" + user_id).style.left = left + "px";

	
	if (!zindex) {
		chat_focus_window(user_id);
	}
	else {
		zindex = 500 + user_id;
		$("chat_contener_" + user_id).style.zIndex = zindex;	
	}

	if (noeffect) {
//		$("chat_contener_" + user_id).style.opacity = 1;
		$("chat_contener_" + user_id).setStyle('opacity', 1);
	}
	else {
		$("chat_contener_" + user_id).fade("hide");
		$("chat_contener_" + user_id).fade("in");
	}

	if (!noeffect) {
		chat_save_window(user);
	}
}

function chat_save_window(user) {
	var user_id = chat_users.indexOf(user);

	ajax_request("p=chat&page=window_save&user=" + encodeURIComponent(user) + "&top=" + $("chat_contener_" + user_id).style.top +	"&left=" + $("chat_contener_" + user_id).style.left + "&width=" + $("chat_contener_" + user_id).style.width + "&height=" + $("chat_contener_" + user_id).style.height + "&zindex=" + $("chat_contener_" + user_id).style.zIndex);
	/*
	chat_requests.push(new Request({ method: "get", url: url + '/ajax.php' }).send("p=chat&page=window_save&user=" + encodeURIComponent(user) + "&top=" + $("chat_contener_" + user_id).style.top +	"&left=" + $("chat_contener_" + user_id).style.left + "&width=" + $("chat_contener_" + user_id).style.width + "&height=" + $("chat_contener_" + user_id).style.height + "&zindex=" + $("chat_contener_" + user_id).style.zIndex));
		*/
	$('chat_contener_text_' + user_id).scrollTop = $('chat_contener_text_' + user_id).scrollHeight;
}

function chat_get_msg_exec() {
	//alert('ooops');
	ajax_request('p=chat&page=get&last_get_id=' + last_get_id);
}

function chat_get_msg_interval(time) {
	if (time == chat_get_msg_last_time) {
		return;
	}
	
	chat_get_msg_last_time = time;
	
	if (chat_get_msg_interval_time) {
		clearInterval(chat_get_msg_interval_time);
	}
	chat_get_msg_interval_time = setInterval('chat_get_msg_exec()', time);

	if (time != 30000) {
		if (chat_get_msg_timeout_time) {
			clearTimeout(chat_get_msg_timeout_time);
		}
		chat_get_msg_timeout_time = setTimeout('chat_get_msg_interval(30000)', 60000);
	}
}




function chat_room_create_room(title, description) {
	overlay(title, description);
}

function chat_room_update_room(room_id, name, password, user_count) {
	var li = new Element('li', { id: 'chat_room_rooms_' + room_id });
	var room_new = $('chat_room_rooms_empty').clone(true, true).inject(li);
	room_new.id = 'chat_room_rooms_' + room_id;
	
	var spanList = room_new.getElementsByTagName('SPAN');
	for (var i = 0; i < spanList.length; i++) {
		if (spanList[i].id) {
			spanList[i].id = spanList[i].id + '_' + room_id;
		}
	}
	
	flag_inject = false;
	var liList = $('chat_room_rooms_list').getElementsByTagName('LI');
	for (var i = 0; i < liList.length; i++) {
		c_room_id = liList[i].id.substr(16);
		if (name.toLowerCase() < $('chat_room_rooms_name_' + c_room_id).get('text').toLowerCase()) {
			li.inject(liList[i], 'before');
			flag_inject = true;
			break;
		}
	}
	
	if (flag_inject == false) {
		$('chat_room_rooms_list').adopt(li);
	}
	
	$('chat_room_rooms_name_' + room_id).set('text', name);
}

function chat_room_user_add(user_id, name, has_webcam) {
	var li = new Element('li', { id: 'chat_room_users_' + user_id });
	var user_new = $('chat_room_users_empty').clone(true, true).inject(li);
	user_new.id = 'chat_room_users_' + user_id;
	
	var spanList = user_new.getElementsByTagName('SPAN');
	for (var i = 0; i < spanList.length; i++) {
		if (spanList[i].id) {
			spanList[i].id = spanList[i].id + '_' + user_id;
		}
	}
	
	flag_inject = false;
	var liList = $('chat_room_users_list').getElementsByTagName('LI');
	for (var i = 0; i < liList.length; i++) {
		c_user_id = liList[i].id.substr(16);
		if (name.toLowerCase() < $('chat_room_users_name_' + c_user_id).get('text').toLowerCase()) {
			li.inject(liList[i], 'before');
			flag_inject = true;
			break;
		}
	}
	
	if (flag_inject == false) {
		$('chat_room_users_list').adopt(li);
	}
	
	$('chat_room_users_name_' + user_id).set('text', name);
}

function chat_room_join_room(room_id) {
	overlay('Connexion en cours...', 'Connexion au salon en cours. Merci de patienter :-)');
	overlay_loading('Connexion au salon en cours. Merci de patienter :-)', 'p=chat_room&page=join_room&room_id=' + room_id);	
}

function chat_room_history_add(user_id, nick, sex, time, message) {
	chat_appendHTML($('chat_room_text'), '<font size=-1>[' + time + ']</font> ' + nick + '> ' + message + '<br>');
}

function chat_room_send_msg() {
	var text = $('chat_room_input').value;

	if (!text || text == translate_default_input_text) {
		return;
	}

	ajax_request('p=chat_room&page=send&message=' + encodeURIComponent(text));
	chat_room_get_msg_interval(1000);

	$('chat_room_input').value = '';
}

function chat_room_get_msg_exec() {
	ajax_request('p=chat_room&page=get_datas&activity_id=' + chat_room_activity_id + '&history_id=' + chat_room_history_id);
}

function chat_room_get_msg_interval(time) {
	if (chat_room_get_msg_timeout) {
		clearInterval(chat_room_get_msg_timeout);
	}
	chat_room_get_msg_timeout = setInterval('chat_room_get_msg_exec()', time);
}

function chat_room_init() {

}
